Android Monkey压力测试环境搭建及使用
Android Monkey压力测试学习笔记
步骤:下载SDK -> 解压进入SDK Manager下载系统 -> 配置环境变量 -> 创建虚拟设备或连接真机 -> 进入命令模式按场景输入测试命令
环境搭建
1、安装JDK
2、下载Android sdk,什么是Android sdk?
exe格式和zip格式都可以
3、安装installer_r24.4.1-windows.exe文件,里面有两个应用程序: “SDK Manager.exe”(负责下载或更新SDK包) 和 “AVD Manager.exe”(负责创建管理虚拟机)。
4、我们先运行“SDK Manager.exe”进行SDK下载,我选择为7.0版,点击install packages开始安装(此处下载是为搭建虚拟机和环境变量做准备)
下载说明:

安装
进入漫长等待…
5、设置环境变量
第一种方法:
(1) 新建一个ANDROID_HOME的环境变量加入sdk(zip解压路径)安装路径
(2) 在path加入
%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
或者
第二种方法:
直接在解压的SDK文件,找到“platform-tools”和“tools”并把这两个路径复制粘贴到Path环境变量里
注意:前面如果没有执行在SDK Manager.exe中下载系统这一步,你的SDK解压包中可能没有platform-tools和tools文件
6、测试环境是否成功,运行DOS输入:
adb
结果示意图:
或者输入adb shell 进入shell
C:\Users\> adb shell
generic_x86_64:/ $
出现以上结果就证明安装OK了
未成功?
尝试一下上面的第二种环境变量(虽然两种效果一样,但我的电脑就出现了这种莫名其妙的事情,尝试第二种就可以了)
使用方法
创建虚拟设备:
此小章内容介绍的是虚拟设备的创建方法
电脑配置低创建完成有可能会有些卡顿
1、打开AVD Manager.exe
2、创建
注意CPU中的选项:
版本不同界面也可能是这样

3、运行虚设备
选择运行
点击后:
执行结果:
如出现报错:emulator: ERROR: x86 emulation currently requires hardware acceleration ?
解决办法下载haxm并安装 或 打开SDK Manager.exe在最下面Extras中找到选择安装(此方法某些版本系统提示不兼容)
详细参考链接
一直黑屏?
创建时应该是哪个配置选错了,或者仔细看一下前面的教程是不是少下什么包了
执行压测
我们可以使用虚拟设备或真机进行测试(命令一样):
虚拟机: 按上面的小章节安装并运行
真机: usb连接手机,打开开发者模式 -> 开启USB调试(若提示是否允许调试,点是,不然不能某些操作)
1、查看设备是否连接成功
进入DOS(windows+r)输入adb devices
虚拟设备开启后会显示如下结果:
C:\Users\Admin>adb devices
List of devices attached
emulator-5554 device
真机会出现如下类似结果机器型号不同显示结果可能不一致:
C:\Users\Admin>adb devices
List of devices attached
GSLDU17A14004709 device
2、安装apk程序(需要时)
将apk文件复制到android sdk对应platform-tools的目录下。
adb install 文件名.apk #安装方法
adb uninstall 包名 #卸载
3、获取包名(测试时需要,如下将演示对手机上的Email程序进行压测)
方法一:
adb shell pm list package -f #显示所有apk包名包括系统
执行结果:
C:\Users\> adb shell pm list package -f
package:/data/app/SmokeTestApp/SmokeTestApp.apk=com.android.smoketest
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/data/app/CubeLiveWallpapers/CubeLiveWallpapers.apk=com.example.android.livecubes
package:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephony
........ #刚安装的虚拟设备都有好几十
方法二:
adb shell dumpsys window w | findstr \/ | findstr name= #会显示正打开的程序
执行结果:
C:\Users\WeiBing>adb shell dumpsys window w | findstr \/ | findstr name=
mSurface=Surface(name=com.android.email/com.android.email.activity.setup.AccountSetupFinal) #如我们正在运行Email的APP
记住上面的包名:com.android.email
4、开始压测
方法:adb shell monkey -p your.package.name -v -v -v 100
分析:
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。
100是事件计数(即让Monkey程序模拟100次随机用户事件)
-v -v -v 100 # 以深度为三级输出测试信息 一个两个-v也可以效果不同
对上面第3步的Email APP执行测试
adb shell monkey -p com.android.email --throttle 500 -v -v -v 100 > D:/monkey_log.txt
分析上面命令:
adb shell : 是进入shell 也可和后面的语句分开写
-p : 参数是指定一个包或多个,两个再-p package
com.android.email : 是package name
throttle 500 : 响应时间,500毫秒
-v -v -v : 三级详细信息 也可一个两个-v详细程度不一样
100 : 执行的操作量
D:/monkey_log.txt :将结果日志存储到D盘下面取名为monkey_log.txt
更详细的log参数使用方法
5、找到log查看结果:
C:\Users\> adb shell monkey -p com.android.email --throttle 500 -v -v -v 100 > D:/monkey_log.txt
:Monkey: seed=1520164404419 count=100
:AllowPackage: com.android.email
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
....... # 此处省略一大堆
Events injected: 100
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=4663ms (0ms mobile, 0ms wifi, 4663ms not connected)
// Monkey finished
6、分析日志
查找有无日志中的无响应问题和崩溃问题
## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished #表明本次的Monkey没有异常,测试通过。
无响应问题搜索”ANR”
奔溃问题搜索”CRASH”
内存泄漏问题搜索”GC”,并进一步分析
异常问题搜索”Exception”,如出现NullpointerException,则出现空指针,需要重视
有这类的情况再进行具体分析
日志分析来源
Android Monkey压力测试环境搭建及使用的更多相关文章
- Android Monkey 压力测试 介绍
Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试 阅读目录 ...
- Android Monkey压力测试
Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试. 1为什 ...
- Android Monkey压力测试(转)
参考链接:https://www.cnblogs.com/yyh8/p/6707745.html Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Andr ...
- Android Monkey压力测试使用
一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击.滑动.Application切换.横竖屏.应用关闭)实现对 ...
- 『与善仁』Appium基础 — 1、Android系统的测试环境搭建
目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...
- 转 Android Monkey压力测试使用
转自:https://www.jianshu.com/p/c8844327f5e9 一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送 ...
- Android Monkey压力测试介绍
monkey:通过Monkey程序模拟用户触摸屏幕.滑动Trackball. 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. Monkey的构架 Monkey的参数 Monke ...
- Monkey稳定性测试环境搭建说明
一.安装Java环境 安装Java环境-JDK:下载地址:http://pan.baidu.com/s/1pJ6Yqs7,jdk安装解压即可. 二.设置环境变量 双击下载的JDK ,设置安装路径.这里 ...
- 1、Locust压力测试环境搭建
环境准备:阿里云服务器一台.python2.7.pip Locust 介绍 Locust 是一个开源负载测试工具.使用 Python 代码定义用户行为,也可以仿真百万个用户. Locust 简单易用, ...
随机推荐
- nginx的location、root、alias指令用法和区别
nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域: [root] 语法:root path 默认值:root html 配置段:http.server.location.i ...
- ajax跨域原理和cors跨域资源共享
不需要设置前端太多,只需要在服务端是在请求头,使服务端的回复数据可以正常通过浏览器的限制,进入网站 首先说下简单请求和非简单请求: 简单请求:必须满足下列条件 1.请求方式:head,get,post ...
- Neural Networks and Deep Learning 课程笔记(第四周)深层神经网络(Deep Neural Networks)
1. 深层神经网络(Deep L-layer neural network ) 2. 前向传播和反向传播(Forward and backward propagation) 3. 总结 4. 深层网络 ...
- Git与GitHub学习笔记(四)合并远程分支
在这里的前提: 1.你已经fork 源作者的项目到你自己的仓库了 2.git clone 自己仓库fork的项目,注意地址,这里是自己的账号下的地址,而不是源作者的项目地址哦 3.在本地修改代码,gi ...
- js定时器整理(执行一次、重复执行)
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime); 2.循环 ...
- Python XML操作
XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据.在编程中,对XML的操作也非常常见. 本文根据python库文档中的xml.etree.ElementTree类来进行介绍X ...
- Unity3d跨平台原理
知乎的一个提问:unity3d跨平台原理 一些资料: IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe ...
- 串行动画组QSequentialAnimationGroup
按顺序执行动画 该类就是用来按照动画添加顺序来执行动画的.我们只用实例化该类,然后通过调用addAnimation()或者insertAnimation()方法把各个动画添加进去就可以了 import ...
- android 内存泄漏,以及检测方法
1.为什么会产生内存泄漏 当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏. 2.内 ...
- numpy 中 shape_base提供的tile方法
tile函数 来自于numpy.lib.shape_base 功能:重复某个数组. 比如说tile(A, n), 功能是将数组A重复n次,构成一个新的数组(行数只有1个) 比如说tile(A, n, ...