搭建环境这章节没做详细说明,因为我是前期做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. Checkstyle的安装与使用

    两种安装方法: 方法一: 1.Eclipse中,选择Help->Software Updates->Find and Install 2.选择 Search for new feature ...

  2. nodejs教程---基于expressJs框架,实现文件上传(upload)?

    文件上传功能在nodejs初期是一件很难实现的功能,之后出现了formidable勉强能解决这个问题,但是express框架出现之后基于这个框架开发的中间件有更好的方法来处理文件上传,这个中间件就是m ...

  3. 在Wireshrak中使用过滤器——捕获过滤器

    过滤器可以让你找出你所希望进行分析的数据包.简单来说,一个过滤器就是定义了一定条件,用来包含或者排除数据包的表达式.如果你不希望看到一些数据包,你可以写一恶搞过滤器来屏蔽它们.如果你希望只看到某些数据 ...

  4. [已解决] 含gorm、sqlite3包的go程序构建失败 C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1

    gorm官方文档教程实例,构建出现错误.C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit st ...

  5. Vue基础开发入门之简单语法知识梳理(思维导图详解)

    基于个人写的以下关于Vue框架基础学习的三篇随笔,在此基础上,做一个阶段性的知识总结,以此来检验自己对Vue这一段时间学习的成果,内容不多,但很值得一看.(思维导图详解)

  6. Vue踩坑1——驼峰命名

    使用自定义Vue组件的时候,其他个方面都正常,但是浏览器就是显示不出自定义标签里的内容 <!DOCTYPE html> <html lang="en"> & ...

  7. Promise的then和catch如何影响状态的变化

    记住两句话: 1.then正常返回resolved,里面有报错返回reject 1 const p1 = Promise.resolve().then(()=>{ 2 console.log(1 ...

  8. Linux ubuntu下docker容器安装和基础命令

    Docker介绍: 云计算就好比大货轮,docker就是集装箱虚拟机虽然可以隔离出很多"子电脑",但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare). 而容器技术 ...

  9. 一文读懂原子操作、内存屏障、锁(偏向锁、轻量级锁、重量级锁、自旋锁)、Disruptor、Go Context之上半部分

    我不想卷,我是被逼的 在做了几年前端之后,发现互联网行情比想象的差,不如赶紧学点后端知识,被裁之后也可接个私活不至于饿死.学习两周Go,如盲人摸象般不知重点,那么重点谁知道呢?肯定是使用Go的后端工程 ...

  10. HCNP Routing&Switching之端口隔离

    前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...