Monkey测试(一)

article/2025/10/4 19:09:45
  • 简介
  • 常见参数
  • 日志分析
  • 简单脚本编写

 

一:简介

Monkey测试是Android平台自动化测试的一种手段, 通过Monkey程序模拟用户触摸屏幕、滑动,Trackball(轨迹球)、按键等操作来对设备上的程序进行压力测试, 检测程序多久的时间会发生异常(奔溃,闪退,无响应(性能方面的bug)等)。
monkey是命令行工具,是安卓系统自带的一个脚本,通过adb工具在PC端调用

缺点:Monkey虽然可以根据一个指定的命令脚本发送按键消息, 但其不支持条件判断, 也不支持读取待测界面的值来执行验证操作。

作用:monkey可以用来做随机测试,压力测试、自动化测试、稳定性测试,冒烟测试。
monkey什么时候用?等产品稳定了, 没有特别多的bug时候, 一般会用monkey去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃);整机测试。

monkey是压测手机app的稳定性,不是对服务器

 

附加:

(1)

可以找到monkey脚本在哪里

查看调用的jar包

从上面看出:monkey是装载电脑上面的,它本身就存在于每一个安卓系统中,它有monkey这样一个脚本,去调用这个jar包(理解可能还不够深入)

 

 

(2)日志和执行事件数放最后,要不可能会报错

 

 

二:常见参数

(1)-p
用于约束限制, 用此参数指定一个或多个包(Package, 即App名字) 。

指定指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包, Monkey将允许系统启动设备中的所有APP

adb shell monkey -p com.eg.android.AlipayGphoneRC 1000
#抖音(测试)
adb shell monkey -p com.ss.android.ugc.aweme 1000#1000是事件计数(即让Monkey程序模拟1000次随机用户事件)
#指定2个:  -p  A包  -p  B包

 

注入事件1000次,还有一些日志

分析日志参考:https://www.cnblogs.com/fighter007/p/8439309.html

 

(2)-s
用于指定伪随机数生成器的seed值, 如果seed相同, 则两次Monkey测试所产生的事件序列也相同的
命令:
Monkey测试1:adb shell monkey -p 包名 -s 101 100      提前指定
Monkey测试2:adb shell monkey -p 包名 -s 101 100 
说明:
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作, 即一个序列) 是一样的。

操作序列虽然是随机生成的, 但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

 

 

(3)-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别
-v:日志级别Level 0 
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
-v -v:日志级别Level 1 
说明:提供较为详细的日志, 包括每个发送到Activity的事件信息
-v -v -v:日志级别Level 2 
说明:最详细的日志, 包括了测试中选中/未选中的Activity信息
命令:adb shell monkey-pcom.lemon.lemon ban-v 100 
 

 

(4)事件时延

--throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
命令:adb shell 包名 --throttle 3000 100 

--randomize-throttle
在事件之间插入随机延迟, 随机延迟范围为0到throttle设置的时间, 单位为毫秒
命令:adb shell 包名 --throttle 3000 --randomize-throttle 100 
说明: 每次事件的间隔在0到3000毫秒之间不固定

备注:执行一百次monkey随机事件

 

 

 

(5)白/黑名单

--pkg-whitelist-file       白名单, 后面接txt文件
1) 第一步把你设置的白名单的包名写到一个txt文档里面, 记得路径和文档名字都是英文
2) 把这个文件拉到我们的安卓机中去, 放到/data/local/tmp下面
adb push d:\whitelist.txt /data/local/tmp
命令:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100 

--pkg-blacklist-file黑名单, 后面接txt文件
命令:adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt 100 

 

注意:包名换行

 

 

(6)保存日志

在后面加上空格 > 目录

 

 

(7)百分比事件

#100%的点击事件
--pct-touch 100#可以组合,同样方式拼接就行了
#怎么中途停止
1;ctrl+z
2:adb shell
#查看进程
3:ps
4:kill 进程端口 

 

常用的是1,2,3,5,6,7(因为是从0开始的,都-1就行)1:触摸(--pct-touch)
#按下/抬起
Touch(ACTION_DOWN)和Touch(ACTION_UP)2:手势(--pct-motion)
#直线滑动操作
#按下、随机移动、抬起,在手机看到是一个没有拐弯的直线操作(比如上滑列表下滑列表)
ACTION_DOWN、ACTION_MOVE、ACTION_UP3:二指缩放(--pct-pinchzoom)
#放大缩小手势操作
起始(两个手指同时点下):ACTION_DOWN、ACTION_POINTER_DOWN
中间(两个手指进行直线滑动):ACTION_MOVE
结束(两个手指同时放开):ACTION_UP4:轨迹(--pct-trackball)
现在比较少了5:屏幕旋转(--pct-rotation)
#横屏、竖屏
其中degree:旋转方向,0表示90度,1表示180度,2表示270度,3表示360度6:基本导航事件(--pct-nav)
#指定方向设备的上下左右按键操作(现在手机比较少了)
key(ACTION_DOWN)、Key(ACTION_UP)7:主要导航事件(--pct-majornav)
#如中间键、回退键、菜单键
如Home键
key(ACTION_DOWN)、Key(ACTION_UP)8:系统按键(--pct-syskeys)
#如Home键、返回键、音量键等
key(ACTION_DOWN)、Key(ACTION_UP)9:启动Activity事件(--pct-appswitch)
#手机上每一个界面就是一个Activity10:键盘事件(--pct-flip)
#点击输入框、键盘弹起、点击输入框外区域、键盘回收等11:其他类型事件(--pct-anyevent)
#如按键、其他不常用的设备上的按钮等

 

 

 

 

(8)忽略事件

#忽略某些事件
--ignore [事件类型]#指定某些操作的百分比
--pct [操作类型]#--ignore在monkey的执行过程中,忽略部分引起monkey停止的事件,如:
crashes:应用奔溃
timeouts:ANR application not responding:应用未响应
security:安全验证
native:系统奔溃如:忽略奔溃:--ignore-crashes

 

 

三:日志分析

拿抖音测试一下

adb shell monkey -p com.ss.android.ugc.aweme -v -v -v 1000 > d:\log2.txt

这些事件组成了一个猴子,Seeded: 1592550640194,如果要复现bug可以使用它

对按键想了解可以搜下:Android KEYCODE键值对应大全

 

看日志的时候,主要关注timeouts、error、ANR、exception,crash,通过ctrl+f去查看

 

 

 

四:简单脚本编写

#头文件信息
#类型
type = raw events
#执行1次
count = 1
#速度
speed = 1.0
#启动
start data >>
#括号里面是包名,这里我用抖音测试
LaunchActivity(com.ss.android.ugc.aweme)
#点击事件,这里的定位我随便写的
Tap(73,1247)
UserWait(5000)
Tap(600,1200)
UserWait(5000)
Tap(620,12)
UserWait(5000)

 


http://chatgpt.dhexx.cn/article/0eSl8wZ7.shtml

相关文章

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…

墨者 - Bash漏洞分析溯源

bash代码注入的安全漏洞分析 bash的环境变量 环境变量是操作系统运行shell中的变量&#xff0c;很多程序的运行需要获取系统的环境变量参数。具体赋值格式如下&#xff1a; $ var"hello world" 然后你就可以使用这个变量了,但是只是局部变量&#xff0c;即是当前进程…

墨者靶场 初级:Bash漏洞分析溯源

墨者靶场 初级&#xff1a;Bash漏洞分析溯源 题目背景介绍实训目标解题方向解题步骤 题目 背景介绍 安全工程师"墨者"对一单位业务系统进行授权测试&#xff0c;在测试过程中&#xff0c;发现存在bash命令执行漏洞。 实训目标 1、了解bash&#xff1b; 2、了解Bas…

Bash漏洞

1、漏洞的起因 这个漏洞的起因源自于Bash(Bourne Again SHell)的ENV指令 http://ss64.com/bash/env.html envDisplay, set, or remove environment variables, Run a command in a modified environment.Syntaxenv [OPTION]... [NAMEVALUE]... [COMMAND [ARGS]...]Options-u …

Linux系统bash漏洞

Linux系统bash漏洞 前言一、漏洞介绍二、实验过程总结 前言 bash&#xff0c;全称为Bourne-AgainShell&#xff0c;是控制Linux计算机命令提示符的软件。2014年被发现其存在严重的安全漏洞。bash在处理含有诸如”(){:;};”的环境变量赋值的代码上存在设计缺陷&#xff0c;错误…