APP压力稳定性测试-Monkey
一、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的更多相关文章
- APP压力稳定性测试之monkey入门
1.什么是monkey? Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏幕.滑动Trackball.按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发 ...
- APP压力稳定性测试
转自:https://www.cnblogs.com/nuonuozhou/p/8643735.html 1.android系统自带monkey程序,模拟用户触摸屏幕,滑动track ball,按键等 ...
- App压力稳定性测试之Monkey
一.Monkey简介 Android系统自带monkey程序,模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. Monkey的使用是在产 ...
- APP压力稳定性测试之monkey环境搭建
一.搭建adb环境: 需要的安装软件包可以使用我分享的,链接:https://pan.baidu.com/s/13DThDtc0GALabTakshcLfg 密码:0kuo:也可以自己百度下载 1)下 ...
- [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本(转载)
一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行. 二. Money是什么? Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模 ...
- Android客户端稳定性测试——Monkey
修改时间 修改内容 修改人 2016.6.20 创建 刘永志 2016.6.29 完成 刘永志 Monkey简介: Android SDK自带的命令行测试工具,向设备发送伪随机事件流,对应用程序进行进 ...
- APP稳定性测试-monkey执行
Monkey命令行可用的全部选项 *示例 : adb shell monkey -p cn.lejiayuan.alpha --pct-touch 30 --pct-motion 15 --pct-t ...
- App稳定性测试Monkey
1.$ adb shell monkey <event-count> <event-count>是随机发送事件数 例:adb shell monk ...
- Android App 压力测试方法(Monkey)
一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...
- Android App压力测试方法(Monkey)
一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...
随机推荐
- 利用Redisson实现订单关闭
实体类 为了方便测试,直接在测试类中的写内部类: @Data @AllArgsConstructor @NoArgsConstructor public class OrderInfo { /** * ...
- js任务队列EventLoop
JS 执行机制 在我们学js 的时候都知道js 是单线程的如果是多线程的话会引发一个问题在同一时间同时操作DOM 一个增加一个删除JS就不知道到底要干嘛了,所以这个语言是单线程的但是随着HTML5到来 ...
- [R语言] R语言快速入门教程
本文主要是为了从零开始学习和理解R语言,简要介绍了该语言的最重要部分,以快速入门.主要参考文章: R-Tutorial R语言程序的编写需要安装R或RStudio,通常是在RStudio中键入代码.但 ...
- Spring Cloud Alibaba组件之Sentinel
目录 一 引入Sentinel学习 二 Sentinel入门 三 搭建Sentinel Dashboard 四 Springboot项目接入Sentinel 五 接入限流埋点 六 限流配置 七 熔断降 ...
- Js生成图片验证码
上代码 /** * [使用说明] * 1.生成验证码 * 函数: * generateRandomCode( dom对象Id ); * 例: * generateRandomCode( 'id' ); ...
- runtime-第一篇
第一次接触runtime,先介绍下自学的几个runtime方法 1.获取类的属性列表 先导入runtime文件 #import <objc/runtime.h> 我这边创建了一个Per ...
- 使用Logstash工具导入sqlserver数据到elasticSearch及elk分布式日志中心
首先记下这个笔记,Logstash工具导入sqlserver数据到elasticSearch. 因为logstash使用java写的,我本地开发是win11,所以javade jdk必须要安装.具体安 ...
- RSA非对称加密算法浅析
说起加密算法,大的分类上,常规区分通常会区分为对称加密与非对称加密两种,两种算法都各有优缺点.然而互联网发展到今天,应用更广的还是非对称加密的方式,而非对称加密中,RSA又首当其中,被广泛运用到各类应 ...
- 如何让Java编译器帮你写代码
作者:京东零售 刘世杰 导读 本文结合京东监控埋点场景,对解决样板代码的技术选型方案进行分析,给出最终解决方案后,结合理论和实践进一步展开.通过关注文中的技术分析过程和技术场景,读者可收获一种样板代码 ...
- Unity之正确设置手机显示布局&&获取手机朝向
目录 Unity之正确设置手机显示布局 && 获取手机朝向 前言 开篇 Unity版本及使用插件 正题 设置手机屏幕显示布局.Screen.orientation 获取手机当前朝向.I ...