1、adb的作用是什么?
adb的全称:android debug bridge 安卓调试桥梁,包含在 Android SDK 平台工具软件包中。通过该命令与设备进行通信,以便进行调试
adb可以同时管理多个安卓设备

2、monkey测试环境搭建
1)下载并安装JDK包,设置环境变量
2)下载Android SDK包并解压,配置环境变量
E:\Android SDK\Adt Bundle\sdk\tools   monkey环境路径
E:\Android SDK\Adt Bundle\sdk\platform-tools  adb环境路径
3)启动dos窗口,分别输入
C:\Users\Administrator>java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

C:\Users\Administrator>adb version
Android Debug Bridge version 1.0.31

C:\Users\Administrator>monkeyrunner
Jython 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_181

命令查看环境是否搭建好

3、连接设备
1)手机与PC通过数据线连接,在手机系统设置里开启开发者模式和USB调试模式,设置屏幕为常亮
2)在dos窗口输入 adb devices命令查看设备是否连接上了
C:\Users\Administrator>adb devices
List of devices attached
9656c4f7        device

adb 子命令参考
logcat 打印出安卓系统日志
adb logcat -d  >E:\1.txt
-d  一次性返回日志信息,不需要实时跟踪
>E:\1.txt  重定向并保存日志

install 将某个.apk文件安装到指定设备
adb install D:\test\weitaixin.apk     

uninstall 从指定设备上卸载一个应用,根据包名卸载模拟器中的APP
adb uninstall cn.xxxx.xxxx
获取报名方式
1)通过解包方式
C:\Users\Administrator>aapt dump badging E:xxx.0apk
package: name='cn.xxx.xxx' versionCode='2701' versionName='2.7.0'
sdkVersion:'19'
targetSdkVersion:'26'

2)通过adb命令获得所有报名
adb shell pm list packages  
        (package manager)    

3)模糊报名进行过滤(前提:知道大概的报名)
adb shell pm list packages  weitaixin
                            
4)通过管道符 grep进行过滤(前提:知道大概的报名)
C:\Users\Administrator>adb shell
PBEM00:/ $ pm list packages |grep weitai
pm list packages |grep weitai
package:cn.xxx.xxx

5)通过启动程序,获取当前启动程序的包名
C:\Users\Administrator>adb shell
PBEM00:/ $ dumpsys window |grep mCurrent
dumpsys window |grep mCurrent
        mCurrentUserId=0
  mCurrentFocus=Window{fe0aeaf u0 cn.xxx.xxx/cn.xxx.xxx.ui.main.MainActivity}
    mCurrent=[0,96][1080,2208]
    mCurrentAppOrientation=SCREEN_ORIENTATION_PORTRAIT
      mCurrentRotation=ROTATION_0
      
6)找到目录,获取指定文件
C:\Users\Administrator>adb shell
PBEM00:/ $ cd /data/data
cd /data/data
PBEM00:/data/data $ ls

pull 把Adroid设备中的文件复制到本地开发机
例如:
adb pull /data/data/1.txt  D:\2.txt         
        手机端的路径和文件  PC端的路径及重命名

push 把本地开发机上的文件复制到安卓设备中
例如:abd push    C:\1.xt          /data/data
               PC端的位置和文件    手机端的位置
get-serialno 打印设备的序列表
get-state 打印设备状态
kill-server 结束adb服务进程
shell 打开指定安卓设备的shell,以执行shell命令
adb shell 进入安卓命令状态 安卓系统是基于linux内核开发的,安卓命令和linux命令相似
pwd:查看当前所在目录
ls -l 查看当前目录下的资源属性
date 打印当前系统时间
cat /proc/meminfo 查看内存信息
cat /proc/cpuinfo 查看CPU信息
ps 查看当前进程信息

Monkey测试:是Android中的一个命令行工具,可以运行在模拟器里和实际设备中。他向系统发送伪随机事件流(如:按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法
ANR: application not response 应用程序无响应。用户可以选择等待而让程序继续运行,也可以选择强制关闭。所以一个流畅的合理的APP不能出现ANR,而让用户每次都要处理这个对话框。在Android系统中Activity的最长执行事件是5s,BroadcastReceiver的最长执行时间则是10s。

adb shell monkey -p cn.xxx.xxx--pct-touch 5 --pct-motion 5 --pct-syskeys 5 -s 10 --ignore-crashes -v -v -v 100
根据不同业务配置不同操作的比重

参数:-p 含义:用于约束限制,用此参数指定一个或者多个包
指定多个包:adb shell monkey -p cn.xxx.xxx 10 -p cn.xxx.xxx 10
指定一个包:adb shell monkey -p cn.xxx.xxx 10
不指定包,系统层面的测试:adb shell monkey 100

参数:-v 含义:用户反馈信息级别(信息级别就是日志的详细程度),总共3个级别(0-2)
日志级别:level0
示例:adb shell monkey -p cn.xxx.xxx -v 10  
说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别level1
示例:adb shell monkey -p cn.xxx.xxx -v -v 10
说明提供较为详细的日志,包括每个发送到activity的事件信息

日志级别level2
示例:adb shell monkey -p cn.xxx.xxx -v -v -v 10
说明最详细的日志,包括了测试中选中/未选中的Activity信息

参数: -s 含义:用于生成伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也是相同的。
monkey测试1
adb shell monkey -p cn.xxx.xxx -s 10 100
monkey测试2
adb shell monkey -p cn.xxx.xxx -s 10 100

参数:--throttle<毫秒> 含义:用于指定用户操作(即事件)间的延时,单位是毫秒
示例:
adb shell monkey -p cn.xxx.xxx --throttle 500 100

参数:--ignore-crashes  含义:用于指定当前应用程序崩溃时(Force&Close错误),monkey是否停止运行,如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成
示例:
adb shell monkey -p cn.xxx.xxx --ignore-crashes -s 10 -v -v -v 10

常用调试选项:
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--ignore-native-crashes:忽略本地崩溃
--monitor-native-crashes:跟踪本地方法的崩溃问题
--kill-process-after-error:发生错误后直接杀掉进程
--wait-dbg:直到连接了调试器才执行monkey测试
--dbg-no-events:初始化启动的activity,但不产生任何事件
--hprof:指定该项后在事件序列发送前后会立即生成分析报告

参数:--pct-{事件类别}{事件百分比}
含义:用于指定每种类别事件的数目百分比(在monkey事件序列中,该类事件数目占总事件数目的百分比)
示例: --pct-touch{百分比}
调整触摸事件的百分比(触摸事件是down-up事件)
adb shell monkey -p cn.xxx.xxx --pct-touch 80 1000

常用事件类型
--pct-motion (滑动事件)
--pct-trackball(轨迹球事件)
--pct-nav(导航事件up/down/left/right,老手机的上下左右按键)
--pct-majornav(主要导航事件back key,menu key)
--pct-syskey(系统按键事件Home、Back、startCall、endCall volumeControl)
--pct-appswitch(activity之间的切换)
--pct-anyevent(任意事件)常用异常处理指令,直接使用
--pct-pinchzoom二指缩放事件
--pct-rotation屏幕旋转事件
--pct-flip键盘事件

操作事件简介

Monkey所执行的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。Monkey通过这11大事件来模拟用户的常规操作,对手机App进行稳定性测试。下面让我们来详细了解这11大事件。

1.触摸事件

触摸事件是指在屏幕某处按下并抬起的操作,可通过--pct-touch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到。 该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。

2.手势事件

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。

该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。

3.二指缩放事件

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过--pct-pinchzoom参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。

4.轨迹事件

轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过--pct-trackball参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。

5.屏幕旋转事件

屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过--pct-rotation参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。

6.基本导航事件

基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过--pct-nav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。

7.主要导航事件

主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。可通过--pct-majornav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键。

8.系统按键事件

系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过--pct-syskeys参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。

9.启动Activity事件

启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过--pct-appswitch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Switch操作组成的,从手机上看,上面的操作实际是打开了com.android.settings这个应用的一个com.android.settings.Settings的Activity界面。

10.键盘事件

键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过--pct-flip参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 如日志所示,这里主要是键盘的打开和关闭操作。

11.其他类型事件

其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是其他的一些系统按键,如字母按键、数字按键等。因为现在手机很少带字母按键或数字按键,所以这个事件一般使用得比较少。

monkey稳定性测试的步骤及策略的更多相关文章

  1. 【Monkey】Monkey稳定性测试常用命令

    Monkey稳定性测试常用命令: 1.adb shell monkey n 2.adb shell monkey -p  com.android.calculator2 1000 3.adb shel ...

  2. Monkey 稳定性测试

    学习网址: https://blog.csdn.net/lucytan01/article/details/79958727 https://blog.csdn.net/hebbely/article ...

  3. 性能测试-----monkey稳定性测试

    我们稳定性测试用的monkey,跑monkey的同时存储log monkey脚本: @echo.@set /p name=请输入你的名字(比如liuyl): set YYYYmmdd=%date:~0 ...

  4. Monkey压力测试操作步骤说明

    一.需配置java环境和android环境 JDK安装包:链接:https://pan.baidu.com/s/1SlnBOS0f3m2wVpEZBPfmag                      ...

  5. Monkey稳定性测试

    1.环境准备:Android SDK环境配置 2.手机连接/模拟器连接 : 1)手机打开开发者模式并允许USB连接 2)校验手机是否连接:打开cmd 输入 adb devices 3.查找apk包名及 ...

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

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

  7. Android-monkey稳定性测试(多台设备同时进行)

                                       1.目的(原创文章,转载请注明出处-) 主要为指引开展android平台应用的稳定性测试,尽可能地在应用发布前发现crash及an ...

  8. Android客户端稳定性测试——Monkey

    修改时间 修改内容 修改人 2016.6.20 创建 刘永志 2016.6.29 完成 刘永志 Monkey简介: Android SDK自带的命令行测试工具,向设备发送伪随机事件流,对应用程序进行进 ...

  9. Monkey Android app稳定性测试工具之Monkey使用教程

    Monkey Android app稳定性测试工具之Monkey使用教程 by:授客 QQ:1033553122 由于篇幅问题,仅提供百度网盘下载链接: Android app稳定性测试工具之Monk ...

随机推荐

  1. AtCoder - agc043_a 和 POJ - 2336 dp

    题意: 给你一个n行m列由'#'和'.'构成的矩阵,你需要从(1,1)点走到(n,m)点,你每次只能向右或者向下走,且只能走'.'的位置. 你可以执行操作改变矩阵: 你可以选取两个点,r0,c0;r1 ...

  2. UESTC 360(1425) another LCIS

    这道题是CD老OJ上面的一道题,现在在新OJ上的题号是360,开始在VJ上做的提交一直RE(囧).后来才知道OJ移位了. 这道题是一个简单的成段更新+区间合并的线段树的题,1A还让我小激动了一下 这道 ...

  3. zjnu1749 PAROVI (数位dp)

    Description The distance between two integers is defined as the sum of the absolute result of subtra ...

  4. Codeforces Round #665 (Div. 2) Distance and Axis、

    题目链接:Distance and Axis 题意:在ox轴上,给出点A的横坐标x,你可以向左或右移动点A(x+1/x-1),问你最小移动A的次数,以使得可以在ox轴上找到B点位置,B点满足从O到B的 ...

  5. 转载-cookie和session的窃取

    一.cookie的基本特性 如果不了解cookie,可以先到 wikipedia 上学习一下. http request 浏览器向服务器发起的每个请求都会带上cookie: GET /index.ht ...

  6. Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    最近时间有点紧,暂时先放参考链接了,待有时间在总结一下: 查了好多,这几篇博客写的真心好,互有优缺点,大家一个一个看就会明白了: 参考 1. 先看这个明白拉链法(链地址法),这个带源码,很好看懂,只不 ...

  7. C++动态申请一维数组和二维数组

    在平时的编程过程中,我们经常会用到数组来存放数据,我们可以直接申请足够大空间的数组来保证数组访问不会越界,但是即便这样,我们依然不能保证空间分配的足够,而且非常的浪费空间.有时候我们需要根据上面得到的 ...

  8. Keep Fitness

    Keep Fitness 健身 keep health 训练流程 Part 1 热身 5-10分钟 Part 2 肌肉力量训练 30分钟 大肌群包括:胸.背.腿.臀: 小肌群包括:肩.二头肌.三头肌. ...

  9. Learning JavaScript with MDN (call, apply, bind)

    Learning JavaScript with MDN (call, apply, bind) call, apply, bind Object.prototype.toString() 检测 js ...

  10. HTML Custom Elements (v1)

    HTML Custom Elements (v1) https://developers.google.com/web/fundamentals/web-components/customelemen ...