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)组成的,点击的按键就是其他的一些系统按键,如字母按键、数字按键等。因为现在手机很少带字母按键或数字按键,所以这个事件一般使用得比较少。

最新文章

  1. Angular2 Http
  2. SPSS数据分析—二分类Logistic回归模型
  3. ubuntu完全卸载nginx
  4. sqlserver 连接远程数据库小结
  5. 第13章 Windows内存体系结构
  6. H264句法和语法总结(二)NAL层语法
  7. 【机器学习】BP神经网络实现手写数字识别
  8. Ant编译和部署java web项目
  9. ASP.net后台弹出消息对话框的方法!【转】
  10. Orcale语句大全
  11. hdu3974 找上属的模拟
  12. java 学习笔记 读取配置文件的三种方式
  13. java 需要准备的知识(转摘)
  14. 第三次java作业
  15. nginx的锁
  16. C# System.Collections.Generic.Dictionary
  17. Android adb调试
  18. Django电商项目---完成注册页面和用户登录day1
  19. grep基础用法
  20. 用pandas读取excel报错

热门文章

  1. Codeforces Global Round 9 A. Sign Flipping
  2. 【noi 2.6_9275】&amp;【bzoj 3398】Bullcow(DP){Usaco2009 Feb}
  3. hdu1217 Arbitrage
  4. Codeforces Round #647 (Div. 2) - Thanks, Algo Muse! D. Johnny and Contribution (贪心,模拟)
  5. Codeforces Round #515 (Div. 3) B. Heaters (贪心)
  6. rabbitmq常见面试题
  7. service配置文件
  8. 【luogu AT3957】[AGC023F] 01 on Tree
  9. Zabbix + Grafana 可视化
  10. C++ part5