Adb命令的使用以及monkey命令的使用

 之前对安卓手机上的APP做了monkey测试,今天来总结一下如何使用安卓自带的monkey命令去做测试。

首先,PC端要对安卓手机进行monkey测试的话,必须要有以下条件:

1.电脑中必须配有ADB的环境才能进行操作。

2.手机连接电脑时要开启USB调试模式,否则ADB命令进行检测连接设备时是无法检测到的。

 

其次是adb插件的安装,adb安装包在网上有很多资源,随便找一个网站下载即可,但是下载后我们怎么才能安装呢?

首先将下载的压缩包进行解压,解压后,我们需要将它放置如图目录下。

在我的电脑中,我的cmd命令进入后默认是AZ这个文件夹,所以将其放入AZ目录下,为什么要这样做,因为放在其他目录中我们执行ADB命令是找不到命令的,所以我们需要将其放置在这个目录下。

然后我们就可以开始操作了(前提是手机已经连接好)

怎么判断我们的手机已经连接了呢?

输入:adb devices

就可以查看我们的设备是否连接了。这里注意一个问题,如果命令输入后报

* daemon not running. starting it now on port 5037 *

这样一个错,那就是adb命令使用的是5037端口,而5037被占用了,我们需要查出来是谁占用了这个程序,并且KILL掉这个程序,具体操作如下:

先输入:netstat -ano

找出占用了端口的程序和它的PID,然后

输入:Taskkill /f/pid xxx

就可以关掉占用5307端口的程序,就可以使用adb了

 

 

判断手机连接成功后,我们就可以进行操作了,但是又一个问题来了,我们如何确定我们要执行的程序在手机内部叫什么名字呢?

如果手机中文件不多,我们可以

输入:adb shell pm list package -f

这个命令可以查看手机中包的名字和路径,但是他有个局限性就是我们文件太多,不知道路径的情况下是无法得知我们需要执行程序的包名的。

这时候我们只需要打开我们需要执行的APP,然后

输入:adb shell dumpsyswindow w | findstr \/ | findstr name=

就可以查看我们要执行程序的包名了。

 

得知包名后,我们就可以对APP进行monkey测试了

Monkey命令参数介绍

1) 参数:  -p

参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定

包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

* 指定一个包: adb shell monkey -pcom.htc.Weather 100

说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

* 指定多个包:adb shell monkey -pcom.htc.Weather –p com.htc.pdfreader  -pcom.htc.photo.widgets 100

* 不指定包:adb shell monkey 100

 说明:Monkey随机启动APP并发送100个随机事件。

* 要查看设备中所有的包,在CMD窗口中执行以下命令:

 >adbshell

 #cddata/data

  #ls

2) 参数:  -v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

日志级别Level0 

示例adb shellmonkey -p com.htc.Weather –v 100

说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别Level 1

示例adb shellmonkey -p com.htc.Weather –v -v 100

说明 提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别Level 2

示例adb shellmonkey -p com.htc.Weather –v -v –v 100

说明 最详细的日志,包括了测试中选中/未选中的Activity信息

3)参数:  -s

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

* 示例:

 Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100

  Monkey测试2:adbshell monkey -p com.htc.Weather–s 10 100

   两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

4) 参数:  --throttle <毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;

* 示例:adb shell monkey -pcom.htc.Weather –throttle 3000 100

5) 参数: --ignore-crashes

用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

* 示例1:adbshellmonkey -p com.htc.Weather --ignore-crashes 1000

  测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

* 示例2:adbshellmonkey -p com.htc.Weather 1000

  测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

 6)参数: --ignore-timeouts

用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,

Monkey依然会发送事件,直到事件计数完成。

7) 参数: --ignore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,

Monkey依然会发送事件,直到事件计数完成。

8) 参数: --kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

9) 参数: --monitor-native-crashes

用于指定是否监视并报告应用程序发生崩溃的本地代码。

10) 参数:  --pct-{+事件类别}{+事件类别百分比}

用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)

这些是我们进行操作时一般会用到的参数。执行过程中,在dos命令里日志显示只有一小部分,我们就需要在我们编写的命令行后再加上>log.txt就可以在我们保存adb路径中自动生成日志,方便我们进行查看。

比如:

Adb shell -p com.htc.xxx -v -v -v -s 2505000>log.txt

上面语句的意思就是,对com.htc.xxx随机操作5000次,send值为250,并且打印level 2日志,并且将日志保存到log.txt。

 

命令讲完后,我们来讲一讲如何查看日志。

当日志生成后,我们需要进入日志当中查看是否有APP崩溃记录或者无响应记录。崩溃记录查找”CRASH”,无响应记录查找”ANR”,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索“Exception”(如果出现空指针,NullPointerException,需格外重视)。

为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity。

下面我就把我昨天执行后的日志拿出来:

进入日志后,会显示

:Monkey: seed=250count=3500

:AllowPackage:com.text.app.hospitalassistant

上面表示了点击了3500次,执行seed值为250,对甘肃妇幼这个APP进行了操作。

// Eventpercentages:

//   0: 15.0% 0:触摸事件百分比,即参数–pct-touch

//   1: 10.0% 1:滑动事件百分比,即参数–pct-motion

//   2: 2.0%  2:缩放事件百分比,即参数–pct-pinchzoom

//   3: 15.0%  3:轨迹球事件百分比,即参数–pct-trackball

//   4: -0.0% 4:屏幕旋转事件百分比,即参数–pct-rotation

//   5: 25.0% 5:基本导航事件百分比,即参数–pct-nav

//   6: 15.0% 6:主要导航事件百分比,即参数–pct-majornav

//   7: 2.0% 7:系统事件百分比,即参数–pct-syskeys

//   8: 2.0% 8:Activity启动事件百分比,即参数–pct-appswitch

//   9: 1.0% 9:键盘翻转事件百分比,即参数–pct-flip

//   10: 13.0% 10:其他事件百分比,即参数–pct-anyevent

后面我用中文翻译写了出来,这样可以看出在点击这么多下后,自动执行操作的各种比例。

以上就是我这几天总结的adb与monkeyAPP自动化测试的使用方法与问题。测试是可以执行的,但是在执行过程中,总是会点击手机顶部的下拉框,有时候会影响测试结果,比如把wifi关了,然后软件是依赖于wifi环境的,关掉wifi之后直接崩溃。这个问题暂时还没有解决,但是只要在过程中不关闭wifi那就不会影响测试结果。

还有一个问题就是对日志的查看还是比较难看懂,就是知道错误,也不知道是哪个地方出了错误。虽然有操作记录,但是并不知道点击的哪个地方,所以还在查阅资料中,日后如果解决了这个问题,我会继续把文档补全。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值