一、什么是Monkey

顾名思义,Monkey就是猴子,  Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。  猴子什么都不懂, 只知道乱敲

通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

二、Monkey用来做什么

Monkey 主要用于Android 的压力测试  自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash.

三、Monkey简介

  • monkey官方文档(需要FQ)
  • monkey源码
  • monkey是一个命令行工具,可以运行在Android模拟器或真实设备中。它可以向系统发送伪随机(pseudo-random)的用户事件流(如按键输入、触摸屏输入、手势输入等),可以对待测的目标应用或整个Android系统进行压力测试。因为monkey测试是一种为了测试软件的稳定性、健壮性的快速有效方法
  • 基本语法
$adb shell monkey [option] <event-count>

如果不指定options,即类似于使用adb shell monkey 1000,那么将会对整个系统中安装的package发送事件流,换种说法就是对整个Android系统进行monkey压力测试

这是一个对指定应用(Android自带的系统设置应用)进行monkey测试的栗子,发送的事件流数量为1000:

四、Monkey程序介绍

  • Monkey程序由Android系统自带,使用Java诧言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;
  • Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
  • Monkey 命令启动方式:
    • 可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
    • 在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试
    • 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

五、Monkey架构

Monkey 运行在设备或模拟器上面,可以脱离PC运行(普遍做法是将monkey作为一个像待测应用发送 随机按键消息的测试工具。验证待测应用在这些随机性的输入面前是否会闪退或者崩溃)

六、Monkey到弱点

Monkey虽然可以根据一个指定的命令脚本发送按键消息,但其丌支持条件判断,也丌支持读取待测界 面的信息来执行验证操作。

七、参数大全

八、monkey命令选项

  • 获取选项列表,Android9版本中输入adb shell monkey,会显示选项列表如下:

常用选项及参数说明

  • -p 允许的包名列表,可同时指定多个包名,每个包都需要使用“-p”参数指定。包名的获取,可参考 python 脚本get_package_name.py
  • —ignore-crashes 忽视应用 crash 报错,不指定该参数时,应用出现 crash,monkey 会自动停止发送事件,指定该参数后,mongkey 会在 crash 后也一直发送事件,知道所有事件发送完成
  • —ignore-timeouts 忽视超时导致的错误,即ANR的错误
  • —ignore-security-exceptions 忽视权限方面的错误
  • —monitor-native-crashes 监控由 C/C++ 代码引起的 crash
  • —ignore-native-crashes 忽视由 C/C++ 代码引起的 crash
  • —kill-process-after-error 当出现错误后杀掉应用的进程
  • —hprof 指定该选项后,monkey会在发送事件完成后生成性能报告,报告一般存放于/data/misc目录下,对报告的分析,需要使用Traceview
  • —pct-touch 设定 touch 事件比例
  • —pct-motion 设定手势事件比例,例如滑动事件
  • —pct-trackball 设定跟踪球事件的比例
  • —pct-syskeys 设定系统按键事件的比例,如 Home、Back、音量+/-等
  • —pct-nav 设定”基本”导航事件的比例
  • —pct-majornav 设定”主要”导航事件比例
  • —pct-appswitch 设定启动 Activity 的事件比例
  • —pct-pinchzoom 设定缩放事件比例
  • —pct-anyevent 设定其他事件比例
  • -s 设定种子数,方便用于重现 bug
  • -v 设定输出信息的详细级别,1个 -v 表示级别为1,2个 -v 表示级别为2
  • —throttle 设定事件之间的延时,单位为毫秒
    • 如果不指定这个参数,monkey会尽可能快的生成和发送消息
    • 命令:adb shell monkey -p 包名 --throttle 3000
  • COUNT 事件数目

九、Monkey实例 

场景1:在PC端执行monkey命令,将日志保存至D盘monkey.log
$adb shell monkey -p com.android.settings 1000 > d:\monkey.log
场景2:在PC端执行monkey命令,将日志保存至手机sdcard注意:双引号
$adb shell "monkey -p com.android.settings 1000 > sdcard/monkey.log"
场景3:实际工作中在PC端执行mongkey命令,并将日志保存至F盘monkey.logadb shell monkey -p com.hfjy.learningparentphone -v --throttle 300 --pct-touch 50 --pct-motion 50 --ignore-timeouts --ignore-crashes 100000 > F:/monkey.log

十、日志分析

当日志生成后,我们需要进入日志当中查看是否有APP崩溃记录或者无响应记录。崩溃记录查找”CRASH”,无响应记录查找”ANR”,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索“Exception”(如果出现空指针,NullPointerException,需格外重视)。

为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity。

十一、必须重视Crash

虽然Monkey测试有部分缺陷,我们无法准确地得知重现步骤, Monkey测试所出现的NullPointException,  都是可以在用户使用时出现的, 何时出现只是时间问题

理论上来说,  Monkey所有的Crash 都需要在发布前修复掉

结束Monkey进程

执行 Monkey 的过程中如果想中途停止 Monkey 程序的运行,需要将 Monkey 的进程杀掉。

1.ps命令查找monkey进程

  $adb shell ps | grep monkey 返回到第一个数字,即monkey进程号

2.kill命令结束进程继

  $adb shell kill -9 进程ID

最后

对这些命令都熟悉之后,那么接下来就是综合对编程语言的应用,思考如何用语言去处理这些命令,使得这些命令更加的方便于测试工作。github

转载于:https://www.cnblogs.com/helloTerry1987/p/11029190.html

android monkey压力测试(二)相关推荐

  1. Android APP压力测试(二) 之Monkey信息自动收集脚本

    转载-原文地址:   http://www.cnblogs.com/findyou/p/3936063.html Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 本文重点 ...

  2. Android Monkey压力测试

    一. JAVA环境的搭建 安装jdk-8u151-windows-x64,可以到官网或者应用中心下载. JAVA环境变量的搭建: 在"我的电脑"-"属性"-&q ...

  3. android monkey压力测试,Android-Monkey 压力测试

    1.Monkey 介绍 Monkey是Android中一个对App进行压力测试的命令行工具,可以向系统发送伪随机的用户事件流对正在开发的App进行压力测试(模拟用户操作App).压力测试主要是为了提高 ...

  4. 对安卓手机上的APP做monkey压力测试

    之前对安卓手机上的APP做了monkey测试,今天来总结一下如何使用安卓自带的monkey命令去做测试. 首先,PC端要对安卓手机进行monkey测试的话,必须要有以下条件: 1.电脑中必须配有ADB ...

  5. Android App 压力测试 monkeyrunner

    Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试? 第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. AD ...

  6. Android内存压力测试工具(memtester移植)

    该文章转载于: android用memtester内存压力测试_W歹匕示申W的博客-CSDN博客 Android内存压力测试工具(memtester移植)_甜牛奶蛋糕的博客-CSDN博客_androi ...

  7. android服务器压力测试,Android压力测试Monkey工具

    最近在Android程序测试过程中接触到了自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner其它test t ...

  8. android 获取monkey日志_Android压力测试:monkey压力测试实战

    主要分享的主题是 Android App 专项测试, 通过 monkey 进行压力测试. 一.测试步骤 1.安装ADB 2.连接被测手机和电脑 3.打开CMD命令行 4.输入monkey命令 adb ...

  9. APP测试之Monkey压力测试(二)

    ------·今天距2020年85天·------ 这是ITester软件测试小栈第51次推文 大家好,我是coco小锦鲤 欢乐的假期即将走远 学习的号角继续吹响 延续昨天Monkey(一) 今天进军 ...

最新文章

  1. 小程序用thinkPHP上传文件到腾讯云对象存储空间
  2. LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数
  3. 5个无聊透顶的 Python 程序
  4. 在Redhat安装部署Apache+MySQL+PHP(LAMP)
  5. h5活动是什么意思_分析什么是h5页面
  6. 小学身高体重测试软件,学生身高、体重检测汇总分析
  7. Java一对多关系示例
  8. 七月工作笔记 7.7 - 7.11
  9. 万方服务器维护,设备管理与维修 知网、维普、万方
  10. MySQL笔记-MDL锁(metadata lock)
  11. 图灵奖得主华人高徒发布首款AI芯片!64位RISC-V、高度可编程,低功耗
  12. 几校联考——day1题解
  13. 论文笔记_S2D.13-2017-3DV-稀疏不变的卷积神经网络(Sparsity Invariant CNNs)
  14. 处理App状态改变的策略
  15. 2022数学建模“五一杯”B题
  16. python you-get下载视频下载到哪里_python you-get下载哔哩哔哩视频
  17. 高等数学(第七版)同济大学 总习题七 (前4题)个人解答
  18. Spark 推测执行
  19. 开源至上:面试官轮轮虐你?深入剖析
  20. python打开网页并实现点击

热门文章

  1. 电脑不能安装虚拟机--解决办法
  2. 版本控制 Git RPM打包
  3. asp下载防盗链代码
  4. ASP:关于生成HTML文件的新闻系统
  5. 软件工程--需求分析
  6. 数据库视频总结四(存储过程和触发器)
  7. ubuntu解决eclipse中logcat只显示level栏
  8. 带着问题学 Kubernetes 架构!
  9. 一组匹配中国大陆手机号码的正则表达式
  10. 拼多多技术事故复盘,程序员应该学到什么?