WinRunner使用经验介绍.doc_第1页
WinRunner使用经验介绍.doc_第2页
WinRunner使用经验介绍.doc_第3页
WinRunner使用经验介绍.doc_第4页
WinRunner使用经验介绍.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WinRunner使用经验介绍WinRunner在项目中的作用可以用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 Interactives 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对象一样对待。winrunner经验总结1.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:aaaa.gui”),这样的脚本换到其他机器必然出错。WinRunner录制自动生成的脚本问题: WinRunner的录制脚本往往和机器的环境有关,如果换了其他机器环境,往往回放不成功,这就需要手工修改脚本。因此,可移植性回放是非常必要的。1.1.5 脚本中使用的ODBC数据源名称统一命名为WR。1.1.6 录入中文数据时统一使用简体。1.1.7 数据表列名称规定录入数据驱动的脚本时,数据表列名称统一采用英文,使用PB数据窗口中列对象的名称。数据表列名称下的第一行用中文对英文列名称做注释,使用PB数据窗口中列对象的中文标签,这一行不作为有效的录入数据。与数据表相关的循环语句请修改脚本从数据表的第二行开始读取数据。典型的例子是将数据驱动脚本中For循环的第一个表达式改为table_Row = 2。1.1.8 脚本成功回放判定规定一个子测试录制完成后,一定要及时回放测试,直到测试报告显示测试结果为OK,且子测试明细报告中没有红色的出错提示。如果是回放主测试,回放成功的标准是:主测试的结果报告显示为OK,同时所有子测试的结果报告也为OK,且子测试明细报告中没有红色的出错提示。1.1.9 WinRuner主脚本中关于设置系统日期时间设置的规定,以保证脚本所描述的业务过程按业务逻辑在时间上有序。因为脚本回放与脚本录制时的系统日期时间不一致,会导致与系统时间关系密切的测试脚本回放时失败。为了消除时间差导致的回放错误,要求每一个测试用例的主测试在第一个子测试前加上date_set_system_date(年,月,日,时,分,秒)函数,以修改本地机器的日期时间等于这个主测试在接力式验收回放成功执行后的日期时间.这样再次回放时系统的日期时间就和上一次成功回放时的日期时间一致。1.2 测试脚本存放规范:各子测试脚本必须放到同一目录下,即环境目录下的Script目录下。这样便于批调用时引用。1.3 Gui文件的存放:Gui 文件,必须和测试脚本放到同一目录下,即环境目录下的Script目录下。1.4 WinRunner使用规范:(1) 必须写上清楚的注释:编写测试脚本,要进行详细的标注,每测试一小段,就要写一段备注,以便于将来修改,格式可以参考如下: 功能描述:描述脚本的功能 前置条件:该脚本在满足什么条件下才可以被执行 步骤描述:描述脚本录制的动作 检查点描述:描述作了对什么的检查,检查条件。 录入人:录制人 录入时间: 备注:(2) gui文件的加载保存:每次开始测试用例的录制脚本前,如果该测试用例已经存在gui文件,一定要手工打开gui文件,再开始录制。如果不想手工打开,可以写段自动加载gui的脚本,每次录制前运行一下该脚本。录入脚本后,要注意保存GUI文件,如果测试用例已经存在gui文件,一定要把临时的gui文件合并到该用例的公用gui文件中,然后保存。(3) 如果机器数据较慢,或者网络较慢、或者数据库运行较慢,需要把等待打开窗口的时间设长。或者在脚本中插入同步点来处理。(4) WinRunner不支持Fomular One,目前不可以用wr测试Fomular One使用WinRunner录制时不可以切换不同输入法录制,仅可以用一种输入法。 (5) WinRunner 对shift 键无法纪录,需要特殊处理 ,可以加入如下处理 obj_type dw_1.fslipbugno,-;(告诉WinRunner按下Shift键)中间是选择行的脚本obj_type (dw_1.FBugNo,+;(告诉WinRunner释放Shift键)(6) 保证录制的脚本干净性:在录制过程中,不可避免的要进行其他动作,如打开邮件、打开非录制程序等,这些动作也会被WinRunner录制下来,这些动作会严重影响测试脚本的回放(除非作这些动作前停止录制)。因此,为了保证脚本的干净,在WinRunner的参数中进行如下设置:设置Recode 的“Selected Applications” 为要录制的程序。 (7) 录制脚本时,不允许同时打开两个运行程序(指进行wr测试的程序)(8) 变量的声明:WinRunner有auto public static extern 四个类型的变量作用域声明,其中public为默认的类型。由于public 是全局的,只要在一个脚本中声明了,在任何其他脚本都可以引用,这就带来一个问题,如果其他的脚本修改了这个public 变量的值,将会引发问题。因此变量声明时必须明确的加上类型(auto public static extern),public 的一般不要使用,推荐使用static auto 。2. 异常处理规范:在录制或者编写测试脚本时,必须进行异常的错误处理。以提高程序的错误检查能力。2.1 函数异常检测:对于一些常用函数,必须进行函数执行异常的处理。至少进行如下函数的异常检测:et_window、win_activate、menu_select_item、ddt_open。发现异常后,要终止程序的执行,并发邮件通知相关人员。2.2 返回值规范:模块、函数的返回值约定如下,0 表示成功 ,其他失败。对于一些函数的返回值,需要进行判断处理:(1) 每一个call语句都应该检查它的返回值是否为0, 如果不为0则报错退出。所有GUI检查点、数据库检查点都应做返回值检查。如果不为0则报错退出。WinRunner的问题整理多数问题是在MSN上,论坛上其他测试人员提出的问题,我回答后发现很多人问到同样的问题,这里整理了一下希望对大家有帮助!1.WinRunner如何把Real类型转化为指数表示方法答: 指数类型转化为real类型,可以通过下边的代码 var = 5.3569E+10; pause(var); #显示 53569000000 Real类型转化为指数表示方式 var = sprintf(%e,53568544768); pause(var); #displays 5.356854e+0102.什么是同步点,怎样用它?他和Wait有什么不同?答: 从功能上他们都可以实现脚本和被测试程序同步的问题,不过同步点有window/object,bitmap方式,她等待的是某个等待的对象 窗体,bitmap的出现,一定程度她也可以作为验证点 wait这点上无法实现相同的效果。有的脚本中即使你加入wait,但是你无法知道下边的对象窗体图片是否就是成需要运行的正确 出现的3.tl_step和tl_step_once的区别答:tl_step和tl_step_once都是把运行状态信息放到运行结果中去,区别在如果连接TD,TL_STEP把每步状态信息都插入到测试结果中去,tl_step_once如果连接td,只是插入一次运行步骤的名字 代码例子:-for (i=1;i4;i+) tl_step(Step, PASS, reporting step, # &i); tl_step_once(Step Once, PASS, reporting step once, # &i);-WR中的报告:Step: Step, Status: PASS, Description: reporting step, #1Step: Step Once, Status: PASS, Description: reporting step once, #1Step: Step, Status: PASS, Description: reporting step, #2Step: Step Once, Status: PASS, Description: reporting step once, #2Step: Step, Status: PASS, Description: reporting step, #3Step: Step Once, Status: PASS, Description: reporting step once, #3TD中的报告:Step: Step, Status: PASS, Description: reporting step, #1Step: Step Once, Status: PASS, Description: reporting step once, #1Step: Step, Status: PASS, Description: reporting step, #2Step: Step, Status: PASS, Description: reporting step, #34.WinRunner和TD集成后脚本运行很慢是什么原因呢?答:安装TD和WinRunner服务器上需要独占100GByte,TD需要10OGHZ时钟速度16GB RAM的处理平台 5.WR是否支持根据Mercury的介绍,他们的对.Net的支持转移到QuickTest Pro上了,如果你需要自动化测试.Net程序(不是web的),建议用QuickTestPro。也就是说wr不支持开发的程序6.我对比两个文件file1.txt和file2.txt,文本内容如下file1.txt 内容如下:10523 8315 6804 8387 3643 4550 3457 3649file2.txt内容如下:190176 155737 117417 145194 65314 81431 64522 63324代码如下:file_compare(C:file1.txt,C:file2.txt,save); 为什么每次对比这两个文件结果都是通过的。答:这个问题的原因在于它在前面的脚本中对文件进行了操作,没有关闭,所以这段代码运行总是通过7.如何在winRunner中用Windows的API函数在使用该API函数前需要先加载该函数然后声明API函数,代码如下load_dll(user32.dll);extern int PostMessageA(in long, in long, in long, in long);win_get_info(class:window, MSW_class:AfxMDIFrame42, label:!WinRunner.*, handle, hWnd);PostMessageA(hWnd, 16, 0, 0);请在尝试以上代码的时候,保存脚本,呵呵!8.怎样处理跟踪键盘操作?答:下边的代码希望对你有帮助 function GetKeyStatus(in vKey) auto pid, thread_id, win_desc, hWnd, KeyState, win_log_name, win_full_desc, focused_obj_desc; win_desc = active:1; if (win_exists(win_desc)=0) win_get_desc(win_desc, , , , win_full_desc); GUI_map_get_logical_name( win_full_desc, , win_log_name, bla); win_get_info(win_desc, handle, hWnd); pid = GetWindowThreadProcessId(hWnd, NULL); thread_id=GetCurrentThreadId(); AttachThreadInput(pid,thread_id,TRUE); KeyState=GetKeyState (vKey); AttachThreadInput(pid,thread_id,FALSE); if (KeyState 0) return(0); # Key is pressed else return (1); # Key is not pressed else return (-1); # No active window found, so cannot determine key state 9.WinRunner如何处理excel?答:其实解决方法有很多,这里列举两种。 一.利用其他语言特性开发出dll提供给winrunner使用(vb,vc,delphi等) 二.在其他环境中实现,用winrunner调用 第一种我在这里不举例子了,第二种我利用vbs往excel中赋值给大家提供一种思路,代码如下:vbs中的代码 Dim ExcelApp Dim itemX if WScript.Arguments.Count 2 then r = msgbox(Requires 2 arguments, 48, change_sheet) else dim fso set fso = createobject(scripting.filesystemobject) xlBook = fso.GetAbsolutePathName(WScript.Arguments(0) xlSheet = WScript.Arguments(1) set fso = Nothing Set ExcelApp = CreateObject(Excel.Application) ExcelApp.Workbooks.Open(xlBook) Set itemX = ExcelApp.ActiveWorkbook.Worksheets.Item(xlSheet) itemX.Activate excelApp.ActiveWorkbook.Worksheets(xlSheet).Range(A1).Select excelapp.ActiveCell.FormulaR1C1 = 1 excelApp.ActiveWorkbook.Worksheets(xlSheet).Range(B1).Select excelapp.ActiveCell.FormulaR1C1 = 2 excelApp.ActiveWorkbook.Worksheets(xlSheet).Range(c1).Select excelapp.ActiveCell.FormulaR1C1 = 3 ExcelApp.ActiveWorkbook.Save() ExcelApp.ActiveWorkbook.Close(1) ExcelApp.Quit() Set itemX = Nothing Set ExcelApp = Nothingend ifwinrunner中的调用代码:dos_system(wscript C:excel_sheet.vbs C:SheetBook.xls Sheet2);10.在WinRunner中如何实现得到transaction时间?答:一般情况下transaction的时间只能在最后结果中得到,如何在脚本得到这个时间呢,下边的代码可以帮助你:public transactions;function start_my_transaction(in transaction_name) transactionstransaction_name = get_time(); tl_step(Start transaction: & transaction_name & ,PASS,Timestamp: & transactionstransaction_name); return (transactionstransaction_name);function end_my_transaction(in transaction_name) auto end_time = get_time(); auto rc; if(transactionstransaction_name = ) tl_step(End transaction: & transaction_name & ,FAIL,Transaction was never started.); rc =-1; else tl_step(End transaction: & transaction_name & ,PASS,Elapsed Time: & (rc =end_time - transactionstransaction_name); delete transactionstransaction_name; return rc;start_my_transaction(my_transaction);wait(2);rc = end_my_transaction(my_transaction);pause(Elapsed time = & rc); WinRunner 脚本标准格式目录结构 存放目录要求: 1、根目录与项目名称相同,如江西移动BOSS 测试目录为JXBOSS 2、根目录下应该是按子项目存放,如SALES、ACCOUNT。如果有公共脚本,存放在Share 目录下面 3、子项目下面应该根据功能/TestCase 来存放,如果有公共脚本也应该存放在Share 目录下 4、为存取及备份方便,目录不能使用中文。使用的名称应该尽量与开发保持一致 5、GUI 文件应该存放在脚本的同一目录,并且名称相同 6、正确性测试(使用完全正确数据来检查程序功能是否完成)目录名称规定为validity 以下是一个目录例子 JxBoss -Sales -ChangeSimCard -validity -CheckSimNoExistAnIdError -Share -Share -Account 脚本要求 注释要求 脚本创建及修改说明注释 每个脚本的开头注释格式如下: #脚本名称:文件名称 #创建人:创建人 #创建日期:格式为YYYY/MM/DD #功能:脚本完成的功能描述 #运行前要求:运行前的要打开的窗口及状态要求、数据库中的数据要求、被测试程序运行目录等 #参考文档:描述录制代码是参考的有关设计测试文档 #修改历史: # 修改人: # 修改时间:格式为YYYY/MM/DD # 主要修改内容: 注意创建人及修改人必须是中文完整姓名,不允许使用其它任何名称。运行前的要求一定要描述清楚 子功能注释 在各小段功能前应该加入功能注释,注意不能只是WinRunner 自己产生的注释如: # insert a record # Flight Reservation set_window (Flight Reservation, 1); obj_mouse_click (Button, 13, 16, LEFT); obj_type (MSMaskWndClass,101002); list_select_item (Fly From:, London); # Item Number 2; list_select_item (Fly To:, Paris); # Item Number 3; obj_mouse_click (FLIGHT, 56, 22, LEFT); 注释可以使用英文或中文。 修改代码说明注释 在具体修改的代码附近应该加入如下注释 #修改人 #修改日期 #修改原因/增加功能 注释可以放在一行中,简单修改可以忽略“修改原因/增加功能”,复杂修改应该不能忽 略(简单及复杂标准待定) 代码要求 路径要求 代码中使用的路径都应该使用相对路径,不允许出现类似“d:”、“”下的代码,应该使用类似“.”的代码。 在Script 里面打开和关闭GUI 各Script 的GUI 的文件应该分开保存在与Script 保存在同一个目录,应该使用用 GUI_load 在SCRIPT 开始以前就装载GUI,在SCRIPT 开始增加: if (GUI_load(.login.gui)!=0) pause (Cant load login.gui); texit; 在SCRIPT 完毕的时候加入 GUI_close(.login.gui);关闭GUI,注意代码中的路径一定要使用相对路径。 错误报告 在使用错误报告的时候,应该注意包括出错的脚本文件名称,这样当脚本文件被其他脚本调用时候,也能很清楚在什么地方没有通过。Report_msg 的参数格式定义为“文件名称:错误描述”。同时鉴于WinRunner 的Check 函数不能提供清楚的错误报告,要求错误

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论