预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

RFT测试原理 RationalFunctionalTester测试的前提 相信很多读者在接触RationalFunctionalTester这类自动化测试工具后,都会有这样的疑问:它为什么可以操纵Java程序或者浏览器呢? RationalFunctionalTester可以操控被测控件、完成用户指定的自动测试动作,但前提是它需要具备与被测应用程序(ApplicationUnderTest,AUT)进行通讯的能力。要做到这一点,RationalFunctionalTester首先必须建立自身与被测应用的沟通渠道,该过程对于RationalFunctionalTester而言,被称为“启用被测应用程序”。 目前RationalFunctionalTester可以支持如下领域的被测应用程序:基于Java平台的程序、基于.Net平台的程序、HTML程序,以及基于Siebel、SAP、Flex等特定平台的应用程序。RationalFunctionalTester提供了这样的一个向导窗口来帮助用户“启用被测应用程序”,在这个简洁的对话框的“启用(Enable)”按钮和“测试(Test)”按钮的背后,还隐藏着更多的细节。 图1.启用环境向导对话框 在RationalFunctionalTester的术语词典里,这里的每一类应用程序都被称为“域”(domain)。建立沟通渠道的操作,都是作用在某个特定的“域”上,你可以在RationalFunctionalTester和“Java域”之间建立沟通渠道,这就是在RationalFunctionalTester中启动Java被测应用程序的过程;依此类推,你也可以为.Net程序、SAP程序建立它们和RationalFunctionalTester之间的特有的沟通渠道,使得RationalFunctionalTester可以进而对.Net程序、SAP程序进行测试。在为每类程序(或进程)建好沟通渠道后,你还需要对渠道进行必要的测试,检验通讯是否能正常工作。RationalFunctionalTester正是通过这些沟通渠道来对被测程序(或进程)的控件发出指令、执行动作的。 建立沟通渠道时,RationalFunctionalTester对于被测应用程序,会新建一个DomainImplementation对象实例,由它来抽象出一个接口,提供具体的域相关细节给RationalFunctionalTester。DomainImplementation对象的使命有: 获取该域最高级别的对象 注册该域可用的代理对象 为指定的控件创建代理对象 下图是启用浏览器环境的测试结果,可以看见Java,HTML两种DomainImplementation对象都被加载,来完成HTML被测应用的测试。(因为HTML应用程序在呈现时会涉及到Java内容) 图2.浏览器启用的测试结果 “域”、“顶级对象”、“测试对象”、“代理对象”,又有这么多新名词出现,它们和RationalFunctionalTester的运作有着怎样的关系呢?下面我们会逐一介绍它们的作用和典型动作。 RationalFunctionalTester进程级交互 RationalFunctionalTester进程模型 我们知道,运行中的程序和软件是以进程的形式存在的。首先我们来看一下RationalFunctionalTester和被测程序间的进程相关细节。在RationalFunctionalTester的设计规划里,各个相关进程按照所处位置和相对关系分成两类:客户端进程和服务器端进程。被测应用程序进程被称为“RationalFunctionalTester服务器端进程”,而录制,回放,对象查看器,和集成开发环境(IDE,Eclipse或VisualStudio.Net)等进程则被称为“RationalFunctionalTester客户端进程”。不论用户使用的是Java编程环境还是.Net编程环境来进行脚本开发,进程间的关系皆是如此,如下图所示。更直观地说,与RationalFunctionalTester直接相关的进程是客户端,与被测程序直接相关的进程是服务器端。 图3.客户端进程和被测应用程序(服务器端进程) RationalFunctionalTester与被测应用程序的进程级交互 RationalFunctionalTester客户端进程与被测应用程序进程进行交互,并从中获取必要的相关信息来完成录制、回放、对象查看之类的动作。它们借助进程间通讯(IPC)层的共享内存进行通讯。 图4.进程和测试上下文 RationalFunctionalTester给每个相关进程(包括客户端及服务器进程)创建测试上下文(TestContext)对象,并在共享内存