搭建环境这章节没做详细说明,因为我是前期做APP自动化是已经将 SDK 以及JDK给安装配置好了,这次是直接上来演示monkey的功能点以及运用

一、什么是稳定性测试?

通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行

二、Monkey是什么?

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常。和MonkeyRunner几乎是完全不同的,MonkeyRunner相当于是搞自动化测试的了

三、Monkey测试是什么?

Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法;
它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试

四、Monkey的介绍

Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar

Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey

Monkey 命令启动方式

a. 可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试

b. 在PC上adb shell 进入Android系统,通过执行monkey {+命令参数} 来进行Monkey 测试

c. 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

五、Monkey架构

六、monkey测试优缺点?

缺点:Monkey测试有部分缺陷,我们无法准确地得知重现步骤,虽然可以根据一个指定的命令脚本发送按键消息,但不支持条件判断,不支持读取待测界面的信息来执行验证操作
优点:模拟用户随机性的多次点击面前是否会闪退或者崩溃;

七、monkey测试常用命令

1、日志详细程度
-v : 最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。
-v -v : 提供了较为详细的测试信息,如逐个发送到Activity的事件信息
-v -v -v : 提供了更多的设置信息,如测试中选中或未选中的Activity信息 比较常用的是-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用

2、-s(随机数种子) 指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
一般用在发现bug或需要重现 示例: monkey测试1:adb shell monkey -p test .control.com –s 10

3、–throttle <毫秒>
指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。 示例:eg:adb shell
monkey --throttle 3000 -p test .control.com 1000
发送1000次随机事件,每次事件间隔为3秒。

4、-p <允许的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。

5、–ignore-security-exception
作用:通常情况下,指定应用程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。若指定了该参数,即使应用程序发生许可错误,monkey会继续向系统发送事件,直到指定事件全部运行完毕。

6、–ignore-timeouts 作用:通常,应用程序发生任何超时错误(如“Application Not
responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

7、–ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

8、–pct-touch
作用:调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等

9、–pct-motion
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁

10、–pct-trackball
作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁

11、—pct-syskeys
按键消息比例,主页、后退、音量增减

12、–pct-anyevent
其他不常用的按键比例的设置,不常用

13、–hprof monkey
测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间

14、–ignore-security-exceptions
忽略权限问题的

15、–kill-process-after-error
当错误发生时杀进程

16、–monitor-native-crashes
监视崩溃时的本地代码

17、杀monkey进程
按键:CTRL+C

18、adb logcat >电脑磁盘路径
把日志输出到电脑磁盘上,方便查看,之前可用命令:adb logcat -c清除日志的缓存
当不需要抓取日志可按下ctrl + c 按键,停止输出日志信息

八、monkey测试命令实践

1、首先将安卓手机开发者调试工具打开,用usb数据线连接手机选择传输文件

2、使用终端命令:win + R 进入cmd窗口,然后adb devices 进行查看是否连接手机成功,返回有devices则表示连接成功

3、进行查看你所需要测试的安装包,通常会使用 adb shell pm list packages -3(查看手机上所有的第三方安装包),如果安装包太多,你还可以使用 adb shell dumpsys activity | find "mFocusedActivity" 显示当前正在运行的包名

4、按照你的测试要求输入相应的命令,我的命令是:

命令:adb shell monkey -p  包名 --throttle 1000 --ignore-timeouts --ignore-crashes -s 100 -v -v 100 0>D:\monkeylog.txt

执行结果如下:因为我没有指定触摸事件的百分比,所以这里是随机的

5、最后,测试完成后,找到log日志分析

日志开头:
显示本次测试seed值,执行次数,测试包

日志结尾:
先查看日志结尾处是否表明测试顺利执行完成,而不是异常中断:
如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。(如果Monkey执行异常中断,在log的最后也能查看到当前已执行的次数,可以比对一下。)

第一、ANR问题:程序无响应
在日志中搜索“ANR”

第二、CRASH问题:崩溃
在日志中搜索“CRASH”

第三、其他问题:
在日志中搜索”Exception”

第四、若测试中断后无法搜索到上述信息
一般都是外界原因而非程序本身原因。比如电脑异常测试中断,需要重新测试

备注:可以先详细分析monkey日志(当然,这个通常是开发去分析,但是作为测试人员,我们也应该知道怎么找出问题所在):
方法:搜索Switch–查看log中的Switch,主要查看Monkey执行的是那一个Activity,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
Sleeping–Sleeping for 500 milliseconds这是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。

一般重现问题的做法:
1.找到是monkey里面的哪个地方出错
2.查看Monkey里面出错前的一些事件动作,并手动执行该动作
3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

以上所述即为monkey测试,当然,具体的项目情景测试需要配合不同的命令,需要大家熟悉运用常用的指令,才可以得心应手

测试软件稳定性、健壮性之Monkey工具--简洁与深入的更多相关文章

  1. Android压力测试快速入门教程(图解)——Monkey工具

    文章目录: 一.Monkey简介 二.Monkey的基本用法 三.Monkey测试示例图解 四.Monkey命令参数介绍 五.Monkey log分析 一.Monkey简介 Monkey:Androi ...

  2. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  3. Android自动化压力测试图解教程——Monkey工具

    [置顶] Android自动化压力测试图解教程--Monkey工具 标签: 测试androidprofiling工具测试工具文档 2012-04-01 10:16 38185人阅读 评论(10) 收藏 ...

  4. Android自动化压力测试图解教程——Monkey工具 (转)

    有时候我们需要对一个软件进行压力测试,检查该软件的性能.如果是人工进行测试的话,效率会低很多,而且会比较枯燥.这时,Android中的一个命令行工具Monkey就可以为我们减轻很多重复而又繁琐的工作. ...

  5. 使用moneykey对APP进行健壮性测试

    注意:moneykey对app按钮伪随机点击,只能测试app稳定性和健壮性,无法进行常规测试 1.安装 A.jdk(不详细介绍) B.安装配置android配置环境:Android Studio 此环 ...

  6. 跑健壮性Monkey,出现一次Crash全过程-日志分析-Dotest董浩

    最近带着学生做的某个项目,跑健壮性Monkey,出现一次Crash全过程-日志分析: 准备:搭建adb环境.安装实际测试包:开始: Monkey命令: adb shell monkey -p com. ...

  7. 跑健壮性Monkey,出现一次Crash全过程-日志分析-董浩-Dotest

    最近带着学生做的某个项目,跑健壮性Monkey,出现一次Crash全过程-日志分析: 准备:搭建adb环境.安装实际测试包:开始: Monkey命令: 1 2 3 4 5 adb shell monk ...

  8. Android studio测试软件——Monkey学习及运用

    Android studio测试软件——Monkey学习及运用 在第十五周的个人博客上,王老师安排我们根据最终的团队大作业所用的软件(Android studio)进行软件测试的介绍,而我选择的是基于 ...

  9. TestOps - 最健壮性的测试角色

    一十一 发表于 2018-03-02 09:10:08 TestOps   最具影响力的测试运维一体化综合平台. DevOps实现了从代码到服务的快速落地,而TestOps集成了DevOps效率,更是 ...

随机推荐

  1. Ubuntu安装开发者平台Backstage

    Ubuntu安装开发者平台Backstage 什么是Backstage? Backstage是一个构建开发者门户的开源平台.通过支持一个集中的软件分类,Backstage可以保存并发布你的微服务和基础 ...

  2. SpringMVC-注解@RequestParam

    当请求的参数名称与Controller的业务方法不一致时,就需要通过@RequestParam注解进行显示的绑定 1.value:映射参数 @RequestMapping("/report1 ...

  3. LC-19

    19. 删除链表的倒数第 N 个结点 思路基本直接出来,双指针,IndexFast 和 IndexSlow 中间相隔 N - 1, 这样 IndexFast 到了最后,IndexSlow 自然就是倒数 ...

  4. k8s,coredns内部测试node节点上的pod的calico是否正常的一个小技巧

    最近由于master整个挂掉,导致相关一些基础服务瘫掉,修复中测试有些节点网络又出现不通的情况正常的启动相关一些服务后,测试一些节点,比较费劲,还有进入pod,以及还有可能涉及命名空间操作这里可以这样 ...

  5. 坐实大数据资源调度框架之王,Yarn为何这么牛

    摘要:Yarn的出现伴随着Hadoop的发展,使Hadoop从一个单一的大数据计算引擎,成为大数据的代名词. 本文分享自华为云社区<Yarn为何能坐实资源调度框架之王?>,作者: Java ...

  6. Java语言学习day02--6月29日

    Java语言学习day02###01常用的DOS命令 * A: 常用的DOS命令 * a: 打开Dos控制台 * win+r--cmd--回车 * b: 常用dos命令 * cd.. : 退回到上一级 ...

  7. 2021.07.17 题解 CF1385E Directing Edges(拓扑排序)

    2021.07.17 题解 CF1385E Directing Edges(拓扑排序) CF1385E Directing Edges - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) ...

  8. Linux的软件安装tomcat 以及jdk

    因为tomcat的启动需要jdk,所以我们先安装jdk,安装完成后再安装tomcat 具体的文件大家可以到官网下载,下面介绍安装步骤 目录 jdk安装 1.通过xftp或者其他方式将安装包传到我们的L ...

  9. 最大数maxnumber - 题解【树状数组】

    原题: 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. 插入操作.语法 ...

  10. prometheus监控预警之AlertManager邮箱报警

    Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件.微信.钉钉.Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等, ...