Android压力测试Monkey

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android压力测试Monkey•准备Monkey测试环境•Monkey基本参数及用法•Monkey测试实例•结果分析准备Monkey测试环境1)下载SDKforWindows下载地址:解压:adt-bundle-windows-x86-20131030.zip2)设置sdk下面tools的环境变量如:tools的路径为:D:\android-sdk-windows\adt-bundle-windows-x86-20131030\sdk\tools右击“我的电脑”-》属性-》高级-》环境变量(如图)点击Path,将“D:\android-sdk-windows\adt-bundle-windows-x86-20131030\sdk\tools”添加到变量值中,与之前的变量值用“;”隔开3)下载安装JDK下载地址:下载完成之后点击安装,默认安装就可以了4)创建AVD打开SDKManager.exe,如果域名转向设置正确,将看到管理器的更新列表,“Status(状态)”列下显示“Installed”的项表明数据已安装,显示“NotUninstalled”的项表明数据没有安装。全部更新列表中的数据会因数据太大导致下载很长时间,本例只选择AndroidSDKPlatform-tools和Android4.1(API16)两项数据,如图所示安装完成后,AVD管理器窗口,单击“New(新建)”按钮,弹出创建AVD对话框,详细配置如图,AVD创建完成后,回到AVD管理器界面,选中刚刚创建好的AVD,单击Start启动AVD5)在虚拟机中使用MonkeyTest1.打开虚拟机,运行以上创建的AVD2.开始运行,输入cmd3.在命令行录入adbshell4.接下来可以运行MonkeyTest的命令如:monkey–pcom.android.contacts–v1000Monkey使用1.Monkey测试简介Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。2.Monkey特征1、测试的对象仅为应用程序包,有一定的局限性。2、Monky测试使用的事件流数据流是随机的,不能进行自定义。3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。3.Monkey基本用法可以通过开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adbshell来达到目的,也可以进入Shell后直接输入Monkey命令。基本语法如下:$adbshellmonkey[options]如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:$adbshellmonkey-pyour.package.name-v5004.Monkey参数1)参数:-p参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。*指定一个包:adbshellmonkey-pcom.htc.Weather100说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。*指定多个包:adbshellmonkey-pcom.htc.Weather–pcom.htc.pdfreader-pcom.htc.photo.widgets100*不指定包:adbshellmonkey100说明:Monkey随机启动APP并发送100个随机事件。*要查看设备中所有的包,在CMD窗口中执行以下命令:adbshell#cddata/data#ls2)参数:-v用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:日志级别Level0示例adbshellmonkey-pcom.htc.Weather–v100说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息日志级别Level1示例adbshellmonkey-pcom.htc.Weather–v-v100说明提供较为详细的日志,包括每个发送到Activity的事件信息日志级别Level2示例adbshellmonkey-pcom.htc.Weather–v-v–v100说明最详细的日志,包括了测试中选中/未选中的Activity信息3)参数:-s用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。*示例:Monkey测试1:adbshellmonkey-pcom.htc.Weather–s10100Monkey测试2:adbshellmonkey-pcom.htc.Weather–s10100两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;4)参数:--throttle毫秒用于指定用户操作(即事件)间的时延,单位是毫秒;*示例:adbshellmonkey-pcom.htc.Weather–throttle30001005)参数:--ignore-crashes用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。*示例1:adbshellmonkey-pcom.htc.Weather--ignore-crashes1000测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;*示例2:adbshellmonkey-pcom.htc.Weather1000测试过程中,如果Weather程序崩溃,Monkey将会停止运行。5.举例1、不忽略异常adbshellmonkey-pcom.thunderst.radio--throttle500-s600-v-v-v800000C:\long_radio_report.txt指令的含义:测试的应用程序为FM,事件间的延时为500毫秒,种子seed的值为600,三个v表示输出的MonkeyLog的级别为最高,即输出最详尽的MonkeyLog,测试的事件次数为800000次,Log保存在C盘的long_radio_report.txt里2、忽略异常adbshellmonkey-pcom.thunderst.radio--throttle500-s600--ignore-crashes--ignore-timeouts--ignore-security-exceptions--ignore-native-crashes--monitor-native-crashes-v-v-v800000C:\long_radio_report.txt6.Monkey测试的停止条件(1)如果先顶了Monkey运行在一个或几个特定的包上,那么它会检测试图转到它包的操作,并对其进行阻止;(2)如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错;(3)如果应用程序产生了应用程序不响应(applicationnotresponding)的错误,Monkey将会停止并报错。Monkey测试实例(1)首先,先准备了一个测试用的应用程序(apk文件)。为了测试,这里选择了一个格瓦拉手机购票App进行测试。下载地址为:(2)将apk文件复制到androidsdk对应platform-tools的目录下。例如,笔者的sdk路径为D:\android\android-sdk-windows\platform-tools(3)进行apk文件的安装(安装的前提是,已经启动并可以检测模拟器):有安装91助手或者豌豆的用户可以直接双击apk文件进行安装;也可以使用android下的adb命令进行安装(如下图所示,Success表示安装成功)。adb命令下安装apk文件的命令为:adbinstall文件名.apk(4)安装好后,会在模拟器上看到应用程序的启动图标(5)安装好apk文件后,需要知道应用程序主Activity(第一个启动的Activity)所在的包名。这时,我们可以使用adbshell命令查找到程序主Activity所在的包名,如下图所示。(知道了apk的包名,我们也可以利用adb命令进行应用程序的卸载;卸载apk文件的命令为:adbuninstall包名)(6)使用moneky命令进行自动化压力测试。命令为:#monkey-pcom.gewara-v1000(参数说明:-p后跟着软件所在包名,-v后跟测试的次数)。这里对该软件进行1000次的自动化测试,几分钟内即可以完成测试。如图所示结果分析1.初步分析Monkey测试出现错误后,一般的差错步骤为以下几步:1、找到是monkey里面的哪个地方出错2、查看Monkey里面出错前的一些事件动作,并手动执行该动作3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样2.一般结果分析1、ANR问题:在日志中搜索“ANR”2、崩溃问题:在日志中搜索“Exception”3.详细分析日志1)将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。2)首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。3)然后我们要分析log中的具体信息,方法如下:查看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,譬如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.tencent.smtt/.SplashActivity;end//AllowingstartofIntent{act=android.intent.action.MAINcat=[android.intent.category.LAUNCHER]cmp=com.tencent.smtt/.SplashActivity}inpackagecom.tencent.smtt在下面的log中,SendingPointerACTION_DOWN和SendingPointerACTION_UP代表当前执行了一个单击的操作Sleepingfor500milliseconds这句log是执行Monkey测试时,throttle设定的

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功