1、Monkey是Google提供的一个命令行工具,可以运行在模拟器或者实际设备中。它向系统发送伪随机的用户事件(如按键、手势、触摸屏等输入),对软件进行稳定性与压力测试。

Monkey是什么:
Monkey是Google提供的一个用于稳定性与压力测试的命令行工具。
Monkye路径:
Monkey程序是Android系统自带的
路径: /system/framework/Monkey.jar
启动脚本路径:/system/bin/monkey

Monkey是由adb命令启动,故需要配置adb环境(windows环境为例)
下载Android SDK,解压将SDK目录下的platform-tools和tools目录配置到系统环境变量中
打开cmd窗口,输入adb,有adb帮助信息则配置成功

运行命令:

运行记录打印到指定的文件下PC端:  adb shell monkey -v  -v -v  100 >f:\monkey.txt

运行记录打印到指定的文件下android端:adb shell monkey -v -v -v 100 >/sdcard/monkey.txt

运行记录打印到指定的文件下 “1”代表正确的,“2”代表报错的 adb shell monkey -v  -v -v  100 1>f:\monkeylog.txt 2>f:\monkeyerror.txt

Monkye基本参数设置

帮助命令:adb shell monkey --help

Monkey测试的约束条件:-p <允许执行的包名列表>

如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。
如果你的应用程序还需要访问其它包里的Activity(如选取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包,例如:com.tal.kaoyan

adb shell monkey -p com.tal.kaoyan -v -v -v 1000 1>f:\monkeylog.txt 2>f:\monkeyerror.log

Monkey发送的事件类型和频率

adb shell monkey -p com.tal.kaoyan --throttle 200 -v -v -v 100

测试随机数

adb shell monkey -p com.tal.kaoyan -s 123 -v -v -v 1000 1>f:\monkeylog.txt 2>f:\monkeyerror.log

Monkey结果详细解读

// Seeded: 1435740661667 随机种子
// Event percentages:
// 0: 15.0% 事件0:--pct-touch
// 1: 10.0% 事件1:--pct-motion
// 2: 2.0% 事件2:--pct-pinchzoom
// 3: 15.0% 事件3:--pct-trackball
// 4: -0.0% 事件4:--pct-rotation
// 5: 25.0% 事件5: --pct-nav
// 6: 15.0% 事件6:--pct-majornav
// 7: 2.0% 事件7:--pct-syskeys
// 8: 2.0% 事件8: --pct-appswitch
// 9: 1.0% 事件9:--pct-flip
// 10: 13.0% 事件10:--pct-anyevent

延迟时间:adb shell monkey -p com.tal.kaoyan --pct-touch 100 --throttle 200 -v -v -v 100

adb shell monkey -p com.tal.kaoyan --pct-touch 50 --pct-rotation 10 --throttle 200 -v -v -v 100

可以指定多个事件,百分比不能大于100

如果百分比小于100,剩余事件随机分配

Monkey 调试参数

Android常见错误类型

默认遇到报错,脚本会停止执行

Monkye调试参数

--ignore-crashes  通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成

--ignore-timeouts  应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成

adb shell monkey -p com.tal.kaoyan --pct-touch 30 --pct-rotation 10 --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 100

Monkey测试策略介绍

策略例子1:固定或随机种子、随机事件
测试计算器30万次,随机种子为100,随机延迟0-1秒,忽略所有错误
adb shell monkey -p com.android.calculator2 -s 100 --throttle 1000 --randomize-throttle --ignore-crashes --ignore-timeouts -v -v 300000

策略例子2:依据应用策略对Monkey各事件进行划分百分比
测试计算器,触摸事件30%,其他按键50%,错误停止,延时200
adb shell monkey -p com.android.calculator2 --throttle 200 --pct-touch 30 --pct-anyevent 50 -v -v 100000

策略例子3:对某个事件提高到很高的百分比,对应用进行专项测试
对计算器进行旋转压力测试,事件延时2秒,10万次
adb shell monkey -p com.android.calculator2 --pct-rotation 100 --throttle 2000 100000

延时策略:
1、 低延时
2、 高延时
3、 随机延时
4、 用户操作延时

事件数量:
1、 常规测试:10万
2、 压力型测试:30万
3、 稳定性测试:50万
4、 长时间执行:100万

Monkey如何使用的更多相关文章

  1. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  2. Monkey Patch/Monkey Testing/Duck Typing/Duck Test

    Monkey Patch Monkey Testing Duck Typing Duck Test

  3. monkey命令选项参考

    基本参数:     --help              打印帮助消息 -v  可以在命令行中出现多次,每次一个-V选项都会增加monkey向命令行打印输出的详细级别.默认的级别0只会打印启动信息. ...

  4. monkey之monkey日志分析

    一.初步分析方法:Monkey测试出现错误后,一般的差错步骤为以下几步:1.找到是monkey里面的哪个地方出错2.查看Monkey里面出错前的一些事件动作,并手动执行该动作3.若以上步骤还不能找出, ...

  5. monkey之monkey命令详解

    四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...

  6. monkey之三:monkey测试测略(摘抄)

    一.分类 Monkey测试针对不同的对象,不同的目的,采用不同的测略方案. 测试类型分为: 应用程序的稳定性测试和压力测试 测试对象分为: 单个APK和多个APK集合 测试目的分为: 解决问题的测试( ...

  7. Android APP压力测试(三)之Monkey日志自动分析脚本

    Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...

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

      Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...

  9. [Android]官网《UI/Application Exerciser Monkey》中文翻译

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5049041.html 翻译自 Android Develope ...

  10. monkey之monkey简介

    1.Monkey 是什么 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...

随机推荐

  1. spring的DI.IoC是什么

    最近要搞spring的单元测试,不得已啊啊啊啊啊啊啊啊啊又要开始搞spring…… 日目晶…… 搞这几个概念,先甩一部分代码: UserDao 接口 package com.itheima.ioc; ...

  2. H5_0003:JS禁用调试,禁用右键,监听F12事件的方法

    1,禁用调试 // 这个方法是防止恶意调试的 (function () { console["log"]("=============================== ...

  3. ajax跨域例子

    例子 https://github.com/ruanyf/react-demos/blob/master/demo12/index.html 此网页代码运行在本地, 是可以访问 github 数据的. ...

  4. python zip dict函数

    1.zip函数 zip函数可以接受多个参数,返回的结果是列表,列表中的每一个元素是元组的数据类型,下面我们通过几个例子来学习zip函数的用法 1) list1 = [1,2,3] list2 = [4 ...

  5. Python爬虫之12306-分析请求总概述

    python爬虫也学了一段时间了.也爬过不少网站,最后我想用12306抢票器这个项目做一个对之前的学习的效果成见也是一个目标(开始学爬虫的时候,看到说,会爬12306,就会爬80%的网站),本人纯自学 ...

  6. LeetCode第十五题-找出数组中三数和为0的答案

    3Sum 问题简介: 给定n个整数的数组nums,是否有元素a,b,c在nums中,使a + b + c = 0? 找到数组中所有唯一的三元组,它们的总和为零 注:解决方案集不得包含重复的三元组 例如 ...

  7. 云栖社区用机器人爬CSDN的文章?

    这个云栖社区的文章https://yq.aliyun.com/ziliao/539322 这篇文章是我13年写的,不知道咋插入图片,见谅. 下面是我的文件记录 分享XAML图标的网站 原创 2013年 ...

  8. js 刷新父业面

    window.opener.location.reload() 2个方法都是刷新父窗口,但是其中还是有奥妙的哦.window.opener.location.reload();这个方法在强迫父窗口的时 ...

  9. c#--Redis帮助类

    最近一直在忙公司的一下项目,也没有太多时间写,所以就分享出所用redis帮助类 using Newtonsoft.Json; using StackExchange.Redis; using Syst ...

  10. .net 操作excel

    .net 操作excel的常用组件:EPPlus,NPOI 1.NPOI,即POI的.NET版本(POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office文件, ...