自动遍历回归测试
提到性能测试一般我们想到的都是服务端的测试,对API进行测试,但是有些情况也需要进行些客户端的性能测试。除此而外还可能有些功能和兼容性测试的需求。
App 某界面崩溃
功能问题
App 某接口有报错
股票详情页中特定信息字段内容丢失或者数据异常
微信分享不可用
兼容性问题:
用户网络慢时发出请求后退出当前页面发生崩溃
某些界面在 4.4 和 5.0 的系统上操作体验不同
当系统功能比较复杂的情况下,没有合理的测试分层反而想要在UI测试上cover全部的流程,这本来就是错误的想法,大量的UI自动化测试不仅会增加不稳定性,得不到理想测试结果的同时也导致自动化测试收益比大打折扣。这时候就催生出了自动化遍历工具,希望有工具像monkey一样,自动点击app,执行一定的时间实现遍历功能。
自动遍历的需求,可控:可以定义遍历的路径;可定制:可实现自动输入、自动滑动等基础行为 结果分析;点击前后的截图对比 结果的数据建模. 新老版本 UI Diff;App 结构思维导图展示。
目前市面上比较流行的自动遍历工具有:
Google Android 原生 monkey 百度 SmartMonkey 腾讯 NewMonkey testerhome vigossjjj smart_monkey
阿里 Macaca 的 NoSmoke
头条的 zhangzhao Maxim
霍格沃兹测试学院 seveniruby AppCrawler
Google 的 App Crawler
AppCrawler
这里主要介绍AppCrawler,这是霍格沃兹测试学院的思寒开源的一个工具,github地址是:GitHub - seveniruby/AppCrawler: 基于appium的app自动遍历工具,体验下来还是相对灵活且好用的。
appcrawler对其他框架的依赖:
AppCrawler 底层引擎ADB Macaca selenium、Appium,Appium 底层引擎 WDA、Uiautomator2
AppCrawler 环境要求
AppCrawler 2.4:java8 appium 1.8.x、 下载方法:百度网盘直接下载、 从源代码编译:mvn 编译即可;AppCrawler 命令或者 java -jar appcrawler.jar 皆表示用 jar -jar 命 令执行对应版本的 jar 包文件,比如 java -jar appcrawler-2.4.0-jar-with- dependencies.jar
quick start
启动 Appium, 启动模拟器或者连接真机, 开始自动遍历
appcrawler --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias"
AppCrawler 基于配置文件的运行模式
java -jar appcrawler.jar --demo ,会在当前目录下生成一个 demo.yml,执行方式支持参数化执行和配置文件执行两种方式。
capability 设置:与 Appium 完全一致 testcase:用于启动 App 后的基础测试用例 selectedList:遍历范围设定 triggerActions:特定条件触发执行动作的设置,执行参数比配置文件优先级别高
自动遍历支持
selectedList:需要被遍历的元素范围
firstList:优先被点击 lastList:最后被点击
tagLimitMax:同祖先(同类型)的元素最多点击多少次
backButton:当所有元素都被点击后默认后退控件定位
blackList:黑名单
maxDepth: 6 遍历的最大深度
触发器:
triggerActions:需要特定次数的触发动作通常用于处理弹框
TestCase:指定具体按钮
action:动作
times:规则的使用次数