安卓自动化测试回归测试真机测试

安卓自动化测试值不值得上?先算清回归测试这笔账

安卓自动化测试不是越早越好,先算回归测试这笔账。用一轮全量回归的人时成本倒推出该不该上、什么规模值得上、真机和云测怎么分工,以及第一个用例该选哪条。

约 5 分钟

先算一笔账:一轮全量回归是多少人时

安卓自动化测试该不该上,这个问题在会议上经常变成技术选型之争,其实它首先是一道算术题。

先把手动的一轮全量回归测试拆开算。假设有 40 条用例,每条平均 6 分钟,那就是 4 个小时;如果要在 3 台不同机型上跑,就是 12 个小时;一个人一天按 8 小时算,一轮全量回归要花掉 1.5 个人日。

再看频率。双周发版的话,一个月两轮,就是 3 个人日。一年按 24 轮算,是 36 个人日——超过一个半人月,全部花在重复执行上。

这笔账算到这里,答案就清楚了一半:如果你的回归频率和用例规模接近这个量级,自动化几乎必然回本;如果一个月才发一次版、用例不到十条,手动的成本反而更低。别为了「行业都在做」上自动化。

安卓中控里批量执行测试脚本并查看设备执行状态

什么规模值得上

把上面的算式反过来,给出三个信号。

信号一,用例数量过了 20 条。少于这个数,跑一轮的时间和调脚本的时间差不多。

信号二,回归频率高于每月一次。一个月才跑一次,脚本半年不用可能已经跟界面脱节了,每次跑之前都要修。

信号三,要在多台设备上重复跑。一台设备手动跑还能忍,三台五台开始就变成纯粹的体力活。设备越多,测试效率提升的幅度越大。

三条里满足两条,就可以动手了。满足三条,基本是必做。

真机和云测怎么分工

做安卓自动化测试绕不开一个问题:设备从哪来。选型上也别一开始就纠结 Appium 还是别的框架,先想清楚设备怎么摆。

真机测试的价值在真实硬件行为。摄像头、传感器、蓝牙、不同厂商的系统表现,这些模拟器还原不了。特别是测试用例里涉及到扫码、拍照、切后台、来电打断这类场景,真机是唯一选择。

云测的价值在覆盖和并发。自己搭机房,设备采购、维护、折旧都是钱;云测按需付费,机型覆盖也更容易拉齐。适合发版前跑一轮机型覆盖。

比较省事的做法是分两层:本地真机跑主流程和日常调试,云测跑发版前的机型覆盖。两边都留,但职责分开,别指望一套设备解决所有问题。

第一个用例别选登录

这是新手最容易劝退自己的地方,也是 UI测试选题上最常见的错。

很多人做自动化测试的第一个用例就是登录,理由很合理——登录是入口,后面都要用。但登录恰恰是最不稳定的一段:验证码、短信、设备校验、异地登录风控,任何一条都能让脚本卡住。脚本卡住几次,人就放弃了。

更稳的开局是选流程短、结果明确、不依赖外部条件的用例。比如列表页上滑加载、详情页进入再返回、设置页开关切换。这类用例不依赖特殊权限,免root自动化就能跑,跑通很快,能让你先把「脚本怎么跑起来、结果怎么收」这条链路走通。

等这条链路稳了,再回头啃登录。这时候你已经知道怎么处理等待和异常,登录那些坑也就不那么劝退了。

维护成本在哪

自动化测试真正的成本不在第一版,在维护。

第一个来源是界面改版。用固定坐标点来点去的脚本,改版之后基本全废;用控件属性、文本内容定位,外面套一层「等元素出现」的等待机制的脚本,改版时通常只需要调整少量位置。写法上的这点差别,决定了你每次改版的返工量是一天还是一小时。

第二个来源是测试数据。用例依赖某个账号、某条订单、某个状态,而这些数据会被别的测试用掉。数据没准备好,用例就会以各种奇怪的方式失败。

第三个来源是失败结果的可信度。第一版脚本的失败里,相当一部分是脚本自己的问题,不是被测应用的问题。得先把脚本调稳,让失败结果可信,它才能进流程,否则开发会被误报搞到不信自动化。

什么时候不如继续手动

有三种情况,我建议先别上自动化。

第一种是版本发布很稀疏。半年发一次版,脚本写完放半年,下次跑之前先修脚本,省下的时间还不够修。

第二种是界面还在大改。产品形态没定,界面每周都变,这时候写自动化是在追一个还在移动的目标。

第三种是用例主要靠人的判断。体验好不好、文案读起来顺不顺、交互是否自然,这类判断自动化给不出答案。这类用例交给自动化,只会产出不可信的结论。

自动化的定位是把人从重复执行里拿出来,去做探索性测试、新功能首轮验证、体验把关这些机器做不了的事。按这个定位去用它,投入产出比会很正常;指望它替代全部人工测试,期待就会落空。


关于 EasyClick:手机自动化 AI 智能体平台,覆盖安卓免 root、iOS 免越狱、鸿蒙 Next 三大生态,提供脚本开发、苹果群控、本地中控投屏与云控系统。→ 了解全部产品

想要真实跑起来?

本文介绍的方案均可在 EasyClick 手机自动化平台落地。官网提供完整文档、开发工具与群控云控产品,免费体验。

访问 EasyClick 官网 →