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加入

  1. %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

或者

第二种方法:

直接在解压的SDK文件,找到“platform-tools”和“tools”并把这两个路径复制粘贴到Path环境变量里

注意:前面如果没有执行在SDK Manager.exe中下载系统这一步,你的SDK解压包中可能没有platform-tools和tools文件

6、测试环境是否成功,运行DOS输入:

  1. adb

结果示意图:

或者输入adb shell 进入shell

  1. C:\Users\> adb shell
  2. 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

虚拟设备开启后会显示如下结果:

  1. C:\Users\Admin>adb devices
  2. List of devices attached
  3. emulator-5554 device

真机会出现如下类似结果机器型号不同显示结果可能不一致:

  1. C:\Users\Admin>adb devices
  2. List of devices attached
  3. GSLDU17A14004709 device

2、安装apk程序(需要时)

  1. apk文件复制到android sdk对应platform-tools的目录下。
  2. adb install 文件名.apk #安装方法
  3. adb uninstall 包名 #卸载

3、获取包名(测试时需要,如下将演示对手机上的Email程序进行压测)

  1. 方法一:
  2. adb shell pm list package -f #显示所有apk包名包括系统

执行结果:

  1. C:\Users\> adb shell pm list package -f
  2. package:/data/app/SmokeTestApp/SmokeTestApp.apk=com.android.smoketest
  3. package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
  4. package:/data/app/CubeLiveWallpapers/CubeLiveWallpapers.apk=com.example.android.livecubes
  5. package:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephony
  6. ........ #刚安装的虚拟设备都有好几十
  1. 方法二:
  2. adb shell dumpsys window w | findstr \/ | findstr name= #会显示正打开的程序

执行结果:

  1. C:\Users\WeiBing>adb shell dumpsys window w | findstr \/ | findstr name=
  2. 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

分析:

  1. 参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。
  2. 100是事件计数(即让Monkey程序模拟100次随机用户事件)
  3. -v -v -v 100 # 以深度为三级输出测试信息 一个两个-v也可以效果不同

对上面第3步的Email APP执行测试

  1. adb shell monkey -p com.android.email --throttle 500 -v -v -v 100 > D:/monkey_log.txt

分析上面命令:

  1. adb shell 是进入shell 也可和后面的语句分开写
  2. -p 参数是指定一个包或多个,两个再-p package
  3. com.android.email package name
  4. throttle 500 响应时间,500毫秒
  5. -v -v -v 三级详细信息 也可一个两个-v详细程度不一样
  6. 100 执行的操作量
  7. D:/monkey_log.txt :将结果日志存储到D盘下面取名为monkey_log.txt

更详细的log参数使用方法

5、找到log查看结果:

  1. C:\Users\> adb shell monkey -p com.android.email --throttle 500 -v -v -v 100 > D:/monkey_log.txt
  2. :Monkey: seed=1520164404419 count=100
  3. :AllowPackage: com.android.email
  4. :IncludeCategory: android.intent.category.LAUNCHER
  5. :IncludeCategory: android.intent.category.MONKEY
  6. ....... # 此处省略一大堆
  7. Events injected: 100
  8. :Sending rotation degree=0, persist=false
  9. :Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
  10. ## Network stats: elapsed time=4663ms (0ms mobile, 0ms wifi, 4663ms not connected)
  11. // Monkey finished

详细分析

6、分析日志

查找有无日志中的无响应问题和崩溃问题

  1. ## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)
  2. // 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. 记录一次iptables端口转发的配置

    需求是公网访问2.2.2.22的80端口,直接转发到内网的192.100.100.178的80端口上. 代理服务器的,两个不同的网卡 eth0 2.2.2.22 eth1 192.100.100.10 ...

  2. jackson的自动检测机制

    jackson允许使用任意的构造方法或工厂方法来构造实例 使用@JsonAutoDetect(作用在类上)来开启/禁止自动检测 fieldVisibility:字段的可见级别 ANY:任何级别的字段都 ...

  3. Jena搭建SPARQL查询RDF数据

    1 Jena搭建SPARQL查询RDF数据 1.1 Jena概要 · SPARQL是W3C的RDF数据工作组设计的一种查询语言和协议,用于RDF数据的查询.经过类似于JDK安装时候的配置,可以在命令行 ...

  4. go通过swig封装、调用c++共享库的技术总结

    go通过swig封装.调用c++共享库的技术总结 @(知识记录) 1 简介 最近在研究golang,希望能对目前既有的python服务做一些优化,这些服务目前已经占用了6-7台机器.选择golang的 ...

  5. Java基础编程题——素数

    package com.yangzl.basic; /** * 判断101-200之间有多少个素数,并输出所有素数. * @author Administrator * */ /*程序分析:判断素数的 ...

  6. leetCode- 472. Concatenated Words

    因为每个组合的字符串,至少要有3个index. 起点,中间拼接点,结点.所以可以将字符串分解为子字符串,判断子字符串是否存在.但是,后面字符串的存在必须要在前面字符串已经存在基础上判断. class ...

  7. pyqt5 添加属性-类方法用属性形式访问

    方法一 装饰器法 import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout,QLab ...

  8. div背景半透明

    例子: html: <div class="erp-mask-a" > <div class="erp-mask-cell-a"> he ...

  9. HNOI2018游记

    第一次参加本省省选,结果又是一次划水 Day 0 喝了一个小时鸡汤 大家看看人家钱学森(sheng) 竞赛生要多发展些爱好 不要一考完就fake,那种下考说"大佬AC辣!太强啦!月莫月莫月莫 ...

  10. bzoj 4184: shallot (线段树维护线性基)

    题面 \(solution:\) 这一题绝对算的上是一道经典的例题,它向我们诠释了一种新的线段树维护方式(神犇可以跳过了).像这一类需要加入又需要维护删除的问题,我们曾经是遇到过的像莫对,线段树... ...