monkey什么时候用?

等我们的产品处于稳定状态,没有太多BUG后,一般用monkey去测试产品的稳定性、健壮性(是否会发生闪退、崩溃和无响应等问题)

什么是Monkey?

Monkey是Android中的一个命令行工具,可以运行在模拟器里或者真机设备中。它向系统发送伪随机的用户事件流(如滑动Trackball、触摸屏幕、按键等)实现对待测应用程序进行压力测试,所有的事件都是随机生成的,不带任何主观性。

Monkey常用命令行

基本参数:

adb shell monkey -p tv.danmaku.bili -s 110 --throttle 500 -v 1000 >/Users/mac/Desktop/test_monkey.txt

这条命令的作用是:打开哔哩哔哩应用,操作序列号为110,每个事件之间延迟500毫秒(就是0.5S),日志级别为一个V ,随机执行1000个事件,该日志保存到桌面的test_monkey.txt文件中。

1、-p<包名>:-p 的作用是指定打开哪个APP,实例中打开的是哔哩哔哩;命令是:-p tv.danmaku.bili(哔哩哔哩包名)。包名怎么得到,不要慌,下面告诉你怎么用命令行查询和怎么用自己手机系统查询。

  • adb 命令查看当前打开的应用包名和activity:
adb shell dumpsys activity | grep -i run

网上可以找到其他命令查找包名,可能我手机是安卓8.0版本,运行其他的都找不出来,上面这一条是在我手机能够成功查出当前打开应用的包名和activity的名称的命令。

  • 由包名获取该应用的apk路径:
adb shell pm path </包名>

通过手机系统设置来查看包名:

  • 我这里介绍查看B站包名,其他的一些小米、魅族等自己定制后的系统的查看方法也大同小异。操作步骤:“设置” -> “应用” -> 选择要查看的应用->点击右上角的详情。这个时候就能看到了(如下图)

                         

  • 打开手机 文件管理 —— 存储 —— Android / data / 目录,手机上所安装的软件都会在该目录下创建一个文件夹(com.android.browser),文件夹名即是软件包名,也就是我们要找的包名。拓展一下查看包名的方法,我还是喜欢去应用里面看包名。

2、-s 伪随机数生成器的seed值

当测试人员发现了问题,怎么进行复现。monkey所谓的随机操作,是基于seed产生的。每一个seed值都会产生唯一的一个操作序列。只要两次操作的seed值是一样的,那么这两次的操作序列也是一样的,这样我们就能用monkey来复现随机发生的bug了。

3、--throttle </时间(毫秒)>   :每个事件之间的延迟

当希望事件操作不宜过快或者有特定时间进行交互,就可以使用 --throttle 来延迟事件之间的操作。

补充:--randomize-throttle :用于指定用户操作(即事件)间的随机时延

示例:adb shell monkey -p  tv.danmaku.bili –throttle 200  --randomize-throttle  100

表示随机延时在0~200ms之间

4、-v 设置日志的级别

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

-v -v (或者-vv)日志级别 Level 1: 提供较为详细的日志,包括每个发送到Activity的事件信息;

-v -v -v (或者-vvv)日志级别 Level 2 : 3个 v 是最详细的日志,包括了测试中选中/未选中的Activity信息。

5、” >“ </文件目录+文件名称+"."+"文件属性“> :重定向,将日志打印到指定位置。

指定发生事件的类型

虽然monkey测试是随机事件,但是我们可以指定事件的类型,注意:所有指定事件的数值加起来不能超过100。不做任何指定时,默认为--pct-anyevent <percent> 类型。

 --pct-touch <percent>:指定触摸事件的百分比。--pct-motion <percent>:指定滑动事件的百分比。--pct-trackball <percent>:指定轨迹球事件的百分比。--pct-nav <percent>:指定导航事件中,up、down、left、right等事件的百分比。--pct-majornav <percent>:指定导航事件中,back、menu等事件的百分比。--pct-syskeys <percent>:指定系统按键的百分比,包括HOME、Back、音量等。--pct-appswitch <percent>:指定Activity之间切换的比例。--pct-anyevent <percent>:指定任意事件的百分比。

调试选项

一般情况下,APP在操作过程中会存在崩溃、超时、异常等情况,按照前面所提到的,这会导致monkey直接停止测试。如果想要忽略掉这些情况,直接配置忽略设置就可以了。

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

实例:

adb shell monkey -p tv.danmaku.bili --ignore-crashes --ignore-timeouts --ignore-security-exceptions-v 1000 

运行的时候我的哔哩哔哩在唱卡路里,要努力减肥。

不在多做介绍,要是用到别的命令,可以输入下面命令查看

adb shell monkey help

强制退出monkey

退出应用和拔掉数据线,都无法停止monkey测试,试图用control+C 命令,控制台虽然能再次输入命令,可是手机还是在继续monkey命令。网上大部分人认为monkey开始测试之后,就不能停止,除非时间数执行完成,或者在cmd窗口执行adb reboot来进行手机重启操作。如需停止monkey测试,输入如下命令(用B站举列子):

adb shell monkey -p tv.danmaku.bili --throttle 1000 500(创造一个持续的monkey命令);

输入control+C,控制台不再输出执行的信息,可以再次输入命令(但是手机还在跑monkey命令);

输入adb shell ps | grep monkey 查看monkey进程号,返回来的数字,即是monkey的进程号

如图 17390 就是我们找的进程号,我们可以运行kill 命令来杀死该进程:

adb shell kill 17390

然后可以看到手机进程中的monkey进程被杀死了,再执行adb shell ps | grep monkey,就会发现没有monkey进程。当然,手机也不再执行monkey测试了。

如何跑多个apk的monkey?

黑白名单只能二选一,不能同时使用。

黑名单:--pkg-blacklist-file (执行黑名单以外的apk)

白名单:--pkg-whitelist-file(只执行白名单里有的apk)

白名单的设置方法:
1、创建一个名称为whitelist的txt文档,在文件中输入应用程序的包名,如哔哩哔哩,则在文件中输入tv.danmaku.bili;如果有多个应用程序则在文件中添加多个包名,注意包名与包名之间均用回车键。
2、将whitelist.txt的文件导入到手机的/data目录下,然后在执行monkey测试的时候使用--pkg-whitelist-file参数再加上whitelist文件的存储路径,其他的参数设置则和测试单一apk没有区别。

adb push /Users/mac/Desktop/whitelist.txt /data(把白名单放入手机目录)

adb shell monkey --pkg-whitelist-file /data/whitelist.txt -s 110 -v -v -v 100 >/Users/mac/Desktop/white_test.txt

黑名单的使用方法同白名单

参考链接:https://www.jianshu.com/p/97268b83dc1d(常用命令);https://blog.csdn.net/liuweiweiwei/article/details/50913792(如何停止monkey运行)。

monkey常用命令和怎么杀死monkey进程相关推荐

  1. monkey常用命令及其用法

    monkey作为客户端常用的稳定性测试工具,常用的参数及其用法是怎样的呢?接下来我们一起. monkey常规命令~ -h 大家最希望知道的当时是monkey都有哪些命令参数,这些命令参数都是什么用处, ...

  2. ADB和monkey常用命令笔记

    ADB常用命令: 1.无线网链接ADB adb connect 域名:端口号(127.0.0.1:62001) 2.查看当前设备链接状态 adb devices 多个设备 adb -s devices ...

  3. Linux命令行下杀死一个进程

    在做项目的时候经常会出现程序死机.锁死.无响应等情况,这时候就需要找到程序相应的进程将其杀掉即可.步骤如下: 1.定位进程 top命令:可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系 ...

  4. linux命令查进程,Linux常用命令(十)查看和控制进程

    Linux常用命令(十)查看和控制进程 一.查看进程 1.ps命令--查看静态的进程统计信息(Processes  Statistic) ps命令时Linux系统中最为常用的进程查看工具,主要用于显示 ...

  5. [转]Linux内核基础与常用命令总结

    ##这部分内容主要是基于一些关于Linux系统的内核基础和基本命令的学习总结,内容不全面,只讲述了其中的一小部分,后续会再补充,如有错误,还请见谅. Linux操作系统 Linux操作系统博大精深,其 ...

  6. Linux 常用命令汇总--加了注释

    目录   第一天 linux简介, 安装, 目录管理命令 第一章 linux简介 X-SHELL 软件的常用快捷键: ctrl+c 强制终止 ctrl+l 清屏 ctrl+u 从光标所在删除到行首 c ...

  7. linux命令的使用实验报告,Linux实验报告一-常用命令使用.doc

    Linux实验报告一-常用命令使用.doc 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称 常用命令使用 专业名称 计算机科学与技术班 级 计科1405 学生姓名 高宏伟学号(8位) 04 ...

  8. GoldenGate常用命令(九)

    九.      GoldenGate日常维护常用命令 info all;查看所有进程运行状态 info replicat rini_1;查看单一某进程状态 view report eiri_1;查看某 ...

  9. rstudio查询命令_R语言和RStudio的一些用法,常用命令等

    控制台: Up/down 回忆之前的命令 Ctrl+Up 回顾命令列表(可先输入前缀进行查找) 焦点: ctrl+ 移动焦点到source编辑器 ctrl+ 移动焦点到console ctrl+L 清 ...

最新文章

  1. 顺序表-有序顺序表表示集合-交集(while + 值比较)
  2. WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]
  3. mahout in Action研读(1)-给用户推荐图书
  4. bootstrap到底是用来做什么的(概念)
  5. about-ie下模拟input file上传功能失效
  6. Android中通过ViewHelper.setTranslationY实现View移动控制(NineOldAndroids开源项目)
  7. VC++ 6.0 快捷键大全
  8. ubuntu开机自动关闭独显,使用集成显卡
  9. oracle_dblink配置
  10. JAVA实现QQ登录、注册等功能
  11. DVWA教程(一) —— Low级别
  12. OpenCASCADE7.6编译
  13. amoeba mysql下载_amoeba for mysql
  14. win10联网进入msn页面,信号出现感叹号
  15. vue 时间格式总结及转换
  16. day46 html
  17. Android 360度全景图片 源码
  18. 网络云存储技术Windows server 2012 (项目二十三 远程异地数据实时同步)
  19. 神经系统的解剖学基础是,神经系统系统解剖学
  20. 虚拟机:虚拟机三种网络连接

热门文章

  1. xv格式文件提取flv
  2. uart转RS422
  3. 产品助理实习day2
  4. Word文档转PDF的功能
  5. 华为S系列S2750S5700S6700交换机配置指南-接口管理
  6. 【Vue】16.vue项目里引入百度统计
  7. 机器学习:决策树(Decision Tree)介绍
  8. PS处理GIF 图除去白色背景后出现重影
  9. 四维图新地图坐标_四维图新:工信部商请公司提供电子地图相关数据
  10. 几本靠谱的渗透测试的书籍