美文网首页
android自动化测试(1)Monkey工具

android自动化测试(1)Monkey工具

作者: 著名的 | 来源:发表于2017-06-29 11:22 被阅读66次

    一、什么是Monkey?

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    二、为什么要用Monkey?

    用Monkey来做压力测试比人为来做效率高很多,对提高程序的健壮性有很大帮助。

    三、Monkey的局限性

    1、 测试的对象仅为应用程序包,有一定的局限性。

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

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

    四、Monkey的用法

    基本语法如下:

    $ adb shell monkey [options]

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

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

    其中-p表示对象包 –v 表示反馈信息级别

    五、Monkey常用命令

    1、九个事件

    --pct-touch 0

    调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)(——点击事件,涉及down、up)

    --pct-motion 1

    调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成) (——注:move事件,涉及down、up、move三个事件)

    --pct-trackball 2

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

    --pct-nav 3

    调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

    --pct-majornav 4

    调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    --pct-syskeys 5

    调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

    --pct-appswitch 6

    调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。(从一个Activity跳转到另一个Activity)

    --pct-flip 7

    调整“键盘翻转”事件的百分比。

    --pct-anyevent 8

    调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。

    红色的数字对应下面百分比对应的数字。比如下图中0:15.0%,表示分配--pct-touch事件15%。测试100次分配15次测试down-up。

    2、百分比控制

    如果在monkey参数中不指定上述参数,这些动作都是随机分配的,9个动作其每个动作分配的百分比之和为100%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。

    我们先来看一下不加动作百分比控制,系统默认分配事件百分比的情况

    命令:adb shell monkey -v -p your.www.com 500

    结果:

    再看一下指定事件,控制事件百分比之后的情况

    命令:adb shell monkey -v -p your.www.com --pct-anyevent 100 500

    结果:

    说明:--pct-anyevent 100表明pct-anyevent所代表的事件的百分比为100%。

    六、约束限制及确定对应包名

    1、约束限制

    -p

    1个-p选项只能用于一个包。指定多个包,需要使用多个-p选项

    2、确定测试包名

    利用monkey测试,通过-p参数确定应用程序在Emulator中所对应的包名。步骤如下:

    a、在Eclipse中打开欲测试的项目,并在模拟器中执行。此时,他的APK应该加载到了Emulator(译:仿真器、模拟器)上(

    也可以通过命令模式打开模拟器、安装、删除apk

    启动模拟器:emulator -avd testtest为模拟器名称

    安装:adb install c:/xxx.apk

    删除:adb uninstall apk的包名

    b、在命令行输入命令:adb shell

    c、应用程序包都在data目录中的data目录下,我们输入命令:cd data/data进入目标data文件夹,在执行命令:ls,可找到刚才加载项目的应用程序包。如下图所示:

    找到对应的包名后,就可以通过monkey命令来进行测试了。例如:adb shell monkey -v -p your.www.com 500

    随便说一下,最后的500,表示测试触发500个事件(500个事件要按比例分摊到9个事件当中,如何指定不同的事件比例上面已经说过了)。

    如果在事件之间插入延时,使用参数:--throttle 5000 这里的5000为毫秒单位。通过这个选项,可以降低monkey的执行速度;如果不指定该选项,Monkey将不会被延迟,事件将尽可能快的被产生。

    -s 伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,它将生成相同的事件序列,对9个事件分配相同的百分比。

    -v 命令行的每一个-v将增加反馈信息的级别。

    至于其它的一些参数,就百度一下吧,暂时先写到这里。

    七、在monkey测试中常用的命令组合

    1、monkey -p com.yourpackage -v 500 简单的输出测试的信息。

    2、monkey -p com.yourpackage -v -v -v 500  以深度为三级输出测试信息。

    3、monkey -p com.yourpackage --port 端口号 -v 为测试分配一个专用的端口号,不过这个命令只能输出跳转的信息及有错误时输出信息。

    4、monkey -p com.yourpackage -s 数字 -v 500 为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错。

    5、monkey -p com.yourpackage -v --throttle 3000 500 为每一次执行一次有效的事件后休眠3000毫秒。

    八、试例

    在android studio terminal中输入abd ps 列出手机中的程序列表(安装时包名可能会发生变化)

    用命令$ adb shell monkey -p your.package.name -v 500进行测试

    九、关于Monkey测试的停止条件

    Monkey Test执行过程中在下列三种情况下会自动停止:

    1、如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

    2、如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

    3、如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。

    通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。

    相关文章

      网友评论

          本文标题:android自动化测试(1)Monkey工具

          本文链接:https://www.haomeiwen.com/subject/qxdmcxtx.html