【Android Monkey自动测试工具使用报告】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于Android Monkey自动化测试的报告
1自动化测试背景
软件测试是软件产品开发过程中的重要环节。测试对于发现软件中缺陷,保障软件的质量具有重要意义。统计表明,软件测试的时间通常占到软件开发时间的40%,一些可靠性要求高的软件甚至高达60%以上。
手工测试和自动化测试是软件测试的两种基本手段,二者相互补充,不可相互替代。其中,自动化测试能捕捉到资源冲突、多线程、死锁等手工测试难以发现的错误,可以高效的完成大量机械性、重复性测试,能模拟大量数据或大量并发用户等应用场景,从而有效的缩短软件测试周期,提高测试的可靠性及准确度。
2什么是Monkey
Monkey测试是Android自动化测试的手段之一,它通过模拟用户的按键输入、触摸屏输入等,测试设备多长时间出现异常。Monkey是一个命令行工具,可以运行在模拟器或实际设备中,通过向系统发送伪随机的用户事件流,实现对全系统或某个应用程序进行压力测试。
Monkey工具使用非常简单,直接在命令窗口键入monkey命令即可进行测试。Monkey命令有较多的配置选项,为便于理解这些命令,此处先将其命令选项简单划分为四大类,在后文中陆续介绍各种命令选项的使用,然后在附录中附上整个monkey命令选项便于查阅。Monkey命令可简单分为如下四类:
基本配置选项,如设置尝试的事件数量
运行约束选项,如设置只对单独的一个包进行测试
事件类型和频率,如设置触摸屏事件的发生频率
调试选项,如设置忽略应用程序异常,继续向系统发送事件,直到计数完成
3使用monkey进行自动化测试
Monkey命令工具可以在模拟器和实际设备上使用。这里分别对两种环境下的monkey测试进行介绍。
3.1 在模拟器上运用Monkey进行自动化测试
3.1.1 monkey命令最简单用法
首先,介绍最简单monkey命令用法,其使用格式为如下:
monkey n
其中,n为一个整数,表示用于测试的伪随机事件发生的次数。
如图3.1所示,启动模拟器。然后,在命令行窗口下输入adb shell命令,如图3.2所示。登录shell之后,即可使用monkey命令。最简单的用法是,直接在其后面指定一个数字,表示向系统发送事件的数量,如图3.3所示。模拟器的测试的结果如图3.4所示。
图3.1启动模拟器图3.2登录shell
图3.3 monkey命令使用图3.4 模拟器测试界面
3.1.2 指定测试的约束选项
所谓测试约束选项,即根据具体的测试需求,通过参数指定对系统的某些包或类进行测试。主要包括两类约束:包和类。
(1)指定测试的包
如果需要对某一个具体的应用进行测试,可指定具体的包名。可以在系统目录/data/data 下查找对应的包名,如图3.5所示。
图3.5 查看包名
查找到对应的包名后,使用monkey时可用“-p”参数进行指定,此外还可以使用“-v”参数指定测试中反馈的信息。常用格式如下:
monkey –p com.android.gallery –v 50 如图3.6和3.7分别为命令输入及测试过程的截图。
图3.6 指定包测试
图3.7 测试的截图
注意:每个“-p”只能指定一个包,若需指定对多个包进行测试,则要用多个“-p”参数进行指定。
(2)指定测试的类
若需对某个具体类进行测试,可以使用“-c”参数指定,若需指定多个类别,则要用多个“-c”参数选项分别指定,每个“-c”只能指定一个类别。如图3.1所示,其使用的命令格式为:
Monkey –c UNCHER -v 50 图3.8及图3.9分别为指定类测试命令输入及测试过程的截图。
图3.8 指定类测试
图3.9 测试过程效果图
3.1.3指定测试的事件类型和频率
Monkey命令提供了众多选项用于指定事件的类型和发生频率,例如触摸事件、导航事件、轨迹事件(由一个或多个随机的移动组成,有时还伴随有点击)。有时为了测试某个具体应用,需要通过“事件”的反复发生来进行专项的功能测试,此时即可通过monkey的“—pct”选项来进行指定具体事件及其发生的频率。命令使用格式如下示例:
Monkey --pct-syskeys 90 200
以上命令表示系统按键事件的发生率为90%,共测试200次,如图3.10及图3.11所示。
注意:“pct”前面是英文输入状态下两杠“——”。
图3.10 指定系统按键事件测试
图3.11测试过程效果图
还可以分别指定两个事件的发生频率,命令使用方式如下所示:
Monkey --pct-touch 50 --pct-trackball 40 200
以上命令表示触摸事件和轨迹事件发生概率分别为50%和40%,共测试200次,如图3.12和图3.13所示。
图3.12 指定两事件进行测试
图3.13测试过程效果图
通过“--throttle”指定事件间的间隔,可以延缓事件的发生,如下图3.14所示为指定导航事件发生概率为80%,每次事件相隔1秒中发生,共测试200次。测试的效果图如3.15所示。
图3.14 指定事件间隔事件
图3.15测试过程效果图
3.1.4指定测试的调试选项
Monkey命令提供了若干用于控制测试过程的调试选项。例如参数“--ignore-crashes”,将
忽略应用程序崩溃或发生的任何异常,继续向系统发送事件,直到计数完成。使用命令格式如下:
monkey --ignore-crashes -v 5000
图3.16及图3.17分别显示了指定调试选项的测试及其测试过程的效果图。
图3.16 指定调试选项的测试
图3.17 测试过程效果图
3.2在开发板上运用Monkey进行自动化测试
上一节中主要介绍了用monkey命令工具在模拟器上进行测试,列举了若干基本的命令使用示例。在实际的设备中,也可以方便的运用monkey工具进行应用程序的测试。
要在实际设备上进行monkey测试,首先需要启动Android系统,然后让设备通过串口与pc相连,在pc上通过SecureCRT登录到Android系统的根目录下。此时,即可运用上一节介绍的各种命令对设备进行自动化测试。
注意,登录到Android系统的根目录后,若找不到monkey命令,应先运行system/bin/sh,切换bash环境。
4附录
4.1 monkey工具的命令选项
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]