`
angelguo
  • 浏览: 118300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

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

 

        一、Monkey简介

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

 

 

      二、Monkey的特性

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

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

    (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]

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

    $ adb shell monkey -p your.package.name -v number

    $ monkey -ppackage的意思)  指定文件名 -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具体参数的设定可参考:

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

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

 

   

分享到:
评论

相关推荐

    Android快速入门教程(图解)——Monkey工具.doc

    "Android快速入门教程(图解)——Monkey工具" Monkey 工具是 Android 平台下的一个命令行工具,用于压力测试软件的稳定性和健壮性。Monkey 工具可以模拟用户触摸屏幕、滑动轨迹球、按键等操作,检测软件的稳定性和...

    SQL_Server_2000图解教程——下

    《SQL Server 2000 图解教程——下》是一本专门为初学者设计的数据库管理教程,通过丰富的图像和简洁的文字,深入浅出地讲解了SQL Server 2000的核心概念和技术。在这个部分,我们将重点探讨SQL Server 2000在数据...

    SQL_Server_2000图解教程——上

    《SQL Server 2000 图解教程——上》是一份专为初学者设计的数据库学习资源,通过图文并茂的方式深入浅出地讲解了SQL Server 2000的基础知识和操作技巧。本教程旨在帮助读者快速掌握SQL Server 2000的基本概念和功能...

    MHDD操作图文教程——手把手教,保证学会

    MHDD操作图文教程——手把手教,保证学会。内有附图,条理清晰,易学易会!

    Java图解教程Java图解教程

    Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解教程Java图解...

    【算法图解】——集合覆盖问题

    覆盖问题要求不会重复——采用set() 假设你要办一个广播电台,要让所有的8个州都听到,你要选择广播电台,如何选择尽可能少的广播电台 州集合,电台字典 # 包含所有州的集合 states_needed = set(['mt', 'wa', ...

    sniffer图解——不错的sniffer教程

    《Sniffer 图解:深入理解网络监控与流量分析》 Sniffer 是一款强大的网络监控工具,主要用于抓包、分析网络流量以及识别潜在的网络问题。本文将通过详细的图解,帮助网络学习者深入理解Sniffer的功能和使用方法。 ...

    图解ERP——轻松跟我学企业管控

    企业ERP实施,企业ERP与企业管理,ERP实施人员的工具书

    Serv-U组建——完全图解教程

    Serv-U组建个人,_——完全图解教程:FTP架设、端口映射、动态域名申请_选项

    QTP功能测试图解详细教程

    QTP,全称为QuickTest Professional,是HP(现已被Micro Focus收购)开发的一款自动化测试工具,主要用于功能测试和回归测试。本教程“QTP功能测试图解详细教程”旨在为测试人员提供深入、全面的QTP知识,帮助他们...

    微信小程序开发图解案例教程-源代码

    微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码...

    十天学会易语言图解教程

    十天学会易语言图解教程。讲解挺清楚的! 名称 大小 修改时间 文件: 00十天学会易语言图解教程(王军)文字校正_前言.doc 57 KB 2010/3/7 16:12:32 文件: 01十天学会易语言图解教程(王军)文字校正_第一章.doc ...

    Android教程全套

    2、Android 开发环境搭建步骤详细图解.pdf 3、Android用户手册.pdf 4、Android编程入门教程.pdf 5、Android开发从入门到精通.doc 6、Android开发手册——API函数详解.pdf 7、Android驱动开发入门及手机案例开发分析...

    toad中文教程+图解教程

    14. **任务调度**:支持设置SQL任务和脚本任务的定时运行,自动化数据库维护工作。 15. **数据迁移**:Toad可以帮助进行数据库间的迁移,支持多种数据源和目标,如Oracle到MySQL,或者Oracle到Oracle之间的迁移。 ...

    Eclipse for JavaEE图解教程

    Eclipse for JavaEE 图解教程 Eclipse 是一个功能强大且...通过本教程,我们可以学习到 Eclipse 的一些重要用法,例如自动生成 Getter、Setter 和构造方法、自动生成接口和 JUnit 测试类、定制视图与 New 菜单项等。

    Windows2003服务器设置教程 2009

    本系列文章第三篇:Windows2003服务器安装及设置教程——软件安装与设置篇——ASPJPEG安装图解 本系列文章第四篇:Windows2003服务器安装及设置教程——软件安装与设置篇——Jmail安装图解 本系列文章第五篇:...

    C#7 图解教程(2018年版 第5版 英文版 文字版)

    ### C#7 图解教程(2018年版 第5版 英文版 文字版) #### 知识点概述 《C#7 图解教程》是一部专门为C#编程初学者编写的教程书籍,其第五版于2018年由Apress出版社发行。本书由Daniel M. Solis和Cal Schrotenboer共同...

    C#图解教程2008(清晰)

    《C#图解教程2008》是一本专为C#初学者和有经验的开发者设计的指导书籍,尤其适合那些希望通过直观图解来学习编程概念的人群。该书全面覆盖了C#语言的基础与高级特性,同时融入了.NET 3.5框架的核心精髓,使得读者...

    教程——电脑连接电视的方法介绍与图解

    电脑连接电视的方法介绍详细图解 想将电脑接电视的朋友可参考 在电视上显示电脑资源,其乐无穷

Global site tag (gtag.js) - Google Analytics