monkey测试android稳定性

monkey测试简介:php

Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法
android

monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件, 提供了一个API,使用此API写出的程序能够在Android代码以外控制Android设备和模拟器。shell


monkey和monkeyrunner的不一样点:windows

MonkeyMonkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。
monkeyrunner:monkeyrunner工具则是在工做站上经过API定义的特定命令和事件控制设备或模拟器。
安全


详细介绍及环境搭建步骤:http://bbs.pediy.com/showthread.php?t=189584 app


查找须要测试的包名:框架

>adbshell pm list packages     命令查看手机上的全部包名,找到本身须要测试的包名ide


Monkey的特征

  • 测试的对象仅为应用程序包,有必定的局限性。工具

  • Monky测试使用的事件流数据流是随机的,不能进行自定义。单元测试

  • 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

Monkey基本命令参数的介绍

  • 基本命令格式 $ adb shell monkey [options]

  • 若是不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的所有包。 $ adb shell monkey -p com.luxji.watchesapp -v 500

  • -p 指定测试包名,能够指定多个

  • -v 指定输出信息级别,分为三种 

    • -v 仅提供启动提示、测试完成和最终结果等少许信息, 适合于通常的调试

    • -v -v 提供较为详细的日志,包括每一个发送到Activity的事件信息

    • -v -v -v,最详细的日志,包括了测试中选中/未选中的Activity信息

  • -s 指定seed值,若是seed相同,则两次Monkey测试所产生的事件序列也相同的

  • -c 指定一个或多个类别的activity被启动

  • -ignore-crashes和-ignore-timeouts,在应用崩溃和无响应的状况下,monkey不会中止。

  • -throttle MILLISEC 表示每个随机事件中间的时间间隔

  • -ignore-security-exceptions:一般,当应用程序发生许可错误(如启动一个须要某些许可的Activity)时,Monkey将中止运行。若是设置了此选项,Monkey将继续向系统发送事件,直到计数完成。

  • -monitor-native-crashes:监视并报告Android系统中本地代码的崩溃事件。若是设置了–kill-process-after-error,系统将中止运行。

  • -kill-process-after-error:若是程序出现错误,monkey将结束此程序进程。

  • -hprof:设置此项,将在monkey事件序列以前和以后当即生成profilling报告。这将会在data/misc中生成大文件(约5mb)因此要当心使用它。

  • -pct-touch:调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕的某单一位置)。

  • -pct-motion:动做事件的百分比(动做事件由屏幕上某处的一个down事件、一系列的随机事件和一个up事件组成)。

  • -pct-trackball:调整轨迹事件的百分比(轨迹事件由一个或几个随机移动组成,有时还伴随着点击)。

  • -pct-syskeys:调整系统按键事件的百分比(这些按键一般被保留,由系统使用,如home,back,start call,end call及音量控制)。

  • -pct-nav 调整基本导航事件的百分比(导航事件来自方向输入设备的up/down/left/right组成)。

  • -pct-majornav:调整“主要”导航事件的百分比(这些导航事件一般引起图形界面中的动做,如:5-way键盘的中间按键、回退按键、菜单按键)

  • -pct-appswitch:调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,做为最大程度覆盖包中所有Activity的一种方法

  • -pct-anyevent:调整启动Activity的百分比。它包罗了全部其它的事件类型,如:按键,其它不经常使用的设备按钮。

  • -pct-flip:

  • –wait-dbg:中止执行中的Monkey,直到有调试器和它相链接。

  • –dbg-no-events:设置此选项,Monkey将执行初始启动,进入到一个测试Activity,而后不会再进一步生成事件。为了获得最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,能够监视应用程序所调用的包之间的转换。

  • -port:为monkey开启专用端口。此时只monkey不会帮你乱点击,而此时你本身就是一只monkey了,在你乱点的时候,monkey会输出你点击后回馈的信息。若是你打完命令以后模拟器上没有启动你所要启动的包,你须要本身启动,可是你只能启动你-p中指定的那几个包。ctrl+c中断。


Monkey使用方法


在windows环境下,使用dos命令行。在桌面按下Ctrl+R,而后输入cmd,弹出命令行界面。


Monkey中止的三种状况,1.应用报错 2.应用出现anr异常,无响应 3 指定包名后,应用中有跳往其余缘由的意图时,也会报错中止


Monkey的测试策略及示例:

1、先上一个简单的测试用例

设计用例的思路就是设置不一样的事件比,不一样的时间间隔,执行的事件数通常起码要上万吧,否则怎么能称做稳定性测试,中间在加入不一样的测试包名,模拟多个应用切换的场景。


wKiom1idJPmhb28aAAAUUagecv8817.png-wh_50


异常:  一、插入其余应用:搜狗输入法、电话、短信  、QQ等

            二、 忽略崩溃、超时、安全异常、跟踪本地方法的崩溃问题 


示例:

-p 后面能够添加多个测试包名,以便模拟应用间的切换

C:\Users\Administrator>adbshell monkey -p com.chemi -p com.sougou --pct-touch 25 --pct-motion 15 --pct-pinchzoom 5--pct-rotation 10 --pct-majornav 25 --pct-flip 10 --pct-syskeys 10 --throttle300 --ignore-crashes --monitor-native-crashes -v -v -v 10000 >log040502.txt


结束monkey进程:

直接拨数据线是没有用的,必须把这个进程杀掉monkey才会中止

C:\Documents and Settings\hui.qian>adb shell
1|shell@scx15_sp7715ea:/ $ ps|grep monkey
ps|grep monkey
shell     7772  185   277516 22244 ffffffff4010a58c S com.android.commands.monkey
shell@scx15_sp7715ea:/ $ kill 7772


日志分析:

正常状况,  若是Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 表明执行完成\

异常状况

Monkey 测试出现错误后,通常的分析步骤
看Monkey的日志 (注意第一个swith以及异常信息等)
1. 程序无响应的问题: 在日志中搜索 “ANR
2. 崩溃问题:在日志中搜索 “Exception”   (若是出现空指针, NullPointerException)  确定是有bugMonkey 执行中断, 在log最后也能看到当前执行次数

相关文章
相关标签/搜索