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. Struts2中遇到的问题

    问题1: 最近在学习的时候用到了Struts2.5,在一系列操作之后Tomcat部署成功了,然而之后在测试的时候却出现了问题,网页无法正常响应,并且报出了Wrong method was define ...

  2. ansible-playbook 变量(vars)

    变量优先级: ansible-playbook中定义变量: - hosts: webservers vars: http_port: 80 ①.在host里定义变量 执行结果: ②.使用var_fil ...

  3. JavaSE学习总结(十八)—— 多线程

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...

  4. maven中经常使用的插件

    tomcat插件:非常实用,特点就是不用配置tomcat,可以任意修改端口号. <plugin> <groupId>org.apache.tomcat.maven</gr ...

  5. centos7环境下开启指定端口

    参考原博:https://www.cnblogs.com/eaglezb/p/6073739.html 查看已经开放的端口: firewall-cmd --list-ports 开启端口 firewa ...

  6. go函数练习

    1.编写程序,在终端输出九九乘法表. package main import ( "fmt" ) func main() { for i := 1; i <= 9; i++ ...

  7. Spring集成mybatis时mybatis的映射XML配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  8. centos7 cannot find a valid baseurl for repo

    出现这个问题是因为yum在安装包的过程中,虽然已经联网,但是没法解析远程包管理库对应的域名,所以我们只需要在网络配置中添加上DNS对应的ip地址即可. 操作 1.打开网络配置文件 vi /etc/sy ...

  9. OOM之类、对象、实例、实体之辨析

    一.场景再现         有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别.我用禅语来解释一下吧:         鱼和三文鱼有什么区别?         ...

  10. Java添加过期注解

    加上 @Deprecated 后方法名称显示: 中划线(删除线)意为:发生这些变化并不会影响编译,只是提醒一下程序员,这个方法以后是要被删除的,最好别用.就是如果一个类从另外一个类继承,并且overr ...