Monkey测试个人笔记

article/2025/10/18 10:01:34

安卓monkey简介

  • Monkey是一款安卓自带的、java编写的app自动化测试工具,monkey是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动Trackball、手势输入等操作),来对设备上的程序进行测试,检测程序长时间的稳定性,多久的时间会发生异常。

  • 主要目的:测试 app 是否会是否会 Crash。模拟器:夜神,逍遥

路径地址

通过adb shell 进入路径:/system/framework可以找到monkey.jar;/system/bin可以找到monkey

C:\Users\duxiaowei>adb shell pm list packages|findstr tyjh
package:com.tyjh.lightchain

查看安卓手机包路径 :pm list packages -f

获取所有包名:adb shell pm list package

获取第三方包名:adb shell pm list package -3

adb logcat | findstr START 输入该命令,然后点击要启动的app,即可获取到包名和activity

调试

  • 配置

    1.开发者模式:关于设备 —> MIUI版本,连续点击5-7次,开发者模式

    2.USB调试:开发者模式—>打开USB调试

    ​ oppo、华为:选项长时间不操作手机,自动断开USB调试

    3.链接手机,USB/WIFI(adb-connecter)同一个局域网

    4.cmd:adb devices回撤

    ​ devices:表示正常

    ​ offline:插拔USB即可 模拟器–>模拟器升级到最新版本

    ​ no device: 驱动

    ​ unauthorized:表示未授权,允许授权即可

    1. 端口占用:netstat -ano |findstr “5037”

      360/手机助手,容易出现占用端口

      USB线:数据传输,adb驱动

操作命令

  • 参数

    1.count 事件数,必填

    2.[][][–ignore-crashes] [–ignore-timeouts] [–ignore-security-exceptions]

    crashes:崩溃,闪退;

    timeouts: 超时,无响应

    如果使用这个参数,发生崩溃或者无响应的时候,会结束应用进程,从新打开继续执行,直到事件次数结束

    不使用该参数:发生上述问题,monkey测试停止在问题界面–缺乏稳定性测试的意义

    一般是使用该参数的

  • 参数

    基础参数:

    -p 指定包名

    -v 表示反馈信息的级别,打印 log 级别,-v 越多日志信息越详细,最多支持 3 个 -v -v -v ,例如:华为手机100万次 -v -v -v

    -s 如果用相同的seed值再次运行monkey,将生成相同的事件序列;每个seed可能发生N个bug,不利于测试稳定性,所以要唯一指定!

    –throttle 在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。

    -f:后接测试脚本名

    # 简单的测试 -p 指定包,-s 指定测试id号, -v日志打印详细程度
    adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v 500
    

    usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] …]
    [-c MAIN_CATEGORY [-c MAIN_CATEGORY] …]
    [–ignore-crashes] [–ignore-timeouts]
    [–ignore-security-exceptions]
    [–monitor-native-crashes] [–ignore-native-crashes]
    [–kill-process-after-error] [–hprof]
    [–match-description TEXT]
    [–pct-touch PERCENT] [–pct-motion PERCENT]
    [–pct-trackball PERCENT] [–pct-syskeys PERCENT]
    [–pct-nav PERCENT] [–pct-majornav PERCENT]
    [–pct-appswitch PERCENT] [–pct-flip PERCENT]
    [–pct-anyevent PERCENT] [–pct-pinchzoom PERCENT]
    [–pct-permission PERCENT]
    [–pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
    [–pkg-whitelist-file PACKAGE_WHITELIST_FILE]
    [–wait-dbg] [–dbg-no-events]
    [–setup scriptfile] [-f scriptfile [-f scriptfile] …]
    [–port port]
    [-s SEED] [-v [-v] …]
    [–throttle MILLISEC] [–randomize-throttle]
    [–profile-wait MILLISEC]
    [–device-sleep-time MILLISEC]
    [–randomize-script]
    [–script-log]
    [–bugreport]
    [–periodic-bugreport]
    [–permission-target-system]
    COUNT

    –pct-事件类别 11 个事件百分比控制

    –pct-touch

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

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

    0:点击事件百分比,即参数–pct-touch

    1:滑动事件百分比,即参数–pct-motion

    2:缩放事件百分比,即参数–pct-pinchzoom

    3:轨迹球事件百分比,即参数–pct-trackball

    4:屏幕旋转事件百分比,即参数–pct-rotation

    5:基本导航事件百分比,即参数–pct-nav

    6:主要导航事件百分比,即参数–pct-majornav

    7:系统按键事件百分比,即参数–pct-syskeys

    8:Activity启动事件百分比,即参数–pct-appswitch

    9:键盘唤出隐藏事件百分比,即参数–pct-flip

    10:其他事件百分比,即参数–pct-anyevent

    –throttle <毫秒> 延时

    指定,用户才做延时,单位:毫秒

    adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --throttle 3000 100

    – randomize-throttle

    在事件之间插入随机延迟,随机延迟范围从0到throttle 设置的事件,单位毫秒

    adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --throttle 5000 --randomize-throttle 100

    adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --throttle 5000 --randomize-throttle 100 > D:\apk\monkey_log.txt ;日志保存文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsHtLvl7-1631843439385)(C:\Users\duxiaowei\AppData\Roaming\Typora\typora-user-images\image-20210805173117040.png)]

黑名单不扫描的包;白名单,扫描的包

adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --pct-touch 100 300 #全是点击事件

adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --pct-touch 50 --pct-rotation 50 300 #百分之50点击,百分之50旋转

关闭monkey进程:

adb shell 
ps #进程号3344
kill 3344
exit

adb shell monkey -p com.tyjh.lightchain -s 500 --ignore-crashes --ignore-timeouts   --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt

说明:monkey作用的包:com.tyjh.lightchain 产生时间序列的种子值:500  忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃、详细信息级别为2 , 产生 10000个事件  所产生的日志保存在:E:\monkey_log\java_monkey_log.txt

注:测试产生了日志,最重要的是要学会分析日志  在log中搜索4种关键字加以分析: 1、crash 闪退  2、exception 异常 3、force closed 强制退出   4、anr(application no response) 程序无响应。

实际使用

Monkey测试参数建议

间隔时间:500毫秒;

种子数:指定;

遇到错误:不停止;

执行时长:每机型不小于12小时或点击次数:100万次;

机型覆盖建议:覆盖高中低端机型

不同芯片平台(高通、海思、MTK等)

不同分辨率(480*800以上主流分辨率)

不同安卓版本(安卓4.0以上主流安卓版本);

Monkey参考命令

adb shell monkey -p com.tyjh.lightchain --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v -v 1000000>D:\monkey_log\monkeyScreenLog.log

测试可以发现的问题**

Android平台应用程序可能产生以下两种问题:

1、Crash

2、ANR (响应延时)

Monkey日志定位问题**

  • 2.1 典型Monkey测试日志文件输出,如下:

img

//主要Log文件说明

anr目录:从手机/data/anr导出的日志,保存发生anr crash 时的相关信息;

  • 2.2 通过日志定位问题步骤

(1)在MonkeyScreen.Log日志文件搜索关键词“Fatal”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,或分析发生Crash前后的日志事件;

如图:

img

img

然后把相应的日志发给开发即可。

工作中monkey的使用:

日志的分析

bug的定位

bug编写规范

anr日志提取

adb logcat的使用


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

相关文章

monkey测试工具

Monkey的概念&#xff1a; “猴子测试”是指没有测试经验的人甚至对计算机根本不了解的人&#xff08;就像猴子一样&#xff09;不需要知道程序的任何用户交互方面的知识&#xff0c;如果给他一个程序&#xff0c;他就会针对他看到的界面进行操作&#xff0c;其操作是无目的的…

Monkey的测试原理和方法

参考资料&#xff1a;http://blog.csdn.net/io_field/article/details/52189972 一、Monkey测试原理&#xff1a;Monkey是Android中的一个命令行工具&#xff0c;可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等)&#xf…

iOS端Monkey测试

说起Monkey测试&#xff0c;大家想到的是monkey测试只有安卓有&#xff0c;monkey测试只针对安卓app&#xff0c;今天给大家分享一下Monkey测试在iOS端也能跑&#xff01;iOS端app也能使用Monkey测试来执行稳定性测试。 一、环境准备 1、准备Mac设备&#xff0c;并安装xcodeI…

Monkey测试工具详解

Monkey测试工具简介&#xff1a; Monkey是Android SDK 中附带的一个工具&#xff1b;Monkey测试的原理&#xff1a;利用socket通讯&#xff08;Android客户端和服务器以TCP/UDP方式&#xff09;的方式来模拟用户的按键输入、触摸屏输入、手势输入等&#xff1b;Monkey测试的…

Android Monkey测试

monkey通常用于对app进行压力测试&#xff0c;通过monkey工具在模拟器或设备中产生类似用户点击、触摸、手势等一些系统级的伪随机事件流以测试app的稳定性&#xff0c;这好比一只猴子随意操作设备。 一、monkey原理 monkey是一个用java编写的脚本&#xff0c;设备中存放在sy…

Monkey测试全过程

1.monkey测试的概念 Monkey是Android中的一个命令行工具&#xff0c;可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等)&#xff0c;实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性…

Monkey测试(APP稳定性)

目录 1、Monkey简介 2、monkey程序介绍 3、Monkey测试前准备 4、Monkey测试命令 5、 Monkey测试结果&#xff08;pass或者fail&#xff09;的判断 6、Monkey Log的简单分析 7、汇总如图 1、Monkey简介 Monkey是Androld中的一个命令行工具&#xff0c;可以运行在模拟器里…

monkey 测试介绍

目录 前言 环境搭建 什么是Monkey Monkey 用来做什么 Monkey程序介绍 Monkey 架构 Monkey弱点 Monkey 参数大全 Monkey 命令 基本参数介绍 Monkey 实例 Monkey 查看包名 Monkey 日志分析 必须重视Crash 前言 Monkey 是Android SDK提供的一个命令行工具&#xff0…

一个简单的monkey测试工具

Monkey的概念&#xff1a; “猴子测试”是指没有测试经验的人甚至对计算机根本不了解的人&#xff08;就像猴子一样&#xff09;不需要知道程序的任何用户交互方面的知识&#xff0c;如果给他一个程序&#xff0c;他就会针对他看到的界面进行操作&#xff0c;其操作是无目的的…

monkey测试详解

一、monkey测试的定义 Monkey 测试是通过向系统发送伪随机的用户事件流&#xff08;如按键输入、触摸屏输入、手势输入等&#xff09;&#xff0c;实现对应用程序客户端的稳定性测试&#xff1b;通俗来说&#xff0c;Monkey 测试即“猴子测试”&#xff0c;是指像猴子一样&…

Monkey测试

一、什么是 Monkey 测试 Monkey 测试是通过向系统发送伪随机的用户事件流&#xff08;如按键输入、触摸屏输入、手势输入等&#xff09;&#xff0c;实现对应用程序客户端的稳定性测试&#xff1b;通俗来说&#xff0c;Monkey 测试即“猴子测试”&#xff0c;是指像猴子一样&a…

使用Monkey进行软件测试(随机测试+脚本测试)

文章目录 一、基础概念二、monkey测试的优缺点2.1 优点2.2缺点2.3 解决方案2.3.1 二次开发2.3.2 指定测试页面2.3.3 调整各种事件的比例2.3.3 编写自定义测试脚本2.3.4 分析APP特性&#xff0c;选择合适的方案 三、monkey测试的基本过程3.1 环境准备3.1.1环境3.1.2 配置过程 3.…

【Monkey测试】Monkey测试详解

一、什么是 Monkey 测试 Monkey 测试是通过向系统发送伪随机的用户事件流&#xff08;如按键输入、触摸屏输入、手势输入等&#xff09;&#xff0c;实现对应用程序客户端的稳定性测试&#xff1b;通俗来说&#xff0c;Monkey 测试即“猴子测试”&#xff0c;是指像猴子一样&a…

Linux 的 Kill -9命令

大家对kill -9 肯定非常熟悉&#xff0c;在工作中也经常用到。特别是你去重启tomcat时。 可是多半看来&#xff0c;我们对-9的理解只是表面而已。 很少有人&#xff08;包括我&#xff09;认真的去了解一下 kill -n 这个n到底是什么东东。自我批评一下。 好吧。我们来好好的认识…

kill进程.bat

输入端口号kill进程若出现中文乱码问题&#xff0c;则打开文件&#xff0c;点击另存为&#xff0c;将编码格式从UTF-8&#xff0c;改为ANSI&#xff0c;并将拓展名改为.bat&#xff0c;保存即可 echo off setlocal enabledelayedexpansion set /p port请输入端口号&#xff1…

shell中的kill命令

简介&#xff1a; 无论你使用哪种操作系统&#xff0c;你一定会遇到某个行为失常的应用&#xff0c;它把自己锁死并拒绝关闭。在Linux(还有Mac)&#xff0c;你可以用一个"kill"命令强制终结它。在这个教程中&#xff0c;我们将展示给你多种方式使用"kill"…

Mysql的kill命令

在MySQL中有两个kill命令&#xff1a;一个是kill query 线程id&#xff0c;表示终止这个线程中正在执行的语句&#xff1b;一个是kill connection 线程id&#xff0c;这里connection可缺省&#xff0c;表示断开这个线程的连接&#xff0c;当然如果这个线程有语句正在执行&#…

kill与kill -9的区别

kill命令格式&#xff1a; kill -Signal pid pid是进程号&#xff0c;可以用 ps 命令查出 signal是发送给进程的信号&#xff0c; 默认参数下&#xff0c;kill 发送SIGTERM&#xff08;15&#xff09;信号给进程&#xff0c;告诉进程&#xff0c;你需要被关闭&#xff0c;请自…

Linux命令之终止进程kill

概述 kill 命令可以用来终止进程&#xff0c;即杀死某些进程。 语法 该命令的语法如下&#xff1a; kill [选项] 进程号该命令支持的选项有&#xff1a; 选项说明 -l <信息编号>若不加<信息编号>选项&#xff0c;则 -l 参数会列出全部的信息名称-a当处理当前进…

killall 、kill 、pkill 命令详解

转载地址&#xff1a;https://www.cnblogs.com/rsky/p/4886043.html killall 命令 Linux系统中的killall命令用于杀死指定名字的进程&#xff08;kill processes by name&#xff09;。我们可以使用kill命令杀死指定进程PID的进程&#xff0c;如果要找到我们需要杀死的进程&am…