Winrunner 的应用实践


WINRUNNER 应用实践教程 四川大学锦城学院 作者: 李昕昕 1 基础知识导学 ............................................................................................................................................ 1 1.1 自动化测试的好处 .................................................................................................................... 1 1.2 WinRunner 的测试模式 ........................................................................................................... 2 1.3 WinRunner 的测试过程 ........................................................................................................... 3 2 样本软件简介 ............................................................................................................................................ 5 3 安装 WinRUnner ...................................................................................................................................... 6 3.1 安装类型 ........................................................................................................................................ 6 3.2 序列号类型 ................................................................................................................................... 7 4 如何使用 Winrunner ............................................................................................................................... 9 4.1 创建 GUI map .............................................................................................................................. 9 4.1.1 启动 WinRunner ............................................................................................................ 9 4.1.2 如何识别 GUI 对象 ................................................................................................... 10 4.1.3 查看 GUI map .............................................................................................................. 10 4.1.4 让 winrunner 学习 GUI ............................................................................................. 13 4.1.5 保存 GUI Map .............................................................................................................. 17 4.2 创建测试 ...................................................................................................................................... 18 4.2.1 同步点 ............................................................................................................................. 18 4.2.2 GUI 对象检查点 ......................................................................................................... 22 4.2.3 文本检查点 ................................................................................................................... 28 4.2.4 图像检查点 ................................................................................................................... 32 4.3 编辑测试 ...................................................................................................................................... 35 4.3.1 使用 TSL 编辑测试脚本.......................................................................................... 35 4.3.2 建立数据驱动测试脚本 ........................................................................................... 40 4.3.3 批次测试 ........................................................................................................................ 49 软件自动化测试工具的应用实践 1 WINRUNNER 的应用实践 1.了解 Winrunner 的工作原理及工作流程 2.掌握 Winrunner 的实际操作过程及步骤 3.掌握如何使用 Winrunner 对基于图形用户化界面的软件进行测试 1 基础知识导学 1.1 自动化测试的好处 执行过手工测试的人都很清楚,手工测试非常无聊而且繁琐,还有以下一些局限性: ² 通过手工测试无法做到覆盖所有代码路径。 ² 简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重 复性,工作量往往较大。 ² 许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉 到。 ² 进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场 合时,很难通过手工测试来进行。 ² 进行系统可靠性测试时,需要模拟系统运行 10 年、几十年,以验证系统能否稳 定运行,这也是手工测试无法模拟的。 ² 如果有大量(几千)的测试用例,需要在短时间内(1 天)完成,手工测试几 乎不可能做到。 而使用 WinRunner 进行测试可以加速整个测试的过程,并且在构建新版本后,还可 以重复使用之前录制的测试脚本进行回归测试。相比较手工测试而言,使用 WinRunner 进行测试有以下一些优点,如表 1-1 所示: 软件自动化测试工具的应用实践 2 表 1-1 使用 WINRUNNER 进行测试的好处 1.2 WINRUNNER 的测试模式 当你在软件操作中点击 GUI(图形用户界面)对象时,WR 会用一种类 C的测试 脚本语言(TSL)生成一个测试脚本,记录你的所有操作对象、操作方法及操作过程。 WR 包括两种录制测试的模式:环境判断模式(Context Sensitive mode)和模拟模式 (Analog mode)。 1. 环境判断模式: 这种模式根据你选取的 GUI 对象(如窗体、清单、按钮等)把你对软件的操 作动作录制下来,并忽略这些对象在屏幕上的物理位置。每一次你对被测软件 进行操作,测试脚本中的脚本语言会描述你选取的对象和你的操作动作。当你 进行录制时,WR 会对你选取的每个对象做唯一描述并写入 GUI map(映射)中。 GUI map 和测试脚本被分开保存维护。当软件用户界面发生变化时,你只需更 新 GUI map。这样一来,环境感应模式的测试脚本将非常容易地被重复使用。 执行测试时,只需要回放测试脚本, WR 会从 GUI map 中读取对象描述,并 在被测软件中查找符合这些描述的对象并对其进行操作。 *************************************************************************** 注意:WR 可以在同一个窗体中找到这些对象,即使它们的位置发生过变化。 *************************************************************************** 2. 模拟模式: 模拟模式记录鼠标点击,键盘输入和鼠标在二维平面上(x 轴和 y轴)的精确 运动轨迹。执行测试时,WR 让鼠标根据轨迹运动。这种模式对于那些需要追 踪鼠标运动的测试非常有用,例如画图软件。 软件自动化测试工具的应用实践 3 1.3 WINRUNNER 的测试过程 WinRunner 的测试过程如图 1-1 所示,可分为:创建 GUI map,创建测试,调试测试, 执行测试,查看测试结果,报告发现的错误,六个步骤。 图 1-1 WINRUNNER 测试过程图 1. 创建 GUI map (Create GUI Map) 使用 Rapid Test Script wizard(快速测试脚本巫师)回顾软件用户界面,并系统 地把每个 GUI对象的描述添加到 GUI map 中。你也可以在录制测试的时候,通 过点击对象把对单个对象的描述添加到 GUI map 中。 *************************************************************************** 注意:当使用 GUI MAP PER TEST 模式,你可以跳过这一步骤。具体内容在本书 4.1 创建 GUI MAP 中介绍。 *************************************************************************** 2. 创建测试 (Create Tests) 你可以通过录制、编程或两者同用的方式创建测试脚本。Winrunner 有两种录制 模式:Context Sensitive 和 Analog。录制完成后,WR 会把它自动转化为测试脚 本语言(TSL),并保存为测试脚本。对于已录制好的测试脚本后,你可以运 用 TSL 来修改它,使脚本更加聪明,能 够 实 现某些特定的功能。例 如识别错误、 查看某短文字是否出现在界面中等等 3. 调试测试 (Debug Tests) 脚本也是程序,需要纠错,来保证测试任务顺利完成。你可以先在调试模式 (Debug mode)下运行脚本,通过设置断点(Breakpoint),监控变量来排查脚本 中的语法错误和逻辑错误。调试结果被保存在 Debug folder 中,一旦调试结束 就可以删除。 软件自动化测试工具的应用实践 4 4. 执行测试 (Run Tests) 你可以在 Verify 模式下运行脚本,运行过程中程序记录各种错误和异常并将其 存入测试结果。你可以一次运行一个脚本,或批量运行多个测试脚本。普通模 式下,当测试任务执行错误时,系统会提示是否继续运行。在批量模式下,任 何错误都不会打断测试任务继续进行。因此,可以在无人看守的情况下运行脚 本,例如在深夜运行它们。 5. 查看测试结果 (View Results) 当测试任务结束后,系统会自动生成测试结果报告,测试结果报告显示了每个 测试脚本运行情况,并记录了运行期间的发生的主要事情,例如检查点检测情 况、错误信息等。当测试点测试出不匹配现象,测试结果报告中会显示出预期 结果和实际结果。 6. 报告发现的错误 (Report Defects) 如果由于测试中发现错误而造成测试运行失败,你可以直接从 Test Results 窗口 报告有关错误的信息。这些信息通过 EMAIL 发送给测试经理(QA Manager), 用来跟踪这个错误直到被修复。 软件自动化测试工具的应用实践 5 2 样本软件简介 本书中的所有示例都使用 WR 附带的 Flight Reservation(航班预订)软件。 ² 开始样本软件 该样本软件位于:开始>程序>WinRunner>Sample Application。 ² 样本软件的版本 该程序有 5 个版本:Flight 4A,Flight 4B,Mercury Tours site,Visual Basic Flight 1A 和 Visual Basic Flight 1B。 其中,Flight 4A 和 Flight4B 是通用版本。Flight 4A这个版本是正常的软件,Flight 4B 有一些故意加入的错误。本书的部分章节将会使用这两个版本分别进行测 试来对比测试结果。 Mercury Tours site 是基于 WEB 的样本软件。 Visual Basic Flight 1A 和Visual Basic Flight 1B 则是在WR中安装了Visual Basic 支持后才能使用。 ² 登陆样本软件 使用任意用户名(长度必须至少 4 个字符)登陆 Flight Reservation(航班预订) 软件,密码为:Mercury。 软件自动化测试工具的应用实践 6 3 安装 WINRUNNER WinRunner 的安装过程比较简单,只需按照安装提示一步一步执行即可。因此,此 处不对 WinRunner 的具体安装过程进行介绍,只对其中一些选项的意义进行描述,方便 用户在安装时对照选择。 3.1 安装类型 ² Standalone Installation 在此类型中,你将运行完整的安装程序,并且可以选择需要将哪些安装项装到本地 电脑的硬盘中。 ² Network Installation 安装 WinRunner 文件,并且允许其他用户运行一种简化的工作站安装并且可以在他 们的机器上运行安装在你的网络计算机上的 WinRunner 软件。 *************************************************************************** 注意: 1. 默认情况下,选择 NETWORK INSTALLATION 进行安装后,不允许你直接从安 装 WINRUNNER 的机器上运行。如果需要直接运行则应选择安装“NETWORK INSTALLATION AND ADD SHORTCUTS TO YOUR START MENU” 2. 如果选择了 NETWORK INSTALLATION 进行安装,则不能安装 JAVA 插件。如果 要安装 JAVA 插件,则必须选择 STANDALONE INSTALLATION! *************************************************************************** ² Network Installation and add shortcuts to your Start menu 一种基于网络安装的简化安装。在此类型中,只有一少部分的配置文件和快捷键图 标会被安装到你的电脑中。因此,如果工作在此安装类型下,必须确保网络中提供了网 络安装类型的主机。Winrunner 软件实际是位于网络中安装了 network installation 的主机 中,你可以通过你主机中的“Start”菜单访问它。 软件自动化测试工具的应用实践 7 图 3-1 WINRUNNER 安装类型选择图 3.2 序列号类型 ² Seat License 序列号只针对安装 winrunner 的计算机使用。 ² Concurrent License 由一个授权的序列号服务器控制 WinRunner 的并发用户数。每一个序列号有权组织 一个额外的并发用户。 *************************************************************************** 注意:如果选择安装“CONCURRENT LICENSE”,你或者系统管理员必须在网 络上安装一个来自“MERCURY FUNCTIONAL TESTING CONCURRENT LICENSE SERVER CD-ROM”中的序列号服务器! *************************************************************************** 软件自动化测试工具的应用实践 8 图 3-2 序列号类型选择图 软件自动化测试工具的应用实践 9 4 如何使用 WINRUNNER 下面将按照 WinRunner 执行过程中的 6 个阶段来犯别介绍如何使用 WinRunner 对 基于图形用户化界面的软件进行测试。 4.1 创建 GUI MAP 一般的 Windows 应用程序,通常是由窗口、按钮、菜单等组成,这些在 WinRunner 中通称为 GUI 对象。WR 会通过学习这些 GUI 对象的属性来识别 GUI 对象。WR 把学 来的这些 GUI 对象的属性保存在 GUI Map 文件中(GUI Map 是一个或多个 GUI Map 文 件的总和) 。当执行测试时,WR 使用 GUI Map 定位对象:先从 GUI map 读取有关对 象的描述,然后寻找有相同属性的对象。 4.1.1 启动 WINRUNNER 点击【开始】>【程序】>【WinRunner】>【WinRunner】 启动 WR。 图 4-1 WINRUNNER ADD-INS 窗口 *************************************************************************** 注意:由于上述部分插件可能导致 WR 中部分功能无法使用,所以请先清空所 有选择!!如果使用过程中需要使用,可以点击【FILES】->【TEST PROPERITES】 ->【ADD-INS】选择所需使用的插件。 *************************************************************************** 软件自动化测试工具的应用实践 10 4.1.2 如何识别 GUI 对象 1. 脚本中如何识别 GUI 对象 在测试脚本中,WR 使用逻辑名(Logic name) 定义对象:如“Print”定义 Print dialog box,“OK” 定义OK button。对象的逻辑名由它的类(Class)决定。多数情况下,逻辑名 是对象的卷标(Label)。逻辑名实际上是对象物理描述(物理描述是 包含一个对象物理 属性的清单)的简称。逻辑名和物理描述一起作用,确保每个 GUI 对象有自身唯一的 标识。 2. 物理描述 WR 使用物理描述识别被测软件的 GUI 对象。物理描述包括:物理属性清单和每个 属性的值。 GUI map 按以下格式记录这些属性和值的配对: { 属性 1:值 1,属性 2:值 2,属性 3:值 3,…… }例如,对“Open”window 的描述包含两个属性: Class 和 Label。其 中 Class 属性的值是“window”, Label 属性的值是“Open”,该对象的物理描述为: { class:window, label:Open }。 3. 设定窗体环境 WR 总是在对象出现的窗体的环境中学到该对象的物理描述。当用户录制脚本时, 一旦当前窗体改变并且有 GUI 对象被操作,WR 会自动在测试脚本中插入一条 set_window 语句,之后所有的对象就在那个窗体环境中被识别。例如: 如果用户手工编写脚本,则需要用户写入 set_window 语句以对应当前窗体的变化。 4.1.3 查看 GUI MAP 1. 查看 GUI 对象的属性 WR 提供一个叫 GUI Spy 的工具,可以用来查看某个 GUI 对象有哪些属性以及 WR 是以哪些属性来识别此 GUI 对象。 *************************************************************************** 注意:WR 只会用最少但可以组合成唯一的一组属性来识别 GUI 对象。 *************************************************************************** 操作演示 1) 开启样本软件,显示登录窗口 Set_window(“Print”,12); Button_press(“OK”); 软件自动化测试工具的应用实践 11 图 4-2 登录窗口 2) 运行 WinRunner,选择【File】->【New】,新建测试。 3) 执行【Tools】->【GUI Spy】,出现如图 4-3 的界面,勾选【Hide WinRunner】: 图 4-3 4) 按下 SPY 按钮(手形状),移动鼠标焦点,移动至登录窗口的“OK”按钮。(注意: 此间鼠标焦点移动时,4-3 图形中将出现该焦点所捕捉的属性。)按“LeftCtrl+F3” 组合。GUI SPY 窗口中出现如图 4-4 所示。 软件自动化测试工具的应用实践 12 图 4-4 5) 以此类推,可以查看所有的对象属性或窗口属性。 2. 查看 GUI Map 的内容 可以通过 GUI Map Editor 工具来查看 GUI Map 的内容。可以看到:GUI Map 文件 包含了 GUI 对象的逻辑名和物理描述。当 WR 识别完 GUI 对象后,会将 GUI 对象的逻 辑名和物理描述存储在 GUI Map File 中。 3. GUI Map 工作模式 WR 提供两种 GUI Map 的工作模式:GUI Map File Per Test 和 Global GUI Map File。 因此,用户在创建测试前应先确定要使用哪种 GUI Map 模式。 ² GUI Map File Per Test:每次新建测试就自动创建一个 GUI Map File。WR 会在用 户保存测试、打开测试时,自动保存和自动加载 GUI Map File。 ² Global GUI Map File:多个测试脚本共享同一个 GUI Map File,用户要手工保存和 加载使用的 GUI Map File。这是 WR 的默认模式。 软件自动化测试工具的应用实践 13 表 4-1 两种模式对比表 GUI Map File Per Test Global GUI Map File 优点 1.每个测试都有自带的GUI Map File 2.使用方便,保存和加载GUI Map File都是自动完成 3.作为单次测试,容易维护和更新( 就是重新录一次) 1.如果对象或窗体的属性改变, 只需要修改在GUI Map File里 对应的属性 2.容易维护和更新(无需重新录 制) 缺点 一旦软件GUI变更,每个测试的GUI Map File都要重新录制 要记住保存和加载使用的GUI Map File 建议 如果用户对WR没有经验或被测软件 的GUI已经固定,可以采用这种模式 。 如果用户是有经验的WR使用者 或被测软件的GUI经常变化,最 好使用这种模式。 4. 设定要使用的 GUI Map File 模式: WR 默认值是使用 Global GUI Map File。 要设定 GUI Map 的工作模式,点选【Tools】->【General Options】->【General】, 设定你要的模式。重新设定 GUI Map File 模式后,必须重新启动 WR 才能让设定生效。 *************************************************************************** 注意:从 GUI MAP FILE PER TEST 模式转换到 GLOBAL GUI MAP FILE 模式, 用户必须把和每个测试对应的GUI MAP文件合并成被一组测试使用的 共享文件。 用户可通过 GUI MAP FILE MERGE TOOL 进行合并。 *************************************************************************** WR 最有效率的用法是把测试分组,一组中的测试(任务)都测试同一窗体上的 GUI 对象。这样这些任务就可以共享 GUI Map file。当 GUI 发生变化,只需要修改一个 GUI Map file,就可以让同组中的任务都正常工作。使用这种模式,最好是使用 RapidTest Script Wizard 在录制脚本前让 WR 一次性的学习被测软件中所有的 GUI 对象。如果 GUI 发生变化,再用 GUI Map Editor 来单独学习发生变化的窗体或对象,并以此更新 GUI Map。 4.1.4 让 WINRUNNER 学习 GUI 在 Global GUI Map File 模式,WR 可以通过以下三种方式学习被测软件的 GUI: ² 使用 RapidTest Script Wizard 学习被测软件每个窗体中所有 GUI 对象的属性。 ² 使用 GUI Map Editor 学习单个 GUI 对象、窗体或某个窗体中所有 GUI 对象的 属性。如果软件开发过程中 GUI 改变了,用户可以使用这种方式更新 GUI Map。 ² 通过录制脚本的方式学习被测软件中被录制 (被操作)的那部分的所有 GUI 对象的属性。 1. 使用 RapidTest Script Wizard 学习 GUI 软件自动化测试工具的应用实践 14 在录制脚本前使用 RapidTest Script wizard 一次性学习被测软件所有的 GUI 对象, 将生成并保存 GUI map 文件。以后在脚本开头部分使用 GUI_load 语句就可以加载这个 GUI map 文件。 *************************************************************************** 注意: 1. RAPIDTEST SCRIPT WIZARD 只能在 GLOBAL GUI MAP FILE 模式下使用。 2. 当 WINRUNNER 加载了 TERMINAL EMULATOR、WEB TEST、JAVA ADD-INS 时,RAPIDTEST SCRIPT WIZARD 也无法使用。 *************************************************************************** 操作演示 1) 登录样本软件 2) 运行 WinRunner 3) 开启 RapidTest Script wizard a) 点击【Insert】->【RapidTest Script wizard】将打开该向导的欢迎窗口。 图 4-5 RAPIDTEST SCRIPT WIZARD 欢迎窗口 b) 点击手指铵钮,移动鼠标到“Flight Reservation”窗口 (注意:鼠标形状是手指 形状和选中窗口的边框是处于闪烁状态) c) 点击“next”,清除所有设定 软件自动化测试工具的应用实践 15 图 4-6 d) 接受 Navigation Controls 默认值(此窗口主要告诉 WR 哪些 GUI 对象会开启一个 新窗口,默认值为[…]与[>>]) 图 4-7 e) 按“next”进下一步并选中“Express”,单 击“ Learn”按钮,这时“Flight Reservation” 窗口将开始工作(不断闪烁),记录所有 UI 的状态及相关信息。(同时左上角将 有个信息框指示工作状态)当窗口停止闪烁时,出现如下提示如图 4-8,选中“NO “进行下一步; 软件自动化测试工具的应用实践 16 图 4-8 f) 出现保存 GUI Map 的路径,如图 4-9,设定相应的保存路径后,点击 Next; 图 4-9 g) 点击 OK,大功告成。 2. 使用 GUI Map Editor 学习 GUI 操作演示 1) 点选【Tools】->【GUI Map Editor】打开 GUI Map 编辑器。 软件自动化测试工具的应用实践 17 2) 点击 learn 按钮:想要学习一个窗体中所有的对象,就点击窗体的标题栏,当提 示是否学习窗体中所有对象时,点击 Yes; 如果只想学习窗体,就点击窗体的 标题栏,出现提示时点击 No;如果只要学习个别对象,就左键点击这个对象(点 击鼠标右键取消)。 图 4-10 3) WR 把学到的信息放在当前 GUI map 文件中。 3. 通过录制学习 GUI WR 支持在录制脚本的同时学习 GUI 对象,并 将其保存在临时 GUI Map 中。用 户启动 WR 时,包含前一次测试内容的临时文件就被加载。要避免在新的测试中把 有价值的 GUI 信息覆盖掉,用户必须把临时 GUI Map 文件保存在一个永久的 GUI Map 文件中。 4.1.5 保存 GUI MAP 操作演示 软件自动化测试工具的应用实践 18 1) 选择【Tools】->【GUI Map Editor】,打开编辑器; 2) 选择【View】->【GUI Files】; 3) 确认文件显示在 GUI File 清单中。文件名前有一个星号(*)标识 GUI map 文件被改变了。当文件保存后,星号消失; 图 4-11 4) 在 GUI Map Editor 中,选择【File】->【Save】打开 Save GUI File 对话框; 5) 选择文件夹、文件名(或输入新文件名)。点击保存。被保存的 GUI map 文件被加 载并显示在 GUI Map Editor 里。 4.2 创建测试 4.2.1 同步点 软件自动化测试工具的应用实践 19 1. 使用同步点的时机 当你执行测试时,所测试的应用程序每次操作的相应时间并不一定,有时候快,有 时候慢,导致执行输入动作的时间也需要等待。例如以下的动作常需要花几秒钟: ² 从数据库取代数据 ² 等待一个窗口开启 ² 等待状态列为 100% ² 等待某个状态讯息出现 当遇到这类情况,WinRunner 会等待一段固定的时间,直到应用程序接受输入的动 作。这个等待时间的默认值为 10 秒。假如应用程序相应的时间超过 WinRunner 等待 的时间,则测试执行就可能会失败。 2. 未使用同步点会产生的问题 我们将通过下面这个例子来模拟出执行失败的情况: ² 录制测试脚本 1) 打开“飞机定票系统”(Flight4A),PASSWORD:mercury 2) 运行 WinRunner,并创建一个新的测试 3) 选择 context sensitive 模式开始录制脚本 4) 在“飞机预定票系统”中创建一个新的定单。选择“File>New Order” 5) 订单填写完成后,点击“Insert Order”按钮,添加订单 6) 订单添加成功后,点击“Delete Order”按钮,删除订单 7) 点击“Stop“按钮,停止录制脚本 8) 保存测试脚本为 lesson basic。 ² 变更预设等待时间 1) 选择【Tools】->【General Options】->【Run】->【Settings】; 软件自动化测试工具的应用实践 20 图 4-12 2) 修改“Timeout for checkpoints and CS statements“为 100 毫秒。 ² 执行测试脚本 1) 打开测试脚本 lesson basic; 2) 点选 Run From Top; 3) 暂停执行; 当 WinRunner 执行到点击“Delete Order“按钮时,会弹出如图 4-13 对话框.说 明由于 WinRunner 要操作的对象是 disabled,无法点选,导致执行失败。究其原 因,其实是因为我们缩短了“Timeout for checkpoints and CS statements“的值, 导致本来需要等待 1 秒才能执行完成的对象,在只运行了 10 毫秒之后就开始 执行后续的操作,从而执行失败。 软件自动化测试工具的应用实践 21 图 4-13 3. 解决方法 ² 增大预设等待时间 1) 选择【Tools】->【General Options】->【Run】->【Settings】; 2) 将“Timeout for checkpoints and CS statements“时间修改为 100000; 3) 再次执行测试脚本,测试通过。 缺点:此选项一设置,将影响到所有的测试脚本运行,并将使测试运行速度降低。 ² 设置同步点(延迟) 当同步问题发生时,在测试脚本的精确位置点插入一个同步测试点。同步测试点将 告诉 WinRunner 暂停测试,为了等待应用程序特殊的响应。这种方法是被推荐使用的。 1) 保持较短的预设等待时间; 2) 在测试脚本执行到弹出对话框图 4-13 时,选择【Pause】按钮; 3) 在图 4-14 中的黄色小箭头前插入一行; 图 4-14 4) 插入同步点; 选择【Insert】->【Synchronization Point】->【For Object/window Bitmap】, 将鼠标光标移动到“Insert Done“状态列上并点选,WinRunner 会在测试脚本 中插入一行代码如下: 这一行代码表示当 WinRunner 执行到这里时,会等待“Insert Done…”的图像出 现,等待时间为 1 秒,才会继续往下执行。为保证执行的正确性,可以将等待 时间 1 秒钟改为 10 秒钟。 5) 存储测试脚本为 lesson synpoint; 6) 执行测试脚本 lesson synpoint,测试通过。 i. 测试记录部分中的绿色条,表明同步点执行成功; obj_wait_bitmap(“Insert Done…”,”Img1”,1); 软件自动化测试工具的应用实践 22 ii. 双击绿色条,可以看到 Bitmap Imag 的信息图像 4-16。 图 4-15 图 4-16 4.2.2 GUI 对象检查点 在测试应用程序时,通常是透过检查 GUI 对象的属性,来测试被测系统的功能是 否正常。当 GUI 对象的属性值与预期的值不符是,即表明系统功能出现了问题。 在 WinRunner 中你可以使用 GUI 检查点来检验被测软件中的 GUI 对象。比如你可 以检查一个对话框在何时打开,一 个 button 是否可用等。你所要做得就是指向这个对象, 选择你想要 WR 检查的属性。你可以检查 WR 建议的属性或自己指定属性。GUI 对象和 被选定的属性保存在一个检查清单上。然后 WR 捕捉对象的当前属性值并保存起来作为 期望值。这时一个 GUI 检查点就自动被插到脚本中。在脚本中这个检查点显示为 obj_check_gui 或 win_check_gui 语句。 执行测试时,检查点就把实际值和期望值比较,如果不符合就说明检查失败;如果符 合就说明检查通过。检查结果可以在测试结果窗口看到。 1. 如何检查 GUI 对象 在 WinRunner 中可以建议 GUI 检查点(GUI Checkpoint),检查 GUI 对象的属性。例 如你可以检查: ü :输入字段的内容是否正确 软件自动化测试工具的应用实践 23 ü :Radio Button 是否被选 ü :按钮是否为可用 建立 GUI 对象检查点时,可以选择“For Single Property”对 GUI 对象的其中一个 属性进行检查;“For Object/Window”对一个 GUI 对象或窗体进行检查;“For Multiple Objects”对多个 GUI 对象或窗体进行检查。 要建立一个 GUI 对象的检查点,首先要指到要建立检查点的 GUI 对象。 ² 单击鼠标,WR 会以预设检查的属性建立检查清单(checklist),并将检查点插 入到测试脚本中。检查清单的内容记录了要 WR 检查的 GUI 对象与属性。 ² 双击鼠标,Check GUI 对话窗口会开启并显示你选取的 GUI 对象,以及此 GUI 对象可供检查的属性,你只要在 Check GUI 对话窗口上勾选你想要检查的属性, WR 就会建立检查清单,并将检查点插入到测试脚本中。 图 4-17 CHECK GUI 窗口 2. 建立 GUI 对象检查点 1) 打开被测程序 Flight4A 并登录; 2) 点击 WinRunner 工具栏上的 按钮,开始录制测试脚本; 3) 在 Flight4A 主程序界面中,选择【File】->【Open Order】,打开 Open Order 窗口; 软件自动化测试工具的应用实践 24 图 4-18 OPEN ORDER 窗口 4) 对窗口中的 check box 控件【Order No.】插入 GUI 对象检查点; a) 选择【Insert】->【GUI Checkpoint】->【For Object/window】 b) 将手形状指向 Open Order 窗口中的 Order No.如图 4-19: 图 4-19 选择需要被检查的 GUI 对象 c) 鼠标双击【Order No.】,将弹出 Check GUI 对话框,选择对对象的【State】属 性值进行检查。此时应为 OFF。 *************************************************************************** 注意:如果单击【ORDER NO.】对象的话,则 CHECK GUI 对话框不会开启, 并且 WINRUNNER 会以系统预设检查的属性作为需要检查的检查点属性,并插入检 查点。 *************************************************************************** 软件自动化测试工具的应用实践 25 图 4-20 【ORDER NO.】检查点属性列表 1 5) 选中【Order No.】的复选框,在输入框中输入 3; 6) 再为 Order No 建立一个 GUI Checkpoint; 图 4-21 【ORDER NO.】检查点属性列表 2 7) 为【Customer Name】复选框建立一个 GUI Checkpoint; 勾选【State】和【Enable】属性,其预期值分别为 OFF,OFF。 注意,此时的状态 值已变为“ON” 软件自动化测试工具的应用实践 26 8) 单击 OK,打开订单 3; 9) 停止录制; 10) 保存脚本为 lesson checkpoint_gui。 3. 执行测试脚本 1) 确保 WR 与 Flight4A 的 Flight Reservation 的主窗口都已经开启; 2) 开启 lesson checkpoint_gui 测试脚本; 3) 确认工具列上显示 verify 模式 4) 点选 Run From Top,开始执行测试; 5) 检视测试结果; 当执行结束,WR 会自动开启测试结果。你可以看到每个 end GUI checkpoint 都应该 是绿色的文字,表示检查点是通过的。对最后一个 end GUI checkpoint 点两下,会开 启 GUI Checkpoint Results 窗口,显示此检查点的测试结果。用此检查点来检查 Open Order 窗口的 Customer Name 的 Enabled 与 State 属性,以及其预期值与实际值是什 么,有没有通过检查等。 软件自动化测试工具的应用实践 27 图 4-22 GUI 检查点测试结果图 1 6) 关闭 Test Results 窗口。 4. 在另一个版本中执行测试脚本 1) 确保 WR 与 Flight4B 的 Flight Reservation 的主窗口都已经开启; 2) 开启 Lesson GUI CheckPoint 测试脚本; 3) 确认工具列上显示 verify 模式; 4) 点选 Run From Top,开始执行测试; 5) 运行测试;(在运行过程中将有一个不匹配项提示窗口弹出,按 Continue 继续。) 6) 检视测试结果; 运行结束,测试结果窗口将弹出,在 测试结果窗口将看到一个运行结束的 GUI Check 记录窗口,它的状态为红色,它的检查结果不匹配。这说明有一个或更多个的执行 检查在这对象中发生失败。如图 4-23: 软件自动化测试工具的应用实践 28 图 4-23 GUI 检查点测试结果图 2 双击红色项目可以查看失败的描述。如图 4-24。 图 4-24 未通过的检查点描述图 7) 关闭Test Results 窗口。 4.2.3 文本检查点 WR 提供读取图像或非标准 GUI 对象上的文字的功能,并手动撰写测试脚本,以检 查文字是否正确。 举例来说,你可以透过文字检查点达到: ² 验证某个值是否在一定范围内; ² 计算数值是否正确; ² 当某个指定的文字出现在画面上时,就执行某些操作。 你只要指定要读取文字的区域,对象或窗口,就可以建立文字检查点。 WR 会以 win_get_text 或是 obj_get_text 读取文字,并 将读取到的文字储存到变量中。 然后你再以手动撰写测试脚本的方式,检查变量中的文字是否为预期的文字。(当你要 验证标准的 GUI 对象如按钮,功能选单等上的文字,建议用 GUI 检查点,以省去手动 撰写测试脚本的不便)。 1. 读取文字 1) 打开被测程序 Flight4A 并登录; 2) 打开 WinRunner 主窗口,新建一个测试; 检视到的出错属性 预期结果应为“OFF” 实际结果为“ON” 软件自动化测试工具的应用实践 29 3) 确认文字识别的设定; 选取【Tools】->【General Options】开启 General Option 窗口,点选【Record】->【Text Recognition】,确认一下 Text Recognition 设定为合理的值(如不为 0),默认为 500。 图 4-25 文字识别设置图 4) 点击 WinRunner 工具栏上的 按钮,开始录制测试脚本; 5) 开启图表; 在 Flight Reservation 中点选【Analysis】->【Graphs】 6) 读取图表上的票数(根据各自系统目前已有的订票记录而定); 在 WR 点选【Insert】->【Get Text】->【From Screen Area】或点击工具列上的 按 钮,此时光标会变成十字光标,以左键拖拉的方式框住票数后,再以鼠标右键结束 操作。WR 会插入 obj_get_text 指令 Obj_get_text(“GS_Drawing”,text,246,206,263,221); #35 表示当前读到 的值为 35 软件自动化测试工具的应用实践 30 图 4-26 当前订票记录数 7) 关闭图表窗口; 8) 建立新订单,并通过 insert 按钮将其加入数据库中; *************************************************************************** 注意:可设置同步点——等待新增订单完成后,且出现 图片后,再执行下一步操作。 *************************************************************************** 9) 再开启图表,读取图表上的票数 图 4-27 新增一笔订单后的订票记录数 10) 关闭图表窗口,停止录制 11) 储存测试脚本,将测试脚本存成 lesson checkpoint_text。 2. 检查文字 下面我们需要验证新增订单后,记录是否更新。具体操作如下: 1) 在第一个 obj_get_text 指令处将 text 变量名称改成 first_total; 软件自动化测试工具的应用实践 31 2) 在第二个 obj_get_text 指令处将 text 变量名称改成 new_total; 3) 将光标移到测试脚本最后一行。加入以下脚本: 4) 储存测试脚本。 3. 调试测试脚本 下面用除错模式(debug)执行测试脚本,检查是否有语法或逻辑上的错误。如果 有错误信息,则进行修改。 1) 选取工具列上的 模式; 2) 执行测试脚本; 3) 检视测试结果。 *************************************************************************** 注意:当以 DEBUG 模式执行完脚本,执行结果窗口不会自动开启。选取【TOOLS】 ->【TEST RESULTS】,或是点选工具列上的 按钮,将会开启测试结果窗口。 *************************************************************************** 4. 在不同的版本中执行测试脚本 1) 打开 Flight4B,并登录; 2) 打开 lesson checkpoint_text 测试脚本,点选工具列上的模式为 Verify; 3) 点选 Run From Top; 4) 检视测试结果。 #检查新增订单后的票数是否加 1 if(new_total==first_total+1) tl_step(“graph total”,0,”Total is correct.”); else tl_step (“graph total”,1,”Total is incorrect.”); 软件自动化测试工具的应用实践 32 图 4-28 执行文本检查失败结果图 测试结果显示为失败,双击红色部分,弹出错误描述对话框,如上图所示。 ************************************************************************** 建议: 1. 在建立文字检查点之前先确认文字的位置。假如文字是属于标准 GUI 对象的一部分, 就用 GUI 检查点,或 是 使用【INSERT】->【FUNCTION】->【FOR OBJECT/WINDOW】 通过 EDIT_GET_TEXT 或 BUTTON_GET_TEXT 等来获取内容。假如文字是属于非标 准 GUI 对象的一部分,就用【INSERT】->【GET TEXT】->【FROM OBJECT/WINDOW】 建立文字检查点。假如文字是属于图像的一部分,就用【INSERT】->【GET TEXT】 ->【FROM SCREEN AREA】建立文字检查点。 2. 当建立文字检查点时,WR 会将当时捕捉到的文字以批注放在测试脚本的后方,假 如出现# NO TEXT WAS FOUND,表示 WR 捕捉不到应用程序上的字型,此时可能需 要用 FONT EXPERT 教 WR 识别应用程序上的字型。 ************************************************************************** 4.2.4 图像检查点 1. 检查应用程序的图像 假如你想要检查应用程序中的图像,Winrunner提供图像的检查点(bitmap checkpoint),以图素(pixel)的方式比对图像。 Winrunner提供三种方式建立图像检查点: ² 屏幕区域:以鼠标拖拉方式决定图像检查点的区域。 ² 窗口:以整个窗口作为图像检查点的区域。 软件自动化测试工具的应用实践 33 ² GUI对象:以整个GUI对象作为图像检查点的区域。 Winrunner会直接取得方框区域部分并储存成预期值,然后在测试脚本中插入 obj_check_bitmap或win_check_bitmap指令(用来判断你所建立的图像检查点是针对区 域,GUI对象还是窗口对象)。当执行测试脚本时,Winrunner会比对执行时的图像与预 期的图像,将结果显示在Test Results窗口中,如果有不一致,在Test Tesults窗口也提 供检视差异的部分。 2. 建立图像检查点 下面是以屏幕区域(screen area)方式建立图像检查点为例: 1) 登录并运行 Flight4A; 2) 打开 WinRunner,新建一个测试,点击按钮,开始录制; 3) 打开订单; 在 Flight Reservation 上选择【File】->【open Order】,选中【Order No】,输入 6 (凡系统中已经保存的订单号均可),单击 OK 按钮。 4) 打开“传真订单”对话框; 选择【File】->【Fax Order】,在 Fax number 输入 10 位数的传真号码(不需要输入 括号和下划线) 5) 移动 Fax Order 对话窗口(主要是为了保证在使用 analog 模式录制时,窗口绝对位 置的一致性); 6) 转换至 Analog Mode 继续录制; 按 F2 快捷键切换或是再一次点击工具列上的 按钮,此时录制模式将从 Context Sensitive 切换到 Analog 模式 7) 在代理商签名窗口中签下你的名字(用鼠标画出你的名字); 图 4-29 传真窗口签名图 8) 将录制模式切换回 Context Sensitive Mode; 9) 插入一个 Bitmap Checkpoint,检查签名; 选择【Insert】->【Bitmap Checkpoint】->【For Screen Area】,以鼠标拖拉,框出签 名区域,右键单击,则会在脚本中插入一行代码: obj_check_bitmap(“Fax”,”Img1”,159,202,183,178,79); 软件自动化测试工具的应用实践 34 10) 单击 Cleare Signature 按钮,清除签名; 11) 为清除签名后的签名窗口区域创建一个 Bitmap Checkpoint,步骤同 9; 12) 在 Fax Order 对话窗口单击 Cancel 按钮; 13) 停止录制; 14) 保存脚本文件,文件名存为 lesson checkpoint_ bitmap。 3. 检视预期结果 1) 确保 WR 和 Flight4A 处于开启状态,打开测试脚本 lesson checkpoint_ bitmap; 2) 选择【Run From Top】,开始执行测试; 3) 测试执行完成后,WinRunner 会自动打开测试结果窗口,通过窗口查看程序运行状 况如下图: 图 4-30 FLIGHT4A 中运行图像检查点结果图 4) 检查 WinRunner 获取到的图像; 在第一个 Caputre bitmap 事件上双击,可以开启获取到的输入了签名时的图像 图 4-31 获取到的第一个图像 在第二个 Caputre bitmap 事件上双击,可以开启获取到的清除了签名后的图像 软件自动化测试工具的应用实践 35 图 4-32 获取到的第二个图像 5) 关闭测试结果窗口。 4. 在另一个版本中执行测试脚本 1) 关闭 Flight4A; 2) 打开 Flight4B,并登录; 3) 确认目前测试脚本为 Lesson BitmapCheckPoint,选择“Run From Top”; 4) 执行时若弹出 mismatch 窗口,选择继续执行; 5) 执行结束后,从测试结果窗口检查测试结果如下图; 图 4-33 FLIGHT4B 中运行图像检查点结果图 6) 双击红色的 bitmap checkpoint,将弹出三张图片,如下: 图 4-34 实际与预期差异对比图 4.3 编辑测试 4.3.1 使用 TSL 编辑测试脚本 预期的图片形式 实际获取到的图片 形式 实际与预期的差别 软件自动化测试工具的应用实践 36 录制测试脚本时,用户对应用程序的任何操作,WR 都会产生一行一行的测试脚本, 这每一行的的测试脚本称为 TSL(Test Script Language)。除了以录制的方式产生测试 脚本外,WR 还支持手工编写测试脚本。在编写测试脚本时,,一方面,用户可以依据 需求,通过 WR 提供的可视化工具函数产生器(Function Generator),使用 TSL 内建的 许多函数。另一方面,TSL 也提供一般程序语言具备的元素,如条件判断,循环,顺序 等。目前 WinRunner 的测试脚本语言是一种类 C 的语言,几乎通用 C 语言的所有语法 格式。 1. 录制一个基本的测试脚本 1) 运行 WinRunner,并打开一个新的测试; 2) 运行 Flitht 1A,并登录; 3) 以 Context Sensitive 模式开始录制; 4) 打开定单#4,打开 Fax Order 对话框,单击 Cancel 按钮; 5) 停止录制; 6) 保存脚本文件名为 lesson editscript。 录制的脚本内容如下图: 图 4-35 软件自动化测试工具的应用实践 37 2. 使用功能产生器插入功能点 准备增加功能点,获取 Fax Order 对话框中的票数、票价及总额。 1) 录制完成的脚本的最后一行 的上方插入一空行; 2) 打开 Fax Order 对话框; 3) 选择【Insert】->【Function】->【For Object/window】使用手形状指针指向票数字段 #Tickets。如图 4-36: 图 4-36 4) 然后功能产生器将打开并建议 edit_get_text 功能。该功能读取票数字段名称并为其 分配一个变量名。默认的变量名为 Text,如图 4-37: 图 4-37 函数生成器图 5) 改变其变量名为 Ticktes。如下图,单击 Paste(粘贴)将功能增加到脚本中,如图 4-38: 图 4-38 6) 重复步骤 3-5,继续获取票价字段的值,将默认变量名 text 改为 Price; 7) 重复步骤 3-5,继续获取总额字段的值,将默认变量名 text 改为 Total; 8) 关闭 Fax Order 对话框。在 Fax Order 窗口,单击 Cancel 按钮。 button_press(“Cancel”); Text 为默认变量名, 需根据需要修改 tickets 为修改 后的变量名 软件自动化测试工具的应用实践 38 9) 保存脚本,如图 4-39。 图 4-39 插入功能点的测试脚本 3. 编辑测试脚本 根据获得的票数、单价及总额的值,通过编辑脚本,使其能够验证票数及单价的乘 积是否等于总额。 1) 在打开的 Lesson EditScript 测试脚本中,将鼠标移动到最后一个 Edit_get_text 声明(总 额)的下面,增加如下判断语句: 2) 保存脚本。 *************************************************************************** 对 TL_STEP("CHECK",0,"TOTAL PRICE IS CORRECT.");的说明: 第一个参数”CHECK”代表这个动作的名称。 第二个参数”1”表示 WR 判断此动作为失败,” 0”表示 WR 判断此动作为通过。 第三个参数”TOTAL PRICE IS CORRECT”则是 WR 针对此动作显示的信息,透过有 意义的描述,帮助你在检视最后测试结果时,更了解此动作代表的意义。 *************************************************************************** 4. 调试测试脚本 此部分即为使用函数 生成器插入的脚本. #检查票数与单价的乘积是否等于总价 if(tickets*price == total) tl_step(“check”,0,”Total price is correct!”); else tl_step(“check”,1,”Total price is incorrect!”); 软件自动化测试工具的应用实践 39 在前面的示例中我们介绍了使用 debug 模式从头执行测试脚本,对发现的问题进行 调试的方法,这里我们介绍采用断点、观察点与步命令(Step Command)相结合的方式 来调试测试脚本。 1) 选取工具列上的 模式; 2) 在你希望脚本执行到停止的地方设置断点; a) 将光标置于脚本中获取的第一个数值(票数)的代码行 b) 点击工具栏上 图标(或直接按 F9 键),添加断点 3) 对你希望观察其数值变化的变量添加观察点; a) 点击工具栏上 图标,添加观察点 b) 在弹出的对话框中输入变量名称 图 4-40 添加观察点对话框 c) 点击“OK“完成添加 添加观察点成功后即可在此 显示执行脚本时变量的值。 软件自动化测试工具的应用实践 40 图 4-41 重复 1-3 步可添加多个观察点。 4) 点击工具栏上“Run From Top“; 5) 脚本执行到断点处停止后,点击 图标(或直接按 F6 键),注意观察每个变量值 的变化情况,以及是否出现故障,随时进行修改; 6) 脚本执行到最后一行后退出调试模式,观察是否有错误,如无错误,则选择“verify “模式,再次从头执行脚本; 7) 检视测试结果。 5. 在不同的应用程序版本上运行测试脚本 1) 打开 Flitht 4B; 2) 在标准工具栏上选中 Verify 运行模式; 3) 运行测试 Lesson EditScript; 4) 检查测试结果。 可以在测试记录中双击 Tl_step,查看全部描述,如图 4-42。 图 4-42 双击 tl_step 会显示整个讯息,你可以看到 Description 显示的讯息就是你在测试脚本中 加入的字符串 4.3.2 建立数据驱动测试脚本 软件自动化测试工具的应用实践 41 鉴于上面我们所学的内容,有心的同学会发现,如果我们需要使用不同的数据对同 一个功能进行测试,只能通过不断重复录制脚本并回放执行来实现。如,需要对用户注 册页面的用户名对话框进行输入规则验证就必需在每次录制时输入不同的数据,形成不 同的测试脚本。这样既费时又费力。当然有些对前面知识掌握比较好的同学会说,我不 用反复录制脚本,只要把脚本中对应地方的值在每次执行时修改一下就可以了。这当然 不失为一种解决办法。但是我们更多的人会希望我只录制一个脚本,并且由工具自动帮 我修改每次的输入数据来完成测试……这就是数据驱动测试的作用。 当建立好测试脚本后,通过相应操作可以将测试脚本转换成数据驱动测试脚本,并 建立一个数据表提供测试所需的多组数据,这样就可以用多组不同的数据去执行测试脚 本。当执行数据驱动测试脚本时,WinRunner 会读取数据表的每一笔数据,放入被参数 化的地方,执行一次。每执行一次称为一个反复(iteration),数据表有几笔数据, WinRunner 就会执行几次反复。并在最后的测试结果中显示每一次反复的测试结果。 1. 将测试脚本转成数据驱动脚本 1) 打开 Lesson Editscript 脚本; 2) 选则【 Table】->【Data Driver Wizard】,出现数据驱动精灵的欢迎窗口,点击【Next】 到下一个画面。如图 4-43: 图 4-43 3) 建立数据表 a) 在【Use a new or existing Excel table】中输入文件名(如 Datadriver.xls),数据 精灵会自动建立一个 Excel 档案,并存储在测试脚本目录下 b) 【Assign a name to the variable】为 excel 表分配一个变量名,默认值为”table”。 在测试脚本的开头,会以数据表的变量来取代数据表的完整路径与文件名,如 软件自动化测试工具的应用实践 42 如此一来,当要用其他的数据表来取代原本的测试数据时,只要修改此变量的 的值就可以了 c) 【Add statements to create a data-driven test】此选项表示由数据驱动精灵自动将 转成数据驱动测试脚本的指令加到测试脚本中,默认为已选 d) 【Line by line】WinRunner 会显示可以做参数化的脚本,并让你决定真正要做 参数化的值为何,默认为已选 e) 点击【Next】到下一个画面。 图 4-44 4) 选择要被参数化的值 第一个显示要被参数化的测试脚本为 button_set(“Order No.”,ON);,这行脚本是 针对【Order No.】radio button,不是要作参数化的测试脚本,选择【 Do not replace this data】,点击【Next】,如图 4-45: 软件自动化测试工具的应用实践 43 图 4-45 下一步显示要参数化的测试脚本为 edit_set(“Edit”, “3”);,这行脚本是在【Order No.】字段中输入 3,就是我们要做参数化的脚本,此时可以看到在【Argument to be replaced】字段中显示要被参数化的资料为 3。 在【Replace the selected value with data from:】下选取【A new column】,并在 字段中输入 Order_Num,则数据驱动精灵会在 datadriver.xls 中新增一栏 Order_Num 字段,且第一笔数据为被参数化的资料。点击【Next】。如图 4-46: 图 4-46 5) 结束数据驱动精灵,测试脚本被转为数据驱动脚本并显示数据表。 软件自动化测试工具的应用实践 44 图 4-47 选中【Show data table now】,点击【Finish】,出现生成的数据表。可以看 见第一笔资料为 3。如图 4-48: 图 4-48 自动生成的数据表 查看最终生成的数据驱动脚本,如图 4-49: 软件自动化测试工具的应用实践 45 图 4-49 2. 将数据加入数据表 1) 开启数据表,如果数据表已关闭,可以通过【Tools】->【Data Table】打开; 2) 向数据表中加入数据,分别是 1,6,8,10。(凡已添加进数据库的订单编号 均可)如图 4-50: 软件自动化测试工具的应用实践 46 图 4-50 3) 存储数据表; 4) 存储测试脚本; 5) 执行测试脚本,发现在执行到第二个数据,即订单 1 时,弹出错误提示对话框,如 图 4-51 图 4-51 导致上图产生的原因是在程序中,传真窗口的 label 会随着开启的订单编号而变。我 们录制的时候是以 No. 3 为例录制的,而在第二次迭代时,编号变为 No. 1,所以出 现了找不到窗口的错误信息。针对上述错误,可以通过 regular expression 来解决。 3. 以 Regular Expression 调整测试脚本 虽然数据驱动精灵已经将测试脚本中需要做参数化的值以参数取代了,但并没有取 代对象 label 的值,这些固定的值可能会导致数据驱动测试脚本执行失败。要解决这个 此处说明 WR 不能找到 “Fax Order No. 3”窗体 软件自动化测试工具的应用实践 47 问题,可以通过 Regular expression 的规则,利用某些特定的字符来代表一些特定字符。 具体操作如下: 1) 点击【Tools】->【GUI Map Editor】,打开 GUI Map Editor。在 GUI Files 中选择 flight4a.gui,在【Windows/Objects】中选择 Fax Order No.3。如图 4-52: 图 4-52 2) 修改窗口属性 点击【Modify】,打开 Modify 窗口,如图 4-53: 图 4-53 3) 在【Physical Description】框中,将 label 这一行第一个双引号后面加上”!”,然后将 3 与签名的空白删除并修改为”*”。修改后结果如图 4-54: 软件自动化测试工具的应用实践 48 图 4-54 ********************************************************************* REGULAR EXPRESSION 的表达形式有两种: !(内容).* ——表示将固定内容之后的部分参数化 !.*(内容) ——表示将固定内容之前的部分参数化 ********************************************************************* 4) 如果使用 Global GUI Map File 模式要将 GUI Map File 存盘。 4. 修改脚本信息 现在这个测试脚本已经可以执行了。为了让测试结果更加有意义,下面要对脚本进 行一定的修改,使其显示的信息更有意义。 1) 修改 tl_step; 找到第一个 tl_step 脚本: 将之修改为: 找到第二个 tl_step 脚本: 将之修改为: 2) 存储测试脚本为 lesson datadriver。 5. 执行测试脚本并分析结果 1) 确认Flight 4A 和 WinRunner 已经开启,选择执行模式为 Verify; 2) 点击 Run From Top; 软件自动化测试工具的应用实践 49 *************************************************************************** 注意:执行过程中注意观察传真窗口的 LABEL,会发现数字的变化,即是之前 输入在数据表中的值。 *************************************************************************** 3) 检视测试结果。 图 4-55 4.3.3 批次测试 对于 WinRunner 而言,最重要的一个功能就是回归测试。如果每次程序更改后在新 版程序上都得一个一个单独执行测试脚本将是一件非常让人烦恼的事情。因此,我们希 望 WinRunner 能够将所有测试脚本执行一个批次测试,而 我 们 可以先做别的事情,只需 要在批次测试完成后来看测试结果即可。 下面我们就来介绍下 WinRunner 中的批次测试。 ² 批次测试脚本含有 call 指令,用来开启其他测试脚本,当被呼叫的测试脚本执 行完毕,WR 便会回到批次测试继续执行下去。 ² 在执行批次测试前,先将执行模式设置为批次执行模式,这样不会让测试由于 出错而终止。 ² 当你检视测试结果时,你可以看到整个批次测试的测试结果是通过还是失败, 也可以看到所有被批次测试呼叫的单个测试,其结果是通过或失败。 1. 建立批次测试 1) 运行 WinRunner,并加载 GUI Map File; call “d:\\WinRunner\\TestScript\\Lesson Editscript”(); 软件自动化测试工具的应用实践 50 2) 在新开启的测试脚本中输入以下脚本: *************************************************************************** 注意:测试脚本中 D:\\WINRUNNER\\TESTSCRIPT\\LESSON EDITSCRIPT 应该 被替换为你的测试脚本存放的路径。在 WR 的测试脚本中用双斜线\\代表一般档案 路径的斜线\ *************************************************************************** 3) 添加循环,使所有测试脚本能被执行 3 次; 4) 设定批次模式执行; 选择【Tools】->【General Options】->【Run】,勾选【Run in batch mode】选项 5) 储存测试脚本为 Lesson batch。 2. 在不同版本执行批次测试 1) 开启应用程序 Flight 4B; 2) 开启 WR 并加载 Lesson batch 脚本; 3) 点击 Run From Top; 4) 执行完成将弹出所有测试脚本的执行结果,双击某个脚本可以查看该脚本的具体执 行结果; 5) 清除此次批次模式执行的设定。 *************************************************************************** 建议 1:可以设定测试脚本的搜索路径,则 WR 会自动到设定的路径下搜寻被 呼叫的测试脚本,如此一来在批次测试中呼叫其他测试脚本时,就不需要输入完整 的测试脚本路径,而只要输入测试脚本名称就可以了。选择【Tools】->【General Options】->【FOLDERS】,在 SEARCH PATH FOR CALLED TESTS:中选择输入测试脚 本的搜索路径,然后按下加号,即完成设定测试脚本的搜索路径。 建议 2:请记得选择批次执行模式,否则当批次脚本执行过程中,假如有任何 错误发生,将导致测试中断。 *************************************************************************** call “d:\\WinRunner\\TestScript\\Lesson Editscript”(); call “d:\\WinRunner\\ TestScript\\Lesson DataDriver”(); for(i=0; i<3; i++) { call “d:\\WinRunner\\TestScript\\Lesson Editscript”(); call “d:\\WinRunner\\ TestScript\\Lesson DataDriver”(); }
还剩51页未读

继续阅读

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

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

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

下载pdf

pdf贡献者

tinali_86

贡献于2012-04-05

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