monkey命令行测试

Posted suesky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了monkey命令行测试相关的知识,希望对你有一定的参考价值。

monkey是google提供的一个用于稳定性与压力测试的命令行工具。monkey程序由android系统自带,位于/sdcard/system/framework/monkey.jar中。 Monkey tools在Android内只能针对Activity做测试,不能对service做测试。

1.monkey在pc端测试的方法:

>adb shell monkey [option] <count>

/* [option] 测试条件(下面会做详细说明)
* <count> 测试次数
*/

eg:adb shell monkey  -v -v -v 500

-v 指定Log的详细程度,共有三个级别:
 -v 日志级别为level 0
 -v -v 日志级别为level 1

-v -v -v 日志级别为level 2     日志的详细程度越来越详细

最高可添加3个 -v,500为测试的次数

2.保存monkey运行的日志

adb shell monkey 后边不带测试条件时默认指定所有包即所有应用程序。

2.1 保存在手机上
eg:adb shell monkey   > /sdcard/monkey.txt

这里的sdcard指的是存储路径即手机内部存储。> 是追加符,即将打印的log追加到monkey.txt文本中

2.2 保存在电脑上
adb shell monkey  > monkey.txt

 monkey.txt保存在PC的当前目录下。

3.monkey查看包名

方法1: adb shell pm list package  

方法1:adb shell ls /data/data/

两者区别在于前者不需要root,后者需要root.

4.monkey可指定应用包进行测试。

eg:adb shell monkey -p com.android.camera  500

-p 后边跟包名,这里可指定一个包或多个包,要指定多个包需要使用多个-p选项,每个-p选项只能用于一个包。

eg:adb shell monkey -p com.android.camera   -p com.android.mms  500

Monkey test中只能指定activity属性的应用包进行测试,当出现指定的应用程序不是activity的时候,monkey会出现log提示如下并终止运行:

这里只显示最后一行

log:

**No activities found to run,monkey abortd.

备注:activity和service的区别,activity是android应用的核心概念,简而言之activity为用户交互管理者,有一个可视界面呈现,而service是在后台运行,没有界面呈现。

5.monkey的log分析 (android中常见的错误)

查找关键字crash,anr。

anr:

>在5秒内没有相应的事件(例如,按键按下,屏幕触摸);

>BroadcastReciever在10秒内没有执行完毕。

crash:

>异常停止

>异常退出

 6.查看monkey进程

monkey 进程:adb shell ps | grep monkey

杀死monkey进程:adb shell  kill monkey  

eg:

[email protected]:~$ adb shell ps  | grep monkey

shell     23444 537   2029252 49604 futex_wait 7fb2834170 S com.android.commands.monkey

[email protected]:~$ adb shell kill 23444

[email protected]:~$ 

 

7、Monkey发送的事件类型和频率

--pct-appswitch <percent>   

调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

--pct-anyevent <percent>

调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

--pct-touch <percent>

调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

--pct-motion <percent>

调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)

--pct-trackball <percent>

整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

--pct-nav <percent>

调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

--pct-syskeys <percent>

调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

-p <允许执行的包名列表>

如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包

-c <意图的种类>

如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选 择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。

 

8.monkey常见的测试策略

8.1.对设置进行旋转压力测试

adb shell monkey -p com.android.settings  --pct-rotation  50  --ignore-crashes --ignore-timeouts --ignore-native-crashes --ignore-security-exceptions -v -v -v  20000

8.2.对整机的应用开启测试

adb shell monkey --pct-appswitch 100 --throttle 5000  -v -v -v 100000

8.3.测试设置,触摸事件30%,其他按键50%,错误停止20%,延时200

adb shell  monkey   -p com.android.settings   --pct-touch  30  --throttle 200 --pct-anyevent 50  -v -v 10000

8.4..测试设置,随机种子数为100,延时10 秒 ,忽略所有错误

adb shell monkey   -p com.android.settings  -s 100  --throttle 10 --randomize-throttle   -ignore-crashes --ignore-timeouts --ignore-native-crashes --ignore-security-exceptions -v -v -v  20000

9.monkey 无activity启动

-p com.android.phone   -c android.intent.category.DEFAULT

 

以上是关于monkey命令行测试的主要内容,如果未能解决你的问题,请参考以下文章

Monkey命令行可用的全部选项

adb命令之monkey压力测试篇

monkey命令选项参考

monkey命令大全

monkey命令详解

monkey命令详解