使用mokey进行压力测试

使用mokey进行压力测试一 AppMonkey 进行压力测试 1 monkey 事件选项 s 指定产生随机事件种子值 相同的种子值产生相同的事件序列 如 s200throttle 每个事件结束后的间隔时间 降低系统的压力 如不指定 系统会尽快的发送事件序列 如 throttle100p touch 指定触摸事件的百分比 如 pct touch5 相关的还有以下 option pct motion percent 滑动事件 pct trackball lt percent

一、App Monkey进行压力测试

1、monkey事件选项

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
–throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:–throttle 100
–pct-touch:指定触摸事件的百分比,如:–pct-touch 5% , 相关的还有以下option:
–pct-motion (滑动事件)


–pct-trackball (轨迹球事件)

–pct-nav (导航事件 up/down/left/right)

–pct-majornav (主要导航事件 back key 、 menu key)

–pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)

–pct-appswitch (activity之间的切换)

–pct-anyevent (任意事件)

2、调试选项

–dbg-no-events:初始化启动的activity,但是不产生任何事件。
–hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。
–ignore-crashes:忽略崩溃
–ignore-timeouts:忽略超时
–ignore-security-exceptions:忽略安全异常
–kill-process-after-error:发生错误后直接杀掉进程
–monitor-native-crashes:跟踪本地方法的崩溃问题
–wait-dbg:知道连接了调试器才执行monkey测试






3、完整的monkey语句

adb shell monkey -p your.package.name –pct-touch 30 –ignore-crashes  –ignore-timeouts–throttle 250 -s 2  -v -v -v
触摸事件占30%,忽略crash和超时,每个事件间隔250ms,输出最详细日志,执行500万次

4、如何跑多个apk的monkey?

黑名单:执行除了黑名单中以外的apk;白名单:只执行在白名单中的apk。
(1)、黑名单的设置方法:
a.创建一个名称为blacklist的txt文档,在文件中输入应用程序的包名,如mms应用,则在文件中输入com.android.mms;如果有多个应用程序不想被执行,则在文件中添加多个包名,注意包名与包名之间均用回车键。
b.将blacklist.txt的文件导入到手机的/data目录下,然后在执行monkey测试的时候使用–pkg-blacklist-file参数再加上blacklist文件的存储路径,其他的参数设置则和测试单一apk没有区别。


monkey –pkg-blacklist-file /data/blacklist.txt -c
-s

<限制语句>
–throttle

-v 执行次数> C:\blacklist_test.txt //执行黑名单以外的应用




(2)、白名单的设置方法:
白名单的设置方法和黑名单的设置方法基本一致,只是在创建txt文档的时候,文件的命令应为whitelist。在执行monkey的时候,只执行白名单中的应用。
monkey –pkg-whitelist-file /data/whitelist.txt -c
-s

<限制语句>
–throttle

-v 执行次数 > C:\whitelist_test.txt //执行白名单的应用






5、如何分析monkey日志?
1)、 ANR问题:在日志中搜索“ANR”
2、 崩溃问题:在日志中搜索“CRASH”,常见的crash

3)、 异常问题:在日志中搜索”Exception”和“error”

6、如何重现BUG?

 

为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity
1)、 找到是monkey里面的哪个地方出错

2)、 查看Monkey里面出错前的一些事件动作,并手动执行该动作

3)、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

7、monkey缺点:

1)不支持条件判断

2)不支持读取待测界面的信息来执行验证操作

3)不提供截屏功能,因此测试很难找到问题复现的场景

4)无法进行控件识别,对事件流控制能力很微弱

5)执行过程中容易误点工具栏导致Wi-Fi关闭,影响测试效果

6)无法自动解锁

8、MonkeyScript使用

(一)、介绍

1)通过坐标来实现

2)可以针对某一个操作进行重复压力测试

3)会以.script 或者 .mks  .txt来作为后缀,标识它是一个Monkey脚本。

(二)、使用

(1)、 Monkey 头

type= raw events count=10 speed=1.0 start data>>

type指明类型

count说明执行次数,但是这里改成任何值都执行一次,monkey命令可以指定执行次数,这里也就无所谓了

speed命令执行速率。改动无影响,可以通过monkey命令行指定。

start data >>相当于一个入口,说明脚本从下面开始执行

(2)、常用函数:

LaunchActivity(com.asn.nuonuo,com.asn.nuonuo.home.activity.SplashActivity2)

UserWait(100)

DispatchPointer(10000,10000,0,1000,1800,0,0,0,0,0,0,0)

UserWait(100)

DispatchPointer(10000,10000,1,1000,1800,0,0,0,0,0,0,0)

UserWait(100)

DispatchPointer(10000,10000,0,200,1800,0,0,0,0,0,0,0)

UserWait(100)

DispatchPointer(10000,10000,1,200,1800,0,0,0,0,0,0,0)

adb push monkey.mks /data/local/tmp/

然后通过monkey -f执行此脚本,例如下面执行 10 次。

adb shell monkey -f /data/local/tmp/monkey.mks 10

在执行的过程中,就可以看到 MS 会自动启动我们待测试的 App ,然后按照我们的编写的测试脚本,进行重复执行 10 次。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223522.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:00
下一篇 2026年3月17日 下午2:00


相关推荐

  • docker部署influx_docker容器部署

    docker部署influx_docker容器部署使用docker部署influxdbdocker-compose.yamlversion:”3″services:influxdb:image:influxdb:latestcontainer_name:influxdbenvironment:-INFLUXDB_DB=db0-INFLUXDB_ADMIN_ENABLED=true-INFLUXDB_ADMIN_USER=admin-INF.

    2022年10月19日
    6
  • vue 之 路由懒加载

    vue 之 路由懒加载vue 打包后的 js 文件越来越大 这会是影响加载时间的重要因数 当构建的项目比较大的时候 懒加载可以分割代码块 提高页面的初始加载效率 下面是几种常见 vue 路由懒加载的方法

    2026年3月17日
    1
  • Spring Boot 日志配置(超详细)

    Spring Boot 日志配置(超详细)SpringBoot日志配置(超详细)

    2022年6月12日
    34
  • html a标签跳转_点击a标签不进行跳转

    html a标签跳转_点击a标签不进行跳转如果a标签的”href”属性为空的话,当点击修改链接时并不会跳到对应页面,而是只在本页面进行了刷新操作。1<ahref=”JavaScript:js_method();”</a>这种方法地址也不发生跳转,在传递this等参数的时候很容易出问题;而且javascript作为a的href属性的时候会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。W3C标准不推荐在href里面执行javascript..

    2022年8月12日
    11
  • ElasticSearch入门介绍之会当凌绝顶(一)

    ElasticSearch入门介绍之会当凌绝顶(一)

    2021年9月2日
    55
  • leetcode-33搜索旋转排序数组(二分)[通俗易懂]

    leetcode-33搜索旋转排序数组(二分)[通俗易懂]整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数 ta

    2022年8月8日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号