还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
IBM Rational Functional Tester工作原理初探引言IBM Rational Functional Tester亦被简称为RFT是一款壮大的面向对象自动化测试工具,能够支持多个领域的应用程序测试,如、HTML、.Net.Siebel.SAP、等最近几年来它的用户群慢慢壮大,为自动化测试的普及做出了专门大的奉献随着应用范围的增多和深切,用户也再也不知足于知其然不知其因此然的低级时期,期望了解更多Rational FunctionalTester底层的知识,把握更多的高级技术,让它更好地效劳于自己的测试需求本文将引领读者对Rational FunctionalTester的结构和工作机理进行假设干浅析,揭露出Rational FunctionalTester测试动作背后的假设干秘密Rational FunctionalTester测试的前提相信很多读者在接触Rational FunctionalTester这种自动化测试工具后,都会有如此的疑问它什么缘故能够操纵Java程序或阅读器呢Rational FunctionalTester能够操控被测控件、完成用户指定的自动测试动作,但前提是它需要具有与被测应用程序Application UnderTest,AUT进行通信的能力要做到这一点,Rational FunctionalTester第一必需成立自身与被测应用的沟通渠道,该进程关于RationalFunctional Tester而言,被称为启用被测应用程序目前Rational FunctionalTester能够支持如下领域的被测应用程序基于Java平台的程序、基于.Net平台的程序、HTML程序,和基于Siebek SAP、Flex等特定平台为了支持.Net域的.Net DataGridView控件,用户能够开发一个代理类,并把它的声明插入到文件里对应的位置下面的代码确实是更新后的文件片段・
11.用户定制的代理对象映射/Rational FunctionalTester实际运行场景中的交互动作介绍了相关的众多复杂概念后,接下来咱们以最多见的录制、回放动作为例,剖析录制和回放的动作实质整体上看,录制和回放的进程会牵涉到对象治理器、域对象、代理对象、测试上下文之间形形色色的交互录制进程的交互动作详解下面是录制测试步骤时,对象治理器和对象治理器代理间的动作定位屏幕上某处的对象例如,proxyAtPoint方式在对象图中获取识别属性,或初始化对象句柄例如,getM叩pedTestObject方式而关于代理对象,录制时会挪用到代理类里的以下方式调用方法.L录制操作所涉代理类方式列动作进程级底层事件processMouseEvent定位拖拽动作的目标对象getMethodSpecForPointgetTestDataTypesDgetTestData[]getProperties ngetStan验证点相关方法dardPropertiesDgetPropertygetMappableParent[]getParent[]getChildrenElgetMappa对象结构相关方法bleChildrenDgetOwner0ngetOwnedgetRecognitionRropertiesDshouldBeMapped[]getRole n对象识别相关方法getTestObjectClassName[]getRecognitionPropertyWeight某个录制动作的细节如下Rational FunctionalTester录制器启动,从对象治理器中取适当前点的代理对象;(实际动作在以后的第二步、第三步完成)获取所在域的顶级容器对象,返回;在顶级容器对象的子对象里查找,取得当前点的代理对象,返回;录制器取得当前操作的代理对象句柄;处置鼠标事件;设置事件或动作细节,返回并完成录制.
12.录制动作时序图回放进程的交互动作详解Rational FunctionalTester利用的识别属性值和控件层次结构来识别被测控件,这些信息被集中贮存在对象图Object Map里回放时,这些信息被掏出来用以选择唯一的界面控件在必要的时候,Rational FunctionalTester也会搜集诸如屏幕坐标,控件属性等,连同界面控件一路,被表征为脚本端的测试对象TestObject录制时,用户的各类点击、双击或拖拽动作都是被封装为独o立的测试对象的方式,比如button.clickatPoint10,10,回放时,Rational FunctionalTester用对象图里保留的识别属性找到对应的按钮型测试对象,再挪用点击方式来施加测试动作回放时,Rational FunctionalTester客户端进程将请求发送到所有的测试域,在对象图里通过录制的可识别属性辨识出目标对象,不同的识别结果会引发Rational FunctionalTester不同的后续动作.
2.回放操作对象查找结果及后续行为动作结果未发现目标对象抛出对象未发现的程序异常发现多个目标对象将对象查找分值和阈值比对,来确定唯一的目标对象;如果不能确定,将抛出对象不确定的程序异常代理将启动回放动作例如,回放之前录制下来的、诸如点击的动作发现唯一的目标对象在识别阈值内,发现多个目标抛出对象不确定的程序异常对象图13是一个点击动作的回放,细节如下Rational FunctionalTester脚本开始回放;通过对象治理器取得该域顶级容器对象;遍历顶级容器对象的子对象,直至取得知足查找条件的对象的代理;通过该代理触发点击动作;激活目标对象,计算它的所在位置,并在居中的坐标实施点击;终止;・
13.回放动作时序图/Rational FunctionalTester的功能测试或回归测试正是由更多、更复杂的录制/回放动作组合而成,原理与上述两个例子没有太大不同终止语以上确实是咱们对Rational FunctionalTester工作原理的剖析,大伙儿能够从中了解到它掌控被测软件,并驱动它们完成自动化测试的底层动作细节知其然,并知其因此然在这一基础上,大伙儿还能够进行定制,自行拓展Rational FunctionalTester的测试范围和深度,使它的能力加倍吻合应用项目的需求,保障软件质量最后咱们来回忆一下本文的要点内容,帮忙您更好的把握和明白得Rational FunctionalTester在测试前需要启用被测应用程序,在二者间成立沟通渠道;Rational FunctionalTester测试涉及的进程被分为两类,被测程序是效劳器端进程,RationalFunctional Tester这一侧是客户端进程;它们的通信借助共享内存完成,涉及上下文对象,对象治理器,域对象和代理对象等一系列实体;Rational FunctionalTester不直接和被测应用程序接触,而是通过代理对象这一包裹类来操作实际控件;代理对象和测试对象的映射关系及其存储结构,用户能够拓展映射关系来扩大测试范围;实际录制、回放进程的详细交互动作,所挪用的底层方式及其时刻顺序的应用程序Rational FunctionalTester提供了如止匕的一个向导窗口来帮忙用户〃启用被测应用程序,在那个简练的对话框的启用(Enable)按钮和测试(Test)按钮的背后,还隐藏着更多的细节.
1.启用环境向导对话框在Rational FunctionalTester的术语词典里,那个地址的每一类应用程序都被称为域(domain1成立沟通渠道的操作,都是作用在某个特定的域上,你能够在Rational FunctionalTester和Java域”之间成立沟通渠道,这确实是在Rational FunctionalTester中启动Java被测应用程序的进程;依此类推,你也能够为.Net程序、SAP程序成立它们和Rational FunctionalTester之间的特有的沟通渠道,使得Rational FunctionalTester能够进而对.Net程序、SAP程序进行测试在为每类程序(或进程)建好沟通渠道后,你还需要对渠道进行必要的测试,查验通信是不是能正常工作Rational FunctionalTester正是通过这些沟通渠道来对被测程序(或进程)的控件发出指令、执行动作的成立沟通渠道时,Rational FunctionalTester关于被测应用程序,会新建一个Domainimplementation对象实例,由它来抽象出一个接口,提供具体的域相关细节给RationalFunctional TesterDomainimplementation又寸象的使命有:o获取该域最高级别的对象注册该域可用的代理对象为指定的控件创建代理对象以下图是启用阅读器环境的测试结果能够看见Java,HTML两种Domainimplementation对象都被加载,来完成HTML被测应用的测试因为HTML应用程序在呈现时会涉及到Java内容2阅读器启用的测试结果/域、顶级对象、测试对象、代理对象,又有这么多新名词显现,它们和RationalFunctional Tester的运作有着如何的关系呢下面咱们会介绍它们的作用和典型动作Rational FunctionalTester进程级交互Rational FunctionalTester进程模型咱们明白,运行中的程序和是以进程的形式存在的第一咱们来看一下Rational FunctionalTester和被测程序间的进程相关细节在Rational FunctionalTester的设计计划里,各个相关进程依照所处位置和相对关系分成两类客户端进程和端进程被测应用程序进程被称为RationalFunctional Tester效劳器端进程,而录制,回放对象查看器,和集成开发环境IDE,Eclipse或Visual Studio.Net等进程那么被称为RationalFunctional Tester客户端进程〃不论用户利用的是Java环境仍是.Net编程环境来进行脚本开发,进程间的关系皆是如此,如以下图所示更直观地说,与Rational FunctionalTester直接相关的进程是客户端,与被测程序直接相关的进程是效劳器端.
3.客户端进程和被测应用程序(效劳器端进程)/Rational FunctionalTester与被测应用程序的进程级交互Rational FunctionalTester客户端进程与被测应用程序进程进行交互,并从中获取必要的相关信息来完成录制、回放、对象查看之类的动作它们借助进程间通信(IPC)层的共享内存进行通信4进程和测试上下文Rational FunctionalTester给每一个相关进程(包括客户端及效劳器进程)创建测试上下文)(TestContext对象,并在共享内存里进行注册,该测试上下文对象是测试进程顶用来操作被测程)序的句柄(reference已注册的测试上下文对象将承担关联进程的所有通常情形下,测试上下0文对象会关联到一个级的被测进程,或测试客户端固然,有时会有多个测试上下文对象关联到同一个进程两个被测应用程序的测试上下文TestContext对象是无法直接通信的,它们需要一个中介:Rational FunctionalTester客户端进程的测试上下文对象,来传递通信信息图5的上半部是Rational FunctionalTester客户端进程,下半部是各类效劳器端进程,即被测程序,它们之间的交流和通信只能在共享内存区域完成的5进程和测试上下文内部结构注侦窥内存,英文术语为Spy Memory,即共享内存,其中的各类测试上下文承担被测程序及Rational FunctionalTester间通信功能Rational FunctionalTester进程通信模型里的每一个进程都需要借由测试上下文TestContext对象来治理它的进程间通信的挪用和请求Rational FunctionalTester客户端进程会和多个被测应用程序AUT进程交互,以Rational FunctionalTester回放时的客户端Find进程为例,它会和所有的被测应用程序进行通信来确信被寻觅的控件对象但在同一时刻里,每一个被测应用程序进程只能和唯一的Rational FunctionalTester客户端进程交流对象治理器ObjectManager处置所有效劳器端的进程通信,和与被测程序交互的元动作对象治理器会有多个代理Agent,每一个对象治理器代理负责一类测试上下文对象的相关元动作在测试上下文TestContext对象里域TestDomain对象是用于治理与它相关的特定通信例如,关于被测应用的阅读器进程,一个HTML测试上下文对象和一个Java域对象会被创建,因为阅读器里包括了隶属于HTML域的HTML元素,和隶属于Java域的Java Appletso而在域TestDomain对象里代理对象ProxyObject的作用是治理控件一级的通信它被Rational FunctionalTester创建出来,用以和控件通信,来操纵它们完成指定的功能测试动作代理对象和被测应用程序的控件间有着一一对应的关系,任何控件间的交互都是通过代理对象这一媒介来达到比如,各类不同类型的按钮别离会映射到不同的代理对象注上下文对象,对象治理器,域对象和代理对象都是创建在被测应用程序进程里Rational FunctionalTester代理结构Rational FunctionalTester与被测应用程序控件的交互,有两个必不可少的要素代理对象ProxyObject和测试对象TestObject代理对象包褰实在际的被测应用程序控件,测试对象那么是该控件在脚本层面的展现,二者遥相呼应,传递测试的动作和信息6Jav.代理对象结构图/注为节约篇幅那个地址仅以Java域的内容作介绍,.Net域的情形也大致相似通过代理对象进行交互代理对象Proxy objects有些类似于实际图形界面控件的包裹类Rational FunctionalTester与被测应用程序并非发生直接接触,任何与被测应用程序的通信都需要对应的代理对象代理对象创建后,被放置于被测控件能够访问并获取信息的地址代理类能够用Java语言或C#语言来开发,来实现规定的Rational FunctionalTester与被测应用程序界面控件通信的接口当您的应用程序实施了前文所提到启用被测应用程序”操作后,它对应的代理类就会被加载到应用程序,成为被测应用程序的一部份代理对象包裹实在际GUI测试对象原生对象,使得它们能够被Rational FunctionalTester识别和测试以HTML程序为例,HTML应用程序的阅读器被启用后阅读器及其HTML控件的代理类都会被加载到阅读器中关于Windows InternetExplorer阅读器,启用被测应用程序那么会把Internet Explorer阅读器相关的代理类阅读器辅助对象Browser HelperObject文件作为第三方插件装入Internet Explorer阅读器插件集,在启动后还将加载另外两个文件和,并与它们一起负责Rational FunctionalTester和HTML被测程序间的交互行为该进程和木马的工作原理类似另外,Rational FunctionalTester设计领先、开放灵活的架构许诺用户能够创建新的ProxyObject类,或拓展某个现有的ProxyObject类来支持新的界面控件通过测试对象进行的交互测试对象Testobject是被测对象控件的脚本端接口,界面控件在自动测试脚本里会表现为测试对象例如,一个按钮控件被表述为GuiTestObject,顶级容器对象如对话框或框架控件被表述为TopLevelTestObjecto测试对象Testobject方式的执行需要通过相应的代理对象ProxyObject,测试对象驻留在Rational FunctionalTester客户端,它拥有指向被测应用程序的代理对象的句柄7测试对象和代理对象间的交互Rational FunctionalTester关于每一个支持的测试环境都已经提供了域对象,如Java,HTML,.Net等,而且在每一个域里,还提供了所支持的各类被测应用程序控件的代理对象ProxyObject类代理对象类与被测应用程序控件之间的映射关系被保留在Rational FunctionalTester的安装途径下的可定制文件里,Rational FunctionalTester通过这些可定制信息来确信关于某种被测控件该利用哪一种适合的代理对象注被测控件和代理对象间的映射关系要紧保留在文件C:\ProgramFiles\IBM\SDP\FunctionalTester\bin\里在相同途径下,还存有其他领域的,和扩展的rftcust定制文件8rftcus,定制文件图9是打开后的文件,内容以XML格式展现,层次清楚,层次分明大伙儿能够看到代理治理器ProxyManager下辖五类测试域的代理对象别离是Java.HTML,.Net,Win和ActiveX展o开的ActiveX部份里还能够看见映射关系的细节该领域的DispHTMLObject日ement控件对应着Rational FunctionalTester提供的类,自动测试脚本将通过那个类来操控DispHTMLObjectElement控件上的各类动作,完成既定测试9文件内容局部每一个RationalFunctionalTester支持的实际控件都会对应着一个代理对象ProxyObject,但有时也会有多个不同的控件对应同一代理对象的情形如以下图所示显现这种情形的缘故是,开发设计人员以为该代理对象提供的通用性接口已经足以覆盖这些控件的测试需求固然,若是用户对某些控件有着更为细致的操控要求,能够自行拆解、拓展这一部份,使得RationalFunctional Tester能够完成更细微的测试动作.
10.一对
一、一对多的映射关系.文件内容局部即便是在默许配置下不为RationalFunctionalTester所支持的新界面控件,用户也。
个人认证
优秀文档
获得点赞 0