zoukankan      html  css  js  c++  java
  • Android自动化压力测试图解教程——Monkey工具 (转)

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

            一、Monkey简介

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

          二、Monkey的特性

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

        (2)Monkey测试使用的事件流数据流是随机的,不能进行自定义;

        (3)可对MonkeyTest的对象、事件数量、类型、频率等进行设置。

          虽然Monkey工具并不完善,但是足于应付应用程序的基本测试需要了。如果需要功能更强大的测试工具的话,可以使用Monkey的进化版MonkeyRunner。如果把Monkey看作是幼儿园的小孩,那么它的进化版MonkeyRunner就可以看作是一个初中生了。它支持自定义插件,控制事件,随时截图,简而言之,任何你在模拟器/设备中能干的事情,MonkeyRunner都能干,而且还可以记录和回放。在这里,就不详细介绍MonkeyRunner了,具体可以参考其官方文档或者其他相关资料。

         注:MonkeyRunner官方文档的网址

        http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html

        三、Monkey的基本用法

        基本语法如下:

        $ adb shell monkey [options]

        如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送1000个伪随机事件:

        $ 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:androidandroid-sdk-windowsplatform-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具体参数的设定可参考:

       http://developer.android.com/guide/developing/tools/monkey.html

       通过参数的设置,可以完成更多的调试功能,Monkey命令行参数中文相关说明见下表。

       

     
    11
  • 相关阅读:
    Chrome开发者工具中Elements(元素)断点的用途
    最简单的SAP云平台开发教程
    Java实现 LeetCode 495 提莫攻击
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 492 构造矩形
  • 原文地址:https://www.cnblogs.com/dtting/p/6541390.html
Copyright © 2011-2022 走看看