Monkey的测试

article/2025/10/4 17:33:09

1.Monkey介绍

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

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

2.Monkey的作用

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

3.Monkey程序介绍

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

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

(3)Monkey 命令启动方式:

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

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

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

4.Monkey 命令 基本参数介绍

4.1使用monkey测试手机所有程序

adb shell monkey 100 执行monkey测试100次 针对rom测试或者

4.2-p<允许的包名列表>

adb shell monkey -p 包名  100

用此参数指定一个或多个包.指定包之后,monkey将只允许系统启动指定的app.如果不指定包,monkey将允许系统启动设备中的所有app.

指定一个包:

4.3显示日志详细程度

用于制定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下所示:

level  0: adb shell monkey -p 包名 -v 30   //  缺省值,仅提供启动指示,,测试完成和最终结果等少量信息.

level 1: adb shell monkey -p 包名 -v -v 30    // 提供较为详细的日志,包括每个发送到Activity的事件信息.

level 2:  adb shell monkey -p 包名 -v -v  -v 30 //最为详细的日志,包括了测试中选中的/未选中的Activity 信息.

4.4Monkey 日志分析

将log信息写到文档中 

adb shell monkey 100 >路径

正常情况,  如果Monkey 测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;  //  Monkey  finished   代表执行完成

4.5 -s 随机数种子

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的.示例:    monkey测试1:adb shell monkey -s 10  100

             monkey测试2:adb shell monkey -s 10 100

4.6 --throttle<毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送信息.

例如:  adb shell monkey - p com.example.login  --throttle   300  100 

表示执行100个伪随机用户事件流,事件间隔为300毫秒.

注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件.

4.7 --pct-touch<percent>触摸事件

调整触摸事件的百分比,(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

--pct-touch:触摸事件,即在某一个位置的Down-Up(手指的放下和抬起)事件.Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同.

如:adb shell monkey --pct-touch  60 -v 10

表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为60%.

注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

4.8 --pct-motion<percent>

调整手势事件motion事件百分比.(motion事件是由屏幕上某处一个down事件,一系列伪随机的移动事件和一个up事件组成)

--pct-motion:动作事件,以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE).

如:adb shell monkey --pct-motion 60 -v 10

表示执行10个伪随机用户事件流,并调整其动作事件的百分比为60%.

注:这里的移动是直线滑动

Event percentages:

0:--pct-touch//touch

events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)

1:--pct-motion//motion

events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯

2:--pct-pinchzoom//pinch

zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作

3:--pct-trackball//trackball  即单纯的Move(ACTION_MOVE)

events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)

4:--pct-rotation//screen

rotation events percentage屏幕旋转百分比,横屏竖屏

5:--pct-nav//nav 基本导航事件。即来自于方向输入设备的上下左右操作。

events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

6:--pct-majornav//major 即Navigation Bar的确认,菜单,返回键等

nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)

7:--pct-syskeys//system(key)

operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)

8:--pct-appswitch//app

switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

9:--pct-flip//keyboard

flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

10:--pct-anyevent//anyevents  该事件可能包含其他上述事件。

percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

参考::Android自动化测试之Monkey(二)_LupuX的博客-CSDN博客

4.9 --ignore-crashes

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

正常操作,不忽略异常

忽略异常

4.10 --ignore-timeouts(ANR)

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

adb shell monkey --ignore-timeouts -v 10

同上

4 .11  Monkey实例

用monkey 命令 对登录apk进行性能测试

monkey -p 包名 -s 23  --throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt

        1.   -p后面接着的对应的包名,对具体某个app测试

        2.   -s后面是对应的种子数,好像就是操作步骤,一般设置相同的种子数目的是复现bug

        3.   --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。

        4.   -v 指的是Monkey测试时打印log级别。

        5.   100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是真机,一般设置在500000次。

        6. --throttle-时间 ,设置事务之间的延迟等待时间,单位是毫秒

        7.>路径,设置日志存储路径

补充:--pct-touch 50:指定具体的某个事务的占比

adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000 >c:\login\c.txt

4.12Monkey异常分析

        一般我们可以一次发送5万次随机事件的请求,每个请求之间的间隔为150毫秒,测试大约会进行40min,完成以后就可以查看日志。 

日志中可能的错误:

        1.程序奔溃,crash (ctrl+f搜索)

        2.程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)

        3.其他问题:在日志中搜索”Exception”。

        Monkey 执行中断, 在log最后也能看到当前执行次数

   

        


http://chatgpt.dhexx.cn/article/JcMJrdcj.shtml

相关文章

MonkeyTest——简单无脑的移动端自动化测试(初级篇)

MonkeyTest-操作步骤&#xff1a; 1.下载Android sdk X64位&#xff0c;必须和你的电脑操作系统一致。 2.安装完成后&#xff0c;增加adb的系统环境。 A.找到sdk路径。 默认路径&#xff1a;C:\Users\ZSD\AppData\Local\Android\android-sdk\platform-tools B.打开系统环境设置…

【转】指定页面进行Monkey测试

偶然在网上查看到这个技术&#xff0c;感兴趣&#xff0c;就记录下【感谢博主分享】 1.原文再此&#xff1a;https://blog.csdn.net/liyu520131414/article/details/69357777?utm_sourceblogxgwz3 原理原文博主已经讲清楚了&#xff0c;就不粘贴了&#xff0c;下面&#xff…

Android测试-Monkey Test

APP开发过程中&#xff0c;开人员往往自己做一些功能测试和稳定性测试&#xff0c;使用MonkeyTest做压力测试是常用方法&#xff0c;及时修复ANR、CRASH提高项目组整体的开发效率。 一、Monkey简介 Monkey是一种命令行工具&#xff0c;这个工具存在于Android系统/system/frame…

Monkey测试(一)

简介常见参数日志分析简单脚本编写 一&#xff1a;简介 Monkey测试是Android平台自动化测试的一种手段&#xff0c; 通过Monkey程序模拟用户触摸屏幕、滑动&#xff0c;Trackball&#xff08;轨迹球&#xff09;、按键等操作来对设备上的程序进行压力测试&#xff0c; 检测程序…

App之Monkey测试

作为初入测试行业的小白&#xff0c;了解一些Monkey测试是很有必要的&#xff0c;在此小编整理了一些App方面Monkey测试的基础以及Monkey脚本的编写&#xff0c;希望可以帮助到大家。 1. Monkey的概念 Monkey测试又称"猴子测试",是指没有测试经验的人对产品进行乱点…

随机测试 Monkey Test

今天说一说随机测试&#xff0c;Monkey Test。翻译成中文就是猴子测试。 你可以想象一只猴子趴在电脑面前&#xff0c;拿着鼠标随便乱点的样子。 一&#xff0c;什么是随机测试&#xff1f; 软件测试中的Monkey测试是测试人员对应用程序随机输入以验证其功能的一种方法。这是…

墨者学院-Bash漏洞分析溯源

Bash漏洞分析溯源 难易程度:★★ 题目类型:命令执行 使用工具:FireFox浏览器、wwwscan 1.打开靶场&#xff0c;根据题目思路找poc.cgi。 2.使用wwwscan扫一下 发现有目录/cgi-bin 3.打开burpsuite&#xff0c;访问/cgi-bin/poc.cgi&#xff0c;截包。 send to repeater&…

vulhub漏洞复现之bash(Shellshock CVE-2014-6271)

Shellshock 破壳漏洞 CVE-2014-6271 1.漏洞概述&#xff1a; GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞&#xff0c;向环境变量值内的函数定义后添加多余的字符串会触发此漏洞&#xff0c;攻击者可利用此漏洞改变或绕过环境限制&#xff0c;以执行shell命…

linux网站漏洞修复,CentOS Bash漏洞终极修复方法

目前已确认被成功利用的软件及系统&#xff1a;所有安装GNU bash 版本小于或者等于4.3的Linux操作系统。 【Bash漏洞描述】该漏洞源于你调用的bash shell之前创建的特殊的环境变量&#xff0c;这些变量可以包含代码&#xff0c;同时会被bash执行。 【漏洞检测方法】 在服务器命…

Bash漏洞分析溯源 cgi文件 (CVE-2014-6271) --墨者学院

01 背景介绍 Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令&#xff0c;在一些cgi脚本中&#xff0c;数据是通过环境变量来传递的&#xff0c;这样就会形成该漏洞&#xff1b; bash通过以函数名作为环境变量名&#xff0c;以“&#xff08;&#xff09;{…

suse linux bash漏洞,bash漏洞: CVE-2014-6271漏洞及紧急修复方法

最近linux的bash漏洞闹得沸沸扬扬&#xff0c;问题还是挺严重的&#xff0c;我这里提醒大家一下早日修复吧&#xff01; 如何验证 $ env x() { :;}; echo vulnerable bash -c echo hello 在终端中运行上面的命令&#xff0c;如果返回有vulnerable&#xff0c;就说明这台服务器中…

suse linux bash漏洞,Suse11 sp3 下Bash漏洞升级修复

SuSE Linux Enterprise Server 11Bash 漏洞修复方案 系统&#xff1a;Suse-11-sp3-64 Bash:bash-4.4 1.1. Bash升级 1.1.1升级概述 大部分现行Linux操作系统自带的版本比较陈旧&#xff0c;因此需要升级bash版本。 发现现在版本存在漏洞 1.1.2 安装介质 bash-4.4.tar.gz(官网最…

墨者Bash漏洞分析溯源题解

这个漏洞是看别人的思路解出来的&#xff0c;因为在打开页面后&#xff0c;我扫描不出来其他东西&#xff0c;惭愧 后台存在一个地址&#xff0c;是http://219.153.49.228:49581/cgi-bin/poc.cgi 访问这个地址 对着地址进行抓包 将user-agent进行修改&#xff0c;修改为() { …

Bash漏洞利用!

环境&#xff1a; 服务器Centos&#xff1a;192.168.195.130 攻击机bt5&#xff1a;192.168.195.130 1、找到漏洞利用程序 必须web服务器支持cgi 这里是测试的bug.sh代码 #!/bin/bash 第一行要特别注意&#xff01; echo "Content-type: text/html" echo "&q…

redhat linux bash 漏洞,GNU Bash 漏洞及修补方法

文章引自http://loosky.net/3036.html 漏洞描述 CVE-2014-6271 ***者可构造特殊的环境变量值&#xff0c;以在这些环境变量的值中包含特定的代码&#xff0c;当 Shell 对这些环境变量求值时&#xff0c;这些特定的代码将得以在系统中执行。某些服务和应用接受未经身份者提供的环…

linux 破壳漏洞,Bash破壳漏洞

“破壳”是一个严重漏洞的别名,在Red Hat、CentOS、Ubuntu、Fedora、Amazon Linux、OS X 10.10中均拥有存在CVE-2014-6271(即“破壳”漏洞)漏洞的Bash版本,同时由于Bash在各主流操作系统的广泛应用,此漏洞的影响范围包括但不限于大多数应用Bash的Unix、Linux、Mac OS X,而针…

linux系统漏洞补丁包,RedHat 5.X、6.X Bash漏洞RPM补丁包下载

RedHat 5.X、6.X Bash漏洞RPM补丁包下载及教程。 首先查看服务器的BASH版本号&#xff1a; bash -version 如果BASH版本是4.X的64位系统的话&#xff0c;安装bash-4.1.2-15.el6_5.2.x86_64文件夹里面的三个文件&#xff1b; 如果BASH版本是3.X的话&#xff0c;32位和64位分别安…

Linux Bash漏洞复现

Bash是什么&#xff1f; Bourne Again Shell&#xff08;简称BASH&#xff09;是在GNU/Linux上最流行的SHELL实现&#xff0c;于1980年诞生&#xff0c;经过了几十年的进化从一个简单的终端命令行解释器演变成了和GNU系统深度整合的多功能接口。根据维基百科的描述&#xff1a…

关于CentOS下Linux的bash 漏洞,查看和解决的方法

说明&#xff1a;我是今天才发现这个问题的&#xff0c;据说06年就就已经发现了&#xff0c;我才在才发现&#xff0c;后知后觉&#xff0c;如果不是遇到了&#xff0c;估计还没发现&#xff0c;我是个假的程序猿。。。 如果Shell版本较旧的话&#xff0c;建议升级到最新版本的…

墨者学院 - Bash漏洞分析溯源

bash漏洞技术层面分析 漏洞起源&#xff1a; 漏洞信息最早来源于国外知名漏洞网站exploit-db下的第34765篇漏洞报告&#xff0c;其中出现了一条验证命令&#xff1a; env x() { :;}; echo vulnerable bash -c "echo this is a test" 如果在一个含有版本号小于bash…