一、monkey基础
1、为什么要进行monkey测试
monkey测试是为了测试稳定性和健壮性
crash:崩溃、闪退
ANR机制–Application Not Responding:在主线程中进行了耗时的操作
主线程:负责UI相关,子线程:负责具体事务
耗时操作有:在主线程中请求网络操作、数据库的查询、
2、monkey简介
是android中附带的一个工具
它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序进行稳定性和健壮性测试
3、monkey工作原理
monkey运行的时候,生成伪随机事件流,并把他们发给系统,同时monkey还对测试中的系统进行监测,并进行特殊处理
如果应用程序崩溃或接收到任何失控异常,monkey将停止并报错
如果应用程序产生了应用程序不响应的错误,monkey将会停止并报错
按照选定的不同级别的反馈信息,在monkey中还可以看到其执行过程报告和生成的事件
二、monkey的使用
1、开始-运行-cmd
usb连接手机,输入adb shell monkey 命令
adb monkey shell -p com.tencent.mm -v 500
2、日志的获取
为了方便分析问题,可以将日志信息重定向到文件中
格式:monkey -p com.tencent.mm -v 1000 >1.log --一个>是覆盖
monkey -p com.tencent.mm -v 1000 >>1.log --两个>>是追加
adb shell
monkey -p com.tencent.mm -v 1000 >d:/1.txt --不正确,因为adb shell 后进入了手机,手机没有d盘,正确的指令是:
adb shell monkey -p com.tencent.mm -v 1000 >d:/1.txt
如果进行monkey测试时,遇到anr或crash的情况,在抓取log的同时需要提供traces.txt(在/data/anr/下)
adb shell cd /data/anr
ls
monkey命令行参数 :
-p
monkey -p com.tencent.mm -p com.aotuyidongzhifa.cn -v 100
-V -VV -VVV
-s 用于指定伪随机事件生成器的seed值,如果seed相同,则两次monkey测试所产生的事件序列也是相同的
-throttle<毫秒>用于指定用户操作间的延迟,单位是毫秒
–ignore -crashes 应用程序即使发生崩溃,也会运行直到计数完成
adb shell monkey -p com.tencent.mm --ignore -crashes -v 500
–ignore - timeouts 应用程序即使发生ANR错误时,monkey依然会发送事件,直到事件计数完成
adb shell monkey -p com.tencent.mm --ignore -timeouts
adb shell -> cd system/bin ->ls 可以看到很多linux命令,包括
adb shell monkey -p cn.com.pyc 200
adb shell monkey -p cn.com.pyc -v 500
adb shell monkey -p cn.com.pyc -s 12345 -v 500 >e:\1.txt
–打开monkey测试的日志文件,搜索error、exception、crash、anr
adb shell monkey -p cn.com.pyc -v -s 1234567 --throttle 300 200 >e:/1.txt
–如果想让多一点触摸事件
adb shell monkey -p cn.com.pyc -v -s 11709 --throttle 300 --pct-touch 50 200 >e:/1.txt
–如果测试的过程中出现crash异常,提供monkey日志的同时还要提供monkey指令,还要附上响应的crash截图
–如果测试过程中出现anr异常,需要另外提供traces文件 adb shell->cd data/anr ->ls ->traces.txt
adb shell monkey -p com.nyts.sport --pct-touch 30 --pct-motion 30 --pct-trackball 0 --pct-nav 0 --pct-majornav 20 --pct-appswitch 10 --pct-anyevent 10 -s(指定seed值) 12867 -v --throttle(指定时间间隔) 300 20000 >MonkeyTest.txt
Monkey执行结果分析
打开日志文件,查找关键字"ANR",“Fatal”,“CRASH”,“Exception”,“androidruntime”,“out of memory”, "null pointer"若存在,则说明发生异常。
打开日志文件,查找关键字"Finished",若存在,则证明Monkey正常结束
收集出错相关信息,发给研发
执行后的手机截图
monkey手机的日志文件
monkey的测试结果
被测试手机信息
adb shell monkey -p com.niuyan.app --ignore-crashes --ignore-timeouts -ignore-security-exceptions --ignore-native-crashes -v -v -v --throttle 300 100000 >C:\Users\yang\Desktop\log.txt 2>&1
adb shell monkey -p com.niuyan.app --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --throttle 500 -v -v -v 10>C:\Users\yang\Desktop\log.txt 2>&1
sd卡/Android/data/com.niuyan.app/files/BBB/Bullseye/Logs/crash/