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

发表于:2014-1-27 11:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:mylovemengyu    来源:51Testing软件测试网采编

  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>
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号