首页 软件自动化测试工具WinRunner概述

软件自动化测试工具WinRunner概述

举报
开通vip

软件自动化测试工具WinRunner概述技术创新,变革未来软件自动化测试工具WinRunner概述2在传统的制造业中计量设备、化验设备在生产过程中对质量控制是至关重要的。如果千分尺、天平、实验炉的温度计不准,它所引起的后果可想而知。因此必须规定对这些设备的控制、校准和维修的办法,并建立文件化程序。对于软件企业呢,这里应该指的是软件测试工具的控制。2测试工具概述31、什么是软件测试工具?——软件测试工具是一种测试软件,测试人员借助它来提高软件测试工作的效率。——目前国内软件企业采用软件测试工具还不够普遍。42、软件测试工具的分类①按工作方式分:——静态分析...

软件自动化测试工具WinRunner概述
技术创新,变革未来软件自动化测试工具WinRunner概述2在传统的制造业中计量设备、化验设备在生产过程中对质量控制是至关重要的。如果千分尺、天平、实验炉的温度计不准,它所引起的后果可想而知。因此必须规定对这些设备的控制、校准和维修的 办法 鲁班奖评选办法下载鲁班奖评选办法下载鲁班奖评选办法下载企业年金办法下载企业年金办法下载 ,并建立文件化程序。对于软件企业呢,这里应该指的是软件测试工具的控制。2测试工具概述31、什么是软件测试工具?——软件测试工具是一种测试软件,测试人员借助它来提高软件测试工作的效率。——目前国内软件企业采用软件测试工具还不够普遍。42、软件测试工具的分类①按工作方式分:——静态分析工具——动态测试工具②按工具功能分:——测试计划工具:支持制订测试计划——测试设计与开发工具:支持测试数据生成,测试问题的捕捉与重演——测试执行工具:支持特定的测试 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 、支持回归测试——测试评估工具:报告测试覆盖情况——测试管理工具:协助进行测试的组织工作——其它辅助工具:如数据比较、模拟运行53、如何控制①自行开发的测试工具待成熟才可投入使用②采购产品的选择:优秀的、名牌的③使用前充分检测6白盒测试工具-静态测试工具◼代码审查◼一致性检查◼错误检查◼接口分析◼输入输出规格说明分析检查◼数据流分析◼类型分析◼单元分析◼复杂度分析7白盒测试工具-动态测试工具◼功能确认与接口测试◼覆盖分析◼性能测试◼内存分析8黑盒测试工具◼功能测试工具检测程序是否达到预期的功能并正常运行。◼性能测试工具确定软件和系统的性能◼常用的黑盒测试工具有Rational公司的TeamTest、Compuware公司的QACenter(QARun、QALoad、EcoTools、EcoScope)9WinRunner简介◼MercuryInteractive企业测试和性能管理解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 供应商◼测试套件WinRunnerLoadRunnerTestDirector◼提供整个测试 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 的解决方案测试计划、测试开发;GUI负载测试、错误跟踪、多用户系统客户端负载测试10主要内容◼WinRunner介绍◼WinRunner如何识别GUI对象◼GUIMAP◼创建测试◼检查GUI对象11WinRunner:强大的企业级测试自动化工具◼基于MSWindows的功能测试工具;◼由于软件功能增加越来越快,测试难度越来越大,手工测试已经跟不上这种发展趋势;◼WR可以帮助自动处理从测试开发到测试执行的整个过程。可以创建可修改和可复用的测试脚本,而不用担心软件功能模块的变更。12TestDirector:全球测试管理系统◼TD是业界第一个基于web的测试管理系统,可在公司组织内进行全球范围内测试的协调。◼TD通过在一个整体的应用系统中提供并且集成了测试需求管理,测试计划,测试日程控制以及测试执行和错误跟踪等功能,极大地加速测试过程。13LoadRunner:工业 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 级负载测试工具◼LR是一种预测系统行为和性能的负载测试工具。通过模拟成千上万名用户和实施实时性能监测来确认和查找问题。◼使用LR,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。14WinRunner的安装154.1WinRunner使用概述1.启动WinRunner◼点击开始>程序>WinRunner>WinRunner启动WR。WR的Record/RunEngine(记录/执行引擎)的图标出现在Windows的任务条上。这个引擎设立和维护WR和被测软件之间的连接。◼第一次启动WR会看到欢迎窗口,可以选择新建测试、打开已有测试或快速预览WR。如果不希望下次启动看到这个窗口,可以把Showonstartup前面的勾去掉。162.加载WinRunner插件◼在WinRunner启动时,可以选择支持ActiveXcontrol、PowerBuilder、VisualBasic或WebTest的插件。◼把Showonstartup前面的勾去掉,这样Add-InManager的窗口就不会在WR启动的时候出现。也可以在进入WR后在Settings>GeneralOptions>Enviroment里面设置是否在开始时显示这个窗口以及等待时间等。◼建议:不要同时载入所有的插件。173.WinRunner主窗口主窗口包括以下部分:◼WinRunnertitlebar(标题栏)◼Menubar(菜单栏)◼Standardtoolbar(标准工具栏),包含运行测试时常用的命令◼Usertoolbar(用户工具栏),包含创建测试时常用的命令◼Statusbar(状态栏)18WinRunner主窗口19确认显示工具条204.测试窗口在测试窗口创建和执行测试,窗口包含以下部分:◼TestWindowtitlebar(测试窗口标题栏),显示当前打开的测试名称◼Testscript(测试脚本),通过录制或编写代码方式生成◼Executionarrow(执行箭头),指明当前正在执行的那一行脚本,如果想要移动这个标志到某一行,只需要在该行左侧空白处点击鼠标左键◼Insertionpoint(插入点),你可以插入或编辑文本的地方2122记录Script1、先将光标移动到要插入Script的地方!2、启动要录制的Application3、按红色按钮开始录制4、停止录制23WinRunner测试过程WR的测试过程分六个步骤:◼创建GUImap(RapidTestScriptwizard)◼创建测试◼调试测试(DebugMode)◼执行测试(VerifyMode)◼查看测试结果(TestResults)◼报告发现的错误244.2WinRunner如何识别GUI对象◼GUI的每个对象都有一组被定义的属性来决定它的行为和外观。WinRunner通过学习这些属性来识别和定位GUI对象,而不需要知道对象的物理位置;◼WinRunner把从GUImap上学来的信息储存起来。当执行测试时,WinRunner使用GUImap定位对象:先从GUImap读取有关对象的描述,然后寻找有相同属性的对象;◼当GUI被修改了之后,先前的脚本仍然可以使用——用户只需要在GUImap上添加、删除或编辑相关的对象的描述,WinRunner就可以在修改后的软件上找到这些对象。25GUI对象的逻辑名◼在测试脚本中,WinRunner不使用全部的物理描述来表示对象,而是给每个对象一个逻辑名。◼对象的逻辑名由它的类决定。多数情况下,逻辑名是对象的卷标:一个button的逻辑名就是它的卷标,如“OK”或“Cancel”;一个window的名称就是它标题栏上的文本;一个list的名称是list上方或旁边的文本。◼逻辑名和物理描述一起作用,确保每个GUI对象有自身唯一的标识。26GUI对象的物理描述◼WinRunner使用物理描述识别被测软件的GUI对象◼物理描述包括物理属性名和相应的值;这些属性-值的配对在GUImap中以下面的格式出现:{属性1:值1,属性2:值2,property3:value3,….}例如:对于“Open”window的描述包含两个属性:类(Class)和卷标(Label)。类的属性的值是“window”,卷标的属性的值是“Open”:{class:window,label:Open}◼类的属性标识对象的类型。每个对象根据功能不同属于不同的类:window,pushbutton,list,radiobutton,menu等。27284.3GUImap◼选择Tools>GUIMapEditor可以查看GUImap的内容。GUImap实际上是一个或多个GUImap文件的总和。◼在GUIMapEditor中,可以查看整个GUImap或单个GUImap文件的内容。GUI对象按照他们在软件中出现时所在的窗体分组。2930用GUISpy查看GUI对象的属性◼GUISpy可以用来检视某个GUI对象有哪些属性以及WR是以哪些属性来识别它的。◼过程:开启GUISpy;按下[spy]按钮,将鼠标移动到登入窗口上,将鼠标移到[OK]按钮上,然后按下Ctrl_L+F3,在跳出的Spy模式里,可以看到显示[OK]按钮的属性。31检视GUISpy显示的信息◼在[Recorded]标签,是显示WR用来识别[OK]按钮的属性,分别是class:push_button以及label:Ok,表示这个GUI对象是个按钮,按钮上面的文字是OK;◼在[AllStandard]标签,则是显示[OK]按钮的所有属性。WR只用最少的属性来识别GUI对象!32设定窗体环境(WindowContext)◼WR在对象出现的窗体环境中学习和实现操作。当录制脚本时,一旦当前窗体(Activewindow)改变而且有GUI对象被操作,WR会自动在测试脚本中插入一条set_window语句。然后所有的对象就在那个窗体环境中被识别。例如:Set_window(“Print”,12);Button_press(“OK”);◼Set_window(“Print”,12)指明Printwindow(打印窗口)是当前窗体。OKbutton是在这个窗体环境里学到的。◼如果手工编写脚本,则需要写入set_window语句以对应当前窗体的变化。同样在编辑脚本时注意不要随意删除必要的set_window语句。33教WinRunner学习被测软件的GUIWR需要先学习软件的GUI◼当使用GUIMapFileperTestmode时,WR会在录制脚本时自动学习软件的GUI。◼当使用GlobalGUIMapFilemode(共用GUI映射文件)时,需要教给WR有关GUI对象属性的信息。方式:使用RapidTestScriptwizard在录制脚本前一次性的学习每个窗体中所有的GUI对象的属性;通过录制脚本的方法学习被录制的那部分软件中所有的GUI对象的属性,如果只使用录制的方法让WR学习对象,WR或许不能把窗体上所有的对象都学到(因为有对象没有被操作),学习得不全面;录制方式只用于小的或临时的测试。使用GUIMapEditor学习单个GUI对象、窗体或某个窗体中所有GUI对象的属性。◼注意:在GUIMapFileperTest模式下,RapidTestScriptwizard将被禁用。34GUImapfile模式的选取◼计划和创建测试时,需要确定GUImap的工作模式。◼作为WR新手或GUImap只使用一次,可以使用GUIMapFilePerTest模式。这种模式下,每次新建测试就自动新建一个GUImapfile。在你保存测试时,GUImapfile自动保存;在你打开测试时,GUImapfile自动加载。◼作为WR老手或GUImap将被不同测试共享,建议使用更有效率的GlobalGUIMapFile模式。这是WR的默认模式。35两种模式的优缺点比较:GUIMapFilePerTestGlobalGUIMapFile优点1.每个测试都有自带的GUImapfile。2.使用方便,且避免忘记保存或加载GUImapfile。3.作为单次测试,容易维护和更新(就是重新录一次)。1.如果对象或窗体属性改变,只需要在GUImapfile里把对应的属性修改。2.容易维护和更新(无需重新录制)缺点一旦软件GUI变更,每个测试的GUImapfile都要重新录制。要记住保存和加载GUImapfile。建议如果你对WR没有经验或被测软件的GUI已经固定,可以采用这种模式。如果你是有经验的WR使用者或被测软件的GUI经常变化,最好使用这种模式。364.4GlobalGUIMapFile模式的使用◼WR最有效率的用法是把测试分组。一组中的测试(任务)都测试同一窗体上的GUI对象。这样这些任务就可以共享GUImapfile。当GUI发生变化,只需要修改一个GUImapfile,就可以让同组中的任务都正常工作。37RapidTestScriptwizard的使用1).选择Create>RapidTestScriptWizard,点击Next。注意:当载入WebTest插件或其他某些插件后,RapidTestScriptwizard将被禁用。2).标识被测软件屏幕打开点击指向手(手型图标),然后点击被测软件。被测软件的窗体名称显示在WindowName框中。3).选择测试屏幕打开4).选择希望WR创建的测试类型。当RapidTestSciptWizard在被测软件中走查结束,选择的测试就会被显示在WR窗口中。38RapidTestScriptwizard的使用(续)5).消除所有设定(这里仅识别GUI对象)6).接受NavigationControls默认值此窗口主要告诉WR哪些GUI对象会开启一个新窗口,默认[…]与[>>]。点击Next。7).选择Express(快速)或Comprehensive(全面)学习流程。点击Learn。WR就开始系统地一个窗口一个窗口地学习被测软件。8).选择Yes或No来告诉WR你是否希望在你使用WR时,让WR自动启动这个被测软件。点击Next。9).输入启动脚本和GUImap文件的保存路径和文件名,或使用默认值。点击Next。3910).输入测试文件的保存路径和文件名,或使用默认值。点击Next。11).点击OK关闭RapidTestScriptwizard。刚才创建的测试被显示在WR窗口中。40可选择以下几种类型的测试:◼GUIRegressionTest(界面回归测试)-用来比较软件不同版本中的GUI对象。例如检查一个button是否被禁用。创建这种测试时,WR先捕捉GUI对象默认信息。在回归测试时,WR把当前信息和默认比较,并报告不符合的地方。◼BitmapRegressionTest(位图回归测试)-用来比较软件不同版本中的位图图片。如果被测软件没有GUI对象,则选择这种类型。创建这种测试时,WR先捕捉被测软件每个窗体的一幅位图图片。在回归测试时,WR把当前图片和以前捕捉的比较,并报告不符合的地方。◼UserInterfaceTest(用户界面测试)-这种测试决定被测软件是否符合MicrosoftWindows标准。◼TestTemplate(测试模板)-这种测试提供一个操作被测软件的自动测试的基本框架。它打开和关闭每个窗口,为你留下可以添加代码(手写或录制)的空间。41UserInterfaceTest(用户界面测试)检查:a).GUI对象在窗体中的排列b).所有被定义的文本(text)在GUI对象上可见c).GUI对象上的卷标(Label)以大写字母写d).每个卷标包含一个有下划线的字母e).每个窗口有一个OKbutton,一个Cancelbutton,和一个系统菜单WR搜索软件UI,把不符合MicrosoftWindows标准的地方报告出来。42保存GUIMap1).选择Tools>GUIMapEditor,打开编辑器。2).选择View>GUIFiles。3).确认文件显示在GUIFile清单中。文件名前有一个星号(*),表示GUImap文件被改变了。当文件保存后,星号消失。4).在GUIMapEditor中,选择File>Save打开SaveGUIFile对话框。5).选择文件夹、文件名(或输入新文件名)。点击保存。被保存的GUImap文件被加载并显示在GUIMapEditor里。43加载GUIMap文件有两种方法加载GUImap文件:◼用GUI_load功能◼从GUIMapEditor中加载444.5GUIMapFileperTest模式◼WR通过录制的方式学习被测软件的GUI。如果GUI发生变化,可以用GUIMapEditor更新每个测试的GUImap。◼无需加载或保存GUImap文件。◼注意:如果改变了对象的逻辑名,必须更新脚本。454.6创建测试◼用户可以用录制或编程的方式创建测试。通常从录制一个基础测试脚本开始——用户对被测软件进行操作,TSL语言记录下这些操作;用户可以在脚本中修改、添加功能等。◼有两种可用的录制模式:ContextSensitive模式录制你对GUI对象的操作;Analog模式用X轴和Y轴定位跟踪鼠标运行轨迹。46ContextSensitive模式◼主要以GUI对象为基础,WR会识别使用者点选的GUI对象以及执行的操作;◼如在登入窗口按下[OK]按钮动作,则WR产生button_press(“OK”),执行这段TSL,WR会在应用程序上找寻[OK]按钮,然后按下它。47Analog模式◼WR主要录制鼠标移动的轨迹、鼠标的点选以及键盘的输入三种动作;◼如在登入窗口按下[OK]按钮动作,则WR产生move_locator_track(1);鼠标移动mtype(“-”);按下鼠标左键mtype(“+”);放开鼠标左键◼执行这段TSL,WR会控制鼠标移动,此鼠标移动的轨迹是以屏幕的绝对坐标为基准,所以当应用程序的位置或是使用接口变动,则测试脚本将会执行失败。48两种Recording测试的模式ContextSensitive(环境判断模式)Analog(模拟模式)应用程序只对GUI对象进行操作应用程序不仅仅只对GUI对象进行操作,对位图敏感。如画图软件等Defaultmode完全按照用户鼠标、键盘的移动来进行记录Recommended使用ContextSensitive不能完成测试时。提示:假如测试的应用程序包含一般GUI对象,也包含绘图区域,在录制过程中,可随时切换录制模式49创建测试脚本的主要步骤1.决定要测试的功能点。确定想在脚本中使用的检查点和同步点。检查点用于比较软件当前版本和以前版本的区别;同步点用来处理测试运行中可能发生的时间控制和窗体位置等问题。2.在测试属性对话框里把测试相关的信息文档化。3.选择录制模式(ContextSensitive或Analog)并录制。4.给测试分配一个名字并保存。50检查点在脚本中可以插入以下四类检查点:1)GUI检查点,检验GUI对象信息。比如:可以查看一个button是否可用或一个清单中哪个项目被选定了。2)位图检查点,做一个窗体或区域的截图,并把这张图片和以前版本进行比较。3)文本检查点,读取GUI对象和位图中的文本,可以检验文本内容。4)数据库检查点,检查一定数量的行和列组成的集合(这个集合由你在数据库中创建)的内容。51同步点◼同步点解决测试和被测软件之间的时间占用问题。例如:如果创建一个打开数据库软件的测试,你可以插入一个同步点让测试等待直到在数据库中的记录在屏幕上被加载。52录制ContextSensitive模式的测试脚本录制测试的操作方法:1).开启WR并加载GUIMapFile;2).开启FlightReservation并登入;3).开始以ContextSensitive模式录制测试脚本;4).开启3号定单;5).停止录制;6).保存测试脚本为lesson3。注意:WR是以目录的方式而不是单一文件的方式储存lesson3测试脚本,此目录将会包含测试脚本以及测试执行的结果。53录制测试的操作方法:1).开启lesson3测试脚本,将光标移到最后一行;2).开始以ContextSensitive模式录制测试脚本;3).开启传真订单;[FaxNumber]输入41555512344).勾选[sendsignaturewithorder];5).在ContextSensitive模式下录制签名动作;6).清除签名;7).将FaxOrder窗口移动到其他位置;8).在Analog模式下录制签名动作;(F2或再按一次Record按钮进行切换)录制Analog模式的测试脚本549).切换回ContextSensitive模式并将订单传真出去;10).停止录制;11).保存测试脚本;12).记住保存新的GUI对象。前次FaxOrder窗口的GUI对象并未被识别,当录制到FaxOrder窗口上的操作时,会被识别到并先放到temporaryGUIMapFile中。关闭WR后,此GUI对象将会被抛弃。55录制时的要点:◼录制前,关闭所有无关的程序。◼创建可以自我复原的测试,以便测试脚本可以重复执行测试。当测试结束时,测试环境必须恢复到测试前的状态。◼录制时,你可以把WR最小化而使用User工具条(需要先把工具条和菜单分开)。这样你就可以全屏录制程序了。所有主要命令都在工具条上,当然你也可以自定义工具条的内容。◼在Analog模式下录制时,避免超前输入。如果需要打开一个窗口,就等窗口完全打开后再继续操作。避免按住鼠标键不放,尤其是当这个操作会造成重复操作时(如点在滚动条上来移动屏幕显示的内容)。因为这样会造成一个无法被回放的时间感应(time-sensitive)操作。如果真的需要对鼠标键连续操作,可以多点击几下。◼录制过程中,在一个窗体中移动时尽量使用鼠标,不要用Tab键。56◼当需要从ContextSensitive模式切换到Analog模式时,在切换前建议移动一下窗口,如此可确保以Analog模式录制完成后执行时,窗口位置为固定的。◼在Analog模式下录制时,尽量使用热键插入检查点,不要用WR菜单或工具条。◼当在GlobalGUIMapFile模式下录制测试脚本时,录制的GUI对象之前并未录制过,则WR会将其放在temporaryGUIMapFile中。◼当在GlobalGUIMapFile模式下录制测试脚本时,经常检查新的GUI对象是否被新增到temporaryGUIMapFile中,记得存盘。57测试编程◼可以用编写代码的方法创建一个完整的脚本或是增强已录制的脚本。WR自带一个虚拟编程工具-功能生成器(FunctionGenerator),可以快速无错地在脚本中添加TSL功能。添加时,只需点一个对象或从功能清单上选择。◼可以像普通编程一样使用变量、控制语句、数组和自定义功能。584.7运行测试◼三种运行模式Verify校验模式:用于检查应用程序;Debug调试模式:用于调试测试脚本;Update更新模式:用于更新预期的结果(以便与实际运行结果比较)。◼更改运行模式59Verify模式◼使用该模式检查用户的应用程序;◼WinRunner将用户应用程序的当前响应(输出)与其预期响应相比较。任何的差异都会被捕获并存储为校验结果;◼当用户运行完一个测试时,WinRunner默认会打开测试结果窗口,以便用户查看校验结果。60Debug模式◼在修改完测试脚本后,通常会执行看看是不是顺利,有没有语法或逻辑上的错误。WinRunner使用该模式帮助用户找出脚本中的缺陷;可以逐行执行测试脚本;设定断点;以WatchList检视变量的值◼以Debug模式运行一个测试与以Verify模式运行一个测试基本相同。唯一的区别在于调试运行的结果总是存储于debug文件夹;◼一旦用户进入Debug模式运行测试,运行模式会一直保持不变直至用户手工激活另外一个模式。61Update模式◼使用该模式更新一个测试的预期结果或者创建一个新的预期结果文件文件夹;◼当某一测试在update模式运行完成后,verify模式再次自动变为缺省运行模式;◼WinRunner一般将预期结果存在exp文件夹,并覆盖掉先前已有的任何结果。624.8检查GUI对象◼检查单个属性的值◼检查单个对象◼检查一个窗体中的多个对象◼检查一个窗体中的所有对象63GUI对象检查点◼如何检查GUI对象;◼练习GUI对象检查点;◼用不同的应用程序验证GUI对象检查点。64如何检查GUI对象◼在测试应用程序时,通常是透过检查GUI对象的属性,来测试功能是否正常。当GUI对象的属性值与预期的值不符合时,表示有问题产生了。◼在WR中可以建立GUI检查点,可以检查:65建立单一GUI对象的检查点◼当鼠标点一下,WR会以预设检查的属性建立检查清单,并将检查点插入到测试脚本◼当鼠标点两下,CheckGUI对话窗口会开启并显示选取的GUI对象,以及此GUI对象可供检查的属性。勾选想要检查的属性,WR就会建立检查清单(checklist),并将检查点插入到测试脚本6667◼WR会选取建立检查点当时的属性值当作预期的值,并且在测试脚本中插入obj_check_gui或win_check_gui(针对GUI对象或窗口对象);◼执行测试脚本,WR会自动比对执行时的实际值与建立检查点时的预期值,如果一致,表示检查点检查通过,否则,检查点检查失败。68测试结果窗口69关于运行差异的提示◼当WinRunner以Debug或者Verify模式运行测试,如果发现与预期结果不一致的地方,会给出提示:70建立GUI对象检查点时的建议◼可以使用create>GUICheckpoint>ForMultipleObjects…,一次检查窗口中多个或是全部的GUI对象;◼如果打算在深夜或无人时执行测试,可以设定当检查点不一致时,WR不要显示讯息以免中断测试的执行;◼如果想要更新检查点的预期值,请以Update模式执行一次测试脚本,则WR会以执行当时截取到的值,覆盖原本的预期值,成为新的预期值。71关闭提示◼WinRunner主窗口→Settings→GeneralOptions…72练习1).开启WR并加载GUIMapFile;2).开启FlightReservation并登入;3).开始以ContextSensitive模式录制测试脚本;4).开启[OpenOrder]窗口;5).对[OrderNo.]checkbox建立检查点;(2次点击)6).输入订单编号4;7).对[OrderNo.]checkbox建立另一个检查点;(1次点击)8).对[CustomerName]checkbox建立一个检查点;(2次点击)9).按下[OK]开启订单;停止录制;保存测试脚本lesson5。73◼执行测试脚本;◼在另一个版本的FlightReservation执行测试脚本;◼检视测试结果。744.9图像检查点◼如何检查应用程序的图像;◼示范如何建立图像检查点;◼用不同的应用程序验证图像检查点;75如何检查应用程序的图像◼WR提供图像的检查点,以象素的方式比对图像;◼WR提供三种方式建立图像检查点:屏幕区域:以鼠标拖拉方式决定图像检查点的区域;窗口:以整个窗口作为图像检查点的区域;GUIobject:以整个GUI对象作为图像检查点的区域76建立图像检查点1.开启WR并加载GUIMapFile;2.开启FlightReservation并登入;3.以ContextSensitive模式录制测试脚本;4.开启订单、传真订单;5.输入传真号码、移动传真订单窗口;6.切换到Analog录制模式;7.在[AgentSignature]中签下你的名字;8.切换到ContextSensitive录制模式;77建立图像检查点(cont.)9.建立图像检查点检查你的签名;选取[BitmapCheckpoint]>[ForObject/Window],以鼠标点选[AgentSignature],测试脚本中插入obj_check_bitmap指令;10.清除签名;11.再建立图像检查点;测试脚本中插入obj_check_bitmap指令;12.关闭传真订单窗口;13.停止录制;14.储存测试脚本lesson6;15.将GUIMapFile保存(如果使用GlobalGUIMap模式的话)78检视预期结果◼开启WR测试结果窗口;◼检视WR截取的图像;◼关闭测试结果窗口。79在另一个版本执行测试脚本1.关闭FlightReservation1A;2.执行FlightReservation1B;3.确认目前的测试脚本为刚刚录制的;4.确认执行模式为Verify;5.点选RunFromTop;6.执行时出现mismatch窗口;7.检视测试结果;8081在另一个版本执行测试脚本(cont.)8.关闭测试结果窗口;9.关闭FlightReservation;10.关闭测试脚本。82建立图像检查点时的建议◼可以使用create>BitmapCheckpoint>ForScreenArea,以屏幕区域建立图像检查点,WR会插入win_check_bitmap指令;◼如果打算在深夜或无人时执行测试,可以设定当检查点不一致时,WR不要显示讯息以免中断测试的执行;◼如果想要更新检查点的预期值,请以Update模式执行一次测试脚本,则WR会以执行当时截取到的值,覆盖原本的预期值,成为新的预期值。834.10同步点◼何时该使用同步点;◼如何建立同步点;◼执行测试并分析结果。84何时该使用同步点◼当执行测试时,所测试的应用程序每次操作的响应时间并不一定,导致执行输入动作的时间也需要等待。◼比如以下的动作,会花几个秒钟:从数据库取得数据;等待一个窗口开启;等待状态列成为100%;等待某个状态讯息出现;85何时该使用同步点(cont.)◼此时,WR会等待一段固定的时间,直到应用程序可以接受输入的动作;◼等待时间的默认值为10s;◼如果应用程序响应的时间超过WR等待的时间,则测试执行就可能会失败。86解决办法A.增加WR预设等待的时间;Senttings>GeneralOptions>Run,将[TimeoutforcheckpointsandCSStatements]的值加大,预设为10000msec。加大此设定可能会造成在ContextSensitive的动作变慢。B.在测试脚本中插入同步点。87如何识别何种问题需要以同步点解决8889加入同步点◼在测试脚本中插入同步点,这个同步点会截取状态列上InsertDone…的图像;◼再次执行测试脚本时,WR会等到InsertDone…的图像出现后,才执行点选[DeleteOrder]的动作。90插入同步点◼在button_press(“DeleteOrder”);这一行上面插入一行空白行,并将光标移到这一空白行的开头;◼点选Create>Synchronization>ForObject/WindowBitmap,将鼠标光标移到InsertDone…的状态列上并点选;◼WR会在测试脚本中插入一行指令:obj_wait_bitmap(“InsertDone…”,”Img”,1);◼可手工将函数参数1s改为10s。91执行测试脚本并检视结果◼执行已加入同步点的测试脚本:确认WR与FlightReservation的主窗口开启;开启测试脚本;确认工具列上显示Verify模式;点选RunFromTop;92测试结果93练习◼录制测试脚本:在FlightReservation中建立一张新的订单,并新增到数据库中;然后删除刚刚新增的订单;◼变更预设等待时间的设定(改为1s);◼识别何种问题需要以同步点解决;◼加入同步点;◼执行测试脚本并检视结果。944.11使用TSL撰写测试脚本◼如何在录制好的测试脚本中以可视化的方式加入函数;◼如何在测试脚本中加入判断式;◼如何调试(debug)。95函数产生器(FunctionGenerator)◼可视化工具,帮助在测试脚本中快速插入函数;◼提供两种使用方式:直接点选GUI对象,让WR为你建议合适的函数,然后再把函数加入测试脚本中;直接依照分类,从函数清单中挑选要使用的函数。96录制基本测试脚本◼开启WR并加载GUIMapFile;◼开启FlightReservation并登入;◼开始以ContextSensitive模式录制测试脚本;◼开启订单在FlightReservation选取[File]>[OpenOrder],勾选[OrderNo],输入3后按下[OK]◼传真订单;◼点选Cancel关闭传真订单窗口;◼停止录制;◼储存测试脚本lesson7。97使用函数产生器在测试脚本中插入函数◼在button_press(“Cancel”)脚本前插入一行空白;◼开启传真订单窗口;◼取得#Tickets字段的值选取[InsertFunction]>[ForObject/Window]函数产生器会开启并建议使用edit_get_text函数;变量的预设名称为text,可改成tickets;按下[Paste]将函数插入到测试脚本中。◼取得TicketPrice字段的值98使用函数产生器在测试脚本中插入函数(cont.)选取[InsertFunction]>[ForObject/Window]函数产生器会开启并建议使用edit_get_text函数;变量的预设名称为text,可改成price;按下[Paste]将函数插入到测试脚本中。◼取得Total字段的值选取[InsertFunction]>[ForObject/Window]函数产生器会开启并建议使用edit_get_text函数;变量的预设名称为text,可改成total;按下[Paste]将函数插入到测试脚本中。◼点选Cancel关闭传真订单窗口;储存测试脚本。99在测试脚本中加入if/else判断式◼将光标放在最后一个edit_get_text脚本的下一行;◼加上下列的脚本:If(tickets*price==total)tl_step(“total”,0,“Totaliscorrect.”);elsetl_step(“total”,1,“Totalisincorrect.”);◼在if脚本前加上批注:checkthatthetotalticketpriceiscalculatedcorrectly.◼储存测试脚本。100了解tl_step函数◼透过加上的tl_step函数,可以自行决定测试脚本中的某段动作是否通过,进而决定整个测试脚本的执行结果是否通过;◼tl_step(“total”,1,“Totalisincorrect.”);第一参数total代表这个动作的名称;第二参数为1则WR会判定此动作为失败,为0则WR会判定此动作为通过;第三参数Totalisincorrect是WR针对此动作显示的讯息,有意义的描述可帮助你在检视最后测试结束时,更了解此动作所代表的意义。101测试脚本的调试(debug)◼选取Debug模式;◼将执行箭头放在测试脚本第一行;◼逐行执行:选取[Debug]>[Step],WR开始执行第一行◼逐行执行完整个测试脚本;◼停止执行:执行完最后一行后,点[Stop]按钮◼检视测试结果:选取[Tools]>[TestResults],开启测试结果窗口;◼关闭测试结果窗口。102在另一版本FR执行测试脚本◼执行FlightReservation1B;◼点选执行模式为Verify;◼点选RunFromTop;◼检视测试结果;◼关闭测试结果窗口;◼关闭FlightReservation;◼关闭测试结果;103练习◼录制基本测试脚本:开启订单;开启传真订单窗口;◼使用函数产生器在测试脚本中插入函数;◼在测试脚本中加入判断式:检查总金额是否等于机票单价*机票张数;◼调试测试脚本;◼在另一版本的FR执行测试脚本;◼检查结果是否正确。1044.12建立数据驱动测试脚本◼如何使用数据驱动向导(DataDriverWizard)建立数据驱动测试脚本;◼如何以regularexpression作为对象名称;◼如何让测试脚本重复执行;105如何建立数据驱动(Data-driven)测试脚本◼为达到用多组不同的数据去执行测试脚本的目的,必须将测试脚本转化成数据驱动测试脚本,同时建立一个数据表。◼将测试脚本转化成数据驱动测试脚本(可以使用DataDriverWizard或手工修改)步骤:加上开启及关闭数据表的指令;加上循环并读取数据表的每一笔数据;将录制的固定值与检查点的值参数化为数据表的字段值。106将测试脚本转化成数据驱动(Data-driven)测试脚本◼开启前一节课产生的测试脚本lesson7;◼检查GUIMapFile是否已经加载;◼执行数据驱动向导点选[Tools]>[DataDriverWizard],出现如下图所示的欢迎窗口,选择下一步;◼建立数据表在[UseaneworexistingExceltable]输入lesson8.xls,自动建立一个Excel档案,存储在测试脚本的目录下;107108109◼指定数据表的变量名称[Assignanametothevariable]使用默认值table为数据表的变量名称;以数据表的变量来代表数据表的完整路径与文件名,只要修改此变量的值就可以用其他的数据表取代原本的测试数据了。◼设定参数化选项[Addstatementstocreateadata-driventest]:表示由数据驱动向导自动将转成数据驱动测试脚本的指令加到测试脚本中;[Parameterizethetest]此选项表示要做参数化110选择要被参数化的值◼第一个显示要参数化的测试脚本为button_set(“OrderNo.”,ON);这行脚本是勾选[OrderNo.]radiobutton,不是我们要作参数化的测试脚本,勾选[Donotreplacethisdata],按下一步。111112◼第二个显示要参数化的测试脚本为edit_set(“Edit”,“3”);这行脚本是在[OrderNo.]字段中输入3,就是我们要做参数化的脚本;在[Argumenttobereplaced]字段中显示要被参数化的资料为3;在[Replacetheselectedvaluewithdatafrom:]下选取[Anewcolumn],并在字段中输入Order_Num,则DataDriverWizard会在lesson8.xls中新增一栏Order_Num字段,且第一笔数据为被参数化的资料:3。按下一步。113114◼完成按下[Finish]按钮,DataDriverWizard将测试脚本转成数据驱动测试脚本:table=“lesson8.xls”;rc=ddt_open(table,DDT_MODE_READ);If(rc!=E_OK&&rc!=E_FILE_OPEN)pause(“Cannotopentable.”);ddt_get_row_count(table,table_RowCount);for(table_Row=1;table_Row<=table_RowCount;table_Row++){ddt_set_row(table,table_Row);115#FlightReservationset_window(“FlightReservation”,4);menu_select_item(“Flie;OpenOrder…”);#OpenOrderset_window(“OpenOrder”,1);button_set(“OrderNo.”,ON);edit_set(“Edit”,ddt_val(table,”Order_Num”));button_press(“OK”);#FlightReservationset_window(“FlightReservation”,2);menu_select_item(“Flie;FaxOrder…”);116#FaxOrderNo.3set_window(“FaxOrderNo.3”,1);edit_get_text(“#Tickets:”,tickets);edit_get_text(“TicketPrice:”,price);edit_get_text(“Total:”,total);#checkthatthetotalticketpriceiscalculatedcorrectly.If(tickets*price==total)tl_step(“total”,0,“Totaliscorrect.”);elsetl_step(“total”,1,“Totalisincorrect.”);button_press(“Cancel”);}ddt_close(table);117将数据加入数据表◼开启数据表选取[Tools]>[DataTable]开启数据表,可以看到第一栏为Order_Num,且其第一笔资料为3;加上4笔数据,分别为1、6、8、10,如下图所示;储存数据表储存测试脚本118119以regularexpression调整测试脚本◼在flight1a.GUI找到FaxOrderNo.3窗口;◼修改窗口label属性;点选[Modify]按钮,开启Modify窗口。120◼在[PhysicalDescription]字段中,将label这一行第一个双引号后加上!,然后将3与前面的空白删除改成*号。121◼关闭Modify窗口◼将GUIMapFile存盘(如果使用GlobalGUIMapFile模式)所谓regularexpression就是利用某些字符,来表示特定的字符,例如用*来表示所有的字符。上面就是将传真窗口的label属性修改成regularexpression,以解决找不到窗口的问题。122使用通配符来识别GUI对象符号用途.任何单一字符[0-9]任何数字[A-Z]任何大写字母[a-z]任何小写字母[m,f]这里m,f可以是任意字符,[m,f]表示可以是字符m或者f*任何循环字符(anyrepetitionofpreviouscharactreorexpression).*任何字符组成的字符串123修改结果信息◼为了让测试结果能更有意义,可修改测试脚本的tl_step,使其显示的信息更有意义◼修改tl_setptl_step(“total”,0,“Totaliscorrect.”);改为:tl_step(“total”,0,"Correct."tickets"ticketsat$"price"cost$"total".");tl_step(“total”,1,“Totalisincorrect.”);改为:tl_step(“total”,1,“Error.”tickets”ticketsat$”price”doesnotequal$”total”.”);◼储存测试脚本lesson8124执行测试脚本并分析结果◼确认Flight1a已经开启在桌面上;◼以Verify作为执行模式;◼点选RunFromTop;◼检视测试结果,如下图所示;测试结果显示5笔tl_step记录,每一笔记录都显示了票数、单价、总金额的值。◼关闭测试结果;◼关闭FlightReservation;◼关闭lesson8测试脚本。125126建立数据驱动脚本时的建议◼可以只将测试脚本的一部分转成数据驱动测试脚本;◼可以开启default.xls然后存储成其他文档名,以便使用多个测试数据表;◼GUI/图像检查点、图像同步点、常数均可参数化;◼数据表的使用方式与Excel工作表相同,可以在存储格式中使用公式;127◼在执行数据驱动测试脚本之前,应该先检查整个测试脚本以及其他部分,如GUI对象的属性等,看看是否有冲突的部分使用regularexpression将属性变动的部分以特殊字符取代;重新设定GUIMapConfiguration,将会变动的属性排除掉。◼测试执行时并不需要开启数据表监视器(datatableviewer)。1284.13文字检查点(Textcheckpoint)◼如何读取图像或非标准GUI对象上的文字;◼建立一个读取并验证文字的测试脚本;◼执行测试脚本并分析结果。◼提示:要验证标准的GUI对象上的文字,建议使用GUI检查点,以省去手动撰写测试脚本的不便。129从应用程序读取文字◼开启WR并加载GUIMapFile;◼开启FlightReservation并登入;◼确认文字识别的设定选取[Settings]>[GeneralOptions],点选TextRecognition],确认[TimeoutforTextRecognition]设定为合理的值,默认500,点击[OK]。130◼开始以ContextSensitive模式录制测试脚本;◼开启图表在FlightReservation中点选[Analysis]>[Graphs];◼读取图表上的票数WR中点选[Create]>[GetText]>[FromScreenArea];光标会变成十字光标,以左键拖拉的方式框住票数后,再以鼠标右键结束操作;WR会插入:obj_get_text(“GS_Drawing”,text,247,202,266,222);#34131132◼关闭图表窗口;◼建立新订单在FlightReservation中选取[Flie]>[NewOrder]◼填入航班与旅客资料;◼新增订单点选[InsertOrder],当完成新增订单后,状态列会显示InsertDone…的讯息;◼插入同步点点选Create>Synchronization>ForObject/WindowBitmap,将鼠标光标移到InsertDone…的状态列上并点选;WR会在测试脚本中插入一行指令:obj_wait_bitmap(“InsertDone…”,”Img”,1);的指令133◼再开启图表在FlightReservation中点选[Analysis]>[Graphs]◼读取图表上的票数在WR点选[Create]>[GetText]>[FromScreenArea],光标会变成十字光标,以左键拖拉的方式框住票数后,再以鼠标右键结束操作;WR会插入obj_get_text指令,并且在后面加上批注文字[#35],表示目前读取到的文字为35。◼关闭图表窗口;◼停止录制;◼存储测试脚本,存储新的GUI对象。134检查文字◼在第一行obj_get_text指令将text变量名称改成first_total;◼在第一行obj_get_text指令将text变量名称改成new_total;◼将光标移到测试脚本最后一行;◼加入测试脚本135if(new_total==first_total+1){tl_step(“graphtotal”,0,”Totaliscorrect.”);}else{tl_step(“graphtotal”,1,”Totalisincorrect.”);}◼在if前加上批注:checkthatgraphtotalincrementsbyone.◼存储测试脚本lesson9。136测试脚本的调试(debug)◼选取Debug模式;◼将执行箭头放在测试脚本第一行;◼逐行执行:选取[Debug]>[Step],WR开始执行第一行◼逐行执行完整个测试脚本;◼停止执行:执行完最后一行后,点[Stop]按钮◼检视测试结果:选取[Tools]>[TestResults],开启测试结果窗口;◼关闭测试结果、FlightReservation。137在另一版本FR执行测试脚本◼执行FlightReservation1B;◼点选执行模式为Verify;◼点选RunFromTop;◼检视测试结果;可以看到测试结果是失败的,因为图表上的票数没有更新。◼关闭测试结果窗口;◼关闭FlightReservation;◼关闭测试结果;138139建立文字检查点时的建议◼在建立文字检查点之前先确认文字的位置若文字是属于标准GUI对象的一部分,使用GUI检查点;若文字是属于非标准GUI对象的一部分,使用[Create]>[GetText]>[FromObject/Window]建立文字检查点;若文字是属于图像的一部分,使用[Create]>[GetText]>[FromScreenArea]建立文字检查点;140◼当建立文字检查点时,WR会将当时截取到的文字以批注放在测试脚本的后方,假如出现#notextwasfound,表示WR截取不到应用程序上面的字型,此时可能需要使用FontExpert教WR识别应用程序上的字型。1414.14建立批次(batch)测试◼说明如何使用批次测试执行一整组的测试脚本;◼如何建立批次测试;◼执行批次测试并检视结果。142批次测试概念◼无需一个一个单独的执行测试脚本。◼批次测试脚本含有call指令,用来开启其他测试脚本,如:call“c:\\qa\\flights\\lesson9”();◼在执行批次测试之前,需在
本文档为【软件自动化测试工具WinRunner概述】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥19.92 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
IT人
暂无简介~
格式:pdf
大小:2MB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2021-01-13
浏览量:8