一、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