当前位置: 代码迷 >> 综合 >> APP自动化--Monkey
  详细解决方案

APP自动化--Monkey

热度:12   发布时间:2023-12-08 12:17:19.0

http://v.youku.com/v_show/id_XODcyMjM1MDA4.html

下载直接解压链接: https://pan.baidu.com/s/1dEYso4D 密码: purg

把...sdk\platform-tools添加到系统变量。

32位的

 

 

64位的可以下载解压再自己安装各种包

参考:http://blog.csdn.net/dr_neo/article/details/49870587

http://www.androiddevtools.cn/#

安装文件:链接: https://pan.baidu.com/s/1mikVmn2 密码: vf8c

变量配置:

新建 ANDROID_SDK_HOME

值     D:\android\android-sdk(根据自己的安装目录)

然后就是在系统的Path变量后,追加;% ANDROID_SDK_HOME%\platform-tools;% ANDROID_SDK_HOME%\tools

也可下载安装过各种包的zip

 

 

 

 

1  安卓手机USB连接电脑---命令行abd shell 看看是否连接成功---如不成功安装豌豆荚之类的。

 

2 ls 查看所有文件

cd systerm 进入系统文件

进入bin文件夹里面就有monkey文件了

 

3 monkey命令启动方式

3.1  pc cmd ---  adb monkey 参数

3.2 安卓手机上直接执行monkey命令

 

压力测试参数 adb shell monkey -p com.htc.Weather 100

adb shell monkey -p com.kuaibao.kuaidi 100

 

-s                随机数种子

 

-throttle          间隔(毫秒) 如 -throttle 1000 即一秒

-p           指定一个或多个包

 

 

命令

..                                        返回上级目录

ls                                        查看当前下全部文件

cd system                           进入当前路径下的system文件

adb shell                               连接查看

adb shell monkey -help          查看帮助文档

 

1  -p      用此参数指定一个或多个包

    指定一个包 adb shell monkey -p com.htc.Weather 100

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

          不指定包(对所有包进行测试)adb shell monkey 100

          注:最后边的100是事件计数(即让Monkey程序模拟100次随机用户事件)

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

 >adb shell

  #cddata/data

  #ls

 

2  -v     定反馈信息级别(信息级别就是日志的详细程度)

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

-v 日志(略)     仅提供启动提示、测试完成和最终结果等少量信息

-v -v 日志(中)     提供较为详细的日志,包括每个发送到Activity的事件信息

-v -v -v 日志(详细)     最详细的日志,包括了测试中选中/未选中的Activity信息

 

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

如:

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

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

多用于再现

 

4  --throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒

如 延迟3秒

adb shell monkey -p com.htc.Weather –throttle 3000 100

 

 

5  --ignore-crashes  

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

如:adb shellmonkey -p com.htc.Weather --ignore-crashes 1000

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

示例2:adb shellmonkey -p com.htc.Weather 1000

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

 

6  --ignore-timeouts (无响应ANR)

当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成

 

7  --ignore-security-exceptions (许可证书崩溃)

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

 

8 --kill-process-after-error(发生错误停止运行并保持当前状态)

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

 

 

9  --monitor-native-crashes(监视并报告Androids系统本地代码的崩溃事件)

 

10  --pct-{+事件类别}{+事件类别百分比}

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

 

--pct-touch {+百分比}  触摸事件

触摸事件是一个down-up事件,它发生在屏幕上的某单一位置

如:adb shell monkey -p com.htc.Weather--pct-touch 10 1000

表示产生的1000个随机事件中应该产生10%即100个触摸touch的事件

 

--pct-motion {+百分比}  整动作事件

动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成

 

--pct-trackball {+百分比} 轨迹事件

轨迹事件由一个或几个随机的移动组成,有时还伴随有点击

 

--pct-nav {+百分比}  调整“基本”导航事件的百分比

导航事件由来自方向输入设备的up/down/left/right组成

 

--pct-majornav {+百分比} 调整“主要”导航事件的百分比

这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键

 

--pct-syskeys {+百分比} 调整“系统”按键事件的百分比

这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键

 

--pct-appswitch {+百分比} 调整启动Activity的百分比

在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

 

--pct-anyevent {+百分比} 调整其它类型事件的百分比

它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

 

指定多个类型事件的百分比

adb shell monkey -p com.htc.Weather--pct-anyevent 50 --pct-appswitch 50 1000

 

 

 

 

 

抓取要测试的包的位置

下载一个 包名查看器软件(安卓)即可

 

实战

http://v.youku.com/v_show/id_XODcyMjM1MDA4.html

 

adb shell monkey –p com.shjt.map –-throttle 100 –-pct-touch 50 –-pct-motion 50 –v –v 1000 >c:\monkey.txt

 

 

 

adb shell monkey –p com.andriod.calculator2 –-throttle 500  –v –v 100 >c:\monkey.txt

 

 

 

日志信息分析

CRASH  即崩溃信息

不设置忽略crashes,在测试过程中出现CRASH,会中断测试,并显示CRASH信息和seed信息,根据seed值来完成bug的复现

 

ANR 

 

 

Monkey测试的og分析,我们可以通过几个关键词来判断测试是否通过。

1)Monkey finished
打开LOG,查看log的最下端,是否有类似以下字段:
## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished
这个字段表明本次的Monkey没有异常,测试通过。

2)CRASH


同样,在得到LOG后,搜索”CRASH”字段,如果搜索到有结果,则表明有进程出现问题,测试不通过。
// CRASH: com.onekchi.downloadmanager (pid 12919)

3)ANR
在Log中搜素该字段,如果有搜索有结果,则表示测试过程中,测试对象出现了无响应的现象,因此测试不通过。--throttle <毫秒>值建议为500

4)无法搜索到上述信息
出现这种情况,一般都是外界原因而非程序本身原因。比如电脑异常测试中断,需要重新测试。

 

 

示例CMD

adb shell monkey -p cc.hitour.travel --pct-nav 20 --pct-syskeys 20 --pct-touch 30 --throttle 500 -s 1 -v -v 1000 >c:\monkey.txt  

 

adb shell monkey -p cc.hitour.travel --pct-nav 20 --pct-syskeys 20 --pct-touch 30 --throttle 500 -s 1 -v -v 30 >C:\Users\Lin\Desktop\APP测试\monkey.txt