App稳定性测试-Monkey

稳定性测试Monkey

  • 概念介绍和原理实现

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

2、利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。

  • 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 --throttle 1000 -v -v -v 5000000 > /mnt/sdcard/monkey.txt

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

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

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

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

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

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

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

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

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

  • Monkey运行与停止

5.1 Monkey运行

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

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

5.2 Monkey停止

     1、使用“adb shell ps | grep monkey”命令,查找出monkey的进程号;

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

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

  • Monkey结果分析

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

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

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

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

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

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

 

 

App稳定性测试-Monkey

  【测试结果分析】

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

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

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

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

 

常见的Crash错误信息如下:

 

App稳定性测试-Monkey