软件测试自动化框架


基 础 设 计 软件测试 自动化框架 软件测试是在软件开发周期 中必不可 少的、耗时的一 部分 。为了保持与产 品的开发和发布 同步 .我们需要实现一 种有效 的 可重用的软件测试 自动化框架 。本文详细阐述了 当今存在的几种 自动化测试框架 .并进行 了比较 然后介绍 了一个关键字驱动的 自动化 测试模型 .以说 明框架的具体实 现 方 法 。 自动化测试在过去的 2O 年中已经有 了很大的发展。最初 的测试工具只提供 了简单的捕捉 /回放功能 :记录并播放 键 盘按键 .然后捕捉和比较屏幕。这些测试方法虽然最容易应 用 但是几乎不可能维护。录制回放 工具最终被功能和灵活 性更强的测试 脚本 工具代替 但是 .脚本工具也有 自己的问题。他 们实现起来需要很 强的开发技术和经验 .同时 .不确 定它们是一定可以维 护的。 更糟 糕的是高度个性化的脚本工具技术 .加上没有什么文档 记录 .最后 的结 果经 常是重 写包含成 千上万行 代码的 脚本 库 .成本开销 巨大 。 后来 .一种新的 自动化测试产 品— — 自动化测试框架出 现 了 .它可 以减少实现和维护的成本 .使 测试人员可 以把精 力集中在应用程序 的测试 用例设计 上 ,而不是开发测试。 常用 的自动化测试框架 所谓 自动化测试框架 ,是由一些假设 概念和为 自动化 测试提供 支持 的实 践组成 的集合 。接下来将描述一 下几种 比 较常用 的自动化测试 框架 : 1 .录制 / 回放的神话 每一家 自动化测试工具厂商都会 宣传 他们的工具非常 容易使用 ,没有技术背景的测试人 员只要简单录制测试的操 ■ 东南大学软件学院/崔丽 作过程 .然后播放录制好的测试 脚本 .就可 以轻 松自动化所 有 的测试。这样的说法是非常不负责的。 现在我们来分析 一下 自动化测试不能单单 只依靠录制/ 回放来完成的原 因。 通过录制建立 的脚本 .基本 上都是 用脚本语言 以硬编 码 的方式编写的 .当应用程序变动 时 这些硬编码也随之需 要更改。因此 .维护这些录制好的脚本 成本是非常高的.高 到 几乎不能接受 。 所有 的测试脚本部必须是在 应用程序可 以正确执行时 才能录制 .如果在 录制过程 中发现缺陷 +测试人 员必须 向缺 陷管理机制报告 .等到该缺陷修 正了 .整个录制脚本 的动作 才能继续下去 。在这样的情况下 .如果仅仅依靠录制脚本来 进行测试 .效率是十分低下 的。 同时 .这些录 制好 的脚本 不是非常可 靠 ,甚至在应 用 程序完全没有 变动 的情况下直接播放 .也可能 因为一些意外 状况而无法执行 。如果录制脚本时测试人员使用 了错误的脚 本语言 则脚本就必须重新录制 。 综上所述 .通过 录制的方式来建立 自动化测试脚本的 方式看似容易 但 实际上会遇到下列 问题 :①测试人员大多 不具备技术背景 ,难 以完全掌握测试工具 ②应 用程序必须 达到一定的稳定 性 .才能 开始录制测试脚本 ;③录制的测试 脚本与测试 数据 耦合得太 紧密 ;④维护 自动化测试脚本的成 本非常高 。 因此 ,仅仅依靠录制 /回放来完成 自动化测试是远远 不 够的 .我们应找到一 种能解决上述 问题并能很好地执行 自动 化 测试的方法 。 数据驱动的 自动化测试框架 数据驱动的 自动化 测试是针 对上述开发与测试之 间紧密 耦合问题提 出的测试方法。通过建立测试与开发定义 的软件 2 O O 6 .6 /电子与 电脑 一 10 7 维普资讯 http://www.cqvip.com 基础设计 ▲ now led ge B ase 元数据的关联— — 元数据映射表 在测试与开发之 间建立松 耦合关系。不论测试人 员修 改测试脚本 ,还是开发人 员修改 软件 只需要修 改元数 据映射表 既可 以满足测试与开发同 步进行。这样 ,可 以减 少测试脚本调试 的工作量 ,更好 的实 现 自动化 测试 。 ●什么是数据驱动的 自动化测试框架 数据驱动 的自动化测试框架是这样的一个框架 ,从某个 数据文件 (例如 O DBC 源文件 、Excel文件、Csv 文件 、AD O 对 象文件等 )中读取输入 、输 出的测试数据 然后通过变量传人 事先录制好的或手工编写的测试脚本 中。其 中 这些变量被 用作传递 (输入 /输出)用来验证应用程序 的测试数据。在这 个过程 中,数据文件的读取 、测试状 态和所有测试信 息都被 编写进测试脚本里 :测试数据只包含 在数据文件中 而不是 脚本里 ,测试脚本只是一个 “驱动 ” 或者说是一个传送数据 的机 制。 ●数据驱动脚本 数据驱动脚本就是那些和应用程序相 关联 的脚本 。这些 脚本通过 录制或手工编 写写进 自动化工具私有的语言 然后 对其 中的变量赋予合适的数值 ,作为测试数据的输入。这些 变量作为一些 关键应用程序输入 的媒介 使脚本能通过外部 的数据来 驱动 应用程序。 1) 可 变数据 ,硬编码组件标志 这些数据驱动的脚本经常包含硬 编码 的数据 有时是一 些窗口组件 中非常脆 弱的识 别字符 串。出现这种情况时 脚 本很容 易由于程序 的更 改而失去作用。 2) 高度技术化 的、重复 的测试设计 数据 驱动脚本的另一个共同特点就是 所有在测试设计 上所作的努力最终都体现在 自动 化工具 的脚本语言 中 或者 复制到手工和 自动 化测试脚 本中。这意味着每个和 自动化测 试开发或执行有关的人 必须对测试环境和 自动化工具的编程 语言 非常精通 。 ●优点与缺点 1 0 8 — — 一 C o m p o Te ch C h in a /2 0 0 6 .6 1) 优点 : ①在应用程序开发 的同时就可 以同步建立测 试脚本 而且 当应用功能 变动 时 只需要修 改业务功能部分 的脚本 ;②利用模型化 的设计 ,避免重复 的脚本 ,减少建立 或维 护脚本 的成本 ;③测试输入数 据 验证数据 和预期的测 试结果与脚本分开 存放在 另外 的数据 文件里 利于测试人 员修 改和维护;④透过 判断功能回传值是 ”True “或 ”False” 可 作锚误处理 增加 了测试脚本 的健壮 性:⑤自动化测试开 发 人员创建数据 驱动 的测试 过程 测试 员创建测试数据 :⑥ 在 测试 的过程 中收集 测试结果 ,并在输入数据 的语境 中表示 测试 结果 ,这样可 以简 化手 工结 果分 析。 2 ) 缺点 : ①对 自动 化测试工具里 的脚本语言 必须非 常精通:②每个脚本都会对 应多个数据文件 ,这些数据文件 需要根 据脚本 的功 能类 别存放在 各 自的 目录 中 ,增加 了使 用的复 杂性 :③测 试人 员除 了需 要根据 具体测 试数据维 护 相应 的测试计 划 ,还要将 这些数 据 写入 各个需 求不 同的数 据文件 中;④在编辑数据 文件时 必须 注意测试脚本所要求 的传输格式 ,否则会 在处理脚本时产生错误 。如 由专 门的技 术人 员对其进 行维 护 ,依 赖于 数据驱动 脚本 的 自动 化测试 框架实现起来更简单 、快捷 。但是 维护工 作困难 而且还 需要保持这种数据 驱动的模式 这样 即便长 时间的维持也 会导 致失败 。 3 .关蕾字驱动的 自动化喇试 关键 字 驱 动 的 自动 化 测 试 (也 称 为表 驱动 测 试 自动 化 ),是 数据 驱动 自动化 测试的变种 ,可支持 由不 同序列或 多个 不 同路径组 成的 测试 。它是一 种独 立干应 用程 序的 自 动化框架 ,在处理 自动化测试 的同时也要 适合手工测试 。关 键字 驱动 的 自动 化测试 框 架建立在 数据 驱动手 段之 上 表 中包含指令 (关键词 ),而不只是数据 。这些测试被开发成使 用关键字 的数据表 它们独立于执行测试 的 自动化 工具 。关 键字 驱动 的 自动 化测试 是对 数据驱 动 的自动化 测试 的有效 改进 和补 充。 关键 字驱动 的 自动 化测试 的整个过程所包含 的功能都是 由关键字驱动 的 ,关键字控制了整个测试过程 。下面以 “Post a Paym ent”为例 ,说 明这种 自动化测试 方法是如何运作的 (表 1 )。 维普资讯 http://www.cqvip.com 基 础 设 计 表 1 :一个简单的测试表记录 C OlJU M N 1 C OL U 2 C O L UMN 3 C O L UM N 4 C O LU MN 5 K ey — Word F ield/Screen Input/V erifi cation C om m ent P ass/F ail N am e D ata S t ar t T e s t : S c r e en M a in M e nu V e r if y S ta r t in g P o in t E n te r : S e l ec t io n 3 S e le c t P a ym e nt O p t io n A c t io n : P r e s s — K e y F 4 A c c e s s Pa y m e n t S c re e n V er if y : S c re e n P ay m e n t P o s t i ng V e r if y S c r e e n A c c e ss e d E n t er : P a ym e n t Am o u n t 1 2 5 .8 7 E n te r P ay m e n t D a t a P a ym e n t m et h o d C h e c k A c t iO ff : P r e s s K ey F 9 Pr o c e s s P a ym en t V er if v : S c r e e n P a ym e n t S c r e e n V e r i f y S c r e e n R em a i n s V e t i f y D a ta : P a ym en t Am o un t $ 】2 5.8 7 Ve r i f y up d a t ed d a ta Current Bal ance $1,309 .77 S ta t u s M e s sa g e P a ym e n t P o s t e d A c t io n : P r e s S K e y F 1 2 Re ta in to M a in M e n u V e r if y : S c re e n M a in M e n u Ve r i f y re tu r n to M en u 上表的 !里 的每一个关键字都与一个应用脚本 有 关.而其他栏标识的是该脚本所要传入的参数。事 实上 .按 照这个表格里所 描述 的测试用例 .测试人员也可 以手工实行 这 个测试用例 。 图 1 以表 1 所描述 的测试用例 为例 .说 明了整个 关键字 驱动的 自动化测试 的运作机制 : 1) 测试人员会以 Excel表格 建立如表 1 所示的测试数据 文件 如 KeyW ord—W eb xls; 2 ) 会有一个驱动测试 脚本启动整个测试的进行 ,包含 一 些初始化的工作 .如 D rive r脚本 ; 3) Cont rolle r脚本包含负责解析 整个测试数据文件的关 键字 .以便决定运 行哪一个应 用脚本 4) 应用脚本 实际执行每个 测试动作 .并使用表 1中其他 栏里的参数 执行完后将结果回传给 Controller脚本 当C on— troller脚本执行到最后一行 整个 测试 用例结束执行。 需要注意 的是 .虽然这种 自动化测试方法同时适合手工 和 自动执 行 .但并不意味着只要应 用程序准备好可 以执行 . 这些 测试就能 自动地执行。表 1 中的记录很容易被 测试人员 理解 和执行 .但是 ,除非我们提供给它 自动化框架不知道 记录 中对象的任 何信息。 优劣分析 关键字驱动 的 自动化测试框架是 一种截 然不 同的思想 , 它把传统测试 脚本 中变化的与不变的东西进行 了分离 ,这种 分离使得分工更 明确 ,并且避免了它们相互之间的影响。 这 种模型 的开 发和实现与传统的 测试 流程相 比可能是困难的 . 最耗时的 .因为 .我们正在努力地将我们 的测试和 自动化工 具 以及应用程序本 身的变化 完全 隔离开来。 为了实现这个 目 标 .最重要的是要增强 自动化工具所提供的组件功能 ,例如 2 0 0 6 .B ,电子 与电脑 一 1 09 维普资讯 http://www.cqvip.com 基础设计 - - -一 t ▲1'I now ledqeBase 错误纠正 避免 和数据 同步。但是这样的投资是一次性的.一 旦开发结束并投入使用 ,它给我们带来的效益是 巨大的 ,是 自动化测试框架 中最容易维护和使用的 ,而且可 以反复运用 于各种应用中 .长期发挥作 用。 另外 ,现在 已经 有一些 符合需 求的商 业化 产品可供 使 用 ,减少 了实现这种 框架 的困难 。利用 关键宇 驱动的 自动 化 测试框架 .测试人 员不 需要录制 测试脚 本 .而是设计 测 试脚 本。 4 .混合的自动化测试框架 结合 以上几种 自动 化测试 框架 的比较 ,目前最 为成功的 自动化测试框架应是综台使 用数据驱动和关键字驱动的 自动 化测试框架 :以数据驱动的脚本作为输入 .通过关键宇驱动 框架的处理得到测试结果 完成 自动化测试过程。这样可 以 使数据驱动的脚本利用 关键字驱动框架通 常所提供 的库和工 具。这些框架工具可 以使数据驱动的脚本更为紧凑 .而且也 不容 易失败 。 关键宇驱动的自动化测试框架模型 下面将介绍一种以关键宇驱动 自动化测试框架思想为指 导 的 自动化 测试 实现 方案~一 关键字 驱动 的 自动 化测试模 型 .它是由 SA S Institute 的 C arl Nagle 开发 的。图 2 描述了该 测试 模型 的结构。 高 层测试 寰 中层 测 试衰 中层 测 试寰 底层测试寰 底层测试表 底层 测试 寰 高 层驱动 矗 c镛 环驱动 ) 桉 中层驱动嚣 (蛆装驱 动 ) 低 层驱动 嚣 (步l乖驱动 ) 脚车 组件函数库 H 应用映射寰 圈2 :关键字驱动的自动化测试模型 1 1 0 一 C o m p o 'fe c h C h in a /2 0 0 0 .6 这个模型 主要 由核心数据驱动 引擎 组件 函数 支持库 和应 用映射表 组成 。 自动化测试 首先由初始脚本 开始执行 . 这个脚本把高层测试表传递给高层驱动器 .高层驱动器在处 理这 些表 的过程 中 ,遇到 中层测试表 后就调用 中层驱 动器 , 中层驱动器处理 中层表 时也作类似的处理 。当低层驱动器 处 理低层表时 ,它尝试着使应用与测试保持 同步。当低层驱动 器遇到对某一个组件的低层关键字组件时 ,它判断这个组件 的类型并调用相应 的组件 函数模块来处理这个指令操作。所 有这些元素都要依靠 映射表 中的信息 ,它是 自动化测试模型 和被测应 用程序的桥梁 。 ●应用映射表 应用映射表是 自动 化测试模型 中最关键的组件之一。在 进行测试设计之前 .测试人 员首先对应用 中的每一个 对象定 义一套命名规范 .并利用映射表把这些名字和 自动化工具识 别的对象 名联系起来 .使工具能准确地定位和操纵对象。我 们的测试脚本只需进行单点维护。在上面的例子中 .如果按 钮的名字或显示文字发生 了变化 .那么脚本中所有涉及这些 名字 的地方都要进行修改 。如果我们建立这样一个映射 .用 逻辑对象 SavePushButton 表示真实的确认保存 的按钮对象 ,那 么这个例子就可以写成 “c lick SavePushButton 。当按钮的名 字或显示文字改变 时.只需要快速修改一下映射表 中对应的 识别方法就可 以了 .而不用修改脚本 (表 2 ) ●组件函数 组件 函数是实现用户对界面对象操作指令 的函数 .~个 组件对象的类型对应~个组件 函数库 。例如对于一个文本框 对象 .测试人员可能会对它执行多种操作 :输入文本 验证 文本框的值 验证文本框的某些属性等 .实现这些操作行为 的函数就被放在文本框的组件函数库 中。一般 的测试工具都 提供 了这样的函数 .而我们可 以在其 中加入额外的代码来检 测错误 .纠正错 误和帮助同步 .这类代码是实现无人职守的 自动化测试所 必需的。 组件 函数相 当于在应用 和自动化工具之间提供了~个 隔 离层 ,如果没有 这个隔离层 .自动化工具本 身的改变或提高 就会 影响已有的脚本 .但 是有 了组件 函数 .我们 可以增加一 对修补 代码来适应 这些变化 ,转移对测试 的破坏 。组件 函数 关键 宇和它们的参数 构成 自动 化模型最低层 的词 库 ,了解 了 维普资讯 http://www.cqvip.com 基 础 设 计 表2 ;按钮对象的映射 命名 识别方法 S av e l’u s hB u t ton “T y p e= f u shB u t to n :N am e =Y e s :V j s m Ll re x t-=Ye s ” 低层词库 和映射 表 ,就可 以建立在 它们基础 之上 的测试表 ●测试表和核心数据驱动引擎 测试 表 分低 层 中层 和高 层 。低层 测 试 表指 定 了测 试 的每 一步 指令 的细 节 .这 些指 令 都 是直 接 作 用在 界 面 对 象 上 的 ,是 无法 再 细分 的 指令 。 中层测 试 表 把低 层测 试 表 组 装起 来执 行 更 多有 用的任 务 。同 一个 低 层表 可 以 用 于 多个 中层表 .所 以我 们应 该 开发 尽可 能少 的低 层表 , 然 后 把 它们 按 照不 同的 目的组 装起 来 ,实现 最 大 的重 用 性 。同样 的 ,高 层 测 试表 把 中层 表 组 装起 来 ,形 成 一个 测 试 循环 ,每 个循 环 都是 完 整 的 ,可 以定 制 不 同类 型和 数 量 的 测试 。 例如打开 网页、登录 、关闭网页这 3 个动作可 以用 3 个 低层表来表示 每个表定义 了实现相应动作的具体 步骤 ,所 以低层表又叫做步骤表 。低层表 中使用 了映射表中定义 的对 象名 和由组件函数定义的低层 关键 字词 库。表 3 是一个实 现登录动作的低层 表。而这个表示 登录”的低层 表关键宇 很可能会出现 在 ”验证错误登录”、”验证正确登录 、 ”验证 空 白登录”等中层 表中.这些 中层表台起来构成了 “验证权 限 “高层 表。 表 3 :表登景 操作 后 的执行 。最后要说 明的是这样一种层次结构并不是固定不 变的 ,可 以根据实际应用情况进行调 整。 ●支持库 支持库是一些程序和工具 ,例 如文件处理 字符 串处理 缓 冲处理 数据库访问、日志记录工具等 .它们 为自动化模 型提供最基础的 支持 。 结 语 自动化测试框架无疑是企业实施 自动化测试的一个必然 的发展方向 .它对于产生成功 的测试 自动化的适当基础是重 要 的。为 了选择一个合适的自动化测试框架 ,企 业需要综合 考虑维护成本、测试数据 可测试性 、测试人员的技能等诸 多因素。回顾 自动化测试 发展的过程 ,以往的经验告诉我们 无法依靠简单的录制 /回放的测试 方法或传统的测试脚本工 具来完成测试 .因为录制产 生的脚本维护困难 ,而且 生存期 很短 。因此 .为了减少实现和维护 的成本 ,使测试人 员可以 把精 力集 中在应用程序的测试 用例设计上 ,关键 宇驱动 自动 窗 口 H : 动作 参 数 l o g in [ a g e U SO F ld F i e 1d 1n p u t ’’1e x L “M v 【js r lD ” I_o ff in Pa g e Pa s sw o r d F ie 1d 1 n p u tT e x t “M v P a s SW O r d ” L o g in P a g e Su b m i Ll3u t to n C lic k 对应于 以上这 3 个测试表 .核心数据驱动引擎相应地分 成 了高层驱动器、中层 驱动器和低层驱动器。高层驱动器读 取高层表的每个记 录 如果遇到 中间表关键字 .就把这个表 传递给 中层驱动器 .依 此类推 .直至到达低层表 低层 驱动 器调用关键字词库 中的低层 指令所对应 的组件函数来完成最 化框架加上数据驱动的脚本是现 阶段 自动化测试实践中最好 的解决方法。硼鼯砭 2 O O 6 .6 /电子与 电脑 — — 1 11 维普资讯 http://www.cqvip.com
还剩4页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

liujiayue

贡献于2017-01-06

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf