改进自动化测试套件的可维护性(三)_第1页
改进自动化测试套件的可维护性(三)_第2页
改进自动化测试套件的可维护性(三)_第3页
改进自动化测试套件的可维护性(三)_第4页
改进自动化测试套件的可维护性(三)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

第第页改进自动化测试套件的可维护性(三)改进自动化测试套件的可维护性(三)

发表于:2023-02-03来源::点击数:标签:自动化套件

4.useaframework-basedarchitecture.4.使用基于框架的架构Theframeworkprovidesanentirelydifferentapproach,althoughitisoftenusedinconjunctionwithoneormoredata-driventestingstrategies.TomArnold(oneoftheLAWSTpartici

4.useaframework-basedarchitecture.4.使用基于框架的架构

Theframeworkprovidesanentirelydifferentapproach,althoughitisoftenusedinconjunctionwithoneormoredata-driventestingstrategies.TomArnold(oneoftheLAWSTparticipants)discussesthisapproachinhisbook[8]andcourses.

虽然框架通常与一个或一个以上的数据驱动测试策略一同使用,但它本身却提供了一种完全不同的方法。TomArnold(LAWST成员之一)在它的书和课程中论述了这种方法。

Theframeworkisolatestheapplicationundertestfromthetestscriptsbyprovidingasetoffunctionsinasharedfunctionlibrary.Thetestscriptwriterstreatthesefunctionsasiftheywerebasiccommandsofthetesttool’sprogramminglanguage.Theycanthusprogramthescriptsindependentlyoftheuserinterfaceofthesoftware.

框架通过提供共享函数库中的一套函数,把应用程序从测试脚本中分离。这样,测试脚本编写者在处理这里函数时,就可以把它们视为测试工具的编程语言的基本命令。因此,他们能单独编写软件的用户界面脚本。

Forexample,aframeworkwritermightcreatethefunction,openfile(p).Thisfunctionopensfilep.Itmightoperatebypullingdownthefilemenu,selectingtheOpencommand,copyingthefilenametothefilenamefield,andselectingtheOKbuttontoclosethedialoganddotheoperation.Orthefunctionmightbericherthanthis,addingextensiveerrorhandling.Thefunctionmightcheckwhetherfilepwasactuallyopenedoritmightlogtheattempttoopenthefile,andlogtheresult.ThefunctionmightpulluptheFileOpendialogbyusingacommandshortcutinsteadofnavigatingthroughthemenu.Iftheprogramthatyou’retestingcomeswithanapplicationprogrammerinterface(API)oramacrolanguage,perhapsthefunctioncancallasinglecommandandsenditthefilenameandpathasparameters.Thefunction’sdefinitionmightchangefromweektoweek.Thescriptwriterdoesn’tcare,aslongasopenfile(x)opensfilex.

例如,一个框架编写者创建了函数openfile(p)。该函数用来打开文件p。它可以通过下拉文件菜单、选择打开命令、复制文件名到文件名域、点击OK按钮关闭对话框来完成操作。此外,这个函数也可以变得更复杂一些,比如,添加可扩展的错误处理功能。它能检查文件p是否已经被打开,或者记录打开文件的尝试以及对结果做日志。该函数还可以用一个命令快捷键,而不是菜单导航来弹出文件打开对话框。如果你的测试程序涉及到一个应用编程接口(API)或宏语言,那么该函数或许能调用一个单独的命令,并把文件名和路径作为参数传递给它。函数的定义经常在变化。但只要openfile(x)能打开文件x,脚本编写者就不必在意。

Manyfunctionsinyourlibrarywillbeusefulinseveralapplications(ortheywillbeifyoudesignthemtobeportable).Don’texpect100%portability.Forexample,oneversionofopenfile()mightworkforeveryapplicationthatusesthestandardFileOpendialogbutyoumayneedadditionalversionsforprogramsthatcustomizethedialog.

很多函数库中的函数在一些应用程序中依然有用(或者当它们被设计成可移植的时,也会很有用)。不要指望100%的可移植性。例如,openfile()的某个版本可以在每个应用程序中使用标准文件打开对话框,但你可能需要为那些有定制对话框的程序设计额外的版本。

Frameworksincludeseveraltypesoffunctions,fromverysimplewrappersaroundsimpleapplicationortoolfunctionstoverycomplexscriptsthathandleanintegratedtask.Herearesomeofthebasictypes:

框架包括若干类函数,从简单应用程序或工具功能的打包到处理完整任务的复杂脚本。以下是一些基本的类型:

a.Defineeveryfeatureoftheapplication.

a.定义应用程序的每种特性

Youcanwritefunctionstoselectamenuchoice,pullupadialog,setavalueforavariable,orissueacommand.IftheUIchangeshowoneoftheseworks,youchangehowthefunctionworks.Anyscriptthatwaswrittenusingthisfunctionchangesautomaticallywhenyourecompileorrelink.

你可以通过编写函数来选择菜单选项,弹出对话框,设定变量值或发布命令。如果用户界面改变了其中的一种工作方式,那么你也就改变了函数的工作方式。而当你重新编译或重新链接时,任何一个用该函数编写的脚本都能自动修改。

Frameworksareessentialwhendealingwithcustomcontrols,suchasowner-drawcontrols.Anowner-drawcontrolusesprogrammer-suppliedgraphicscommandstodrawadialog.Thetest-automationtoolwillknowthatthereisawindowhere,butitwon’tknowwhat’sinside.Howdoyouusethetooltopressabuttoninadialogwhenitdoesn’tknowthatthebuttonisthere?Howdoyouusethetooltoselectanitemfromalistbox,whenitdoesn’tknowthelistboxisthere?Maybeyoucanusesometricktoselectthethirditeminalist,buthowdoyouselectanitemthatmightappearinanypositioninavariable-lengthlist?Nextproblem:howdoyoudealconsistentlywiththeseinvisiblebuttonsandlistboxesandotherUIelementswhenyouchangevideoresolution?

在处理定制控件时,框架是最重要的,比如自绘制控件。一个自绘制控件利用程序员提供的图表命令来绘制一个对话框。自动化测试工具只能辨认窗口的存在,却不能辨认里面的东西。因此,当工具并不知道按钮是否在对话框中时,如何让它点击这个按钮呢?而当工具并不知道列表框是否在那里时,又如何让它选择其中的表项呢?或许,你可以用某种小技巧来选择列表中的第三项吧,但是你如何选择一个出现在可变长度的列表中任何位置的表项呢?还有一个问题:当改变视频协议后,你如何像往常那样处理这些不可见的按钮和列表框,以及其他的用户界面元素呢?

AttheLAWSTmeeting,wetalkedofkludgesuponkludgestodealwithissueslikethese.Someparticipantsestimatedthattheyspenthalfoftheirautomationdevelopmenttimeworkingaroundtheproblemscreatedbycustomcontrols.

在LAWST会议上,我们谈到用基于组装件的组装件来处理这类问题。有一些与会者估计,他们把自动化开发的一半时间都用来处理由定制控件所带来的问题了。

Thesekludgesareacomplex,high-maintenance,aggravatingsetofdistractionsforthescriptwriter.Icallthemdistractionsbecausetheyareproblemswiththetool,notwiththeunderlyingprogramthatyouaretesting.Theyfocusthetesterontheweaknessesofthetool,ratherthanonfindingandreportingtheweaknessesoftheunderlyingprogram.

这些组装件对于脚本编写者来说,是一系列复杂的、难以维护且越来越严重的干扰。

温馨提示

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

评论

0/150

提交评论