目录
1.google android 原生的monkey,app crawler.----->基于monkey
4.zhangzhao的 maxim.----->基于monkey
5.seveniruby的appcrawler.----->基于appium
根据分层测试的策略,测试中我们可以把测试活动进行划分,常见策略如下:
分层测试:
1.单元测试;
2.接口级别测试(包括接口自动化);
3.核心用例,核心业务流程交给UI自动化测试;
4.新增功能交给手工测试;
5.自动化测试及手工测试之外的工作交给自动遍历,
例如数量庞大的页面内容的数据展示,css效果,页面渲染等都交给自动遍历测试,这样就大大减少了自动化测试的工作维护量,又满足了对漏测的杜绝.
自动遍历工具:
1.google android 原生的monkey,app crawler.----->基于monkey
adb shell monkey [options] 执行次数;monkey使用时支持设置配置
-p,-s,-v,-vv,-vvv,-throttle,--pct-事件
adb shell monkey 100.对终端中的所有包随机执行
adb shell monkey -p com.baidu.andriod 100. -p对指定包操作
adb shell monkey -p 包名 -s 21 79. -s指定时间种子,相同seed值,执行的操作相同
adb shell monkey -p 包名 -vv -s 21 79 .-v日志详细程度,一共3个v,代表3个详细级别
adb shell monkey -p 包名 --throttle 5000 200. --throttle时间延迟
adb shell monkey -p 包名 --pct-touch 10 --pct-trackball 90. --pct-动作,指定操作百分比
--pct-touch:触摸事件,例如点击.
--pct-motion:动作事件,例如滑动(直线).
--pct-trackball:轨迹事件,例如移动+点击,曲线滑动.
--pct-majornav:主要导航事件,比如回退按键,菜单按键.
2.百度的startmonkey.----->基于monkey
3.腾讯的newmonkey.----->基于monkey
4.zhangzhao的 maxim.----->基于monkey
下载:https://github.com/zhangzhao4444/Maxim
使用:将下载下来的2个核心jar包push至终端内.
1.adb push framework.jar /sdcard
2.adb push monkey.jar /sdcard
命令行模式运行:
cmd 命令 : adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v
tv.panda.test.monkey.Monkey
: monkey入口类,不要修改com.panda.videoliveplatform
: 被测app包名,需要修改--uiautomatormix
: 遍历策略
遍历策略:
1.Mix模式(基于事件概率的压力测试)
--uiautomatormix 直接使用底层accessibiltyserver获取界面接口 解析各控件,随机选取一个控件执行touch操作。 同时与原monkey 其他操作按比例混合使用 默认accessibilityserver action占比50%,其余各action分剩余的50% accessibilityserver action占比可配置 --pct-uiautomatormix n
2.DFS模式
--uiautomatordfs 深度遍历算法
3.Troy模式
--uiautomatortroy 控件选择策略按max.xpath.selector配置的高低优先级来进行深度遍历
4.保留原始monkey
5.总运行时长 --running-minutes 3 运行3分钟
6.--act-whitelist-file /sdcard/awl.strings 定义白名单 --act-blacklist-file
其他参数与原始monkey一致
5.seveniruby的appcrawler.----->基于appium
appcrawler工作原理:
1.把当前app界面dump为xml结构.
2.获取待遍历元素.
a.遍历范围:selectedList.
b.过滤黑名单blackList,小控件,不可见控件.
c.重排控件顺序,firstList,lastList.
d.跳过已点击+跳过限制点击的控件tagLimit.
e.根据匹配的规则执行action.
3.循环2步操作流程.
项目地址:https://github.com/seveniruby/AppCrawler
环境要求:java8+appium1.8+
使用:
1.启动appium
2.启动模拟器或真机
3.配置规则开始自动遍历
4.生成配置样板文件
java -jar appcrawler.jar --demo 会在当前目录下生成一个demo.yml文件
5.参数模式启动:
appcrawler --capability "appPackage=包名,appActivity=启动页名"
6.配置文件模式启动
#配置文件的方式运行 #Android测试 java -jar appcrawler.jar -c conf/demo.yaml -a xxx.apk #iOS测试 java -jar appcrawler.jar -c conf/demo.yaml -a xxx.app
配置文件设置:
1.capability设置:与appium一致.
2.testcase:用于启动app后的基础测试用例,执行动作.
1)完整形态:
given:所有的先决条件.
when:先决条件成立后的行为.
then:断言集合.
2)简写形态:
xpath:对应when里面的xpath.
action:对应when的action.
3.selectedList:遍历范围设定.
firstList:优先被点击.
lastList:最后被点击.
tagLimitMax:同祖先的元素最多被点击多少次.
backButton:当所有元素都被点击后默认后退控件定位.
blackList:黑名单.
maxDepth:遍历的最大深度层级.
4. triggerAction:特定条件触发执行动作的设置.
需要特定次数的触发动作,通常用于处理弹窗.
xpath:指定具体按钮.
action:动作.
times:规则的使用次数.
java -jar appcrawler.jar路径 -c --demo.yml -o /traverse/