WinRunner工具的WinRunner工具使用的技巧
![内容].* (空格)如: !Form.* ,表示为“Form”+任何字符串!.* Form,表示为任何字符串+“Form” \\TSL 语言中,文件路径要用“\\”表示 ??有时录制脚本时发现有的控件识别不了(比如WEB页面中的标准控件识别不了),可能由以下情况造成:1. 启动WinRunner工具时没有加载相应的Addin;2. WinRunner工具在应用程序之后启动; 有的人发现建立数据库检查点时不能建立新的查询,觉得很奇怪,这是因为系统中没有安装Microsoft Query的缘故。??Office 2000 中有Microsoft Query的安装,不过缺省是不安装Microsoft Query的,只要运行Office 2000的安装程序,在更改安装中将Microsoft Query设为从本机运行,确定安装即可。 static test_Path = getvar(testname); # 得到测试用例的路径static guifile_path = test_Path & \\GUI_File.gui;# GUI Map文件名,建议将GUI Map文件保存在测试脚本的目录中,如果不是,将这里改为相应的绝对路径或相对路径GUI_unload_all(); # 清空已经加载的GUI MapGUI_load(guifile_path); # 加载GUI Map文件report_msg(test_Path); # 报告路径,调试脚本时用,正式执行可以不要。可以用WinRunner工具为所测试应用程序的GUI,功能和回归测试创建自动化脚本。
WinRunner工具的WinRunner工具的功能
用WinRuuner创建一个测试,只需点击鼠标和键盘,完成一个标准的业务操作流程,WinRunner工具自动记录你的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。你还可以直接修改测试脚本以满足各种复杂测试的需求。WinRunner工具提供这两种测试创建方式,满足测试团队中业务用户和专业技术人员的不同需求。WinRunner工具提供两种测试创建方式:一为点击鼠标和键盘,让WinRunner工具自动记录操作并生成所需的脚本代码;二为自行修改测试脚本。前者简单,后者稍为复杂,但可满足更为复杂的测试需求。 为了彻底全面地测试一个应用程序,需要使用不同类型的数据来测试。WinRunner工具的数据驱动向导( Data Driver Wizard)可以让你简单地点击几下鼠标,就可以把一个业务流程测试转化为数据驱动测试,从而反映多个用户各自独特且真实的行为。以一个订单输入的流程为例,你可能希望把订单号或客户名称作为可变栏,用多套数据进行测试。使用Data Driver Wizard,你可以选择订单号或客户名称用数据表格文件中的哪个栏目的数据替换。你可以把订单号或客户名称输入 数据表格文件,或从其它表格和数据库中导入。数据驱动测试不仅节省了时间和资源,又提高了应用的测试覆盖率。WinRunner工具还可以通过Function Generator增加测试的功能。使用Function Generator可以从目录列表中选择一个功能增加到你的测试中以提高测试能力。例如,你可以选择”calendar”,然后从日历功能的下属目录中选择,如Calendar_select_date(),然后你可以直观地输入参数,把这个功能插入到你的测试中。针对相当数量的企业应用里非标准对象,WinRunner工具提供了Virtual Object Wizard来识别以前未知的对象。使用Virtual Object Wizard,你可以选择未知对象的类型,设定标识和命名。在录制使用该对象的测试时,WinRunner工具会自动对应它的名字,从而提高测试脚本的可读性和测试质量。 随着时间的推移,开发人员会对应用程序做进一步的修改,并需要增加另外的测试。使用WinRunner工具,你不必对程序的每一次改动都重新创建你的测试。WinRunner工具可以创建在整个应用程序生命周期内都可以重复使用的测试,从而大大地节省时间和资源,充分利用你的测试投资。每次记录测试时,WinRunner工具会自动创建一个GUI Map文件以保存应用对象。这些对象分层次组织,既可以总览所有的对象,也可以查询某个对象的详细信息。一般而言,对应用程序的任何改动都会影响到成百上千个测试。通过修改一个GUI Map文件而非无数个测试,WinRunner工具可以方便地实现测试重用。8、帮助你的应用程序为无线应用作准备随着无线设备种类和数量的增加,你的应用程序测试计划需要同时满足传统的基于浏览器的用户和无线浏览设备,如移动电话、传呼机和个人数字助理(PDA)。无线应用协议是一种公开的、全球性的网络协议,用来支持标准数据格式化和无线设备信号的传输。使用WinRunner工具,测试人员可以利用微型浏览模拟器来记录业务流程操作,然后回放和检查这些业务流程功能的正确性。
WinRunner工具的WinRunner工具的测试过程
主要包括如下6个阶段:1). 创建GUI Map文件:WinRunner工具可以通过它来识别被测试应用程序中的GUI对象。2). 创建测试脚本:通过录制,编程,或两者的组合创建。在录制测试脚本时,在你想检查被测试应用程序响应的地方插入验证点。3). 调试脚本:用调试(Debug)的模式运行测试脚本以确保它们可以平稳地运行。还可以使用WinRunner工具提供的Step, Step Into, Step out功能来调试脚本。4). 运行测试:用验证(Verify)的模式运行测试脚本来测试你的应用程序。当WinRunner工具在运行中碰到验证点时,它会将被测应用程序中的当前数据和以前捕捉的期望数据进行比较,如果发现了任何不匹配,WinRunner工具将会把目前的情况捕捉下来作为真实的结果。5). 检查结果:确定测试脚本的成功或是失败。在每次测试脚本运行结束之后,WinRunner工具会将结果显示在报告中。它描述了所有在运行中碰到的重要的事件,例如验证点,错误信息,系统信息或是用户信息。如果发现在运行中有任何不匹配的验证点,你可以在测试结果窗口中查看期望的和实际的结果。6). 提交缺陷:如果一个测试脚本是由于所测试应用程序中的缺陷而导致失败的,你可以直接从测试结果窗口中提取缺陷的相关信息。 WinRunner工具利用GUI Map文件来识别应用程序中的对象。它将学习到的窗口或对象信息储存在GUI Map文件中。当WinRunner工具运行测试脚本时,它利用GUI Map来定位对象。它从GUI Map文件中读取对象的描述并且在被测应用程序中寻找具有相同属性的对象。在GUI Map文件中的每一个对象都有一个逻辑名称(logical name)和一个物理描述(physical description)。对象的逻辑名称是由其类决定的。在大多数情况下,我们可以将逻辑名称看成是显示在对象上的标签。你可以修改已分配的逻辑名称当它不是十分具有描述性或太长的时候。当对象的属性发生改变时,你必须要修改其物理描述。GUI Map文件的扩展名是.gui。GUI Map文件分为两种类型:·全局GUI Map文件:一个为整个应用程序使用的GUI Map文件·每个测试脚本的GUI Map文件:在每个测试脚本创建之后,WinRunner工具会自动为其创建一个GUI Map文件。我们可以通过工具菜单中GUI Map Editor来查看当前载入的GUI Map文件及其内容。GUI Map Editor 显示多个已创建的GUI Map文件和认识到的带有逻辑名和物理描述的窗口和对象。在录制脚本时,WinRunner工具会自已学习对象和窗口,并将它们储存在临时的GUI Map文件中。我们可以在General选项中指定是否需要每次都载入这种临时GUI Map。当我们载入一个GUI Map文件时,关于窗口和对象的信息连同其逻辑名称和物理描述都载入到内存中。因此当WinRunner工具在一个特定的窗口上运行脚本时,它可以用这些在内存中的信息识别对象。 WinRunner工具的脚本语言是Mercury Interactive’s Test Script Language (TSL),这是一种类C的脚本语言。你可以通过增加另外的TSL函数和编程元素(例如Windows API)或WinRunner工具的虚拟编程工具(函数生成器(Function Generator))来增强你录制的脚本。WinRunner工具的录制模式在WinRunner工具中,有两种不同的录制模式:·环境判断录制(Context Sensitive recording):通过识别GUI对象录制你在被测应用程序中执行的操作。·模拟录制(Analog recording):录制键盘的输入,鼠标的点击,和鼠标指针在屏幕上精确的x,y轴WinRunner工具的运行模式在WinRunner工具中,有三种不同的运行模式:·验证Verify:使用这种方式来检查你的应用程序·调试Debug:使用这种方式来帮助你识别测试脚本中的bug·更新Update:使用这种方式来更新测试脚本的期望结果或创建一个新的期望结果文件夹WinRunner工具的Add-In载入Add-Ins实际上是将在Add-In中的特殊的函数装载到内存中。当创建测试脚本时,只有这些选中的Add-In中的函数会列在函数生成器中,在运行脚本时,只有那些在载入的Add-In中的函数可以被执行,否则WinRunner工具将会给出一个不能识别函数的错误信息。WinRunner工具的验证点(Checkpoint)验证点可以把被测应用程序的当前行为和早前版本的行为进行比较。 · GUI checkpoints:验证GUI对象的信息。例如,你可以检查一个按钮是否可用或查看在一个列表中哪一个选项被选中。· Bitmap checkpoints:给窗口或所测试应用程序的部分做快照,并把它和早先版本中捕捉的图像做比较。· Text checkpoints :在GUI对象或位图中读取文字,使你可以验证它们的内容。· Database checkpoints:基于你创建在数据库的查询,检查一个结果集的内容和列、行的数量Checklist文件包含了我们正在验证的对象的属性和相关信息 。gui*.chk文件包含了期望的结果,并储存在exp文件夹中。同步点(synchronization points)同步点使你可以解决预期的在测试脚本和你应用程序之间的时间问题。例如,如果你创建一个打开数据库应用程序的测试脚本,你可以增加一个同步点以让测试脚本等待直到数据库中的记录载入到屏幕上。对于模拟测试(Analog testing),你也可以使用一个同步点来确保WinRunner工具在一个指定的位置重新放置窗口。当你运行一个测试脚本时,鼠标指针沿着准确的坐标行进。重新放置窗口使鼠标指针接触到窗口中正确的元素。编译模块(compile module)编译模块实际上也是一种脚本,只不过它包含了一个可以被其它的测试脚本频繁地调用,用户自定义函数集的库文件。当你载入一个编译模块时,它的函数将自动的被编译并保存在内存中。其它的测试脚本可以直接调用它们。编译模块可以改进脚本的组织和性能。由于你在使用它们之前已经调试过编译模块,因此你的测试脚本只需要少量的错误检查。另外,调用一个已经编译的函数明显地比解释测试脚本中的函数快得多。当编译模块用来储存可重用的函数时,测试脚本包含了在WinRunner工具中的可执行文件。编译模块是不可执行的。在保存为编译模块时,WinRunner工具会自动执行一次预编译。默认情况下,包含TSL代码的模块的属性是“main”。主模块可以在其他的模块中被调用执行。除了当WinRunner工具识别到一个“call”语句时,主模块会被动态地被编译为机器代码。例如:call cso_init();call( C:\\MyAppFolder\\ & app_init );编译模块被载入到内存中以便其他模块引用。reload (C:\\MyAppFolder\\ & flt_lib) 或load (C:\\MyAppFolder\\ & flt_lib);数据驱动测试(data driven tests)当你测试你的应用程序时,你或许想检查它如何执行有着大量数据集的相同操作。你可以用一个运行10次的循环来创建一个数据驱动测试:每次循环运行时,它由不同的数据集驱动。为了使WinRunner工具 能够使用数据来驱动测试,你必须将数据连接到所要驱动的测试脚本。这就叫参数化(parameterizing)你的测试。数据存储在一个数据表格(data table)中。你可以手工执行这些操作,或使用DataDriver Wizard来参数化你的测试脚本并储存数据在数据表格中。 · 创建一测试脚本· 转换为数据驱动的测试脚本并准备一个数据库· 运行测试脚本· 分析测试结果无法识别GUI对象的原因WinRunner工具会由于以下多种原因导致不能识别GUI对象。·不是标准的Windows对象·没有安装所需的Add-In·如果所使用的浏览器和WinRunner工具的版本不兼容,GUI Map编辑器将不能认识在浏览器窗口中显示的任何对象启动文件(start up file)在General Options ->Environment-> Startup文本框中,选择或输入你希望作为启动文件的测试脚本输入测试脚本的相关信息在创建一个测试脚本之前,你可以在Test Properties-> General和 Description中输入和脚本相关的信息,如被测功能的类型,测试脚本的详细描述,引用的相关功能说明书文档如何处理定制对象(custom objects)?定制对象是不属于WinRunner工具所使用的标准类之一的任何GUI 对象。WinRunner工具学习此类的对象为generic object类。WinRunner工具利用obj_mouse_语句来记录在定制对象的操作。如果定制对象和一个标准的对象很相似,你可以映射它为标准类别之一。你也可以在环境判断测试(Context Sensitive testing)时配置WinRunner工具用于识别定制对象的属性。什么是虚拟对象(virtual object)并且如何使用它们?应用程序可能会含有一些外观和行为和GUI对象相似的位图。WinRunner工具利用win_mouse_click 语句来记录操作。通过定义一个位图对象为虚拟对象,当你录制并运行测试时,你可以教WinRunner工具将它象一个GUI对象一样对待。