Monkey的概念
“猴子测试”是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行操作,其操作是无目的的、乱点乱按的。
这种测试方式在产品周期中的早期阶段会找到很多很好的bug,为用户节省不少的时间。
Monkey的介绍
它是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。
monkey向系统发送伪随机的用户事件流,多用于对正在开发的应用程序进行压力测试、稳定性测试。
monkey 是 Android平台提供的一种自动化测试方法,它会随机的模拟发送各种按键,点击,滑动等用户事件来实现压力测试。看系统版本是否稳定,能否持续的为用户提供服务。从log查看异常的次数、异常的频率。
monkey包括很多选项,大致四大类:
1.基本配置选项,如设置尝试的事件数量。
2.运行约束选项,如设置只对单独的一个包进行测试。
3.事件类型和频率。
4.调试选项
monkey命令特性
不可能使用monkey来指定做一样测试,重复做很多次。因为monkey产生的是伪随机的事件流。但是我们可以通过添加命令选项将操作限制在一定的范围内。
monkey的搭建及测试准备
一、首先你要先搭建环境
即下载ADB具体安装流程请参考https://blog.csdn.net/lovelygirlyuzhu/article/details/120786334【ADB属于SDK】
adb安装成功之后,关掉cmd窗口,然后在某盘下新建一个文件夹来存放日志比如命名为monkey_log ,路径为:F:\monkey\monkey_log
之后继续如下操作。
二、可以用模拟器或者真机测试。如下用真机来演示整个流程。
三、打开手机的开发者调试工具,用usb数据线将你的手机和电脑链接;
四、cmd 打开命令提示符窗口输入adb devices ,若显示如下则表示未开启开发者调试
cmd 打开命令提示符窗口输入adb devices ,若显示如下则表示手机与adb链接成功
五、查找手机APP的包名,先打开手机APP应用之后,再从手机设置–系统–开发人员选项–正在运行的服务查找该运行的APP,在该APP的进程中即可找到包名如下。或者可以在命令窗口中输入adb shell pm list packages来列出所有真机的包名。然后去查找你想要测试的包名。
六、现在可以开始在命令窗口进行monkey测试
直接在命令窗口输入相应的命令进行压力测试比如
adb shell monkey -p com.sohu.inputmethod.sogou -v 2000 >F:\monkey\monkey_log\2021.10.18.01.txt【将上面的路径F:\monkey\monkey_log复制到这里,然后记事本日志自己手动输入eg:2021.10.18.01.txt】
回车如下结果
monkey中的-v:表示日志级别0,说明缺省值,仅提供启动提示,测试完成和最终结果等少量信息
填写的2000:2000表示是事件数(即让Monkey程序模拟100测随机用户事件)【该数字可以自行根据实际情况来更改。】
七、然后在F:\monkey\monkey_log下找到该打印的日志并且打开。
八、分析log
日志开头
显示本次测试seed值,执行次数,测试包
日志结尾
如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。
(如果Monkey执行中断,在log的最后也能查看到当前已执行的次数。)
日志内容分析
一般测试结果分析-搜索关键字:
1.程序无响应,比如APP卡死了。ANR问题:在日志中搜索“ANR”
2.崩溃问题:在日志中搜索“CRASH”
3.其他问题:在日志中搜索”Exception”(如果出现空指针 NullPointerException,则定有bug)
4.内存泄露问题:在日志中搜索“GC”(需进一步分析)
5.一般性错误:在日志中搜索“error”
6.严重性错误:在日志中搜索“Fatal
若搜索的是ANR,然后找不到该字段,表明没有这种问题。
重现问题
Monkey测试出现错误后,一般的查错步骤为以下几步:
1.找到是monkey里面的哪个地方出错
2.查看Monkey里面出错前的一些事件动作,并手动执行该动作
3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样