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


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

    标签: 测试androidprofiling工具测试工具文档
     分类:

           有时候我们需要对一个软件进行压力测试,检查该软件的性能。如果是人工进行测试的话,效率会低很多,而且会比较枯燥。这时,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命令行参数中文相关说明见下表。

       

  • 相关阅读:
    《WF编程》系列之17 工作流与外部事件:工作流参数 居然有两个多月没有更新WF笔记,这段时间也许真的太忙了,毕业的事情,工作的事情,从今天起继续更新.
    《WF编程》系列之13 XAML激活 2.3.3 XAML激活
    《WF编程》系列之9 编译工作流:使用WFC.EXE
    《WF编程》系列之11 编译工作流:使用MSBUILD
    《WF编程》系列之15 顺序工作流与SequenceActivity 3 顺序工作流
    《WF编程》系列之16 工作流与外部世界:生存周期事件 3.2 工作流与外部世界
    windows2003技巧
    ASP.NET ViewState 初探
    FreeTextBox实现机制
    .NET实用设计模式:工厂模式(Factory)
  • 原文地址:https://www.cnblogs.com/developer-ios/p/5942487.html
Copyright © 2020-2023  润新知