ADB移动端及Monkey常用命令

ADB

ADB全程Android Debug Bridge,是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备

它的主要功能:

运行设备的shell(命令行)

管理模拟器或设备的端口映射

计算机和设备之间上传/下载文件

将本地apk软件安装至模拟器或android设备

ADB常用命令

查看设备

adb devices

开启服务

adb start-server		

关闭服务

adb kill-server

安装软件

adb install -r (APK路径)
-r 代表如果apk已安装,重新安装apk并保存数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空格

卸载软件

adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件

查询包名

系统应用: adb shell pm list packages -s
第三方应用: adb shell pm list packages -3

查询当前应用程序的包名和启动项

adb shell dumpsys window w |findstr \/ |findstr name=

将移动端文件传输到电脑

add pull 移动端路径 电脑路径

将电脑文件传输到移动端

adb push 电脑路径 移动端路径

查看adb命令帮助信息

adb help

性能测试

adb shell dumpsys cpuinfo     查看cpu信息
adb shell dumpsys meminfo     内存信息

adb logcat 查看手机日志

adb logcat 命令格式:adb logcat[选项] [过滤项],其中选项和过滤项在中括号中[]中,说明这是可选的;

在命令行中输入 adb logcat --help命令,就可以显示该命令的帮助信息;

'>'输出: '>'后面跟着要输出的日志文件,可以将logcat日志输出到文件中,使用 adb logcat> log 命令

(adb logcat >C:\log\c.txt)

指定logcat的日志输出格式:

--'v'选项:使用adb logcat -v time 命令,可以看日志的输出时间

将手机日志输出到本地文件中

adb logcat -v time > C:/log/aa.txt

Android的日志分为如下几个级别:

V-- verbose (最低,输出的最多)

D -- Debug

I --info

W --Warning

E --Error

F -- Fatal

S --Silent(最高,啥也不输出)

按某级别过滤日志则会将该级别以上的日志输出

比如,命令, adb logcat *:W 将warning,error,Fatal和silent日志输出

显示所有优先级大于等于'warning'的日志

Monkey

monkey主要用于Android的压力测试,自动的一个压力测试小工具,主要目的就是为了测试app是否会Crash(崩溃)

Monkey命令启动方式:

可以通过PC机CMD窗口中执行:adb shell monkey {+命令参数} 来进行monkey测试

使用monkey测试手机所有程序
adb shell monkey 100
-p <允许的包名列表>
adb shell monkey -p com.exanple.login 100

用此参数指定一个包或多个包。指定包之后,monkey将只允许系统启动指定的app.如果不指定包,monkey将允许系统启动设备中的所有app

指定一个包
adb shell monkey -p com.android.settings 200
显示日志详细程度

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分为3个级别,分别对应相应参数

-v : adb shell monkey -p com.example.login -v 100
仅提供启动提示,测试完成和最终结果等少量信息
-v -v adb shell monkey -p com.example.login -v  -v
提供较为详细的日志
-v -v -v  adb shell monkey -p com.example.login -v  -v  -v 100
最详细的日志,包括了测试选中/未选中的activity信息
Monkey日志分析

将log信息写到文档中中

adb shell monkey 100 >c:/log/1.txt

正常情况,如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的事件

随机数种子

用于指定伪随机数生成器的seed值,如果seed相同,则两次monke测试所产生的事件序列也相同的

monkey测试1:adb shell monkey -p com.shjt.map –s 10 100 
monkey测试2:adb shell monkey -p com.shjt.map –s 10 100  
--throttle(毫秒)
用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息

例:adb shell monkey -p com.example.login --throttle 300 100  
表示执行100个伪随机用户事件流,事件间隔为300毫秒。
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。
--pct-touch

调整触摸事件的百分比(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

例如:adb shell monkey --pct-touch 67 -v 10
表示执行10个伪随机用户事件柳,并调整其中触摸事件的百分比为67%
--pct-motion

调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)

–pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。

如:adb shell monkey --pct-motion 67 -v 10

表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。

注:这里的移动是直线滑动

--ignore-crashes

作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

正常操作,不忽略异常

adb shell monkey --ignore-crashes –v 10
--ignore-timeouts(ANR)

作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey --ignore-timeouts –v 10

Monkey 实例

用monkey 命令 对登录apk进行性能

ADB移动端及Monkey常用命令

monkey -p com.tencent.mtaexample -s 23  --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
  1. -p 后面戒指对应的包名,如果是整机测试,就不需要 -p packages_name
  2. -s 后面是对应的种子数,好像就是操作步骤,根据它们测试的经验,一般种子数在23,同步它们测试的结果,一般种子的个数固定为23,和它们选择的操作步骤就是同步的。
  3. -- ingore-crashes --ingnore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash货哦这timeout时,monkey测试会终止。这里是防止moneky测试终止
  4. -v 指的是monkey测试时打印log级别
  5. 100000这里指点击的次数,根据它们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次
  6. /data/local/tmp/log.txt测试的log记录路径
  7. 2>&1固定的写法,这个也很重要,代表的意思是中间忽略的日志一并输入到指定的文件中
  8. 最后单独一个&是一旦monkey测试开始了,之后可以拔掉数据线,不会影响monkey测试
  9. 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

Monkey异常分析

一般我们可以一次发送5万次随机事件的请求,每个请求直接的间隔为150毫秒,测试大约会进行40min,完成之后就可以查看日志

日志中可能的错误:

  1. 程序异常退出,uncausedexception (ctrl+f搜索‘Fatal’)
  2. 程序强制关闭,ForceClosed (简称FC) (同上)
  3. 程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)
  4. 手动生成。
    Monkey 执行中断, 在log最后也能看到当前执行次数

Monkey事件百分比

1.触摸事件
2.手势事件
3.二指缩放事件
4.轨迹事件
5.屏幕旋转事件
6.基本导航事件
7.主要导航事件
8.系统按键事件
9.启动Activity事件
10.键盘事件
11.其他类型事件

ADB移动端及Monkey常用命令

Event percentages:

0:--pct-touch//touch

events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)

1:--pct-motion//motion

events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯

2:--pct-pinchzoom//pinch

zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作

3:--pct-trackball//trackball 即单纯的Move(ACTION_MOVE)

events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)

4:--pct-rotation//screen

rotation events percentage屏幕旋转百分比,横屏竖屏

5:--pct-nav//nav 基本导航事件。即来自于方向输入设备的上下左右操作。

events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

6:--pct-majornav//major 即Navigation Bar的确认,菜单,返回键等

nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)

7:--pct-syskeys//system(key)

operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)

8:--pct-appswitch//app

switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

9:--pct-flip//keyboard

flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

10:--pct-anyevent//anyevents 该事件可能包含其他上述事件。

percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

案列

adb shell monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

 		1.   -p后面接着的对应的包名,如果是整机测试,就不需要 -p  package_name
                   2.   -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。
                                   3.   --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。
                                                   4.   -v 指的是Monkey测试时打印log级别。
                                                                   5.   100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。
                                                                        /data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。
                                                                                   6.   2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。

        7.   最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。

        8.   测试所有模块  monkey  -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000>
上一篇:Monkey测试4——Monkey命令行可用的全部选项


下一篇:Monkey指定事件设置以及收尾工作