Android Monkey压力稳定性测试

1、什么是稳定性测试?

通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行。

2、什么是monkey?

Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏幕、滑动、按键等随机事件流来对设备上的程序进行压力测试

,检测程序多久的时间会发生异常,可以根据获取的log信息进行修复。

3、Monkey结构

 Android Monkey压力稳定性测试_第1张图片

 

 

4、Monkey 使用步骤

 

① 连接方式

有线连接:数据线连接设备

无线连接:输入adb connect 192.168.199.152   IP地址

② 先确认设备(模拟器或者真机)是否连接成功

输入命令:adb devices,出现设备号则表示连接成功

③ 确定待测应用的包名

打开待测应用后,输入命令:adb shell dumpsys activity | find "mFocusedActivity"查看包名    专业版包名: com.zhongyou.special.pad     169030

④ 执行monkey测试命令

输入命令:adb shell monkey -p com.zhongyou.special.pad -v -v 1000 --throttle 500  --pct-touch 50 –-pct-motion 50 >D:\monkey.txt  

⑤ 中断monkey运行

如果想中断运行中的monkey CTRL+C

adb shell ps | find “monkey”  返回进程号

adb shell kill [刚才查到的进程号]

5、Monkey 压力测试参数

 

命令格式:adb shell monkey [限制命令 参数值][事件名 百分比] 事件次数

Android Monkey压力稳定性测试_第2张图片

基础参数

-p <允许的包名列表>         

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果没有指定包, monkey将允许系统启动设备中的所有app。  

指定一个包:adb shell monkey -p com.shjt.map 100   

指定多个包:adb shell monkey -p fishjoy.control.menu  –p com.shjt.map  100  

-v        

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示: 

Level 0  :  adb shell monkey -p com.shjt.map -v 100      // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息   

Level 1  :  adb shell monkey -p com.shjt.map -v  -v 100    // 提供较为详细的日志,包括每个发送到Activity的事件信息

Level 2  :  adb shell monkey -p com.shjt.map -v  -v  -v 100  // 最详细的日志,包括了测试中选中/未选中的Activity信息

-s(随机数种子)            

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。  示例:

monkey测试1:adb shell monkey -p com.shjt.map –s 10 100                

monkey测试2:adb shell monkey -p com.shjt.map –s 10 100  
--throttle <毫秒>            

用于指定用户操作(即事件)间的时延,单位是毫秒;如果没有指定这个参数,monkey会尽可能快的生成和发送消息。

例:adb shell monkey -p com.shjt.map --throttle 3000 100   

发送的事件类型

点击事件百分比,即参数--pct-touch

滑动事件百分比,即参数--pct-motion

轨迹球事件百分比,即参数--pct-trackball

基本导航事件百分比,即参数--pct-nav

系统按键事件百分比,即参数--pct-syskeys

其他事件百分比,即参数--pct-anyevent

调试选项(不常用)

--hprof:指定该项后在事件序列发送前后会立即生成分析报告

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

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

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

6、Monkey 日志分析

 

Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志 (注意第一个swith以及异常信息等)
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception”   (如果出现空指针, NullPointerException)  肯定是有bug

3、搜索"crash" 、"error"

7、应用内存使用日志

adb shell dumpsys meminfo com.zhongyou.special.pad | find " Dalvik Heap"

top [ -m ] [ -n ] [ -d ] [ -s ] [ -t ] [ -h ]

输入命令:adb shell top -d 10 -m 1 -s rss >D:\ram.txt

参数含义:  

-m    // 最多显示多少个进程
-n   // 刷新次数
-d    // 刷新间隔时间(默认5秒)
-s    // 按哪列排序 
-t    // 显示线程信息而不是进程 
-h    // 显示帮助文档 

参数含义:  

PID  : progress identification,应用程序ID  

S    : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数  

#THR : 程序当前所用的线程数  

VSS  : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)  

RSS  : Resident Set Size实际使用物理内存(包含共享库占用的内存)  

PCY  : 前台(fg)和后台(bg)进程  

UID  : User Identification,用户身份ID  

Name : 应用程序名称  

 

 

adb shell monkey -p com.zhongyou.special.pad -v -v 10000 --throttle 500  --pct-touch 50 –-pct-motion 50 >D:\monkey.txt  |  adb logcat  -v time > D:\log.txt  |  adb shell top -d 10 -m 1 -s rss >D:\ram.txt

你可能感兴趣的:(Android Monkey压力稳定性测试)