Monkey测试

**一、**Monkey测试概述:Monkey是安卓中的一个命令行工具,可以运行在模拟器中或实际设备中,或直接运行在adb shell中,它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。
二、Monkey测试开展前提:被测程序基本功能测试ok
三、Monkey测试步骤
1.手机真机关闭后台所有运行的程序,手机设置为常亮,确认联网状态,app登录状态,取消锁屏,准备好部分所需文件(测试软件相关)。
2.手机与电脑进行adb连接(步骤参考adb的使用),并在cmd窗口运行adb devices确认连接情况。
3.查询所需测试软件的包名
1).通过cmd窗口输入adb shell pm list packages回车
Monkey测试

2)通过手机端打开应用程序,cmd输入adb shell dumpsys window查看当前运行包名

4.执行monkey命令并记录日志,cmd窗口输入adb shell monkey -p com.songqin.sqoa(包名) -v -s 200 --throttle 450 --ignore-crashes --ignore-timeouts 300 >D:monkeylog/log.txt回车,等待直到出现新的输入窗口表示运行完成。
Monkey测试
此时D盘monkeylog文件夹下保存有运行日志
Monkey测试
adb shell monkey -p com.songqin.sqoa -v -s 200 --throttle 450 --ignore-crashes --ignore-timeouts 300 >D:monkeylog/log.txt命令说明
1)-p后面接的是运行的包名,也就是第三步中查询到到所测软件,-p可出现多个,当出现多个时运行多个程序,且每个程序运行次数随机,总数固定。
2)-v指的是运行日志的详细程度,当没有-v的时候日志最粗略,当-v -v -v也就是出现三个时日志记录最详细
3)-s 后面加数字,表示给这个运行操作自定义的一个***,用于记录操作及复现,当-s后面***一致时手机运行操作一样。
4)–throttle后面接的是时间,单位是毫秒,表示每个操作直接的间隔时间,最大不超过3000即3秒。
5)–ignore-crashes:表示忽略崩溃现象,即崩溃后继续运行操作直到结束,但会记录崩溃日志。
6)–ignore-timeouts:表示忽略超时现象,即超时后仍继续运行直到操作结束,但会记超时日志。
7)300:最后的一个300表示该程序随机操作的次数,可自定义,当运行到达定义次数停止。
8)>D:monkey/log.txt:重定向,表示日志文件保存的路径
其他命令:通过cmd窗口输入adb shell monkey回车查询monkey命令
Monkey测试
说明:
1)–monitor-native-crashes:记录本地应用的崩溃(指所测程序引起的本地应用崩溃bug)
2)–kill-process-after-error:出现错误后停止在错误状态
3)–ignore-native-crashes:忽略本地应用崩溃
4)–ignore-security:应用程序发生许可错误时(证书许可、网络许可等)仍然继续运行。
5)–pct-{+事件类别} {+事件类别百分比}:用于指定每种类别事件操作次数占总次数的百分比。各事件占比总和不超过100%
6)Count:操作总次数
其中[]中括号内的内容为非必填项,例adb shell monkey 500表示对手机随机程序进行500次随机操作。
5.本地日志记录,cmd窗口输入adb logcat -v time记录本地运行日志(直接在cmd窗口显示日志信息)
本地日志建议重定向保存,cmd输入 adb logcat -v time >D:monkeylog/logcat.txt
Monkey测试

Tip1:logcat本地日志记录的是手机被操作动作,不会自动停止,需要通过手动输入ctrl+c的方式停止记录。
Tip2:Monkey执行命令可批处理执行:
1).新建txt文本,打开
2).把命令写在txt文件中
如:adb logcat -v time >D:\log\logcat.txt
如:adb shell monkey 200 > D:\log\monkye000.txt| adb logcat -v time >D:\log\logtca0000.txt
3).文件->另存为bat格式,保存到桌面,记住:编码格式ANSI
4).即可双击执行
6日志文件分析:日志文件先看monkey日志,在monkey日志中出现bug再依据出现bug的关键词的时间在logcat日志中查找相应的activities。
1)monkey日志出现monkey finished表示测试pass
Monkey测试
2)monkey日志出现//CRASH :com.songqin.sqoa(//CRASH:{+包名})表示出现crash(崩溃或者闪退)bug。

Cmd窗口:
Monkey测试
日志文件查找crash:
Monkey测试
3)monkey日志出现ANR in com.songqin.sqoa(ANR in {+包名}) 错误:表示出现ANR程序无响应bug。

Monkey测试

4)异常停止:monkey日志中无结束标志,需要记录并提交monkey测试异常bug。
Monkey测试
Monkey测试
5)异常停止:
显示信息为
** Monkey aborted due to error
** system sppears to have crashed at events …
表示monkey测试fail
Monkey测试