Rational Functional Tester Proxy SDK 开发,第 1 部分: Proxy SDK 概述

来源:互联网 发布:无锡cad软件培训 编辑:程序博客网 时间:2024/05/01 15:00

简介: Rational Functional Tester(RFT)是一款先进的、完全面向对象的和跨平台的基于图形化用户界面的自动化测试和回归测试工具。RFT 可以通过 Proxy 来对 GUI 组件进行获取和控制,而 Rational Functional Tester proxy software development kit (Proxy SDK) 正是 RFT 提供给用户的接口,使用户扩展所能被 RFT 自动化控制及支持的 GUI 组件的 Proxy 对象,从而使 RFT 脚本开发人员在测试过程中,更好的控制被测试组件。本文为您介绍 Proxy SDK 的背景和工作原理。

一、背景介绍

Rational® Functional Tester(RFT)是一款先进的、完全面向对象的和跨平台的基于图形化用户界面的自动化测试和回归测试工具,其支持对 Java、.Net 和 Web 应用程序可视化组件的自动化测试,可以运行于 Windows 和 Linux 系统,并且为测试人员提供了和开发人员同样的基于 Eclipse 的集成操作平台。

RFT 通过 Proxy 来对 GUI 组件进行获取和控制,而 Rational® Functional Tester proxy software development kit (Proxy SDK) 是 RFT7.0 及其以后版本提供给用户的接口,用来扩展所能被 RFT 自动化控制 GUI 组件的 Proxy 对象,使得 RFT 对于 GUI 组件的获取及控制手段更加的丰富和完善,从而方便脚本开发人员在测试过程中,更好的控制被测试组件。

经过一段时间的使用发现,使用 Proxy SDK 扩展 Proxy 对象主要可以用于以下几个方面:

  • 可以对 RFT 支持的 GUI 组件,添加识别属性 (Property 及 Recognition Property),从而方便脚本开发人员能够更好的利用 RFT 识别并获取 GUI 组件;
  • 可以改变 RFT 支持的 GUI 组件的操作方法,从而使得 RFT 对于组件的操作更加丰富多样,以满足不同的测试需求,
  • 可以改变 RFT 支持的 GUI 组件的验证方法,从而使得 RFT 对于组件数据信息的获取手段、验证手段更加丰富多样,以满足不同的测试需求。

二、Proxy 工作原理

如图 1 中所示,当 RFT 测试脚本开发人员在 test script 中,通过调用组件对象 TestObject 的方法 (methods) 对该组件进行操作的过程中,该 TestObject 会查找到与其对应的 TestObjectProxy 对象,从而使用 TestObjectProxy 来对该 TestObject 进行获取和操作。


图 1. GUI 组件与 Proxy 对象对应关系

因此,对于 RFT 所能支持自动化测试的每一个 GUI 组件来说,都会有相应的 Proxy 对象与之相对应。 Proxy 就类似于 RFT 与实际 GUI 组件之间的中间件,RFT 通过 Proxy 来获取并控制相应的 GUI 组件。因此如果 Proxy 改变了,RFT 对于 GUI 组件的操作也将发生变化。根据这一点,就可以利用 Proxy SDK 创建新的 Proxy 对象,通过重写并覆盖原有 Proxy 中的方法,来实现 Proxy 功能的扩展,最终根据测试需要来增强 RFT 的功能,如图 2 所示:


图 2. Proxy 对象开发原理图


在 Proxy 的开发过程中,我们可以对任意一个 RFT 已支持的 GUI 组件的 Proxy 进行替换。但是需要注意的是,对于 Java 及 .NET 这两个不同的开发平台所开发出的 GUI 组件,其对应 Proxy 的开发环境也有所不同,具体分类如下:

  1. 对于以下 UI frameworks 必须在 Java 开发环境下,使用 Proxy SDK 来开发相应 GUI 组件的 Proxy 对象,包括:AWT、Swing、SWT、Applet ;

Proxy SDK 开发所需文件:RFT 核心 JAR 包RATIONAL_FT_LIB

  1. 对于以下 UI frameworks 必须在 C# 开发环境下,使用 Proxy SDK 来开发相应 GUI 组件的 Proxy 对象,包括:.Net、Win32、Siebel、SAP 。

Proxy SDK 开发所需文件:使用rtxftnet.dllWhidbeyControls.dll(../RFT/SDP70/FunctionalTest/bin/ 目录下)

  • 如果当前使用的是 Microsoft® Visual Studio .NET2003,则需要加载 rtxftnet.dll 动态链接库文件;
  • 如果当前使用的是 Microsoft® Visual Studio .NET2005,则需要加载使用 WhidbeyControls.dll 动态链接库文件;

当指定 GUI 组件对应的 NewTestObjectProxy 创建好之后,还需要建立新的 .rftcust 映射文件,利用该文件建立 TestObject 与新的 Proxy 之间的映射关系,从而达到替换 GUI 组件原有 Proxy 的目的,如图 3 所示。至于 RFT 默认的 TestObject 与 Proxy 之间的映射关系,可以查看 RFT 目录中 ../IBM/SDP70/FunctionalTester/bin/rational_ft.rftcust 文件。


图 3. .rftcust 映射文件关系图

 

三、RFT 自动化测试中使用 Proxy SDK 的好处

在 Rational® Functional Tester(RFT)实际工作中,对于每一种 RFT 可支持自动化测试的 GUI 组件,都会有一个对应默认的 Proxy 对象与之对应,从而使得 RFT 能够对这些 GUI 进行获取和操作。但是这些默认的 Proxy 对象往往都是获取了 GUI 组件最基本的信息、实现了最基本的操作。因此在实际的自动化测试过程中根据测试需求,如果需要对 GUI 组件的特殊属性进行验证、或是进行一些特定的操作,默认的 Proxy 对象便很难满足需要,RFT 脚本开发人员只能通过重复性的编写大量的代码来达到测试目的。

在这种情况下 Rational® Functional Tester(RFT)提供了 Proxy SDK 这个用户接口,其目的就是为了在用户使用 RFT 过程中,当遇到特殊测试需求时,能够扩展原有 RFT 默认的 Proxy 对象,从而使得 RFT 能够获取更多 GUI 组件的特殊属性信息,并能够进行更多复杂的操作。为脚本开发人员减小代码开发量提高工作效率。 RFT 默认 Proxy 对象与扩展 Proxy 对象的关系及对比如图 4 所示:


图 4. RFT 默认 Proxy 对象与扩展 Proxy 对象的关系及对比图

从图中我们很容易看出,扩展后的 Proxy 对象(ExtendProxyObject)是在 RFT 默认 Proxy 对象(ProxyObject)的基础上进行的扩展,不仅包括 GUI 组件属性,同时可以对原有组件的控制方法及验证手段进行扩展。举一个简单的例子:对于任意一个矩形的 GUI 组件,RFT 默认的 Proxy 对象(ProxyObject)都可以获取到组件的顶点的坐标以及组件的大小尺寸,因此我们便可以使用 Proxy SDK 对该 Proxy 对象进行扩展,根据定点坐标以及大小尺寸信息,便可以计算出该组件中心点坐标值,从而添加一个新的名为” CenterPoint ”、值为坐标信息的 Property 属性到扩展后的 Proxy 对象(ExtendProxyObject)中,这样当我们再次使用 RFT 获取并操作同一类的 GUI 组件时,就可以通过名为” CenterPoint ”的 Property 属性很容易的获取到该组件中心点的坐标。扩展后的 Proxy 对象中,被重写的 getProperties() 以及 getProperty(String propertyName) 方法的代码片断如下

以同样的手段,我们也可以对 RFT 操作组件的方法进行扩展,例如默认 Proxy 对象在对 GUI 组件进行单击操作时会调用 click() 方法,在这个过程中 RFT 默认调用了实现了组件的单击操作,通过 Proxy SDK 同样可以扩展 click() 方法的功能,使得该方法在执行原有 click() 方法的同时,实现多次连续点击操作,同时也可以捕捉该组件标签、颜色等属性的变化并添加新的 Property 属性。从而给我们的自动化测试带来更大的空间。在接下来的几篇文章中,将通过几个具体的例子来分别介绍如何使用 Proxy SDK 来丰富和完善 RFT 已有的功能。在第二篇文章中,主要介绍如何使用 Proxy SDK 扩展 Java GUI 组件的识别属性;在第三篇文章中,主要介绍如何使用 Proxy SDK 扩展 Java GUI 组件可捕获的验证数据;在第四篇文章中,主要介绍如何使用 Proxy SDK 对 .NET domain 下编写的 windows GUI 组件的 Proxy 对象进行扩展。

原创粉丝点击