一、monkey介绍
1.功能:采用伪随机测试的方式,来完成app的稳定性测试
2.执行原理:通过monkey的shell脚本去执行安卓系统中自带的monkey.jar工具
3.通常用于盲测,压力测试和冒烟测试
1)盲测:忽略功能和业务逻辑进行随意的测试
2)压力测试:通过长时间的高频操作,测试app在测试机上运行的性能
另外:压测仅仅靠monkey是不够的,还需要别的工具,如Jmeter
3)冒烟测试:在进行功能测试之前,通过monkey测试app的基本可用性
4.局限性:无法遵循功能逻辑进行自动化测试,因此不能将其用于通常的功能自动化
二、adb介绍和环境搭建:
1.我们需要安装adb,用pc在手机上调用monkey的shell脚本,去执行monkey.jar
2.adb是一个C/S架构的命令行工具,主要由3部分组成
3. 环境搭建:
1)下载SDK:解压到不包含中文和空格的目录下
2) 管理SDK内容:运行SDK MANAGER,安装platform-tools.tools以及需要的API版本及对应的build-tools
3) 配置环境变量:将platform-tools路径添加到环境变量path中
4)adb版本查看:adb version
三、monkey命令介绍:
1、命令执行方式:adb shell monkey
2、常用属性:
1)-p 选择包名(--pkg-whitelist-file 白名单)
2)-v 指定日志级别,一般用-v -v -v指定3级的详细日志
3)-s 随机事件的种子数,种子数相同则生成相同随机操作序列
4)--throttle 操作的延时
5)count 执行次数(该参数必须带上)
3.获取app包名的命令:adb shell pm list package -3
其中-3代表第三方应用(即不是安卓自带的应用)
4.指定某app进行测试:
1)该app包名为:com.timeweekly.timefinance
2)输入命令:adb shell monkey -p com.timeweekly.timefinance -v -v -v --throttle 300 500 >E:\MonkeyLog\timeweekly.txt
其中adb shell monkey 表示完成对安卓系统中命令的调用;
-p com.timeweekly.timefinance 表示指定了某个app的包名;
-v -v -v 表示指定3级日志;
--throttle 300 表示延时时长;
500 表示执行次数(一般跑上万次);
>E:\MonkeyLog\timeweekly.txt 表示把日志内容放在E盘,MonkeyLog文件夹下的timeweekly.txt文件里。
四、日志分析:
1、正常结束后,日志结尾一般能看到//Monkey finished;但是系统崩溃后,不一定能看到该结尾
2、app无响应时日志文档结尾出现:Monkey aborted due to error
3.一般在日志中查询关键字:exception、crash和error
1)exception:定位错误提示信息,给开发看,让开发改bug
2)crash:崩溃问题
3)anr(application not responding):应用程序未响应
4、当出错后,有可能是机型的兼容性问题,也有可能是app的问题
5、出错类型举例:比如多次点击某个按钮,出现空指针错误
五、高级参数的应用:
1、--ignore [事件类型] 若某些事件导致monkey脚本终止,可以该参数忽略问题,继续执行monkey,而不中途退出
一般要加上crash和timeouts。因为公司实际执行monkey时,通常跑几个小时或者几天,若出错,测试人员无法及时得知,一般都是跑完才去看。所以加上忽略事件就很有必要
命令:adb shell monkey -p com.timeweekly.timefinance --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 10000 >E:\MonkeyLog\20190401.txt
日志:操作10000次,运行了约8分钟
2、--pct [操作类型] [该操作所占的百分比] 指定某类操作的百分比,让monkey只做或者不做某一类操作
比如:--pct -touch 100 仅做触摸操作
3、用monkey的种子编号(seed)去复现操作(-s seed序列),记得要关闭app后再执行该命令
4、当测试机有多个时,用 -s + 设备名称 选择某测试机进行测试:
先用adb devices查看所有已连接的设备
命令:adb -s emulator-5554 shell monkey -p com.timeweekly.timefinance --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 100 >E:\MonkeyLog\20190401-multiDevices.txt