背景:
随着移动设备的大量普及,这几年,移动应用也甚嚣尘上,层出不穷。用户对便捷性,对体验感的极致追求,促使移动端研发越来越火爆,对应的,移动端的测试也变得越来越重要。
作为物流行业,业务生命周期比较长,贯穿了收,发,到,派,签等主要关键节点,把终端客户,网点,中心每个端的用户联系起来。公司内部有几个重点产品,都提供了移动端应用,旨在为广大用户带来便捷性,尤其是掌中通 APP,快递小哥每日的工作分配,工作路线,工作量,客户信息,薪资结算等都可以通过掌中通 APP 一目了然的呈现,其准确性,稳定度会直接影响公司所有快递收发进度。为了保证质量,提高测试效率,有效的自动化工具不可或缺。
一、移动 UI 自动化探索(现状)
测试部一直在探索移动端自动化测试的方法,多年前我们就已经基于 BDD 框架 robot framework 以及 Appium 实现了所有公司重点项目基于关键字的自动化测试,在 IDE 的加成下,大部分的移动测试人员都可以实现自动化脚本的开发。下图是该框架下的部分脚本:
随着时间推移,app 变得越来越复杂,脚本也越写越多。同时今年以来业务的需求变化越来越多,这种自动化方式也越来越难以维护。
我们急需一个平台来解决以下方面的问题:
- 能够快速完成脚本开发,以适应业务快速迭代的需求;
- 可以同时运行在数十台设备上完成测试,快速筛选出兼容性问题,同时尽量多的运行 monkey 脚本来提前发现问题;
- 统一管理测试脚本 / 用例,在 app 上线前快速进行回归测试。 # 二、自动化工具升级(探索.选型) 移动端自动化工具有很多,但是同时支持 Android 和 iOS 平台的没有几个,最常见的就是 Appium 和 网易的 Airtest。虽然两个都提供了 IDE 的支持,但是 airtest 效率比 Appium 好太多。最大的优势在以下两点:
- 基于图片识别,可以快速完成脚本开发;
- 同时提供了脚本录制功能,而且脚本质量很高。
下图就是一个录制的脚本,可读性很强。
经过对多个产品的 demo 验证,发现该工具可以满足我们的基本诉求。后期便着力于 基于该工具开发一个移动端测试平台。
三、移动真机平台(打地基)
基于 atxserver2 的二次开发,集成 SSO(SSO 是公司内部的一个统一登陆鉴权服务),我们开发了一个移动真机平台,无论测试同学还是开发工程师都可以通过这个平台查看可用手机,手机具体详细信息,借用手机来复现问题以及验证自动化脚本的稳定性。
该平台为移动自动化平台提供大量设备支持。下图为平台的截图。
四、移动自动化平台(实践)
有了以上的储备,我们开始设计移动自动化平台,该平台基本架构如下:
1.利用 Jenkins 的 pipeline 来运行脚本,同时为了提高效率以及隔离脚本之间的影响,所有的任务是运行 Jenkins slave 在容器里面的,以最大程度提高并发量;
2.平台可以指定脚本运行的手机设备,如果不指定会在所有手机上执行该自动化;
3.同一台手机没有办同时来运行多个脚本,系统提供了任务调度以保证脚本最大可能的运行到各个设备上,有如果一台设备有脚本执行,自动进度排队状态等待设备空闲。系统也会根据项目的优先级来调整等待顺序,以保证重要项目的脚本优先执行;
4.平台统一了脚本的配置方式,可以手动执行,也可以配置成周期任务海之星;
5.最后系统会统计所有执行过的设备,然后统计出结果,统一展示。
得益于 airtest 支持,脚本的每个步骤都可以进行截图,可以很清楚的看到每个步骤执行时,在不同设备上的情况。甚至你还可以设置进行视频录制。如果发现了错误,也会很明显看到出错的步骤。
目前系统已经上线,重点项目逐渐接入中。
五、未来展望
展望未来图像识别、5G、人工智能等前沿科技在测试领域的运用给了我们无限遐想的空间。基于测试步骤截图,利用图像识别技术筛选不同设备上有差异的步骤,进行兼容性测试等等方案的实施也变得不再那么遥远。
更多详情交流可加微信 :13003195121