Rational Functional Tester Proxy SDK 开发,第 2 部分: 使用 Proxy SDK 扩展 RFT 已支持 Java GUI 组件 Proxy 对象实现

一、对于 Java 所编写 GUI 组件的 Proxy 扩展概述

本文主要介绍如何使用 Proxy SDK 来对 Java domain 下,RFT 已支持组件的 Proxy 对象进行扩展,从而满足我们的自动化测试需要,使测试脚本编写更加容易。

通过之前第一篇内容的介绍,我们知道对于 Java domain 下编写的 GUI 组件,RFT 是通过 Proxy 来对这些 GUI 组件进行识别和操作的。根据这一点,就可以利用 Proxy SDK 创建新的 Proxy 对象,通过重写并覆盖原有 Proxy 中的方法,从而扩展 RFT 已有的 Java domain 编写的 GUI 组件的 Proxy 对象。对于 Java domain 编写的 GUI 组件所对应的 Proxy 对象的开发,Proxy SDK 均通过 RFT 自身核心 JAR 包RATIONAL_FT_LIB 来提供,

 

二、对 Java AWT Label 组件的 Proxy 扩展实例需求介绍

在实际测试过程中,对于标签组件 Label 的自动化测试,往往局限于标签文本内容的自动化验证。但是在某些特定情况下,标签组件文本字体颜色会发生变化,例如之后本文实例中,当用户在登陆窗口输入的用户名或密码不满足要求时,对应 Label 标签组件的字体颜色会改变为红色。如果我们需要使用 RFT 对此过程实现自动化测试,就需要使 RFT 能够获取到 Label 标签组件的字体颜色属性,从而进行验证。

在实际实现过程中,我们发现使用原有 AWT Lable 组件所对应的 Proxy 对象,很难满足我们的测试需求,我们只能通过名为“ foreground ”的 Property 属性值来获取 Label 文本字体的颜色值,但是该颜色值为 java.awt.Color 类对象,使用三原色数值来描述颜色,因此实现这一部分的自动化测试会比较麻烦,需要编写比较多的代码,同时在代码重用方面也不太灵活。这时,便可以使用 Proxy SDK 扩展 Label 组件的 Proxy 对象来解决这个问题,首先需要先对获取的 java.awt.Color 类对象进行处理,将特定颜色比如红色、蓝色、绿色及黑色转化为对应颜色的字符串名,之后通过编写新的 LabelProxy 类来扩展 Label 组件的 Property 值,从而添加新的名为” color ”的 Property 属性到该 Proxy 对象中。使得脚本开发人员在编写测试脚本时可以很容易得通过获取名为” color ”的 Property 属性值,来获取 Label 标签字体颜色,从而大大简化了脚本开发工作。实现原理图如图 1 所示,具体实现的方法及步骤会在之后进行详细介绍。

图 1. LabelProxy 对象扩展原理图

 

三、具体实例分析及实现步骤

在本文中,根据测试需求,在用户登陆窗口中如图 2 所示,当输入的用户名或密码不满足要求时,对应 Label 标签的字体颜色改变为红色。使用 RFT 对此实现自动化测试,需要对 Java AWT 组件 java.awt.Label 对应的 LabelProxy 进行扩展,从而达到我们自动化测试目的。其步骤如下:


图 2. 用户登陆窗口

 

第一步: 使用 RFT 中的 TestObjectMap 查看当前 java.awt.Label 组件所对应的” Proxy Class Name ”及该 Label 组件自身的” Class Name ”,如图 3 及图 4 所示:

图 3. 查看 Label 组件对应的 Class Name

 

图 4. 查看 Label 组件对应的 Proxy Class Name

第二步: 使用 RFT 提供的 Update Recognition Properties 功能,查看 RFT 所能获取到的 java.awt.Label 组件的所有 Property 属性及其对应的值。当进行至图 4 所示步骤时,在“ -->New: Java:Label: label0: java.awt.Label ” 上单击鼠标右键,弹出菜单出现后点击“ Update Recognition Properties …” 选项,之后在弹出的“ Update Recognition Properties ” 窗口中单击“ Next > ” 按钮至图 5 所示“ Update Recognition Properties ” 窗口。从该窗口中,我们可以很清楚的看到 RFT 通过对应 Proxy 获取到该组件所有 Property 的名字、取值以及权重。

图 5. 查看 Label 组件包含的所有 Property 属性

第三步: 创建新的 Proxy 类并继承原有 .java.awt.LabelProxy 类,通过重写原有的方法来添加一个新的名为” color ”的 Property 至该组件的识别属性 Property 及 Recognition Property 中,其步骤如下:

  1. 在 RFT 中创建相应 Java Project,在本例中我们命名该项目为:LabelProxy ;
  2. 为该项目加载使用 Proxy SDK 所需要的 jar 文件,右键 单击工程,并选择Properties/Java Build Path ,在弹出窗口中右侧选择Libraries 标签,单击Add Variable ,按钮并选择RATIONAL_FT_LIB ,如图 6 所示


图 6. 加载使用 Proxy SDK 所需的 jar 文件

 

第四步: 完成以上工作之后,我们就可以编写程序来实现 Proxy 的扩展。建立新的 Proxy 类名为 ExtendedAWTLabelProxy,通过获取 AWT Label 组件中名为” foreground ”的 Property 的值来得到标签字体颜色,该值为 java.awt.Color 类型,同时对改值进行处理,对于特定颜色的值,将其转化为对应颜色的字符串名,从而添加新的名为” color ”的 Property 到该 Proxy 对象中(本步骤详细的代码及文字说明请参见本文后续第四节内容)。

第五步: 为新建立的 ExtendedAWTLabelProxy 创建 RFT Customization (*.rftcust) 文件,从而建立 TestObject 与 Proxy 之间的映射关系。

需要注意的是 :这里 RFT Customization (*.rftcust) 文件名须与 Project 名相同。


清单 1. LabelProxy.rftcust 映射文件

在 LabelProxy.rftcust 中我们发现,当前 java.awt.Label 组件所对应的 Proxy 类为:sdk.sample.awt.ExtendedAWTLabelProxy,替换了原来的 java.awt.LabelProxy(至于默认的 TestObject 与 Proxy 之间的映射关系,可以查看 RFT 目录中
../IBM/SDP70/FunctionalTester/bin/rational_ft.rftcust 文件)。

完成以上工作后,我们需要对该 Project 文件打包,Export 成 .jar 文件。该项目文件结构如图 7 所示:


图 7. 项目文件结构图

 

第六步: 配置并发布 LabelProxy.jar 及 LabelProxy.rftcust 两个文件至 RFT,需要将这两个文件拷贝至RFT customization Directory (C:/Documents and Settings/All Users/Application Data/IBM/RFT/customization) ,之后重新启动 RFT

第七步: 重新启动 RFT 后,使用TestObjectMap 再次查看 Label 组件所对应的” Proxy Class Name ”,会发现已被 sdk.sample.awt.ExtendedAWTLabelProxy 所代替,同时在Recognition Properties 中出现了新的名为” color ”的 Property,其值为” Red ”,如图 8 及图 9 所示:


图 8. 查看 Label 组件新的 Proxy Class Name

 

图 9. 查看 Label 组件新的名为” color ”的 Recognition Property 属性

 

第八步: 创建一个测试用的 Script1.java 来查看是否能够获取新加入 Property 属性及其值,其结果如图 10 所示:


图 10. 查看 Label 组件新的名为” color ”的 Property 属性

 

四、ExtendedAWTLabelProxy.java 详细代码及说明

通过建立 ExtendedAWTLabelProxy.java 来实现对原有的 LabelProxy 对象进行扩展,该类的结构示意图如图 11 所示:


图 11. ExtendedAWTLabelProxy.java 结构示意图

 

主要方法功能说明及代码清单如下:

方法 getProperties() :用于添加新的 Property 属性及其值,从而使得脚本开发人员能够通过该方法,获取到更多组件属性信息。在这里我们添加了名为“ color ”的 Property 属性,如果 Label 组件标签文字为特殊颜色时,该 Property 的值为该颜色名字符串值。

方法 getProperty(String propertyName) :用于获取新添加 Property 属性的值。在这里当脚本开发人员使用getProperty( “ color ” ) 方法时,如果 Label 组件标签文字为特殊颜色时,我们就可以获取到该颜色名对应的字符串。

方法 getRecognitionProperties() :用于添加新的 RecognitionProperty 识别属性及其值,通过这个方法添加的 Property 属性及其值可以显示在如图 9 中 Recognition 组件识别界面中。

方法 getRecognitionProperty(String propertyName) :用于获取新添加 RecognitionProperty 属性的值。

方法 getRecognitionPropertyeight(String propertyName) :用于设定新添加 RecognitionProperty 属性的权值,从而被显示在图 9 中 Recognition 组件识别界面中。


清单 2. ExtendedAWTLabelProxy.java

 

五、结论

在本文中,主要介绍了如何通过使用 Rational® Functional Tester proxy software development kit (Proxy SDK) 来扩展 RFT 已支持的 Java GUI 组件的 Proxy 对象。在这个例子中,通过对 Java AWT LabelProxy 的扩展,来展示如何通过 Proxy SDK 来增强 RFT 已有的功能,使得 RFT 能够很容易获取到 Java AWT Label 标签组件的文本字体颜色,从而使自动化测试脚本的编写更加的容易。通过本文的介绍,希望能为使用 Rational®Functional Tester 的脚本开发人员,在对处理某些 Java GUI 组件 Proxy 对象的扩展方面,提供一定的参考。在接下来的一篇文章中,将主要介绍如何使用 Proxy SDK 来扩展 RFT 的数据验证能力,通过对表格(table)组件的 Proxy 对象扩展,来说明如何加强 RFT 捕获数据的灵活性,从而增强数据验证功能

 

转载:http://www.ibm.com/developerworks/cn/rational/r-cn-rftproxysdk2/index.html#resources


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值