AppCrawler, 一个基于自动遍历的app爬虫工具. 支持android和iOS, 支持真机和模拟器. 最大的特点是灵活性. 可通过配置来设定遍历的规则.
为什么要进行自动化遍历测试?
自动遍历的价值
自动化探索测试, 遍历基本的界面, 了解主要界面的可用性. 比如兼容性, 基本功能
利用遍历获取app的加载时间和性能数据, 需要借助其他的性能数据抓取工具,比如OneApm, NewRelic
利用遍历验证app的内存泄漏以及稳定性等功能, 需要借助LeakCanary和MLeaksFinder
自动化回归测试.
UI diff 验证新老版本的功能差异. 并识别细节的问题
抓取接口请求 辅助验证一些模块基本接口, 并辅助分析接口调用流程.
用了appcrawler有什么优点,可以得到什么样的收益?
- 各大云市场上自动遍历功能都多有限制企业无法自由定制.
- 可通过配置来设定遍历的规则,解决monkey等工具可控性差的缺点
- 发现深层次的UI兼容性问题
- 通过新老版本的diff可以发现每个版本的UI变动范围
这个工具可以在时间不允许的情况下测试,遍历软件的所有的控件(把每个按钮都点到),最起码能保证,不会出现crash等现象,能减少一些不必要的工作量;然后测试人员可以把主要的精力放在测试主要的功能点上;
appcrawler的缺点?
该工具无法处理弹框,广告之类的h5东西,因为对应的toch事件不能触发恰好触发到对应的点;
启动参数介绍
java -jar appcrawler.jar
app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器
Usage: java -jar appcrawler.jar [options]
-a, --app <value> Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
-c, --conf <value> 配置文件地址
-p, --platform <value> 平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime <value> 最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium <value> appium的url地址
-o, --output <value> 遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-r, --report <value> 输出html和xml报告
-vv, --verbose 是否展示更多debug信息
--help
示例
java -jar appcrawler.jar -a xueqiu.apk
java -jar appcrawler.jar -a xueqiu.apk --capability noReset=true
java -jar appcrawler.jar -c conf/xueqiu.yaml -p android -o result/
java -jar appcrawler.jar -c xueqiu.yaml --capability udid=[你的udid] -a Snowball.app
java -jar appcrawler.jar -c xueqiu.yaml -a Snowball.app -u 4730
java -jar appcrawler.jar -c xueqiu.yaml -a Snowball.app -u http://127.0.0.1:4730/wd/hub
java -jar appcrawler.jar --report result/
安装依赖
mac下安装appium
#安装node和依赖
brew install node
brew install ideviceinstaller
brew install libimobiledevice
#安装appium
npm install -g appium
#检查appium环境正确性
appium-doctor
真机或者模拟器均可. 确保adb devices可以看到就行
启动appium
使用此工具需要一定的appium基础知识, 请自行google.
目前已经在appium 1.5.3下做过测试
启动appium
appium --session-override
运行
工具以jar包方式发布,需要java8以上的运行环境
java -jar appcrawler.jar
快速遍历
#查看帮助文档
java -jar appcrawler.jar
#运行测试
java -jar appcrawler.jar -a xueqiu.apk
配置文件运行方式
#配置文件的方式运行
#Android测试
java -jar appcrawler.jar -c conf/xueqiu.yaml -a xueqiu.apk
#iOS测试
java -jar appcrawler.jar -c conf/xueqiu.yaml -a xueqiu.app
输出结果
默认在当前目录下会生成一个包含输出结果的目录, 以时间命名. 包含了如下的测试结果
- 所有遍历过的控件组成的思维导图
- 包含了遍历覆盖的html报告
- 用于做diff分析的数据文件
示例