`
wpf814533631
  • 浏览: 191914 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android自动化压力测试图解教程——Monkey工具

 
阅读更多

有时候我们需要对一个软件进行压力测试,检查该软件的性能。如果是人工进行测试的话,效率会低很多,而且会比较枯燥。这时,Android 中的一个命令行工具 Monkey 就可以为我们减轻很多重复而又繁琐的工作。

以下就Monkey 工具的简介、特性、基本用法、测试示例图解、测试的停止条件和命令参数说明等方面进行介绍。

 

     一、Monkey 简介
    至于Monkey 的名字是有何而来的呢?这个没有去怎么考究, Monkey 这个工具就是一个调皮的猴子,在 App 中乱按、乱摸、乱滚、乱跳。 Monkey 测试是 Android 平台下自动化测试的一种快速有效的手段,通过 Monkey 工具可以模拟用户触摸屏幕、滑动轨迹球、按键等操作来对模拟器或者手机设备上的软件进行压力测试,检测该软件的稳定性、健壮性。它的原理是向系统发送伪随机的用户事件流(如按键输入、触摸输入、手势输入等),实现对正在开发的应用程序进行压力测试。

 

    二、Monkey 的特性
   (1 )测试的对象仅为应用程序包( apk 包),有一定的局限性;
   (2 Monkey 测试使用的事件流数据流是随机的,不能进行自定义;
   (3 )可对 MonkeyTest 的对象、事件数量、类型、频率等进行设置。
     虽然Monkey工具并不完善,但是足于应付应用程序的基本测试需要了。如果需要功能更强大的测试工具的话,可以使用 Monkey 的进化版 MonkeyRunner 如果把Monkey 看作是幼儿园的小孩,那么它的进化版 MonkeyRunner 就可以看作是一个初中生了。 它支持自定义插件, 控制事件 , 随时截图 , 简而言之 , 任何你在模拟器 / 设备中能干的事情 ,MonkeyRunner 都能干 , 而且还可以记录和回放 。在这里,就不详细介绍MonkeyRunner了,具体可以参考其官方文档或者其他相关资料。
    注:MonkeyRunner 官方文档的网址

 

    三、Monkey 的基本用法
    基本语法如下:
    $ adb shell monkey [options]
    如果不指定options Monkey 将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送 1 000个伪随机事件:
    $ adb shell monkey -p your.package.name -v number
    $ monkey -p package 的意思)  指定文件名 -v (测试的次数和频率) number (次数)

 

    四、Monkey测试示例图解
    通过简单的测试示例,初步了解并掌握Monkey 测试的步骤。注意,这里主要是使用 adb 命令进行安装和相关操作。测试的具体参考步骤如下:
    (1)首先,先准备了一个测试用的应用程序(apk 文件)。为了测试,这里选择了一个格瓦拉手机购票 App 进行测试。下载地址为: http://www.gewara.com/mobile/mobileMovie.xhtml
    下载好后,得到下图所示的apk 文件。
   
   
   (2)将apk 文件复制到 android sdk 对应 platform-tools 的目录下。例如,笔者的 sdk 路径为 D:\android\android-sdk-windows\platform-tools 。如图所示
   
   (3)进行apk 文件的安装(安装的前提是,已经启动并可以检测模拟器):有安装 91 助手或者豌豆的用户可以直接双击 apk 文件进行安装;也可以使用 android 下的 adb 命令进行安装(如下图所示, Success 表示安装成功)。 adb 命令下安装 apk 文件的命令为: adb install 文件名 .apk
   
    (4)安装好后,会在模拟器上看到应用程序的启动图标
         
    (5)安装好 apk 文件后,需要知道应用程序主 Activity (第一个启动的 Activity )所在的包名。这时,我们可以使用 adb shell 命令查找到程序主 Activity 所在的包名,如下图所示。(知道了 apk 的包名,我们也可以利用 adb 命令进行应用程序的卸载;卸载 apk 文件的命令为: adb uninstall 包名)
   
   (6)这里是最关键的一步,使用moneky 命令进行自动化压力测试。
命令为:#monkey -p com.gewara -v 1000(参数说明:-p后跟着软件所在包名, -v 后跟测试的次数)。这里对该软件进行 1000 次的自动化测试,几分钟内即可以完成测试。如图所示
        
   
   
   
        
  (7)测试完毕,发现程序出错了。程序出错,表明该软件的稳定性和健壮性还有待提高。
这时,可以打开Lotcat查看出错信息。如图所示
   



    五、Monkey 测试的停止条件
   (1)如果先顶了Monkey 运行在一个或几个特定的包上,那么它会检测试图转到它包的操作,并对其进行阻止;
   (2)如果应用程序崩溃或接收到任何失控异常,Monkey 将停止并报错
   (3)如果应用程序产生了应用程序不响应(application not responding )的错误, Monkey 将会停止并报错。
    通过多次并且不同设定下的Monkey 测试才算它是一个稳定性和健壮性足够的程序。


    六、Monkey 命令参数说明  
   随着测试的深入,我们需要忽略App 的崩溃( App 的崩溃会导致 Monkey 测试的停止),而不是停住, monkey 同样能做到。 --ignore crashes
   甚至,它还能生成profiling 报告。 --hprof
   注:Monkey 具体参数的设定可参考:

Monkey使用:(附件为detect_memory.sh)
1、打开一个终端,运行monkey测试:
adb shell monkey -p com.android.calendar --throttle 2000 20000
2、另开一个终端,运行 . detect_memory.sh com.android.calendar 将该进程的内
存占用情况保存到当前目录下名为memory.txt的文件中,如果发现内存占用一直呈
增长的趋势,那就是有内存泄露了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics