稳定性测试—Monkey

637 阅读3分钟

一、概念介绍和原理实现

什么是Monkey测试

“猴子测试”是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行操作,其操作是无目的的、乱点乱按的。

Monkey测试的原理

利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常,所以可以用Monkey随机重复的方法去负荷测试。

二、Monkey程序介绍

1、Monkey程序由Android系统自带,可以运行在模拟器里或者真是设备中运行,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar,该程序需要由一个名为“Monkey”的shell脚本来启动执行。

2、Monkey向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

三、测试环境搭建

1、PC端安装adb(不清楚的可自行百度查询)

2、手机通过USB连接电脑,自动安装usb驱动

3、设置手机屏幕为常亮,防止手机进入锁屏状态

4、需要登录的App,用测试账号先登录(最好由开发提供一个屏蔽账号 退出功能的APK包,防止运行过程中账号被退出登录)

四、Monkey命令介绍

monkey -p com.hosjoy.ssy -s 6515 --pct-touch 45 --pct-motion  20
--ignore-security-exceptions --ignore-crashes --ignore-timeouts
--ignore-native-crashes --throttle1000 -v -v -v 5000000  >
/mnt/sdcard/monkey.txt

常用指令介绍:

-p:指定有效的包名(如果不指定,则允许系统中所有有效的package),若需运行多个包,则后面继续加-p package

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列

-v:指定打印信息的详细级别,一个-v增加一个级别,-v-v-v为最详细

-throttle:每个事件结束后的间隔时间(毫秒)——降低系统的压力(如不指定,系统会尽快的发送事件序列)

-pct-touch :跳转触摸事件的百分比

-pct-motion :调整motion事件百分比(线滑动事件如从左到有滑动解锁)

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

详细指令,可自行百度查看

五、Monkey运行与停止

Monkey运行

1、PC端adbshell+monkey命令(根据不同app自行修改对应的参数)

2、将常用monkey命令写成bat脚本,运行前对应修改包名与其他参数

Monkey停止

1、使用“adbshellps|grepmonkey”命令,查找出monkey的进程号;

2、再使用kill进程号,杀掉monkey的进程

备注:如果monkey进程查不到,重启手机adbreboot时进程也被杀死

六、Monkey结果分析

1、按关键字进行搜索,ANR、Exception、Crash、Error

2、找到有问题的地方,查看上下文信息

3、注意第一个switch上下文信息

4、查看monkey里面出错前的一些事件动作,可以手动执行该动作

5、进行问题复现,可以使用之前执行的monkey命令在执行一遍,注意seed值要一样

为简化统计操作,可使用bat脚本进行统计,使用如下:

【测试结果分析】

(1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)

(2)、闪退问题:在日志中搜索"crash"

(3)、异常:搜索"exception"

(4)、强制退出:搜索"force closed"

常见的Crash错误信息如下: