分类:
2008-10-15 16:44:20
IBM Rational Functional Tester(RFT)是由 IBM 推出的针对 、 和 Web 应用程序的自动化工具。借助这一工具,人员可以轻松地录制或编写脚本来进行自动化测试,极大地提高了测试效率。但是 RFT 目前不能捕捉到 SWT(Standard Widget Toolkit) 应用程序的对象,不能录制 SWT 应用程序的任何动作。本文介绍了一种解决方法,能够使 RFT 捕捉到 SWT 应用程序的对象,并且采用 AOP(Aspect Oriented Programming)后编译时(Post-Complier weave)的方式把它注入到 SWT 应用程序中。该方法无须更改 SWT 应用程序的源代码,减少了开发代码与测试代码的耦合,在基于 SWT 应用程序的测试中有广泛的应用前景。
1. RFT 及 SWT 简介
本文主要介绍如何用 Rational Functional Tester(RFT)工具测试 SWT 应用程序,因此本节首先简要介绍一下 RFT 和 SWT。
RFT 介绍
RFT(IBM? Rational? Functional Tester)是 IBM 公司研发的一个面向对象的自动测试工具,提供了自动化测试 程序、Web 应用、Eclipse 以及终端应用的解决方案。您可以通过捕捉对象,记录用户操作的过程的方法,动态的生成测试脚本,然后在不断的回放测试脚本自动测试应用程序,提高测试效率。图 1 所示的就是 RFT 对象映射编辑器,从图中可以看出,这些被录制工具加进来的对象组成了树形的结构,每一个对象都有相关的识别属性。例如图中高亮显示的 Button 对象,它的 .class 属性值为 javax.swing.JButton,说明这个对象是 Swing 库的按钮组件。它还有其他属性,每个属性的值后面都跟有权重值,权重值对测试程序运行过程中对象识别非常重要。
图 1. 对象映射编辑器
SWT 介绍
SWT(Standard Widget Toolkit)标准窗口小部件工具箱,编程人员可以使用它来开发适用于 Eclipse 环境的图形用户界面(GUI)以及开发单独的 GUI 本机应用程序。SWT是 一个库,它创建了 Java 版的本地主机操作系统 GUI 控件,依赖于本机实现。这意味着基于 SWT 的应用程序具有以下几个关键特性:
它们的外观、行为和执行类似于“本机”应用程序。
所提供的窗口小部件(widget)反映了主机操作系统上提供的窗口小部件(组件和控件)。
主机 GUI 库的任何特殊行为都在 SWT GUI 中得到反映。
本文介绍一个 SWT 应用程序,代码如清单 1 所示,本文读者应该熟悉 SWT 的知识,因此对代码不做解释,完整代码可以从本文 部分 。
清单 1.
public class Calculator extends Composite { public Calculator(Composite parent, int style) { super(parent, style); } private CalculatorModel model = new CalculatorModel(); private Text lcd = new Text(this, SWT.BORDER | SWT.RIGHT); 省略…… public static void main(String[] args) { Display display = Display.getDefault(); Shell shell = new Shell(display); shell.setText("Calculator"); shell.setLayout(new FillLayout()); Calculator cal = new Calculator(shell, SWT.NONE); cal.init(); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } |
编译并导出为 calculator.jar 文件,运行 calculator.jar 结果如图 2 所示,这是一个计算器的 SWT 应用程序。