一、Monkey工具简介

1、monkey的来源:

Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户:触摸屏幕、滑动Trackball、按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,可以根据获取的log信息进行修复。

注:运行adb服务,需要搭建android sdk的环境

二、adb下载与环境变量配置

Adb--> Android Debug Bridge(安卓调试桥)

Adb下载地址:https://link.zhihu.com/?target=https%3A//adbshell.com/upload/adb.zip

下载adb.zip成功后,解压到任意盘符,配置环境变量
第一步:选择此电脑---->右键---->属性---->高级系统设置--->

第二步:查看是否安装成功:进入cmd中后输入:adb version命令

如果显示如下,表示你的环境变量已经配置成功:

三、adb常用命令与.apk文件下载安装

(1)adb devices --->查看设备命令:

(2) adb -s 设备号-----链接到具体设备:

(3) 查看设备中已安装程序的命令:

adb shell pm list packages -----查看设备中所有已安装程序

adb shell pm list packages -s----查看设备中系统安装的程序

adb shell pm list packages -3----列出第三方安装的程序

(4) 如何对以安装程序进行过滤

adb shell pm list packages |findstr包名中字符串(windows操作系统命令)

adb shell pm list packages |grep 包名中字符串(Linux操作系统命令)

命令:adb shell pm list packages | findstr kyk

(5) 如何查看日志(日志默认大小为256KB)

adb logcat -----查看全部日志 (退出 ctrl+c)

adb logcat -c --->清空日志

adb logcat >logcat.log ---保存日志到logcat.log (退出 ctrl+c)

四、Monkey的一般使用步骤

1.先确认设备(模拟器或者真机)是否连接成功。命令:adb devices,出现设备号则表示连接成功

2.确定待测应用的包名,输入命令:adb shell dumpsys activity | find "mFocusedActivity"

3.执行monkey测试命令:adb shell monkey -p com.funny.kyk -v -v 200

意思就是:向有趣生活app发送200次随机事件流操作,且打印日志

五、Monkey的常见命令:

1、常用参数:

(1) -help 查看monkey用法

命令格式:adb shell monkey [限制命令 参数值][事件名 百分比] 事件次数

(2) -p --->用于约束限制,用此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。指定多个包,使用多个-p,一个-p后面接一个包名。

eg: adb shell monkey -p com.funny.kyk -p com.tencent.edu -v 100

(3) -v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别

  -v,日志级别 Level0;

  -v -v,日志级别 Level 1;

  -v -v -v,日志级别 Level 2;

要查看级别最高的日志,例:adb shell monkey -p com.funny.kyk -v -v -v 100

(4) -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。一般测试过程中出现崩溃,可以通过seed值来完成复现。

(5) --throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒;

(6) --randomize-throttle 用这个参数必须与--throttle 绑定使用。用于在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒;

例:adb shell monkey -p com.funny.kyk --throttle 500 --randomize-throttle 100

(7) --pkg-whitelist-file 白名单,后面接txt文件,指定白名单参数后只测试白名单的应用程序

(8) --pkg-blacklist-file 黑名单,后面接txt文件,指定黑名单参数后,避开黑名单的应用程序

例:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100

2、常用命令:

adb shell monkey -p com.funny.kyk --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000 > d:\mylog.log

(1) 操作与操作之间如何加思考时间(延迟时间):

--throttle 300 表示延迟300毫秒 注意:throttle 前面两个“-”

adb shell monkey -p com.funny.kyk -v -v -v --throttle 300 10   -->表示每次运行之间间隔300毫秒

(2) 忽略报错、忽略超时:

--ignore-crashes 忽略错误 注意前面两个“-”不能省略

eg: adb shell monkey -p com.funny.kyk --throttle 300 --ignore-crashes -v -v -v 10

--ignore-crashes --ignore-timeouts 表示忽略错误与忽略超时,注意两个之间有空格

eg:adb shell monkey -p com.funny.kyk --throttle 300 --ignore-crashes --ignore-timeouts -v -v -v 10

(3) 指定操作事件:

--pct-touch 100 表示10次都执行触摸事件:

adb shell monkey -p com.funny.kyk --throttle 300 --ignore-crashes -v -v -v --pct-touch 100 10

(4) 保存日志

adb shell monkey -p com.funny.kyk --throttle 300 --ignore-crashes -v -v -v --pct-touch 100 10 >d:\test.log

(5) 如何将日志保存到PC端?

adb shell monkey -v -v -v 1000 > 本机地址

例:adb shell monkey -v -v -v 1000 > d:\monkey.txt

(6) 日志查看补充

---->先把日志输出到本地

---->注意观察switch后面的内容,一般错误都会显示在这个后面

---->ANR问题:日志中搜索ANR关键字

---->奔溃问题:在日志中搜索Exception问题

六、Monkey百分比事件

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

例:adb shell monkey -p com.funny.kyk --pct-touch 10 -v -v 100

七、monkey日志分析报告

1、monkey出现错误后,一般的分析步骤:

(1) 找到出现错误的位置

(2) 找到出现错误前面两个Switch之间的activity

(3) 手动执行操作,复现问题

(4) 若上述步骤不能找出产生的错误,输入相同的seed值,重复安装之前的命令跑monkey

2、在日志中搜索关键词&分析:

ANR 有无应用无响应事件
crash 有无奔溃事件
exception

有无其他异常事件

若出现空指针nullpointerexception,需格外重视

GC 内存泄漏问题

APP压力稳定性测试-Monkey的更多相关文章

  1. APP压力稳定性测试之monkey入门

    1.什么是monkey? Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏幕.滑动Trackball.按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发 ...

  2. APP压力稳定性测试

    转自:https://www.cnblogs.com/nuonuozhou/p/8643735.html 1.android系统自带monkey程序,模拟用户触摸屏幕,滑动track ball,按键等 ...

  3. App压力稳定性测试之Monkey

    一.Monkey简介 Android系统自带monkey程序,模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. Monkey的使用是在产 ...

  4. APP压力稳定性测试之monkey环境搭建

    一.搭建adb环境: 需要的安装软件包可以使用我分享的,链接:https://pan.baidu.com/s/13DThDtc0GALabTakshcLfg 密码:0kuo:也可以自己百度下载 1)下 ...

  5. [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本(转载)

    一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行. 二. Money是什么? Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模 ...

  6. Android客户端稳定性测试——Monkey

    修改时间 修改内容 修改人 2016.6.20 创建 刘永志 2016.6.29 完成 刘永志 Monkey简介: Android SDK自带的命令行测试工具,向设备发送伪随机事件流,对应用程序进行进 ...

  7. APP稳定性测试-monkey执行

    Monkey命令行可用的全部选项 *示例 : adb shell monkey -p cn.lejiayuan.alpha --pct-touch 30 --pct-motion 15 --pct-t ...

  8. App稳定性测试Monkey

    1.$ adb shell monkey <event-count>                <event-count>是随机发送事件数 例:adb shell monk ...

  9. Android App 压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

  10. Android App压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

随机推荐

  1. 小技巧 EntityFrameworkCore 实现 CodeFirst 通过模型生成数据库表时自动携带模型及字段注释信息

    今天分享自己在项目中用到的一个小技巧,就是使用 EntityFrameworkCore 时我们在通过代码去 Update-Database 生成数据库时如何自动将代码模型上的注释和字段上的注释携带到数 ...

  2. 模型驱动设计的构造块(上)——DDD

    为了保证软件实践得简洁并且与模型保持一致,不管实际情况如何复杂,必须运用建模和设计的实践. 某些设计决策能够使模型和程序紧密结合在一起,互相促进对方的效用.这种结合要求我们注意每个元素的细节,对细节问 ...

  3. 【机器学习】李宏毅——生成式对抗网络GAN

    1.基本概念介绍 1.1.What is Generator 在之前我们的网络架构中,都是对于输入x得到输出y,只要输入x是一样的,那么得到的输出y就是一样的. 但是Generator不一样,它最大的 ...

  4. jenkins+git+.net core实现自动发布

    一.前言 继上篇介绍jenkins过去2年多了,最近整理了一下,希望这篇能介绍到一些更实用的方法和知识. 本次使用的jenkins版本是2.375.1.jdk 17.WinRAR.git:发布时,可以 ...

  5. Python图像处理丨详解图像去雾处理方法

    摘要:本文主要讲解ACE去雾算法.暗通道先验去雾算法以及雾化生成算法. 本文分享自华为云社区<[Python图像处理] 三十.图像预处理之图像去雾详解(ACE算法和暗通道先验去雾算法)丨[拜托了 ...

  6. Wireshark网卡无法找到或没有显示的问题

    问题背景 最近在处理公司内网域名解析的问题,发现配置好一个新域名在内网环境可以正常解析成内网IP,但使用深信服VPN却无法正常解析,并且其他域名使用深信服VPN可以正常解析,所以参考<内网域名解 ...

  7. Windows下使用vscode连接Linux服务器进行C++代码运行与调试

    参考链接: vscode + SSH 配置 https://blog.csdn.net/irober/article/details/112724986 launch.json + tasks.jso ...

  8. DVWA靶场实战(三)——CSRF

    DVWA靶场实战(三) 三.CSRF: 1.漏洞原理: CSRF(Cross-site request forgery),中文名叫做"跨站请求伪造",也被称作"one c ...

  9. CF1744B Even-Odd Increments

    简要题意 \(T\) 组数据,每组数据给定一个长度为 \(n\) 的数列,有 \(q\) 次操作,共有两种操作: \(\texttt{0 x}\),给数列中所有偶数加上 \(x\): \(\textt ...

  10. Echarts点击多组数据多个柱子中的一个柱子,获取当前点击的是第几组数据,并获取点击的是当前组别第几根柱子,以及对应横坐标,

    遇到一需求,一般都是点击图后获取其中一组数据就可以了,不需要详细到获取点击了当前X轴对应的其中的哪个, 今天的需求是 Echarts点击多组数据多个柱子中的一个柱子,获取当前点击的是第几组数据,并获取 ...