Ⅰ monkey
简介
- 顾名思义,monkey就是一直猴子,把app看成一棵树,每个横向,纵向的页面看成是数的枝丫,即app页面组件的广度,深度,那么这个猴子就可以在树上上窜下跳,以此去进行app内各种操作事件;例如:点击,滑动,缩放等。
安装
- monkey为androidSdk自带的工具,所以只需下载安装androidSdk
- 下载安装后,打开SDK Managet.exe勾选所需要的组件,主要是安卓各版本的工具,androidR为最新版本
- 安装后打开cmd执行adb,打印除adb各命令信息即安装成功
Android四大组件
- activity 用户交互的可视化界面
- service 实现程序后台运行的解决方案
- content provider 内容提供者,提供程序所需要的数据
- broadcast receiver 广播接收器,用于监听外来事件的到来(如来电,信息等)
adb的一些命令
- 1
adb devices
查看已链接的设备/模拟器 - 2
adb shell pm list packages
查看所有应用包- -s 过滤出系统应用
- -3 过滤出第三方应用
- | find “string” 过滤对出对应名称
- 3
adb logcat | find "START"
实时打印当前启动的app启动日志 - 4
adb install [option] <apk_path>
- -l 安装到保护目录 /mnt/asec
- -r 允许覆盖安装
- -d 允许降级覆盖安装
- -g 赋予所有运行时权限
- 5
adb uninstall
<包名> 卸载app - 6
adb shell dumpsys activity activities | find mResumedActivity
查看前台activity - 7
adb shell dmesg
查看设备信息 - 8
adb shell dumpsys battery
查看电池状况
monkey使用
- 1 adb shell monkey [option] <事件计数> 对所有的软件包进行随机遍历测试
- 2 adb shell monkey -p com.zhongan.iyunbao 100 对指定的包进行随机遍历
- 加参数 -v 打印日志的详细等级,最多三个,adb shell monkey -p com.zhongan.iyunbao -v -v -v100
- 100 事件数
- 多个包进行测试 -p -p
事件百分比设置
-
0:–pct-touch 触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)测试中最常用
-
1:–pct-motion 手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,测试中最常用。
-
2:–pct-pinchzoom 二指缩放百分比,即智能机上的放大缩小手势操作
-
3:–pct-trackball 轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
-
4:–pct-rotation 屏幕旋转百分比,横屏竖屏
-
5:–pct-nav 基本”导航事件百分比 老手机的上下左右键,智能机上没有 忽略,测试中很少用
-
6:–pct-majornav ”主要”导航事件百分比
-
7:–pct-syskeys ”系统”按钮事件百分比(供系统使用,如Home, Back, Start Call, End Call,音量控制)
-
8:–pct-appswitch 启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
-
9:–pct-flip 键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回,测试中很少用
-
10:–pct-anyevent 其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。测试中很少用
事件触发延迟时间设定
- 1 --throttle 设定两个事件之间的固定延迟,单位:毫秒
- eg:
adb shell monkey --throttle 3000 --pct-touch 70 -p com.zhongan.iyunbao 100
;设置事件延迟间隔3秒,触摸事件70% 遍历100个事件
- eg:
执行输出日志
- 1
adb shell monkey --throttle 100 -p com.zhongan.iyunbao -v -v -v 3000 > E:\monkey-log\monkey_3000_log.txt
monkey日志分析
- seed 该次monkey的seed值
- count 执行次数
- AllowPackage 执行的包名
- includeCategory 执行类别
- ANR&Exception异常,奔溃信息
- crash 闪退信息
- force closed 强制退出
- switch 程序跳转,跳转到其他程序
- 可能出现的两个随机事件之间没有时间间隔,引起事件主入失败
- 复现问题,重复执行改组问题事件 -s + seed +count即可复现该问题的事件组
- Droped 丢弃事件
Ⅱ appcrawler
安装appcrawler
- 下载安装地址:https://github.com/seveniruby/AppCrawler/
安装appium
- 1 安装node.js
- 2 安装cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 3 安装appium server:
cnpm install -g appium
- 4 启动appium,cmdos窗口执行 appium命令
- 5 安装appium-doctor:
cnpm install appium-doctor
- 6 安装完成
使用appcrawler
- 1 默认运行方式,遍历原则,从中间开始遍历
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "appPackage=com.zhongan.iyunbao,appActivity=.MainActivity"
- 2 生成配置文件方式(推荐此方式):
- 生成一个demon.yaml配置文件
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --demo
- 通过配置文件运行:
java -jar appcrawler-2.4.0-jar-with-dependencies.jar -c demo.yml
- 3 demo.yml文件常用配置详解
- capability 与appium相同,上下文信息
- testcase 详细模式-用于启动app后的基础测试用例
- name 测试用例名称
- given 所有的先决条件
- when 先决条件成立后的行为
- then 断言集合
- testcase简写模式
- xpath: 对应when里的xpath
- action:对应when里的action
- selectedList 遍历范围设定
- triggerActions 特定条件下触发执行动作的设置
- firstList 优先被点击
- lastList 最后被点击
- tagLimitMax 同祖先的元素最多点击多少次
- backButton 当所有元素被点击后,默认后退控件定位
- blackList 黑名单,设置后不会对该元素进行操作
- maxDepth 遍历的最大深度
- 4 demo举例:进入产品中心tab进行遍历
- 其他的可以不用修改