WinRunner使用经验介绍
Winrunner教程_基础篇

• When WinRunner learns the description of a GUI object, it looks at the object’s physical properties. Each GUI object has many physical properties such as class, label, width, height, handle, and enabled to name a few. WinRunner only learns the properties it needs to uniquely distinguish an object from all other objects in the application.
Winrunner 测试流程
• 官方推荐
ONLY FOR SUI Map
• GUI applications are made up of GUI objects such as windows, buttons, lists, and menus.
• GUI Map指图形用户接口地图,Winrunner正是通过这张地图来找到 软件中的每一个按键、输入框等等。
• WinRunner stores the information it learns in a GUI map. When WinRunner runs a test, it uses the GUI map to locate objects: It reads an object’s description in the GUI map and then looks for an object with the same properties in the application being tested.
WinRunner培训02-winrunner使用概述

OCTIGA
ห้องสมุดไป่ตู้
2.1 启动Win Runner
点击开始>程序>Win Runner>Win Runner 启动WR。 WR的Record/Run Engine(记录/执行引擎)的图标 出现在Windows的任务条上。这个引擎设立和维护 WR和被测软件之间的连接。
第一次启动WR会看到欢迎窗口,你可以选择新建测试、打 开已有测试或快速预览WR。如果不希望下次启动看到这个 窗口,可以把Show on startup前面的勾去掉。
把Show on startup前面的勾去 掉,这个Add-In Manager的窗口就 不会在WR启动的时 候出现。你也可以 在进入WR后在 Settings>General Options>Environ ment 里面设置是否 在开始时显示这个 窗口以及等待时间 等。
谢谢!
2.2 Win Runner主窗口
主窗口包括以下部分:
a). Win Runner title bar 标题栏 b). Menu bar 菜单栏 c). Standard toolbar 标准工具栏,包含 运行测试时常用的命令 d). User toolbar 用户工具栏,包含创建 测试时常用的命令 e). Status bar 状态栏
2.3 测试窗口
在测试窗口创建和执行测试,窗口包含以下部分: a). Test Window title bar 测试窗口标题栏, 显示当前打开的测试名称 b). Test script 测试脚本, 通过录制或编写代 码方式生成 c). Execution arrow 执行箭头,指明当前正在 执行的那一行脚本,如果想要移动这个标志到某 一行,只需要在该行左侧空白处点击鼠标左键 d). Insertion point 插入点,支出你可以插入 或编辑文本的地方
Winrunner经验总结

.1 脚本录制规范:基本原则是录制脚本要分开、gui文件要合并、批调用回放验证、可移植回放验证。
1.1.1 录制脚本要分开:脚本太大,不仅不利于以后的维护,并且会导致WinRunner的不可预测的错误产生(具体可以参考WinRunner 的Readme文档)。
录制时,可以根据测试用例的流程,拆分为几个小流程,对每个小流程分别录制成不同的脚本。
1.1.2 gui文件要合并:首先,要在系统参数中,设置gui的录制模式为“Global GUI Map File录制过程中,WinRunner会自动产生gui文件,一个测试用例要确保生成一个公用gui文件。
用一个gui文件主要是为了以后gui对象的维护,脚本回放时gui对象的查找。
但是由于我们的测试用例是分开录制的,每个小流程录制时都会产生一个gui临时文件,因此录制完脚本后要把临时gui文件合并到该测试用例的公用gui文件中。
但是也要注意,开始新的录制前,一定要先手工加载测试用例的公用gui文件。
如果划分的子流程超过20个,则按每20个子流程录制一个gui文件的方式。
Gui文件太大,会影响WinRunner的回放效率。
1.1.3 批调用回放验证:为了提高脚本的正确性,每录制完成一个子流程后,都要恢复数据库,其他初始环境进行回放,以近早发现脚本错误。
单个测试用例脚本录制完成后,要专门写一个主脚本,进行各子脚本的主次调用处理,然后恢复数据库和其他初始环境进行回放,以验证整个脚本是否可以正确回放。
1.1.4 可移植回放验证:由于WinRunner 工具的限制,在本机回放成功后,如果把脚本移植到其他机器上,往往无法成功。
这其中既有自己编写的脚本问题,又有WinRunner录制自动生成的脚本问题。
自己编写脚本问题:往往是编写的可移植性较差,如加载gui文件时用的是绝对地址,如gui_load(“c:\\aa\\aa.gui”),这样的脚本换到其他机器必然出错。
WinRunner录制自动生成的脚本问题: WinRunner的录制脚本往往和机器的环境有关,如果换了其他机器环境,往往回放不成功,这就需要手工修改脚本。
WinRunner使 用 说 明

WinRunner使用说明WinRunner(以下简称 WR)是Mercury Interactive公司开发的一种自动化功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
通过自动录制、检测和回放用户的应用操作,你可以创建可修改和可复用的测试脚本,WinRunner能够有效地帮助测试人员对软件不同的版本进行测试,提高测试人员的工作效率和质量。
以WinRunner执行测试,就与人工测试一样,WinRunner会仿真鼠标的动作与键盘的输入,当在软件操作中点击GUI对象时,WinRunner会使用一种类C的测试脚本语言TSL生成一个测试脚本。
测试人员可以手工编辑脚本。
WinRunner包括的功能生成器可以帮助用户快速简便的在已录制的测试中添加功能。
WinRunner有两种录制测试的模式:1.环境判断模式2.模拟模式环境判断模式根据用户选取的GUI对象将用户对软件的操作动作录制下来,并忽略这些对象在屏幕上的物理位置。
每一次对被测软件进行操作,测试脚本会描述用户选取的对象和操作动作。
第1 章WinRunner安装1.1 WinRunner8.0安装1.1.1 安装步骤下面以Windows XP为例介绍如何安装WinRunner8.0。
在获取到WinRunner8.0的安装包后,就可以运行安装包进行安装,如图所示。
Name: Company: Maintenance Number:1234-5858585858 或8888-5858585858此处可以修改安装路径安装结束。
1.2 WinRunner基础知识1.2.1 winRunner程序界面在学习创建测试之前,先了解一下winRunner的主界面。
执行【开始】->【程序集】->【WinRunner】->【WinRunner】,首先开启WinRunner Add-in Manager窗口。
WinRunner Add-in Manager 显示你目前可以使用的Add-in,我们现在介绍的是并没有使用任何Add-in,所以请确认没有勾选任何Add-in 后按下【OK】按钮。
winrunner实例详细使用说明

WinRunner学习1.Lesson_1介绍略,请参考《WR_中文介绍》pdf格式文档有关介绍[参]:Lesson1_1.doc2.Lesson_2Setting up WinRunner●描述 WinRunner 如何在一个应用程序中识别图形用户界面(GUI)属性●演示如何使用(图形用户界面间谍)GUI SPY 查看对象属性●描述二个(图形用户界面)GUI地图模式●解释该如何使用RapidTest Script Wizard 去获得GUI属性的描述和生成测试●如何运行一个测试●帮助你分析测试结果1、什么是GUI对象?(窗口window、按钮button、菜单menu、列表list)2、如何应用WinRunner查看GUI对象属性和值?(TOOLS\GUI SPY….)具体例子[参]lesson2_1.doc:3、GUI Map模式?(有两种A、The GUI Map File per Test Mode;B、The Global GUI MapFile Mode)具体例子[参]:Lesson2_2:4、RapidTest Script Wizard功能(具体例子[参]:Lesson2_3)可以快速、容易地开始测试过程(录制GUI Map文件)??。
只适用于The Global GUI Map File Mode模式下。
注意:1、不能在The GUI Map File per Test Mode模式下使用此功能。
2、不能在加载其他插件(如:WEB TEST,Java Add_in)的情况下使用此功能。
3.Lesson_3记录测试●描述上下文敏感(Context Sensitive)和类似(Analog)记录模式●如何记录一个测试脚本●帮助你读测试脚本●如何运行被记录的测试并且分析结果1、有两种不同的记录模式:A、Context Sensitive;B、Analog(录制时产生的脚本记录是不同的) 各有特点:具体例子[参]:Lesson3_1:2、TSL(测试脚本语言)解释。
功能测试软件WinRunner

实验 功能测试软件WinRunner
插入检查点:在建立一个测试的过程中可以插入检查点, 以在查找潜在错误的同时,将预想的结果和实际测试结果 进行比较。在插入检查点后,WinRunner会收集相应的性 能指标,在测试运行时对其一一验证。WinRunner允许使 用几种不同类型的检查点,包括文本、GUI、位图和数据 库等。例如用一个位图检查点,可以确认一个位图图像是 否出现在指定的位置上。WinRunner的数据库检验功能能 够自动标示出被修改的数据
软件工程学
实验 功能测试软件WinRunner
WinRunner是一个基于Windows的企业级功能测试工 具,它在业务应用正式部署之前,通过自动捕获、检 测和重放用户对应用系统的交互操作,来发现系统的 缺陷,以确保那些跨越多个应用程序和数据库的业务 流程在初次发布时就能避免故障的出现,保证系统对 所有关键业务处理功能以及处理流程的正确,保障应 用的质量和准备工作的最优化。
实验 功能测试软件WinRunner
以一个订单输入的流程为例,可以考虑将一些锁定的项 目栏 (如定单号或客户名) 转化为可变栏,这样就可以用 多套数值来检测应用程序。使用DataDriver,可以从这 些数值中选择数据来源,用于驱动测试。可将定单号或 客户名输入WinRunner的表格,也可直接从其他的表格 或数据库中导入。这些数据会被存储在WinRunner的表 格中,以便任何时候都能对其进行编辑。数据驱动性测 试不仅为用户节省了时间和资源,又提高了应用程序的 测试覆盖率
WinRunner包括两种录制测试的模式:
环境判断模式:又称上下文判断模式。根据用户选取的 GUI对象 (如窗体、清单、按钮等) 把其对软件的操作动 作录制下来,并忽略这些对象在屏幕上的物理位置。用 户对被测软件的每一次操作,测试脚本中的脚本语言都 会描述选取的对象和操作动作
winrunner

录制测试脚本
——Context Sensitive模式
• 在WinRunner点选【Test】—【Record-Context Sensitive】或直接点击 — • 在Fligtht Reservation中从file中打开Open Order 窗口
录制测试脚本
——Context Sensitive模式
使用TSL撰写测试脚本
• 保存并运行
建立数据驱动
• 当建立好测试脚本后,可能会想要用多组 不同的数据去执行测试脚本。为了达到此 目的,可以将测试脚本转换成数据驱动测 试脚步,并建立一个数据表提供测试需要 的多组数据。
建立数据驱动
• 将测试脚本lesson7转换成数据驱动测试脚 本
– 打开WinRunner,File—Open,打开lesson7
• 增强测试:为了彻底全面地测试一个应用程序,需要使用 不同类型的数据来测试。WinRunner的数据驱动向导( Data Driver Wizard)可以让你简单地点击几下鼠标,就可以 把一个业务流程测试转化为数据驱动测试,从而反映多个 用户各自独特且真实的行为。
WinRunner测试实例
• 以WinRuner自带的Flight Reservation为例, 演示WinRunner的功能。
• 对【Order No.】check box 建立检查点
GUI对象检查点
GUI对象检查点
• 当输入No.为4时 再次建立检查点
GUI对象检查点
• 点击运行按钮 测试结果 • 点击测试结果中的一条记录
图像检查点
• WinRunner提供的图像检查点,以图像的方 式比对想要比对的应用程序中的图像。 • WinRunner提供三种方式建立图像检查点:
Winrunner最详细教程

Winrunner TSL命令简介201、tab_get_item ( tab, item_num, out_item );返回tab选项的名称202、tab_get_selected ( tab, out_item, out_num );返回选定的tab选项的名称和个数203、tab_select_item ( tab, item );选择tab选项204、tab_wait_info ( tab, property, value, time );等待tab属性的值205、tbl_activate_cell ( table, row, column );双击表里某个单元206、tbl_activate_col ( table, column );双击表里某列207、tbl_activate_header ( table, column );双击表里某列标题208、tbl_activate_row ( table, row );双击表里某行209、tbl_deselect_col ( table, column );取消选择表的某列210、tbl_deselect_cols_range ( table, from_column, to_column );取消选择表里某几列211、tbl_deselect_row ( table, row );取消选择表里某行212、tbl_deselect_rows_range ( table, from_row, to_row );取消选择表里某几行213、tbl_extend_col ( table, column );往表里当前列加一列214、tbl_extend_cols_range ( table, from_column, to_column );往表里当前列加多列215、tbl_extend_row ( table, row );往表里当前行前加一行216、tbl_extend_rows_range ( table, from_row, to_row );往表里当前行加多行217、tbl_get_cell_data ( table, row, column, out_text );返回表里指定单元的内容218、tbl_get_cols_count ( table, out_cols_count );返回表的列数219、tbl_get_column_name ( table, col_index, out_col_name );返回表里指定列的标题名称220、tbl_get_column_names ( table, out_col_names, out_cols_count );返回表里列的名称和个数221、tbl_get_rows_count ( table, out_rows_count );返回表的行数222、tbl_get_selected_cell ( table, out_row, out_column );返回表里焦点所在单元223、tbl_get_selected_row ( table, row );返回当前焦点所在行224、tbl_select_cells_range ( table, start_row, start_col, end_row, end_col );在表里点击选定的几个单元225、tbl_select_col_header ( table, column );选定指定的列的标题226、tbl_select_cols_range ( table, from_column, to_column );在表里选定指定的几列227、tbl_select_rows_range ( table, from_row, to_row );在表里选定指定的几行228、tbl_set_cell_data ( table, row, column, data );设置表里某单元的内容229、tbl_set_cell_focus ( table, row, column );设置表里焦点到某个单元230、tbl_set_selected_cell ( table, row, column );在表里选定指定的单元231、tbl_set_selected_col ( table, column );在表里选定指定的列232、tbl_set_selected_row ( table, row );在表里选定指定的行233、obj_click_on_text ( object, string [ ,search_area [ , string_def [ , mouse_button ] ] ] );点击一个对象的文本234、obj_find_text ( object, string, result_array [, search_area [, string_def ] ] );返回一个对象字符串的位置235、obj_get_text ( object, out_text [, x1, y1, x2, y2 ] );从对象里读取文本236、obj_move_locator_text ( object, string [ , search_area [ , string_def ] ] );在对象里把鼠标焦点落在字符串237、win_find_text ( window, string, result_array [, search_area [, string_def ] ] );在一个窗口返回字符串位置238、win_click_on_text (window, string [ ,search_area [ , string_def [ , mouse_button ] ] ] );在窗口搜索文本239、win_get_text ( window, out_text [, x1, y1, x2, y2] );从窗口指定的区域读取文本240、win_move_locator_text ( window, string [ ,search_area [ ,string_def ] ] );在窗口里把鼠标焦点落在字符串241、toolbar_button_press ( toolbar, button, mouse_button );点击工具栏按钮242、toolbar_get_button ( toolbar, button_num, out_text );返回工具栏按钮名称243、toolbar_get_button_info ( toolbar, button, property, out_value );返回工具栏按钮属性值244、toolbar_get_button_num ( toolbar, button, out_num );返回工具栏按钮位置245、toolbar_get_buttons_count ( toolbar, out_num );返回工具栏按钮的个数246、toolbar_select_item ( toolbar, toolbar_item_chain [, mouse_button ] );选择类菜单工具栏的某项247、web_browser_invoke ( browser, site );调用ie打开某个站点248、web_cursor_to_image ( image, x, y );移动鼠标指针到某个图片249、web_cursor_to_label ( label, x, y );移动鼠标指针到某个标签250、web_cursor_to_link ( link, x, y );移动鼠标指针到某个链接251、web_cursor_to_obj ( object, x, y );移动鼠标指针到某个对象252、web_event ( object, event_name [, x , y ] );在指定对象运行一个事件253、web_file_browse ( object );点击浏览按钮254、web_file_set ( object, value );在文件类型的对象设置文本值255、web_find_text ( frame, text_to_find, result_array [, text_before, text_after, index, show ] );返回帧内文本位置256、web_frame_get_text ( frame, out_text [, text_before, text_after, index ] );返回帧内文本的内容257、web_frame_get_text_count ( frame, regex_text_to_find, count );返回帧内标准表达式的事件个数258、web_frame_text_exists ( frame, text_to_find [, text_before, text_after ] );检查帧内指定的文本字符串是否存在259、web_get_run_event_mode ( out_mode );返回当前的运行模式260、web_get_timeout ( out_timeout );返回winrunner响应web的最大等待时间261、web_image_click ( image, x, y );点击一个图片链接或图片262、web_label_click ( label );点击指定的标签263、web_link_click ( link );点击朝文本链接264、web_link_valid ( name, valid );检查url链接是否有效265、web_obj_get_child_item ( object, table_row, table_column, object_type, index, out_object );返回对象的子对象的物理描述266、web_obj_get_child_item_count ( object, table_row, table_column, object_type, object_count );返回对象的子对象的个数267、web_obj_get_info ( object, property_name, property_value );返回对象属性的值268、web_obj_get_text ( object, table_row, table_column, out_text [, text_before, text_after, index] );返回对象的文本字符串269、web_obj_get_text_count ( object, table_row, table_column, regex_text_to_find, count ); 返回对象内标准表达式的事件个数270、web_obj_text_exists ( object, table_row, table_column, text_to_find [, text_before, text_after] );在对象里如果该文本存在,返回该文本271、web_refresh ( frame );winrunner重新连接指定的帧272、web_restore_event_default ( );重新设置全部事件为默认值273、web_set_event ( class, event_name, event_type, event_status );设置事件状态274、web_set_run_event_mode ( mode );设置事件运行模式275、web_set_timeout ( timeout );设置winrunner响应web的最大时间276、web_set_tooltip_color ( fg_color, bg_color );设置webtest工具条的颜色277、web_sync ( timeout );等待帧的导航完成278、web_tbl_get_cell_data ( table, row, column, starting_pos, out_text, out_actual_text_length );返回web表内指定单元的内容,开始于指定的字符279、web_url_valid ( URL, valid );检查url是否有效280、tbl_get_cell_data ( table, row, column, out_text );返回table里指定单元的内容(加载webtest)281、tbl_get_cols_count ( table, out_cols_count );返回表的列数(加载webtest)282、tbl_get_column_name ( table, col_index, out_col_name );返回表里指定列的标题的名称(加载webtest)283、tbl_get_rows_count ( table, out_rows_count );返回表的行数(加载webtest)284、web_password_encrypt ( password );将web页面的密码加密285、set_window ( window [,time] );激活窗口并确定等待时间286、win_activate ( window );激活窗口287、win_check_bitmap ( window, bitmap, time [, x, y, width, height ] );比较窗口的位图288、win_check_gui ( window, checklist, expected_results_file, time );比较窗口的gui数据289、win_check_info ( window, property, property_value [, timeout ] );检查被请求的窗口属性290、win_click_help ( window );在窗口点击帮助按钮291、win_click_on_text (window, string [ ,search_area [ , string_def [ , mouse_button ] ] ] );在窗口搜索文本292、win_close ( window );关闭窗口293、win_drag (source_window, x, y [, mouse_button ] );从源窗口拖动对象294、win_drop ( target_window, x, y );拖动对象到目标窗口295、win_exists ( window [, time ] );检查窗口是否显示在屏幕上296、win_find_text ( window, string, result_array [, search_area [, string_def ] ] );返回窗口里字符串的位置297、win_get_desc ( window, obligatory, optional, selector, out_desc );返回窗口的物理描述298、win_get_info ( window, property, out_value );返回窗口属性的值299、win_get_text ( window, out_text [, x1, y1, x2, y2] );从窗口指定区域读取文本300、win_highlight ( window [, flashes ] );高亮显示窗口WinRunner 编码规范发布: 2008-9-25 15:49 | 作者: 网络转载 | 来源: 本站原创 | 查看: 14次 | 进入软件测试时代论坛讨论1 路径不能写死从一台机器拷贝到另一台机器上之后,WinRunner的脚本需要能够正常的运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WinRunner使用经验介绍文章出处:博客作者:KiKi 发布时间:2006-09-19W inRunner在项目中的作用可以用WinRunner为所测试应用程序的GUI,功能和回归测试创建自动化脚本。
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文件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的脚本语言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)验证点可以把被测应用程序的当前行为和早前版本的行为进行比较。
在WinRunner中有4种验证点:· 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对象一样对待。