随着移动互联网的浪潮,公司移动产品日益增多,为了更好的保障产品质量,我们在手工测试的基础上对于稳定的主干功能会引入UI自动化测试,这篇文章将介绍我们基于开源框架Robotium开发的Android UI自动化测试框架Orange。
Orange是基于开源框架Robotium进行的二次开发,主要解决Robotium运行用例过程中偶尔某个用例crash、超时等导致收集不到所有用例测试结果的问题,以及提升用例运行的稳定性。与此同时新增了PC端的支持,包括对模拟器的操作以及测试结果的收集以及展示,编写用例后通过简单配置即可以实现整个运行流程的自动化。
当前主要功能如下:
1、 支持自动创建、启动、关闭、删除模拟器以及自动重签名指定apk功能
2、 支持一份用例自动在不同SDK版本下运行
3、 支持用例运行crash、超时、失败后自动重跑以及失败用例自动截图功能
4、 支持WebView控件
5、 支持可视化测试结果展示
6、 支持和持续集成Jenkins平台结合
7、 支持Windows、Linux、Mac平台
8、 支持Android模拟器、真机运行测试用例
orange架构图如下:
哪些项目或者团队适合使用Orange?
1、Orange是UI自动化测试框架,所以主干UI稳定的项目适合使用Orange编写回归自动测试用例,UI不稳定会导致后续的维护工作量比较大。
2、测试用例的编写维护需要投入一定的时间,所以团队中每个测试版本平均能够投入1-2人天左右的时间来编写维护自动测试用例的团队适合使用Orange。
1、 编写测试用例
2、 添加配置文件
在项目根目录中新增config.properties文件添加以下配置选项。
#
|
同时使用类似TestNg的方式配置需要运行的测试用例,当用例个数增长时通过配置不同文件可以方便的进行用例分组,每次指定运行不同的测试用例。
|
3、 命令行运行测试用例
在完成如上的配置同时准备好脚本后,启动命令行运行起来吧。进入项目根目录输入下面命令,启动自动测试,开始运行后你就可以先喝杯咖啡休息一下了。
java -jar ./libs/Orange.jar config.properties
4、 测试结果展示
总体运行情况汇总:邮件中除了会展示当前测试用例的信息外,同时包含当前的操作系统,计算机名/IP以及机器内存的信息,方便收件人对本次用例的运行环境有一定了解。
失败用例信息:配置注解@Description时,会将注解中的信息写在description列中,邮件中同时包含失败时的错误log,以及相应截图,方便定位原因。
成功用例信息:包含用例的描述(@Description中书写),重跑的次数(重跑次数较多的用例可能会是可优化的用例)以及运行耗时。
5、 持续集成平台Jenkins的结合
Job中添加shell或者batch命令,目前通过wget从ftp或者http中获取每日构建的apk和资源文件(R.java),并放到相应Job的特定目录下。
|
添加Ant执行用例,通过build文件支持在Job中动态修改config文件中配置的数据。
Ant配置
|
展示用例运行结果趋势图:Jenkins自带的插件可以展示TestNG结果报表。
如何使用Orange更好地编写维护运行自动测试用例?
1、自动测试用例也是代码,所以开始编写自动测试用例之前需要有统一的编码规范,编写后需要定期Review代码,出现问题需要考虑测试代码的重构。
2、编写测试用例需要开发的协助,首先需要用到的控件可以让开发协助添加唯一的id,推荐让开发协助提供R.java资源文件来编写测试用例,降低维护成本。
3、编写维护测试用例推荐使用PageObject模式,用例可读性、可维护性会有比较大的提升。
4、编写测试用例推荐在测试方法中加入@Description标签,填写用例描述,维护作者,此信息也会在结果邮件中展示,出现失败用例后能够在邮件中查看用例维护者,方便项目负责人跟进用例修改。
5、推荐和产品每日构建结合,应用构建完后自动运行测试用例,通过反馈结果能够在版本提测前及时掌握用例的运行情况,以及UI的变化情况,该阶段推荐只维护导致大量用例运行失败的问题,如果每个失败用例都及时维护可能会导致投入大量时间,而且产品开发阶段UI存在变动的风险相对来说会更大。
6、推荐产品提测前几天开始正式维护自动测试用例,可以根据该版本UI的变化情况以及每日构建执行情况决定具体提前多少天开始维护(按照之前的经验大版本需要提前2人天左右),保证在提测后用例运行全部通过。
7、如果在模拟器中运行自动测试用例,推荐在Linux或者Mac系统,windows中的模拟器非常慢以及不稳定。
使用Orange对于测试人员的技术要求如何?
使用Orange编写自动测试用例是新建Android测试工程,使用Java语言和Orange提供的API来编写,所以对于测试人员需要掌握Java知识,对于Android开发了解即可。
网易云新用户大礼包:https://www.163yun.com/gift
本文来自网易实践者社区,经作者孔庆云授权发布。