首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用monkey对android app进行压力测试

系统环境:ubuntu17.10

一、Monkey 介绍

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。使用monkey进行压力测试,并结合monkey打印的日志和系统打印的日志,分析测试中的问题。Monkey测试的特点:

1、测试的对象仅为应用程序包。

2、Monky测试使用的事件数据流是随机的,不能进行自定义。

3、可以对MonkeyTest的对象的事件数量、类型、频率等进行设置。

二、基本用法

语法:

$ adb shell monkey [options]

如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。

切换目录:~$cd /home/Android/Sdk/builds-tools/

查看程序,如QQ:./aapt dump badging /home/wong/Downloads/qq.apk

(2)通过adb shell pm list packages 来查询已安装的包。

三、Monkey测试实例

1、用USB将手机连接上电脑

2、查看设备连接情况:

~$adb -d devices

List of devices attached

810EBMB3XAXL device

3、进入手机shell环境:

~$ adb -d shell

shell@m2note:/ $

4、对com.android.calculator2进行500次的压力测试

shell@m2note:/ $ monkey -p com.android.calculator2 -v 500

测试过程中,应用程序会不断地切换画面。

四、monkey命令参数

~$ adb shell monkey -help

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]

[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]

[--ignore-crashes] [--ignore-timeouts]

[--ignore-security-exceptions]

[--monitor-native-crashes] [--ignore-native-crashes]

[--kill-process-after-error] [--hprof]

[--pct-touch PERCENT] [--pct-motion PERCENT]

[--pct-trackball PERCENT] [--pct-syskeys PERCENT]

[--pct-nav PERCENT] [--pct-majornav PERCENT]

[--pct-appswitch PERCENT] [--pct-flip PERCENT]

[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]

[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]

[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]

[--wait-dbg] [--dbg-no-events]

[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]

[--port port]

[-s SEED] [-v [-v] ...]

[--throttle MILLISEC] [--randomize-throttle]

[--profile-wait MILLISEC]

[--device-sleep-time MILLISEC]

[--randomize-script]

[--script-log]

[--bugreport]

[--periodic-bugreport]

COUNT

参数解释:

1 参数: -p

用此参数指定进行monkey测试的一个或多个包。如果不指定包,将允许系统启动设备中的所有APP。

* 指定一个包: adb shell monkey -p cn.emoney.acg 10

* 指定多个包:adb shell monkey -p cn.emoney.acg –p cn.emoney.wea -p cn.emoney.acg 100

* 不指定包:adb shell monkey 100

2 参数: -v

用于指定反馈信息级别(详细程度不同):

-v: 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

-v -v:提供较为详细的日志,包括每个发送到Activity的事件信息

-v -v -v:最详细的日志,包括了测试中选中/未选中的Activity信息

3 参数: -s

4 参数: --throttle

用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

adb shellmonkey -p cn.emoney.acg --ignore-crashes 1000

测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止

adb shellmonkey -p cn.emoney.acg 1000

测试过程中,如果acg程序崩溃,Monkey将会停止运行

6 参数: --ignore-timeouts

用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

adb shellmonkey -p cn.emoney.acg --ignore-timeouts 1000

7 参数: --ignore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

adb shellmonkey -p cn.emoney.acg --ignore-security-exception 1000

8 参数: --kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态

(注意:默认情况下,应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

adb shellmonkey -p cn.emoney.acg --kill-process-after-error 1000

9 参数: --monitor-native-crashes

用于指定每种类别事件的数目百分比

--pct-touch{+百分比}

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

adb shell monkey -p cn.emoney.acg --pct-touch 10 1000

--pct-motion {+百分比}

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

adb shell monkey -p cn.emoney.acg --pct-motion 20 1000

--pct-trackball {+百分比}

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

adb shell monkey -p cn.emoney.acg --pct-trackball 30 1000

--pct-nav {+百分比}

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

adb shell monkey -p cn.emoney.acg --pct-nav 40 1000

--pct-majornav {+百分比}

调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

adb shell monkey -p cn.emoney.acg --pct-majornav 50 1000

五、monkey日志

使用以下这个命令提取日志时会有问题:

shell@m2note:/ $adb shell monkey -p 包名 -v 300 > ~/monkeytest.txt

会提示:cannot create ~/monkeytest.txt: read-only file system

原因:进入adb shell后再用monkey命令就会导出失败,主要原因是进入adb shell后就相当于进入linux的root下面,没有权限在里面创建文件。

正确提取日志的方法:直接使用monkey命令就没有问题

~$adb shell monkey -p 包名 -v 300 > /home/wong/Desktop/text.txt

六、Monkey测试结果分析

分析步骤:

1、定位monkey报错的地方

2、查看Monkey出错前的事件动作,并手动执行该动作

3、若以上都不能定位错误,则再执行的monkey命令,取相同的seed值(复现操作)。

技巧:

1、 ANR问题:在日志中搜索“ANR”

2、崩溃问题:在日志中搜索“Exception”

七、monkey还可以写成脚本,这部分大家去自己完成吧!

欢迎关注!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180501G0DCMS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券