Android自动化测试基础知识——MONKEY测试工具(转的)

本周开始启动手机输入法simeiji的自动化测试,同时开始接触手机浏览器自动化测试。接下来会对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.2 指定测试的约束选项 
         所谓测试约束选项,即根据具体的测试需求,通过参数指定对系统的某些包或类进行测试。主要包括两类约束:包和类。 
(1) 指定测试的包 
如果需要对某一个具体的应用进行测试,可指定具体的包名。可以在系统目录/data/data
下查找对应的包名,如图 3.5 所示。

查找到对应的包名后,使用 monkey 时可用“-p”参数进行指定,此外还可以使用“-v”
参数指定测试中反馈的信息。常用格式如下: 
monkey  –p  com.android.gallery  –v  50 
如图 3.6 和 3.7 分别为命令输入及测试过程的截图。

注意:每个“-p”只能指定一个包,若需指定对多个包进行测试,则要用多个“-p”参数进行指定。

(2) 指定测试的类 
若需对某个具体类进行测试,可以使用“-c”参数指定,若需指定多个类别,则要用多个“-c”参数选项分别指定,每个“-c”只能指定一个类别。如图 3.1 所示,其使用的命令格式
为: 
Monkey  –c  android.intent.category.LAUNCHER  -v   50 
图 3.8 及图 3.9 分别为指定类测试命令输入及测试过程的截图。


3.1.3 指定测试的事件类型和频率 
         Monkey 命令提供了众多选项用于指定事件的类型和发生频率, 例如触摸事件、 导航事件、轨迹事件(由一个或多个随机的移动组成,有时还伴随有点击)。有时为了测试某个具体应用,需要通过“事件”的反复发生来进行专项的功能测试,此时即可通过 monkey 的“—pct”选项来进行指定具体事件及其发生的频率。命令使用格式如下示例: 
Monkey --pct-syskeys  90  200 
以上命令表示系统按键事件的发生率为 90%,共测试 200 次,如图 3.10 及图 3.11 所示。 
注意: “pct”前面是英文输入状态下两杠“——” 。

还可以分别指定两个事件的发生频率,命令使用方式如下所示:

Monkey  --pct-touch 50  --pct-trackball  40  200 
以上命令表示触摸事件和轨迹事件发生概率分别为 50%和 40%,共测试 200 次,如图 3.12 和图 3.13 所示。

通过“--throttle”指定事件间的间隔,可以延缓事件的发生,如下图 3.14 所示为指定导航事件发生概率为 80%, 每次事件相隔 1 秒中发生, 共测试 200 次。 测试的效果图如 3.15 所示。

3.1.4 指定测试的调试选项 
        Monkey 命令提供了若干用于控制测试过程的调试选项。例如参数“--ignore-crashes” ,将忽略应用程序崩溃或发生的任何异常,继续向系统发送事件,直到计数完成。使用命令格式如下: 
monkey  --ignore-crashes  -v 5000 
图 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] 
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE] 
              [--wait-dbg] [--dbg-no-events] 
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...] 
              [--port port] 
              [-s SEED] [-v [-v] ...] 
              [--throttle MILLISEC] [--randomize-throttle] 
              [--profile-wait MILLISEC] 
              [--device-sleep-time MILLISEC] 
              [--randomize-script] 
              [--script-log] 
              [--bugreport] 
              COUNT

4.2 monkey 命令选项介绍 
<ignore_js_op>

<ignore_js_op>

时间: 2024-10-05 01:46:49

Android自动化测试基础知识——MONKEY测试工具(转的)的相关文章

android开发基础知识了解

JDK下载:www.oracle.com; SDK下载:www.android.developer.com; eclipse下载:www.eclipse.org; android开发基础知识了解

Android软件测试Monkey测试工具

前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其它test tool等等.因接触时间很短,很多地方有不足之处,希望能和大家多多交流. 一.  什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试

Android自动化测试手段之Monkey(adb shell monkey)

一. 什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. 二. Monkey的特征 1. 测试的对象仅为应用程序包,有一定的局限性.2. Monky测试使用的事件流数据流是随机的,不能进行自定义.3. 可对MonkeyTest的对象,事件数量,类型,频率等进行设置. 三.M

Android应用基础知识

Android 应用采用 Java 编程语言编写.Android SDK 工具将您的代码-连同任何数据和资源文件-编译到一APK: Android 软件包,即带有 .apk 后缀的存档文件中.一个 APK 文件包含 Android 应用的所有内容,它是基于 Android 系统的设备用来安装应用的文件. 安装到设备后,每个 Android 应用都运行在自己的安全沙箱内: 1.Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一位不同的用户: 2.默认情况下,系统会为每个应

Android自动化测试实战 Java篇主流工具,框架,脚本

String 前往下载 = " http://icourse8.com/Android_zidonghuaceshi.html "; 章节信息第1章 课程简介第2章 那些重要的Android工具和命令你真的都掌握好了吗?第3章 如何将Monkey工具玩出专业范?第4章 深度挖掘MonkeyRunner测试技术,教你google秘不示人的黑科技第5章 学好Robotium 搞定单元.黑盒.白盒及慕课网官方APP自动化测试第6章 UI自动化测试高手必备最新神器-UiAutomator第7章

[Android Pro] 网络流量安全测试工具Nogotofail

reference to : http://www.freebuf.com/tools/50324.html 从严重的HeartBleed漏洞到苹果的gotofail 漏洞,再到最近的SSL v3 Poodle漏洞……我们已经见识到了网络流量漏洞所带来的巨大灾难.于是“谷人希”来了!谷歌公司最新开发了一款工具——Nogotofail,它可以帮助开发者检测网络流量类的安全漏洞. 让所有联网设备免受TLS和SSL加密漏洞的攻击 安卓安全工程师Chad Brubaker称,开发Nogotofail的最

自动化测试基础知识

瀑布模型的特点 (文档是主体) ,很多的问题在最后才会暴露出来.迭代模型比 瀑布模型问题暴露的要早:快速原型法比瀑布模型直观. 3. 软件测试概念 广义概念:指软件生存周期中所有的检查.评审和确认工作,其中包括了对分 析.设计阶段,以及完成开发后维护阶段的各类文档.代码的审查和 确认 狭义概念:识别软件缺陷的过程,即实际结果与预期结果的不一致 4. 软件测试目的 ? 测试的目的就是发现软件中的各种缺陷 ? 测试只能证明软件存在缺陷,不能证明软件不存在缺陷 ? 测试可以使软件中缺陷降低到一定程度,

可靠性测试的基础知识——软件可靠性测试

可靠性测试 可靠性测试概念 对软件可靠性进行定量的评估或验证,为了达到和验证软件的可靠性定量要求而对软件进行的测试 软件可靠性测试的目的 (1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现. (2)为进行软件可靠性估计采集准确的数据,预测软件在实际运行中的可靠性. 估计软件可靠性一般可分为四个步骤,即数据采集.模型选择.模型拟合以及软件可靠性评估.可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度. (3)通过软件可靠性测试找出所有对软

Android PackageManager基础知识

一.PackageManagerService启动过程 SystemServer首先启动,创建一个ServerThread线程来启动所有Android核心服务,其中PackageManagerService.main方法启动了PackageManagerService. main方法中就是实例化PackageManagerService对象,并注册到ServiceManager中. PackageManagerService的构造过程设计到几个重要的操作:    1.创建Settings对象,向