WinRunner实例教程
winrunner使用手册

WinRunner使用手册信息部Mercury Interactive公司的WinRunner工具是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
通过自动录制、检测和回放用户的应用操作,WinRunner工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
目录一、概述 (3)二、安装 (3)三、使用 (6)3.1 GUI Map (7)3.1.1GUI Spy查看GUI对象 (7)3.1.2 GUI Map模式 (9)3.1.2.1Global GUI Map File模式 (9)3.2 脚本录制 (12)3.2.1Context Sensitive录制脚本 (13)3.2.2 录制注意事项 (14)3.3 脚本分析 (14)3.4 脚本执行 (15)3.5 检视测试结果 (15)3.6 扩展功能 (16)3.6.1 预设时间 (16)3.6.2 它扩展点 (17)3.6.2.1 同步点 (18)3.6.2.2GUI对象检查点 (18)3.7 批次测试 (18)3.7.1高效的测试方式 (18)3.7.2 批次测试方法 (18)四、编后语 (21)一、概述本文可帮助学习人员快速掌握安装、注册、使用。
文章的重点部分在于工具的实战应用。
本文虽然是参考其它工具使用说明书编写而成,内容却更加突出(去除了没有实用性的部分从而缩短内容),文字描述更为得体(从学习的角度描述)。
文档适用于开发与测试人员。
二、安装首先请将工具包中所提供的WinRunner软件解压,然后按下面步骤完成安装:1、安装一个虚拟工具。
2、将m-mwrn82.bin加入到虚拟光驱。
运行光驱中.\setup\autorun.exe3、安装过程如下:1)、安装第一个页面会要求输入上面三项,其中[Maintenance Number]请输入安装注册码:9357-2820602186,其它二项随意。
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使用

Winrunner使用实验报告班级:姓名:学号:上机实验的问题和要求:理解和熟悉Winrunner的测试过程,能过录制脚本,插入检查点,本实验的测试应用程序为机票预定系统(winrunner自带)。
(可参考winrunner安装目录下的教程,如默认安装则文件夹为C:\Program Files\Mercury Interactive\WinRunner\doc中的wr_tut.pdf文件)注意:第14周上交本报告,报告命名方式:winrunner使用-学号-姓名。
一、使用工具GUI SPY和使用快速测试脚本向导理解winrunner如何识别GUI对象,要求识别该应用系统登录界面的Help按钮,记录你看到的信息,并运行快速测试脚本向导。
(参考lesson2)二、录制测试脚本录制一个预定机票的过程,并把录制的脚本记下(参考lesson3)三、同步点的使用录制一个插入订单,然后马上删除订单的测试脚本,分别设置Timeout for checkpoints and Cs statements值为100000和1000,观察运行的结果有何不同,说明为什么?(参考lesson4)四、检查点的使用在应用程序的版本A中录制一个脚本,在版本B中运行,检查在版本B中open oder对话框中,当checkbox:Order NO 选中时,checkbox :Customer Name的属性enable属性的值是否为期望的值,记下测试脚本。
(参考lesson5)五、使用winrunner创建基于数据驱动的测试使用应用程序Flight4a录制一个打开一个订单,接着打开Fax Order对话框,并关闭的测试测试脚本。
接着在这个脚本上添加脚本用来检查Fax Order对话框中总价是否等于票的数量乘以票的单价。
最后创建基于数据驱动的测试可以检查订单1,2,3,4。
(可参考教程lesson7、8),重点理解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的脚本需要能够正常的运行。
WinRunner测试脚本编程

内蒙古工业大学信息工程学院预习报告成绩:指导教师审核(签名):年月日预习报告(一)实验目的1.了解WinRunner的主要功能,熟悉WinRunner8.2的使用环境;2.掌握掌握WinRunner的两种测试脚本录制方法;3.掌握在测试脚本中插入同步点、建立检查点的方法。
4、掌握数据驱动测试脚本的转换方法,实现多组数据自动测试。
(二)实验内容以样本软件Flight 4A为被测对象,录制脚本、插入同步点、建立检查点、建立数据驱动测试脚本。
1. 插入同步点1)录制测试脚本:在Flight Reservation中输入一笔新订单,然后删除刚刚新增的订单。
2)改变预设的等待时间:将预设等待时间10秒钟,缩短为1秒钟。
3)执行测试脚本。
4)在测试脚本中加入同步点,获取状态Insert Done的图像信息。
5)执行已加入同步点的测试脚本,并监视测试结果。
2. 建立检查点以样本软件Flight 4A为被测对象:1)以Context Sensitive 模式录制测试脚本。
开启Open Order窗口,对【Order No.】check box 建立检查点。
2)勾选【Order No.】check box,输入订单编号。
3)对【Customer Name】check box 建立检查点。
4)点击【OK】按钮开启订单。
5)停止录制测试脚本,并保存。
6)执行脚本,监视测试结果。
7)在此测试脚本基础上,继续以Context Sensitive 模式录制测试脚本。
开启传真订单,输入传真号码。
8)切换到Analog录制模式,在【Agent Signature】中签名。
9)再切换到Context Sensitive 模式,对【Agent Signature】建立图像检查点。
10)清除签名,对【Agent Signature】再次建立图像检查点。
11)关闭传真订单窗口,停止录制。
12)执行测试脚本,查看结果。
3. 建立数据驱动测试脚本以样本软件Flight 4A为被测对象:1)开启Flight Reservation并登录。
实验_3_在WinRunner中创建数据驱动测试和批处理测试

实验五在WinRunner中创建数据驱动测试实验目的:了解如何使用数据驱动向导来创建数据驱动测试;掌握将一个测试转换为数据驱动测试并添加相应数据的方法;学习按照需要制定个性化的测试结果信息。
了解如何使用批量的测试来完成一批不需人员监控的测试和利用运行向导完成GUI MAP文件的自动更新;掌握创建批处理测试的方法和如何在GUI MAP文件中修改对象描述信息及添加新对象;学习运行批处理测试及分析测试结果的过程。
实验要求:在WinRunner 环境下完成实验目的中所述各项任务实验条件:windows2000、WinRunner实验内容及步骤:创建数据驱动测试当我们成功的调试并运行了一个测试时,就更想看看使用多组数据运行同样的测试时结果怎样。
这就需要我们将一个测试转化为数据驱动的测试,并为要进行测试的多组数据创建一个数据表。
转换的步骤包括:1.打开或关闭数据表时要在脚本中添加声明。
2.添加声明和相应的函数来读取数据表中的数据,并在申请到一组数据时,能够循环运行一次测试。
3.使用参数在已录制的声明和检查站声明中替换原有的确定数值。
可以手动或使用数据驱动向导来把一般测试转换成数据驱动的测试。
当我们运行一个数据驱动的测试时,对于数据表中的每一组数据WinRunner调用循环来执行一次这个测试参数化的部分,然后在一个测试结果窗口中显示所有循环测试的结果。
一、将一个基本测试转换为数据驱动的测试:1.从Lesson6测试中创建一个新测试并加载GUI MAP启动WinRunner 并打开Lesson6测试。
把Lesson6测试另存为Lesson7测试。
工作在全局用户图形界面绘图文件模式下,确定GUI MAP文件被加载。
选择Tools > GUI Map Editor,GUI MAP文件编辑器被打开,在其中选择View > GUI Files查看flight4a.GUI是否包含在GUI文件列表中,如果这个文件没有被加载,需要选择File > Open并指定此文件打开。
winrunner计算器实验指导书

实验十计算器加法功能的自动化测试通过前面的学习,掌握了winrunner的基本使用,现在利用它对windows的计算器软件中加法功能进行自动化测试。
实验步骤1、编写测试用例如下表:2、学习计算器各个对象的属性1. 开启WinRunner 执行【开始】->【程序集】->【WinRunner】->【WinRunner】,如果是第一次执行WinRunner,会开启欢迎窗口,则点选【New Test】;如果没有开启欢迎窗口,则点选【File】->【New】。
2. 开启windows自带的计算器【开始】->【程序集】->【附件】->【计算器】。
3. 开启RapidTest Script Wizard点选【Insert】->【RapidTest Script Wizard…】开启RapidTest Script Wizard你选择Global GUI Map File 模式时,可以使用RapidTest Script Wizard 帮助你快速建立GUIMap File。
RapidTest Script Wizard 会有系统的开启应用程序中的窗口,并识别窗口中所有的GUI 对象。
接下来利用RapidTest Script Wizard 识别计算器的GUI 对象。
3、编写测试脚本1.分析测试的具体执行步骤(1)打开windows的计算器软件;(2)对数据录入显示框清零;(3)录入加数additive1(点击数字按钮);(4)点击“+”按钮;(5)录入加数additive2(点击数字按钮);(6)点击“=”按钮;(7)检查运算结果是否正确;(8)循环执行(2)-(7)步直到每组测试数据均执行完毕;(9)报告测试结果。
2.编写测试脚本如下:# 加载gui map文件并激活计算器窗口GUI_load("D:\\Program Files\\dat\\calc.gui");set_window("计算器");# 打开存放测试数据的文件“calc.xlstable = "calc.xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN){tl_step("open file ",1,"open data file is failed.");texit;}# 循环读取数据文件中的每组数据执行测试ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++) {ddt_set_row(table,table_Row);button_press("C");additive1 =ddt_val(table,"additive1");additive2 =ddt_val(table,"additive2");for(i=1;i<=length(additive1);i++)button_press(substr(additive1,i,1));button_press("+");for(i=1;i<=length(additive2);i++)button_press(substr(additive2,i,1));button_press("=");edit_get_text("Edit",result);# 删除result串的首尾空格与尾部的小数点len=length(result);while(len>0)if(substr(result,len,1)==" "|| substr(result,len,1)==".") len--;elsebreak;i=1;while(i<len)if(substr(result,i,1)==" ")i++;elsebreak;result =substr(result,i,len);if(length(shulie2)==0)shulie2=shulie1;# 将运行结果与预期结果进行比较判断if((additive1+additive2)==result)tl_step("testcase"&table_Row,0,"the result is"&(additive1+additive2)&"and"&result&",correct.");elsetl_step("testcase"&table_Row,1,"the result is"&(additive1+additive2)&"and"&result&",incorrect.");}ddt_close(table);4、完成上面的自动测试程序编写后,还要记住将测试数据加入数据表在winrunner中选择【Table】->【Data Table】命令,然后在预先创建的文件“calc.xls”的相应路径下找到它并选中打开,就可以开启数据表进行测试数据的输入。
WinRunner使用说明

WinRunner使用说明WinRunner使用说明1:引言1.1 目的1.2 背景1.3 范围2:安装与配置2.1 系统要求2.2 安装过程2.3 配置步骤2.4 添加测试目标3:脚本录制3.1 录制脚本准备工作3.2 启动录制工具3.3 录制脚本操作步骤3.4 停止录制和保存脚本4:脚本编辑与调试4.1 打开脚本编辑器4.2 编辑脚本4.3 脚本调试步骤4.4 常见调试技巧5:脚本执行与结果分析5.1 准备执行环境5.2 执行单个脚本5.3 批量执行脚本5.4 分析执行结果5.5 报告6:数据驱动测试6.1 准备数据驱动文件6.2 配置数据驱动参数6.3 在脚本中使用数据驱动 6.4 分析数据驱动结果7:错误处理与异常处理7.1 错误处理的重要性7.2 在脚本中处理错误7.3 异常处理的注意事项8:自动化测试最佳实践8.1 编写可维护的脚本8.2 参数化和数据驱动的使用技巧8.3 编写稳定可靠的测试用例8.4 定期进行脚本优化和维护9:常见问题解答9.1 脚本执行失败的原因及解决方法9.2 录制脚本遇到的常见问题与解决方法 9.3 数据驱动测试常见问题与解决方法10:高级特性与扩展10:1 自定义函数的编写与使用10:2 脚本重用和模块化设计10:3 集成其他测试工具10:4 定时任务和持续集成附件:1:示例脚本文件3:其他辅助工具和资源法律名词及注释:1:软件许可协议:指用户与软件提供商之间订立的关于软件使用的协议。
2:数据隐私:指个人或组织拥有对其个人信息进行控制和保护的权利。
3:法律免责声明:指软件提供商对软件使用过程中的任何风险不承担责任的声明。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WinRunner实例教程目录1. WINRUNNER简介 (3)1.1 WinRunner 测试模式 (3)1.1.1 环境判断模式(Context Sensitive mode) (3)1.1.2模拟模式(Analog mode) (3)1.2 WinRunner 测试过程 (3)1.2.1 创建GUI map (4)1.2.2 创建测试 (4)1.2.3 调试测试 (4)1.2.4 执行测试 (4)1.2.5 查看测试结果 (4)1.2.6 报告发现的错误 (4)1.3 样本软件 (5)1.3.1 开始样本软件 (5)1.3.2 样本软件的多个版本 (5)1.3.3 登陆 (5)1.3.4 WEB版样品软件 (5)2.WINRUNNER基础知识 (5)2.1 winRunner程序界面 (5)2.2 主窗口 (6)2.3 测试窗口 (8)2.4工具栏 (9)3. WINRUNNER如何创建GUI MAP (9)3.1关于识别GUI 对象 (9)3.2测试中如何识别GUI 对象 (10)3.3物理描述(Physical Description) (10)3.4逻辑名(Logic Names) (11)3.5 GUI map (12)3.6教WinRunner 被测软件的GUI (17)3.6.1 使用RapidTest Script wizard (17)3.6.2 WinRunner用录制的方式学习GUI (23)3.6.3 WinRunner用GUI Map Editor学习GUI (23)4. 创建测试 (24)4.1 选择录制脚本模式 (24)4.2 Context Sensitive 录制模式 (25)4.3 AnaLog 录制模式 (28)4.4 保存 (29)5. 执行测试 (31)6. 分析测试结果 (32)7. 同步测试 (33)7.1 同步测试简介 (33)7.2 具体操作 (34)7.2.1 选项中设置(增大默认的间隔时间) (34)7.2.2设置同步点(延迟) (35)7.2.3运行测试脚本并分析一个设置同步点后的测试结果: (39)8. 插入GUI CHECKPOINT (40)8.1 GUI Checkpoint简介 (40)8.2 插入“GUI Checkpint”的示例: (41)8.3 插入“GUI Checkpoint”的具体实例。
(44)9. 插入BITMAP CHECKPOINT (47)9.1 Bitmap Checkpoint 简介 (47)9.2 录制脚本,插入Bitmap Checkpoint (48)9.3 查看执行(期望)结果: (50)10. 用TSL(脚本语言)测试 (51)10.1 TSL简介 (51)10.2 测试实例 (52)10.2.1录制一个基本的测试脚本 (52)10.2.2 使用功能产生器插入功能点 (53)10.2.3 调试测试脚本 (54)1. WinRunner简介WinRunner (以下简称WR)是基于MS Windows 的功能测试工具。
由于C/S结构的软件功能增加越来越快,QA部门测试难度越来越大,手工测试已经跟不上这种发展趋势。
WR 可以帮助你自动处理从测试开发到测试执行的整个过程。
你可以创建可修改和可复用的测试脚本,而不用担心软件功能模块的变更。
你只需要在下班后让计算机自动执行这些脚本,就能轻而易举的发现软件中的错误,从而确保软件的质量。
1.1 WinRunner 测试模式当你在软件操作中点击GUI(图形用户界面)对象时,WR会用一种类C的测试本。
语言(TSL)生成一个测试脚本。
你可以用手工编程的方法编辑这个脚本。
WR 包括的功能生成器(Function Generator)可以帮助你快速简便的在已录制的测试中添加功能。
WR 包括两种录制测试的模式:1.1.1 环境判断模式(Context Sensitive mode)这种模式根据你选取的GUI 对象(如窗体、清单、按钮等)把你对软件的操作动作录制下来,并忽略这些对象在屏幕上的物理位置。
每一次你对被测软件进行操作,测试脚本中的脚本语言会描述你选取的对象和你的操作动作。
当你进行录制时间,WR会对你选取的每个对象做唯一描述并写入GUI map(映射)中。
GUI map 和测试脚本被分开保存维护。
当软件用户界面发生变化时,你只需更新GUI map。
这样一来,环境感应模式的测试脚本将非常容易地被重复使用。
执行测试只需要回放测试脚本。
WR 模拟一个用户使用鼠标选取对象、用键盘输入数据。
WR 从GUI map 中读取对象描述,并在被测软件中查找符合这些描述的对象。
WR 可以在同一个窗体中找到这些对象,即使它们的位置发生过变化。
1.1.2模拟模式(Analog mode)这种模式记录鼠标点击、键盘输入和鼠标在二维平面上(x 轴和y轴)的精确运动轨迹。
执行测试时,WR 让鼠标根据轨迹运动。
这种模式对于那些需要追踪鼠标运动的测试非常有用,例如画图软件。
1.2 WinRunner 测试过程WR 的测试过程分六个步骤:创建GUI map创建测试调试测试执行测试查看测试结果报告发现的错误1.2.1 创建GUI map使用RapidTest Script wizard(快速测试脚本巫师)回顾软件用户界面,并系统地把每个GUI 对象的描述添加到GUI map 中。
你也可以在录制测试的时候,通过点击对象把对单个对象的描述添加到GUI map 中。
注意:当使用GUI map per test 模式,你可以跳过这一步骤。
1.2.2 创建测试你可以通过录制、编程或两者同用的方式创建测试脚本。
录制测试时,在你需要检查软件反应的地方插入检查点(Checkpoint)。
你可以插入检查点来检查GUI 对象,位图(Bitmap)和数据库。
在这个过程中,WR捕捉数据,并作为期望结果(被测软件的期望反应)储存下来。
1.2.3 调试测试你可以先在调试模式(Debug mode)下运行脚本。
你也可以设置中断点(Breakpoint),监测变量,控制WR 识别和隔离错误。
调试结果被保存在Debug folder,一旦调试结束就可以删除。
1.2.4 执行测试你在检验模式(Verify mode)下测试被测软件。
WR 在脚本运行中遇到检查点后,就把当前数据和前期捕捉的期望值进行比较。
如果发现有不符合,就记录下来作为实测结果。
1.2.5 查看测试结果测试是成功还是失败由你来认定。
每次测试结束,WR 会把结果显示在报告中。
报告会详述测试执行过程中发生的所有主要事件,如检查点、错误信息、系统信息或用户信息。
如果在检查点有不符合被发现,你可以在Test Results(测试结果)窗口查看预期结果和实测结果。
如果是位图不符合,你也可以查看用于显示预期值和实测结果之间差异的位图。
1.2.6 报告发现的错误如果由于测试中发现错误而造成测试运行失败,你可以直接从Test Results 窗口报告有关错误的信息。
这些信息通过EMAIL 发送给测试经理(QA Manager),用来跟踪这个错误直到被修复。
1.3 样本软件本教程中很多例子使用WR 附带的Flight Reservation(航班预订)软件。
1.3.1 开始样本软件样本软件位于:开始>程序>WinRunner>Sample Application。
该程序有2 个版本Flight A和Flight B。
1.3.2 样本软件的多个版本Flight A这个版本是正常的软件,Flight B 有一些故意加入的错误。
在WinRunner Tutorial(WR 教学)中,两个版本都被使用来互相比较。
本教程中的例子在两个版本中都可以使用。
如果WR 中安装了Visual Basic 支持,VB 版本的Flight A和Flight B 将被安装到常规样本软件中。
1.3.3 登陆使用任意用户名(长度必须至少4个字符)登陆Flight Reservation(航班预订)软件,密码为:Mercury。
1.3.4 WEB版样品软件;或点击开始>程序>WinRunner>Sample Applications> Mercury Tours site2. WinRunner基础知识2.1 winRunner程序界面在学习创建测试之前,先了解一下winRunner的主界面。
执行【开始】->【程序集】->【WinRunner】->【WinRunner】,首先开启WinRunner Add-in Manager 窗口。
WinRunner Add-in Manager 显示你目前可以使用的Add-in,我们现在介绍的是并没有使用任何Add-in,所以请确认没有勾选任何Add-in 后按下【OK】按钮。
欢迎界面,选择Create a New Test。
2.2 主窗口主窗口包括以下部分:a). WinRunner 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 插入点,支出你可以插入或编辑文本的地方2.4工具栏3. WinRunner如何创建GUI Map3.1关于识别GUI 对象当使用Context Sensitive模式时,这些GUI 对象(如Windows、Menus、Buttons、Lists)可以像用户看到的那样去测试。
每个对象都有一组被定义的属性来决定它的行为和外观。
WR 通过学习这些属性来识别和定位GUI 对象,而不需要知道对象的物理位置。
你可以使用GUI spy查看桌面上任何GUI 对象的属性。
WR 把从GUI map 上学来的信息储存起来。
当执行测试时,WR 使用GUI map 定位对象:先从GUI map 读取有关对象的描述,然后寻找有相同属性的对象。
你可以通过查看GUI map 获得对象的全面图片。
GUI map 是一个或多个GUI map 文件的总合。
有两种方式组织GUI map 文件。