monkey测试

原创 2016年06月01日 16:53:51

1,Monkey Test简介

什么是monkey test? 
如其名,像猴子一样,虽然不懂什么,但是可以乱点一通。 
是的,他的一大特色就是可以乱点一通!!!!!!! 
就在规定的次数范围内做任何随机的操作,随机操作包括点击、滑动、Application切换、横竖屏、应用关闭等等,用户能做的操作统统可以模拟;!! 
所以简单说就是 “压力测试”

官方介绍文档地址,点这里

那要准备点什么吗?

Monkey的tools是一个命令行工具,当连接Android设备时,只要在命令行里输入相应命令就能运行tools; 
像下面这样:

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">adb <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">shell</span> monkey -v <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

Monkey test跑出来crash的bug等级永远为1,版本release前,Monkey跑出的结果中crash要为0。

业内标准:final release前,Monkey跑完的总次数应为25W次,其结果里不允许有nullPointException出现.

2,Monkey test的使用流程

你可以直接在Android Studio的底部的Terminal里面输入指令的。 
如果现在手机连接着的话。 
如果显示没有ADB这个命令,那么你就配置下环境,在path里面加多 ; 你的SDK路径/platform-tools 
因为adb.exe就在这个文件夹里面

这里写图片描述

3,简单的Monkey脚本示例

这里写图片描述

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">adb <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">shell</span> monkey -v <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

其中10代表运行脚本的操作次数为10次,若seed不指定值默认为0;

后面两行为intent的描述,运行了Android基本的LAUNCHER主进程,LAUNCHER主进程之后运行了MONKEY进程;

Event percentages,因为命令中只加了一个限制条件,次数为10,当其余参数没有添加时,就如上图百分比出现;

//Money finished 完成。

4,Monkey test实例1

这里写图片描述

第一个-s emulator-5554 设备的序列号; 
-p com.lovebizhi.wallpaper-1 要测试对象的package name(adb shell data/data), 若测试多个对象,则应为-p package_name1 -p package_name2; 
–pct-xxx 用来设定每个事件在测试中的百分比,百分比总和不能超过100%; 
–pct-touch 调整触摸事件的百分比 
–pct-motion 调整动作事件的百分比 
–pct-trackball 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随着点击) 
–pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成) 
–pct-majormav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作) 
第二个-s 同样的seed值(seed值由自己定义,相当于一个文件的文件名,monkey的操作顺序 
相当于文件)有同样的随机序列,复现问题时,需要monkey用同样的操作步骤重新跑一遍, 
可以在日志的第一行看到seed值;

–throttle 设定事件发生的间隔,不设置时,在android系统极限内操作,若手机性能较低,容易出现系统无响应,最佳的时间间隔在300或者500,单位是毫秒;

-v 指定Log的详细程度,共有三个级别: 
-v 日志级别为level 0 
-v -v 日志级别为level 1 
-v -v -v 日志级别为level 2 日志的详细程度越来越详细

Monkey tools在Android内只能针对Activity做测试,不能对service做测试。

tips:

     adb devices 可以获取设备id

     adb shell data/data获取应用包的名称

Monkey test中只能指定activity属性的应用包进行测试,当出现指定的应用程序不是activity的时候,monkey会出现以下log,并终止运行: 
这里写图片描述

5,Monkey test实例2

想要跑完脚本后再去总结过程中出现的crash或者系统无响应, 
需要指定参数--ignore-crashes --ignore-timeouts, 
若不指定,遇到问题就会停止运行,效率会降低。

当且仅当设备有滚轮时需要设定–pct-trackball,如果没有滚轮需设置为0。

monkey可以不指定-p后的应用,若为了有针对的跑需要指定。

6,检查结果

这里写图片描述

查找关键字crash

//sending event 表示目前已经执行的测试次数

查看有效crash,注意crash:后的进程(pid),及其后的package name是被测对象;Java.lang.NullPointerException下会给出错误在开发工程中的第几行。

tips:

指定要保存log的路径(> d:\test.txt)可以进入D盘下的test.txt进行crash关键字的筛选 

注意事项:

在进行monkey的测试时,最好不进行adb的操作; 
跑monkey时需要记录3个log: 
monkey的log(重新指向到某个txt中), 
dump system的log(查看系统占有), 
android本身的log logcat。

后记

你可能觉得这种乱点乱好的测试不好,希望可以控制下点那里,输入什么等等,那就有了下面这个 
MonkeyRunner,也是Android SDK提供的测试工具。

严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。

缺点是脚本用Python来写,对测试人员来说要求较高,有比较大的学习成本。

或者你也可以用Robotium来生自动生成操作 
这个就是记录你所有的操作的一个记录软件!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Monkey测试命令的使用

Monkey测试 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行...
  • baidu_28741289
  • baidu_28741289
  • 2015年06月09日 18:29
  • 2596

Android自动化测试--monkey的使用

一、Monkey定义探索软件测试工具有哪些,本文主要介绍Monkey工具。Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动、按键等操作来对设备上的程...
  • qq_22157767
  • qq_22157767
  • 2016年08月05日 16:43
  • 1908

android开发之Monkey测试_自动化测试_看看你的应用够不够健壮

教你使用android SDK自带的测试工具Monkey,对你的应用进行压力测试,看健壮性如何?...
  • jason0539
  • jason0539
  • 2015年05月11日 15:49
  • 7671

Monkey测试问题及解决方法

目录 1.1 Monkey测试简介... 1 1.2 Monkey程序介绍... 1 1.3 Monkey命令的简单帮助... 2 1.4 Monkey命令参数介绍... 2 1.5 Mon...
  • lipengshiwo
  • lipengshiwo
  • 2016年08月06日 00:18
  • 2407

Android稳定性测试工具Monkey的使用

Monkey是一个命令行工具,它可以运行在我们的模拟器或者设备当中。它可以发送一些伪随机(pseudo-random)的用户事件流,例如点击,触摸,手势等。我们能够使用Monkey工具来对我们所开发的...
  • ljd2038
  • ljd2038
  • 2017年01月15日 13:07
  • 2763

Android自动化测试--monkey详细到炸的总结

1.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正...
  • zjnuwsf
  • zjnuwsf
  • 2016年09月26日 16:36
  • 4081

iOS客户端monkey测试

简介monkey测试指的是,app根据系统随机产生操作指令,进行各种随机的操作,测试执行一段时间后,观察app是否有crash或者异常日志。 在monkey中主要是模拟用户点击、滑动、长按、返回这几...
  • wf96390
  • wf96390
  • 2017年03月26日 21:30
  • 2704

如何停止Monkey测试

其实原理狠简单,就是利用kill命令,杀死monkey进程即可。希望这篇博文能够帮助到大家。...
  • liuweiweiwei
  • liuweiweiwei
  • 2016年03月17日 15:10
  • 12026

Android中如何做Monkey测试

转载请注明出处! 索引 Monkey的介绍Monkey基本使用Monkey命令参考Monkey测试信息截取 CRASHANR MonkeyScript 脚本格式常用A...
  • JavaAndroid730
  • JavaAndroid730
  • 2016年11月23日 21:57
  • 4869

Android测试工具Monkey用法简介

Android测试工具Monkey用法简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实...
  • lwcn01
  • lwcn01
  • 2016年07月28日 12:07
  • 2570
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:monkey测试
举报原因:
原因补充:

(最多只允许输入30个字)