本文为霍格沃兹测试学院学院学员课程学习笔记,系统学习交流文末加群。
AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目,通过名字我们大概也能猜出个方向,Crawler 是爬虫的意思,App 的爬虫,遍历 App :
官方 GitHub 上对这款工具的解释是:
一个基于自动遍历的 App 爬虫工具。支持 Android 和 iOS,支持真机和模拟器。最大的特点是灵活性,可通过配置来设定遍历的规则。
这里顺便提一下的是谷歌也发布了一款自动遍历的工具,名字几乎一样,叫做 App Crawler (差了一个空格),设计的思想也一致,但是这款工具目前还在开发完善中,思寒大佬的工具比谷歌的早了两年时间,厉害啊!
Google App Crawler 链接:
https://developer.android.com/training/testing/crawler
下面来看看 AppCrawler 的作用和价值。
需求背景
互联网的业务需求背景:
-
业务变更快速
-
业务线众多
-
业务流程复杂
-
依赖第三方接口较多
测试工作常见问题:
-
UI 自动化只能覆盖核心业务逻辑,新功能来不及上自动化
-
产品业务测试量较大,新版发布后,老功能来不及全面回归,容易漏测
-
时间长,强度大的工作后,人容易产生疲乏,对数字的位数,文字的显示等错误信息的敏感度下降
-
产品的界面深度很深,且包含大量的展示信息功能
-
专项测试回归难度大:内存泄漏、健壮性测试、弱网等测试太多
这个时候我们需要一种手段,可以达到两方面的目的:
-
Code less: UI 自动化用例维护成本降到最低
-
Automate: 尽可能的自动化覆盖回归业务
而自动遍历就可以满足我们对上述的业务的需求;接着再来看我们对自动遍历测试的一些需求,既然要用自动遍历,那么具体要等到什么样的效果?
工具选择
2.1 遍历工具需求
自动遍历的需求:
-
可控:可以定义遍历的路径,指定需要测试的业务,保证核心业务的覆盖优先级
-
可定制:可实现自动输入、自动滑动等基础行为
结果分析:
-
点击前后的截图对比
-
结果的数据建模
2.2 工具对比
2.2.1 Monkey
首先来看业界用的较早也是经常听过的一款工具—— Monkey
参考链接:
Monkey 官方链接:
https://developer.android.com/studio/test/monkey
Monkey Script :
https://github.com/gb112211/Android-Platform-Development/blob/master/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java
这是 Android 官方提供的一个工具,在 Android 的官网我们可以看到对这款工具的解释如下:
没错,谷歌原本设计这款工具是为了对 App 进行压力测试的,而并不是自动遍历测试,注意的是这里的压力测试并不是我们平常意义上的对服务端的压力,而是对 App 前端的压力。下面是思寒对 App 压力测试的原因解释:
谷歌早期在设计 Android 的时候,Android 需要响应滑动、输入、音量、电话等事件,早期 activity 设计不完善的时候,谷歌希望测试 activity 的性能,把所有的数据批量化的输出给 activity,看 activity 一秒钟可以处理多少数据。所以早期 Monkey 是用来做 Android 的一个压力测试的工具。
由于 Monkey
在测试过程中的“随机”性,恰巧可以被用来做自动遍历测试,但是 monkey
的缺点行业很明显,就是不满足我们的两个自动遍历需求:可控性
和可定制。
-
缺点:不支持业务行为定制,无法灵活的控制,经常会点到外部的 App 无法回归原测试 App;或者点击到注销和退出,造成无法继续后面的测试;因此 monkey 在经过调研了解后没有成为我们做自动遍历测试的首选。
2.2.2 Maxim
Maxim 也是一款自动遍历工具,由我们国内的一名叫做 zha