adb环境搭建与monkey命令

一、adb环境搭建
机子上要有jdk的环境。
0、下载sdb的安装包。下载地址:https://developer.android.google.cn/studio/index.html
adb环境搭建与monkey命令

下载完安装包之后:
第一步:首先,需要重新建立目录(这里建了一个android目录),并且在此目录下设置一个名为:“cmdline-tools”的子目录。
第二步:将下载下来的zip解压后改名为"latest"复制进去(解压后的原文件名为:commandlinetools-win-6200805_latest,现在的意思是说:将commandlinetools-win-6200805_latest改为latest)。
第三步:将latest文件直接复制到cmdline-tools子目录下。
第四步:进入到D:\android\cmdline-tools\latest\tools目录,将此目录下所有的内容全部复制到:D:\android\cmdline-tools\latest此目录下。然后在此目录下删除tools目录。
adb环境搭建与monkey命令

第五步:刚刚我们新建了一个android目录,接下来要将此目录设置为环境变量,变量名为: Android_Home,变量的值为:D:\android。如下图设置:
adb环境搭建与monkey命令

第六步:D:\android\cmdline-tools\latest\bin目录下sdkmanager.bat文件直接拖到cmd命令中。然后加"platform-tools"命令执行,如下图:
adb环境搭建与monkey命令
在执行过程中会提示:Accept? (y/N): 此时选择y.安装完成。
第七步:安装完成后,会发现:D:\android目录下会多出几个目录,如下图:
adb环境搭建与monkey命令

第八步:随后打开platform-tools目录就可以看到adb.exe工具,那么此工具中就包括了很多的adb命令。
第九步:将adb.exe所在的目录加入到环境变量中。这样的话可以在任何目录执行adb命令。直接将adb.exe所在的目录加入path中去。

adb环境搭建与monkey命令

6、为了能在任何的命令行下面执行adb命令,我们需要将platform-tools所在的目录添加到环境变量里面去。
7、至此,adb环境搭建成功。
8、怎么样判断adb命令是否安装成功,只需要在cmd执行一下adb就可以,如果提示不是内部命令说明安装失败。

说明:手机端的操作系统为linux内核的操作系统,所以linxu的很多命令行在手机端是可以通用的。
说明:进入手机端使用:adb shell命令。
说明:使用adb命令之前下载雷电模拟器。

二、常用的ADB命令
1、adb devices #查看当前PC连接的设备。“List of devices 这个字段指的是手机列表 attached 手机的状态,如果为: device为正常”如下图:为连接正常。
adb环境搭建与monkey命令
2、adb help #显示adb命令列表
3、adb version #显示adb的版本号。
4、adb logcat -d -v time>D:/abc.log #导出日志到PC端。
5、adb install *.apk 通过adb命令安装APP软件。
adb环境搭建与monkey命令
6、adb push d:\abcd.log /data #把PC端的文件放在手机端(linux)
注明:从cmd命令界面进入android内核系统(linux内核)命令为:adb shell
注明:从android内核系统(linux内核)退出exit命令。

7、adb pull /data/abcd.log D:\abc #把手机端的文件放在PC端。

8、adb start-server #启动adb服务

9、adb kill-server #终止adb服务。

注意adb的端口是5037,我们可以通过:netstat –ano|findstr 5037 此命令可以查出5037这个端口号的所在进程的PID.

第二步:我们可以通过:tasklist|findstr 3508此命令来查看到该进程号所在的进程名称。

第三步:如果要杀掉3508这个PID的进程可以:taskkill /f /t /im adb.exe

第四步:杀完之后如果要重启adb进程,则可以使用adb devices这个来重启,重启之后,查一下端看是否重启成功。
第五步:有时候你的adb命令起不来,原因就是因为相关的手机助手等相关的工作占用5037的端口,此时可以借用以上的命令将其这些软件的进程杀掉。

三、重要的ADB系统命令(操作性能的进程命令)
1、adb logcat|findstr START #查看包名和activity.
cmp=com.homelink.android/.SplashScreenActivity bnds

2、adb shell am start -W -n package/.activity(启动APP)
adb shell am start -W -n com.homelink.android/.SplashScreenActivity
注意:启动APP之后,里面有一个重要参数:“This time”,为APP的启动时间,APP专项测试当中,是性能测试指标的重要项。时间为毫秒。

3、adb shell am force-stop package(关闭APP)
adb shell am force-stop com.homelink.android

4、adb shell input keyevent 3 (APP退到后台。

注意:首次启动,为冷启动,退到后台启动为热启动。

四、Monkey事件。
1、触摸事件
2、滑动事件
3、二指缩放事件。
4、轨迹球事件,现在没有用了,不用管。
5、屏幕旋转事件。
6、基本导航事件
7、主要导航事件
8、启动Activity事件
9、键盘事件

四、查看已安装的包名:命令如下:
C:\Users\Administrator>adb shell pm list packages
这里面的包名可以用于黑白名单!

五、monkey测试实例:Monkey命令(monkey命令,就是对我们软件进行随机乱点)
1、adb shell monkey -v 10 (-v显示日志,-v -v 详细显示日志)它的意思在安卓系统随机操作10,是针对整机的随机测试。
2、adb shell monkey -v -v 100 (-v显示日志,-v -v 详细显示日志)它的意思在安卓系统随机操作10.是针对整机的随机测试。
3、如何让monkey停下来呢?杀掉monkey进程:首先查找monkey的PID:adb shell ps |findstr monkey,然后用kill adb shell kill pid

六、但是我们测试的时候是要测试公司开发的APP软件,所以使用monkey命令的时候要指定包名。举例:
1、adb shell monkey -v -v -p com.homelink.android 1000 (
说明:其中-p的选项是用作指定要测试的包名,-p后面要跟包名,包名后的一千就是1000次操作
说明:为什么要使用monkey命令:它的作用在于寻找APP的crashes和anr
说明:什么叫crashes呢?它指的就是app异常退出,闪退或系统崩溃了。
说明:什么民anr?指的是响应延迟。(玩APP的时候,经常会碰到app提示:是继续等待还是关闭。再进一步说:就是我点击了app后,但app软件在5秒钟之内没有响应,那么程序就会产生anr。

2、adb shell monkey -p com.homelink.android -s 12358 -v -v 20
说明:-s是指定***,用于重现bug。当你不带这个***,系统会自动产生一个***,下次要重现的一定要带上这个***(用-s指定)。

3、adb shell monkey -p com.homelink.android -s 12358 --throttle 3000 -v -v 5
说明:throttle设置每个事件之间的延迟时间,单位为毫秒。以上的例子为每个事件执行都分别延迟3秒钟。

4、adb shell monkey -p com.homelink.android -s 12358 --throttle 400 --ignore-crashes -v -v 10000
说明:当APP软件出现crashes(异常或闪退)的时候,那么monkey命令会立即停止运行,当我们加了–ignore-crashes这个选项时,即便出现了crashes的问题monkey也不会停止执行,只有当出现ANR的时候才会停止,以方便专门查找ANR的问题。

5、adb shell monkey -p com.homelink.android -s 12358 --throttle 400 --ignore-timeouts -v -v 10000
说明:当APP软件出现ANR(异常或闪退)的时候,那么monkey命令会立即停止运行。当我们加了–ignore-timeouts这个选项时,即便出现了ANR的问题monkey也不会停止执行,只有当出现crashes 的时候才会停止,以方便专门查找crashes的问题。

注释二:-p 来指定要测试的包名。
使用–pct-xxx 来指要测试的事件和百分比。
使用-s 来指定执行的seed的值,-s的值不能放在最后。
使用–throttle来控制monkey每个操作之间的时间间隔。
使用–ignore-crash 和–ignore-timeouts的参数来使用monkey遇到意外继续执行。
使用-v指定log的详细级别。 -v -v -v三个-v是最详细的。
七、指定某个事件进行测试
#专门跑某个事件,以下是专门跑点击事件。
adb shell monkey -v -v -p com.homelink.android --pct-touch 100 10
#专门跑点击事件。
adb shell monkey -v -v -p com.homelink.android --pct-motion 100 10
其它的例子自己试。

八、monkey日志分析
当出现crashes和ANR的时候需要保存日志。
monkey保存日志的方法有三种:
第一种:adb shell monkey -v 20 >d:\monkey001.txt (重要)
第一种:adb shell monkey -v -v -p com.homelink.android --pct-moti
on 100 10>d:\monkey001.txt
第二种:导出系统日志,导出之前可以清理系统之前的日志,
命令如下:adb logcat –c
导出系统日志:adb logcat -d -v time>D:/abc.log
然后在日志里面搜索anr、crashes 、Exception进行分析。

第三种:标准流与错误流分开保存
monkey [optinon] 1> /mnt/sdcard/monkey.txt 2> /mnt/sdcard/error.txt

九、Monkey测试策略介绍
策略例子1:黑白名单,忽略所有错误,次数100万次
• adb shell monkey --ignore-crashes --ignore-timeouts --pkg-blacklist-file /data/local/tmp/blacklist.txt -v -v 1000000
• adb shell monkey --ignore-crashes --ignore-timeouts --pkg-whitelist-file /data/local/tmp/ whitelist.txt -v -v 1000000

策略例子2:测试计算器30万次,随机种子为100,随机延迟0-1秒,忽略所有错误
• adb shell monkey -p com.tjd.Baojun -s 100 --throttle 1000 --randomize-throttle --ignore-crashes --ignore-timeouts -v -v 300000
策略例子3:测试计算器,触摸事件30%,其他按键50%,错误停止,延时200
• adb shell monkey -p com.tjd.Baojun --throttle 200 --pct-touch 30 --pct-trackball 0 --pct-anyevent 50 -v -v 100000 策略例子4:对计算器进行旋转压力测试,事件延时2秒,10万次
• adb shell monkey -p com.tjd.Baojun --pct-rotation 100 --throttle 2000 100000
策略例子5:仅对整机的应用开启测试,事件延时5秒,10万次
• adb shell monkey --pct-appswitch 100 --throttle 5000 100000