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压力测试环境搭建及使用的更多相关文章

  1. Android Monkey 压力测试 介绍

    Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试 阅读目录 ...

  2. Android Monkey压力测试

    Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试. 1为什 ...

  3. Android Monkey压力测试(转)

    参考链接:https://www.cnblogs.com/yyh8/p/6707745.html Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Andr ...

  4. Android Monkey压力测试使用

    一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击.滑动.Application切换.横竖屏.应用关闭)实现对 ...

  5. 『与善仁』Appium基础 — 1、Android系统的测试环境搭建

    目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...

  6. 转 Android Monkey压力测试使用

    转自:https://www.jianshu.com/p/c8844327f5e9 一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送 ...

  7. Android Monkey压力测试介绍

    monkey:通过Monkey程序模拟用户触摸屏幕.滑动Trackball. 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. Monkey的构架 Monkey的参数 Monke ...

  8. Monkey稳定性测试环境搭建说明

    一.安装Java环境 安装Java环境-JDK:下载地址:http://pan.baidu.com/s/1pJ6Yqs7,jdk安装解压即可. 二.设置环境变量 双击下载的JDK ,设置安装路径.这里 ...

  9. 1、Locust压力测试环境搭建

    环境准备:阿里云服务器一台.python2.7.pip Locust 介绍 Locust 是一个开源负载测试工具.使用 Python 代码定义用户行为,也可以仿真百万个用户. Locust 简单易用, ...

随机推荐

  1. ajax上传文件及进度显示

    之前在博文:原生ajax写法就提及过ajax2.0与1.0的差别是多了FormData和利用FormData文件上传(当然还有跨域,但不是本文的重点). 那么具体怎么样实现ajax上传文件呢? 一般来 ...

  2. 骨骼动画的原理及在Unity中的使用

    制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...

  3. 一个简单的"RPC框架"代码分析

    0,服务接口定义---Echo.java /* * 定义了服务器提供的服务类型 */ public interface Echo { public String echo(String string) ...

  4. 解决virtualbox与mac文件拖拽问题

    apt-get purge virtualbox-guest-x11apt-get autoremove --purgerebootapt-get updateapt-get dist-upgrade ...

  5. codeforces724G Xor-matic Number of the Graph

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  6. 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结

    教材学习内容总结 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: •连接数据源,如:数据库. •为数据库传递查询和更新指令. •处理数据库响应并返回的结 ...

  7. Linux - 日志处理一

    Linux 日志处理 history # 历时命令默认1000条 HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 让history命令显示具体时间 hi ...

  8. java线程池如何合理的设置大小

    线程池究竟设置多大要看你的线程池执行的什么任务了,CPU密集型.IO密集型.混合型,任务类型不同,设置的方式也不一样 任务一般分为:CPU密集型.IO密集型.混合型,对于不同类型的任务需要分配不同大小 ...

  9. mysql 原理~ 乐观锁和悲观锁

    一 简介:今天咱们来聊聊悲观锁和乐观锁 二 悲观锁  1 定义   在关系数据库管理系统里,悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC” ...

  10. nginx反向代理实现前后端分离&跨域问题

    1.代理和跨域 1.1 正向代理 1)用户希望代理服务器帮助其和要访问服务器之间实现通信,需要: a.用户IP报文的目的IP=代理服务器IP: b.用户报文端口号=代理服务器监听端口号: c.HTTP ...