Android自动化测试与工具Android工程师

/ 福州大学传播学院Android工程师 / 2017-03-29

目前,已有大量的Android自动化测试工具或架构可供我们使用,其中包括:Activity Instrumentation, Robotium,Robolectric  以及MonkeyRunner。此外LessPainful也提供了用来进行真实设备上自动化测试的服务。

Android,Android自动化测试,Android自动化测试,Android SDK

Android SDK自带一个测试工具MonkeyRunner,它提供的API和执行环境可以运行Python语言编写的测试代码。它提供API来连接设备,安装/卸载应用,运行应用,截屏,比对图片来判断特定命令执行后的屏幕是否包含预期信息,以及运行对应用的测试。MonkeyRunner使用ActivityInstrumentationTestCase2, ProviderTestCase,ServiceTestCasek, SingleLaunchActivityTestCase及其他类来定义测试用例,并使用InstrumentationTestRunner类来运行测试。

 

Android本身提供了对instrumentation测试的基本支持,其中之一就是位于android.test包在内的ActivityInstrumentationTestCase2类,它扩展了JUnit的TestCase类来提供Android activities的功能测试。在应用测试中,每一个activity首先被Instrumentation初始化,然后加载到设备的Dalvik虚拟机或者Android模拟器中来执行。

 

Robotium则是另外一种通过InstrumentationTestRunner来完成Android交互式测试的架构,它横跨了多个activities,支持系统测试,接收测试与功能测试。Robotium支持Activities、Menus、Dialogs、Context Menus、Toasts甚至Honeycomb,并且它可以同Maven与Ant集成来进行持续集成测试。Robotium被称作针对Android应用的又一个Selenium。Robolectric另辟路径,它并不依赖于Android提供的测试功能,它使用了shadow objects并且运行测试于服务器JVM/普通的工作站,不像模拟器或设备需要dexing(Android dex编译器将类文件编译成Android设备上的Dalvik VM使用的格式),打包,部署和运行的过程,大大减少了测试执行的时间。

 

LessPainful将Android测试又向前推进了一步,它提供了一个多设备平台自动化测试的服务。用户上传应用(*.apk)和使用Cucumber(一种业务相关的DSL)编写的测试文件,选择测试运行需要的设备配置,最后测试能够自动执行并且生成测试报告。它支持的设备包括Garmin Asus,Sony Xperia,LG,几款HTC,Samsung Galaxy和Motorola Motodefy。

 

为了了解更多LessPainful提供服务的细节,进行了下面这次简短的访问:

 

问题1:在不同版本的Android上运行应用程序,存在哪些问题?为了保证程序可以正常运行,开发者需不需要在Android的每一个版本上测试他的应用?

解答:目前,我们已经在许多方面发现了不同操作系统版本之间存在的差异性。其中一些可能在2.1-update1上导致崩溃,但可以正常运行于2.1-update3和2.2.

 

问题2:什么是LessPainful企业版?

解答:我们将提供一个工具集,它就类似于一个Mac Mini,但我们会非常灵活的满足顾客的需求。

 

问题3:与RobotiumMonkeyRunner和Robolectric相比较,LessPainful所提供的服务有什么优势呢?

解答:LessPainful是一种服务,而并不仅仅是一种架构。我们希望创建一种服务,不但使测试能够进行,并且比其他任何一种架构更能节省我们的测试时间,还能够帮助我们发现更多的bug。

另外,我们相信使用Cucumber,可以清晰地定义高层次测试描述,同时可以更好地被开发团队以外的人员共享。

 

问题4:这些测试是如何执行的?

解答:测试就如同运行一个ActivityInstrumentationTestCase2,主要使用Robotium来运行。对于应用所做的唯一修改就是去掉已有的签名,再为它重新生成签名文件。在测试运行完成后,应用会被卸载,手机也会被恢复到出厂设置。

 

问题5:不同的设备对Android来说,有没有真正的区别?能否举个例子,比如Android2.2应用可以运行在HTC却无法在Samsung中运行

解答:在LG手机,HorizontalScrollViews有时会导致子视图上的背景图片消失。这个问题存在于我们测试的所有的LG手机,不管Android版本是多少。要是你不自己处理这类问题,它将导致你的应用在不同设备上出现的问题不尽相同。


公众号,微信

汇鱼网海峡创乐汇
汇鱼网海峡创乐汇