
了解目的
做任何产品之前都需要先了解做这个产品的目的,这样才能从一个用户的角度去思考怎样能把这个产品做得更好。



- 透明 —— 自动化脚本执行过程透明,方便测试人员观察测试过程,以及方便问题定位。
- 稳定 —— 避免非脚本因素导致的测试脚本执行失败。(但这很难做到)
- 灵活 —— 业务测试人员可能在不断的业务需求中需要定制化一些自动化特性,这就需要框架方便测试人员去灵活扩展。
- 预知 —— 提前预知终端设备状态,在执行出问题之前就发现问题,及时维护,提高稳定性及成功率。
技术选型
良好的底层基础决定了上层框架的稳定 目前业界比较流行的UI类android自动化测试框架我在文章开头已经提到过,appium、airtest、uiautomator2。
appium封装的太好了,也就导致过于复杂,不好灵活扩展,而且稳定性堪忧。
airtest操作简单,主打图像识别,但是问题也就出现在了图像识别上,图像识别对单台终端效果很好,但是当分辨率不同,甚至出现字体不同的机型时,准确率会下降,而且想提高成功率也很困难。
uiautomator2轻量级,可灵活扩展,虽然不同机型也会存在稳定性的问题,但是总体效果是最符合上节中提到的所需要的4个特点,所以最终选择了uiautomator2。
除此之外,还考虑过自研手机端运行的框架,脚本在手机端运行,但是考虑到存在适配工作量大,测试过程不透明,稳定性差的问题,就没有继续。
详细实现
详细介绍基于uiautomator2,如何二次封装,思路,以及过程中遇到的坑,和不断改进的点。
从整体测试过程出发分析,主要分为三大流程,而每个大流程中又有许多需要考虑到的点。
- apk安装
- 手机锁屏怎么办
- apk安装过程中系统弹窗怎么处理
- apk安装失败怎么办
- ......
- 自动化脚本执行
- 各类基础操作如何二次封装
- 网络延迟怎么办
- 未知弹窗如何处理
- 截图时机如何把握
- 操作失败怎么办
- ......
- 测试结果收集
- apk安装时间
- apk安装失败信息
- app启动时间
- apk卸载时间
- logcat
- 测试过程截图
- 测试过程视频
- 黑白屏
- 性能数据(CPU,内存,FPS)
- debug版本app输出的调试log
- ......
- apk卸载
- 被测apk卸载
- 测试过程中在线下载安装的apk卸载
- ......
未完待续...