monkey自动化测试

来源:互联网 发布:百度云管家 mac 编辑:程序博客网 时间:2024/06/05 00:25

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

2 Monkey的特征
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件流数据流是随机的,不能进行自定义。
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

3 Monkey与monkeyrunner的区别
monkeyrunner工具monkey工具并无关联;不要因为名字相近而认为是一个东西;
monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。而monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。

4 注意事项
monkeyrunner 和monkey测试都是建立在整个android开发环境搭建好的基础上,如果还没有搭建好开发环境, 请先按照说明文档 《android开发环境的搭建.doc》搭建开发环境;
本文主要目的是讲解monkey测试的实践和遇到的一些问题, 相关概念不明白的大家到网上查找

5.Monkey测试实践
由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adb shell来达到目的,也可以进入Shell后直接输入Monkey命令;

1检查环境配置
打开命令行,输入adb回车,如果出现adb命令的相关信息:
说明环境OK, 可以测试

反之说明环境有问题;

怎么解决呢? 设置环境变量, androidsdk安装完以后在tools目录下会有这个文件”adb.exe”将对应的tools路径设置到环境变量里面即可;
注意,安装最新的androidsdk对应的tools目录下会没有”adb.exe”这个文件, 怎么回事呢?你会发现有一个 adb_has_moved.txt 文件, 打开里面说的很明白:The adb tool has moved to platform-tools /
即最新的安装文件安装后经这个工具移到了platform-tools目录下,那么将该路径加入环境变量, 关闭命令行重新打开输入adb就ok了;

2测试
测试前必须运行模拟器,或者链接机器设备;
1:进入adb shell,在命令行中输入adb shell 回车;
2:输入monkey命令:如 monkey -p bbk.schooltimetable –throttle 500 –pct-touch 80 500
回车, 即开始monkey测试;
这条命令的解释是:
monkey 即执行monkey的命令
-p bbk.schooltimetable 指定要测试的包是bbk.schooltimetable
–throttle 500 在事件之间插入固定延迟,消息之间的间隔时间是 500毫秒
–pct-touch 80 这发的所有消息中触摸消息占80%
500 总共发500条消息;
3命令选项参考
下表中列出了Monkey命令行可用的全部选项:也可以参考官方文档
类别 选项 说明
常规
–help 列出简单的用法。
-v
命令行的每一个 -v 将增加反馈信息的级别。 Level 0( 缺省值 ) 除启动提示、测试完成和最终结果之外,提供较少信息。 Level 1 提供较为详细的测试信息,如逐个发送到 ActivITy 的事件。 Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的 Activity 。

事件
-s 伪随机数生成器的 seed 值。如果用相同的 seed 值再次运行 Monkey ,它将生成相同的事件序列。
–throttle
在事件之间插入固定延迟。通过这个选项可以减缓 Monkey 的执行速度。如果不指定该选项, Monkey 将不会被延迟,事件将尽可能快地被产成。
–pct-touch 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。
–pct-motion 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。
–pct-trackball 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。
–pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。
–pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
–pct-syskeys 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)。
–pct-appswitch 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。
–pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
约束限制 -p 如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。
-c 如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。
调试 –dbg-no-events 设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。
–hprof 设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(~5Mb),所以要小心使用它。
–ignore-crashes 通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
–ignore-timeouts 通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
–ignore-security-exceptions 通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。
–kill-process-after-error 通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态。
–monitor-native-crashes 监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。
–wait-dbg 停止执行中的Monkey,直到有调试器和它相连接。

4异常分析:
如果测试过程中出现异常, 将会在命令行显示异常相关信息, 用户根据信息找出问题:
比如我在测试过程中提示:

很明显是个数组越界,而且指出是哪个类哪个函数出问题, 查看原型:
private static String [][]className = new String[7][11];
public static void setClassName ( String classname, int weekday, int classorder )
{
if( classname != null
{
className[weekday][classorder] = classname;
}
}
很明显, 当 这两个参数int weekday, int classorder,超出className的范围就会越界。

0 0
原创粉丝点击