android测试monkey之旅3-monkey测试工具总结

  之前的博客已经提过了,monkey是一个随机流的android性能测试工具。在这篇文档里,我将总结我自学道路上的一些经验,以及命令的解析。

  1.进入monkey环境

  1.1首先检测android真机/模拟器是否已经连接:adb device

  1.2然后选取一个设备来进入shell:adb -s XX设备 shell,当然如果你只有一个设备,完全可以写adb shell

  

  2.进入shell之后monkey help查看monkey的帮助,当然你可以去官网看手册来进行学习

  

  3.查看本机的包,应用package

  •  adb shell pm list package -3 
    -s 系统应用
    -3 第三方应用  
  • 这里请注意,在monkey里我们测试性能的是应用的包
  • 另外附上一些额外的知识:
     应用包名package和入口activity名称的方法:
    方法一:使用aapt    //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下
    1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\apk\es3.apk
    2.运行后的结果中以下两行分别是应用包名package和入口activity名称
    package: name=’com.estrongs.android.pop’
    launchable-activity: name=’com.estrongs.android.pop.view.FileExplorerActivity’
    注:在android sdk目录搜索可以找到aapt.exe,如果没有可以下载apktool。
  • 这样我们就看到包了把,这里我查找的是第三方应用的包

4.Monkey操作的参数解析,以及结果的分析

  4.1参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

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

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

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

* 不指定包:adb shell monkey 100

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

*之前,我们有说第三方跟系统的包名的查看。那么要查看设备中所有的包,在CMD窗口中执行以下命令:

 >adb shell

  #cddata/data

  #ls

  4.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 3

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

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

  4.3参数:  -s

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

* 示例:

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

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

  4.4参数:  --throttle <毫秒>

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

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

  接下来的一些内容请看我的谈谈我的无线测试之路(一个初学者的话)-monkey官网的中文翻译

 

  在这里我来写个高级的demo给大家分析一下monkey的指令:

  adb shell monkey -p com.tmall.wireless -v -v -pct-touch 50 -pct-trackball 30 -throttle 300 100

  用monkey测试天猫的这个包触摸操作百分之50,轨迹球操作百分之30,其它操作百分之20,总共进行100次随机点击,事件之间间隔300ms

  引用无线学院创始人-自娱的公开课ppt,我们来看一下Monkey的特征:

  1.测试的对象仅为应用程序包,有一定局限性

  2.Monkey测试使用的事件随机流是随机的,不能进行自定义

  3.可对MonkeyTest的对象,事件数量,类型,频率等进行设置

  Monkey的停止条件:

  1.如果限定了Monkey运行在一个或者几个特定包上,那么他会监控测试图到其它包的操作,并对其进行组织

  2.应用程序崩溃或接收到任何失控异常

  3.应用程序不响应

  4.正常运行结束

  5.强制停止进程

 

  最后是重头戏,monkey测试结果的分析!

  

  1.seed=1418535683701,count=50随机码seed为这么一串数字,操作事件的序列的一个标识。count

 

  2.select main activity。。。LANCHER选择了哪些activity

  Using main activity指的是能启动这些activity,而不是刚刚启动的

  3.selecting main activities from category android.intent.category.Monkey

  Monkey启动了哪些activities

  4.Monkey测试的事件,有11种

  5.

  主acitivity名为com.mediatek.stkselection

  6模拟用户的操作,每一次的操作

.

  7.如果在这个过程中遇到了Reject start OfIntent //拒绝此跳转,因为它是跳转到非他自己的包的Acitivity

  8.Dropped: keys=9 pointers=0 trackballs=0 flips=0 rotations=0

  丢弃的,键=9,指针=0,轨迹球=0,翻转=0

  9.最后就是统计时间了,单位为ms

 

  出现crash,性能问题的场景:

  我们为什么要做Monkey的性能测试,就是要去抓crash,内存问题,例如以下:

  1.anr in com.tencent.mms

    crash on com.a.b.c 173。。。

  2.CPU

  3.Memory,,,

 

  如何把你的monkey命令行的log输出:adb shell monkey xxxx >D:\a.txt  xxx是你的指令

posted @ 2014-12-01 15:59  Mr.Dantes  阅读(862)  评论(1编辑  收藏  举报