介绍Robotium+Orange实现androidUI自动化测试

Urania ·
更新时间:2024-09-21
· 922 次阅读

  Robotium:   Robotium是一个开源的androidUI自动测试工具,这里不做介绍,可以见:http://code.google.com/p/robotium/   Orange:   Orange 是我们自己开发的运行在PC端的(只支持windows),用于组织测试用例、自动重签名apk文件、以及操作模拟器、启动运行测试用例、用 例crash以及失败重跑、测试结果收集等功能的一个工具,通过简单的配置,既可以全自动全SDK版本回归运行robotium编写的测试用例。   为什么开发Orange?   为什么要自己开发一个Orange工具,而不直接使用Robotium编写的测试代码来运行测试用例?   我们在Robotium测试用例运行的过程中发现了以下的一些问题:   1、测试用例运行过程中有时候会直接Crash,导致所有测试用例停止,同时收集不到测试结果   2、用例在模拟器上运行,用例经常会出现失败的情况, 但是你再次运行的时候可能用成功了,存在不稳定性   另外我们希望有下面的功能:   1、我们希望用户编写好以及robotium的测试用例后,能够方便的全自动全SDK版本回归运行测试用例   2、我们希望用户能够方便的指定当前运行哪些测试用例   3、我们希望能够得到一个直观的运行结果报告   当前这里重要的是在使用Robotium发现的问题,如果你的用例在运行时crash了,导致什么结果也收集不到, 如果你的自动测试用例稳定性太低,经常出现大量的失败用例,那么用户如何来相信你的测试结果,大量失败用例你去分析失败原因也是一个非常耗时的过程,如果 不能很好的解决稳定性的问题,搭建的自动测试框架失败率会大大的提高。   Orange使用步骤:   为了更好的生成测试结果报告,我们这里使用了一个开源的软件android-junit-report,官方地址:https://github.com/jsankey/android-junit-report ,该软件继承重写了android自带的InstrumentationTestRunner,会自动把测试结果生成到xml文件中。   所以基于Robotium编写测试用例的时候需要额外的进行下面的两部操作:   1、从https://github.com/jsankey/android-junit-report下载jar包,同时加入到测试用例程序中   2、修改测试程序的AndroidMainifest.xml文件,在文件中加入以下配置   <instrumentation android:targetPackage="com.netease.pris(被测应用的包名)" android:name="com.zutubi.android.junitreport.JUnitReportTestRunner" /   接下去可以开始编写测试用例了,测试用例编写完成后,   1、获取到被测应用的apk文件,以及你的测试程序的apk文件   2、填写orange框架的配置文件,有一些指定的必填配置项   该文件主要是填写需要测试的sdk版本、被测应用的apk位置、被测应用的主包名、测试程序的apk位置、测试结果收件人列表、测试用例的xml文件地址   config.properties   #填写需要测试的android sdk版本,多个的话中间用逗号隔开,不允许为空   target=android-10,android-14   #   被测试应用存放的位置,windows下目录之间用"\"来分割,不允许为空   apkpath=D:\PRIS\1.3.1\pris_generic_1.3.1.apk   # 测试程序存放的位置,windows下目录之间用"\"来分割,不允许为空   testapkpath=D:\PRIS\1.3.1\PrisUIAutoTest.apk   #   测试程序的主包名,不允许为空 package=com.netease.pris   # 运行结果的收件人列表,多个用户用逗号分割,允许为空 maillists=***@163.com,***@163.com   # 测试用例的配置文件路径,不允许为空 testCaseFile=D:\TestCaseInfo.xml   3、编写指定需要运行的测试用例文件   这里类似于testng的方式来指定需要运行哪些测试用例,但是为了解决crash以及失败重跑的问题,只支持每个测试方法单独配置,而不支持只填写到测试类级别。   TestCaseInfo.xml   <!-- packageName 填写的是测试程序的主包名,必填项 -->   <classes packageName="com.netease.mobile.autotest">   <!--   指定需要运行的测试类,这些类是在测试程序中编写的,也会安装到模拟器中-->   <class name="com.netease.mobile.autotest.testing.PersonalDataTest" >   <methods>   <!--   这里定义需要运行的具体测试方法,这些都是必填项,如果不存在会报错--> <include name="test01ShowPersonalData" /> <include name="test02EditPersonalData" /> </methods> </class> </classes>



robotium orange 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章