安卓测试之---Monkey

Tip:在阅读此篇之前,请先了解ADB命令: http://www.cnblogs.com/pearl07/p/8572390.html 

一、什么是Monkey

Monkey是Android SDK提供的一个命令行工具(Android平台下一个命令行自动化测试工具),可以运行在模拟器里或实际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

简单地讲,就是模拟用户在安卓应用上进行随机操作,虚拟用户数量可以设置,以此暴露出crash。

 

二、Monkey 基本参数介绍

-p <允许的包名列表>         

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

指定一个包:adb shell monkey -p com.tencent.qqmusic100   

指定多个包:adb shell monkey -p fishjoy.control.menu  –p com.tencent.qqmusic 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.tencent.qqmusic–s 10 100 
monkey测试2:adb shell monkey -p com.tencent.qqmusic–s 10 100

如果在测试时,执行发生crash,在不确定该crash是否必现的时候,可以使用这个seed(-s)去复现执行。


--throttle <毫秒>            

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

adb shell monkey -p com.tencent.qqmusic--throttle 3000 100

--ignore-security-exception 

当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

--ignore-timeouts

通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

--ignore-crashes

应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

--pct-touch <percent>

调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分

比设置成相应较高的百分比。如触摸返回、触摸签到等

--pct-motion<percent>

调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁

--pct-trackball <percent>

调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁

--pct-nav<percent> 导航,现在手机基本没有导航了

---pct-syskeys<percent> 按键消息比例,主页、后退、音量增减

--pct-anyevent 其他不常用的按键比例的设置,不常用

--hprof  monkey 测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间

--ignore-security-exceptions  忽略权限问题的

--kill-process-after-error 当错误发生时杀进程

--monitor-native-crashes 监视崩溃时的本地代码

 

三、Monkey基本语法

---- adb shell monkey –p 程序包 –v 测试次数 

$ adb shell monkey -p com.tencent.qqmusic -v 500 //如果不清楚程序包名,可以使用adb命令查看

---- 可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log

adb shell monkey –p com.tencent.qqmusic  –v 200|logcat -v time

 

----可以指定log存放的位置及名称

adb shell monkey -p com.tencent.qqmusic -v 100 >e:	est.txt

----如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt

adb pull /data/anr/traces.txt

 

1). 测试版本需要具备root权限

2). 进入data/anr目录下面

3). 将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可

 
四,保存monkey log以及手机log到sdcard

---- 首先在cmd或终端中输入adb shell

---- 再执行monkey,比如

monkey -p com.tencent.qqmusic --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 100 >/mnt/sdcard/monkey.txt & logcat -v time >/mnt/sdcard/logcat.txt

---- 终端内打开存放日志地址,如

cd /Users/wengyb/Documents

----拖日志到电脑上,如

adb pull /mnt/sdcard/monkey.txt 

  

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/pearl07/p/8821083.html