使用RFT测试Flex应用时会遇到的问题以及解决方法

本文通过作者在真实项目中使用 Rational Functional Tester 8.2 和 Jenkins 搭建测试复杂 Flex 应用程序的案例介绍了常见的使用 RFT 测试 Flex 应用时会遇到的问题以及解决方法。希望为您提供最真实有效的指导。

Flex 是基于 Flash 的 Web 前端应用程序开发框架。Flex 原先是 Adobe 私有的技术,后 Adobe 将其开源并捐赠给 Apache 开源社区。 Flex 应用运行在 Flash 虚拟机中,相较于标准 HTML 应用,Flex 应用的界面外观优美、交互性好、跨浏览器支持好。此外 Adobe 出品的 Flash Builder 为 Flex 提供了非常强大的集成开发环境 ,这也是 Flex 的一大优势。但是对 Flex 应用进行自动化测试并不容易。

在本文中,我们将介绍使用 IBM Rational Functional Tester (下文中使用缩写 RFT)的最新版以及开源的持续集成工具 Jenkins 来对 Flex 应用进行自动化测试。

Flex 自动化测试的原理

Flex Automation 是 Adobe 提供的用于测试 Flex 应用的一套 API。所有对 Flex 应用进行自动化测试的工具都使用了 Flex Automation API。 Flex Automation API 提供了一套机制供测试工具记录 Flex 应用中所有的事件,并提供了对这些事件进行回放的接口。下面我们会简单介绍 Flex Automation API 的一些基本概念。

Delegate

针对每个 UI 对象,Flex Automation API 中都包含一个对应的 Delegate 类。 Delegate 会在 Flex 应用运行时的每个对象实例上注册事件侦听器(Event Listener)从而监控每个对象上发生的事件。Flex Automation API 中包含了所有 Flex 标准对象的 Delegate。但是当您需要自动化测试一些非标准对象时,那您就需要自己去定制该对象的 Delegate 类。

Agent

除了 Delegate 的外,Flex 应用和自动化测试工具之间还需要一个媒介进行通信。 这就是 Automation Agent。 例如在脚本记录阶段, Delegate 捕获到某个对象上的事件后,需要将这些事件记录下来以便未来进行回放。Agent 就负责提供对这些事件持久化的功能。如何实现 Agent 是每个测试工具的内部实现,这里就不进一步展开了。

编译 Automation API

要使一个 Flex 应用可以被自动化测试工具测试,首先必须将 Automation API 的包编译进您的 Flex 应用中,可以通过如下命令完成:

mxmlc -include-libraries+=../frameworks/libs/automation.swc; \ ../frameworks/libs/automation_agent.swc MyApp.mxml

需要注意的是,包含了 Flex Automation API 包后编译出的 swf 文件会显著的增大。具体的大小跟您所包含的 swc 文件大小有关。 对最终用户而言这些用来支持自动化测试的类是无用的,因此常见的做法是通过编译脚本(例如 Ant 或 Maven)的参数控制编译两套应用。在功能测试阶段编译包含 Flex Automation API 的应用,而在生产环境上则使用不包含 Flex Automation API 的版本。

配置 RFT 对 Flex 应用进行自动化测试

相信很多您在接触 RFT 这类自动化测试工具后,都会有这样的疑问:它是如何做到操纵 Java 程序或者浏览器来自动测试应用的?

RFT 操控被测对象、完成用户指定的自动测试动作的前提是它需要具备与被测应用程序(Application Under Test,AUT)进行通讯的能力。要做到这一点,RFT 首先必须建立自身与被测应用的沟通渠道,该过程对于 RFT 而言,被称为“启用被测应用程序”。

目前 RFT 可以支持如下类型的应用程序:基于 Java 平台的程序、基于 .Net 平台的程序、HTML 程序,以及基于 Siebel、SAP、Flex 等特定平台的应用程序。

对于 Flex 应用,需要确保 JDK (With JRE)正确安装并在浏览器中启用 JRE 插件(SSV Helper)来确保 RFT 与 Flex 应用程序能够进行正常通讯。

Java 环境配置

安装好 JDK (With JRE) ,注意不能是免安装版的,否则 java 的相关插件无法成功安装到浏览器 (以下以 Windows 7 平台和 IE 浏览器为例) 中。 验证 JDK 是否安装好: 在控制面板下找到 Java 插件的图标并点击进入。

图 1. 控制面板中的 Java 图标

点击 Java 标签页,然后点 Java
Applet Runtime Settings 部分的 View 按钮确认 JRE 的 location 指向的是 JRE 的安装目录比如 C:\Program Files (x86)\Java\jre6 并且处于 Enabled 状态,此 JRE 将作为浏览器运行时默认的 JRE.

图 2.JRE 设置

在 RFT 中 JRE 以及默认浏览器的设置:

打开 RFT, 找到 Configure(配置) 菜单,点击 Enable Environments For Testing(启用环境进行测试)。打开 Java Environments 标签页,会发现已经默认添加了一个 JRE lib 的环境变量,路径指向的是 RFT 安装目录下的 JRE lib 目录(例如: C:\Program Files (x86)\IBM\SDP)。

图 3.Java 环境设置

当然我们也可以将其默认的 RFT 安装目录下 JRE 改为我们前面安装好的 JRE。

时间: 2024-07-30 19:20:56

使用RFT测试Flex应用时会遇到的问题以及解决方法的相关文章

经测试最好用的mysql密码忘记的解决方法_Mysql

最好用的mysql密码忘记的解决方法 ,经过测试,如果不能成功一般是你的mysql运行的不正常解决办法: 在windows下:  复制代码 代码如下: 打开命令行窗口,停止mysql服务:     Net stop mysql  启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe  执行:mysqld-nt --skip-grant-tables 当前窗口将会停止.  另外打开一个命令行窗口,执行mysql   如果提示没有这个命令,先进入MYSQL的安装位置下BIN目

flex chrome浏览器调试出现空白的解决方法

  flex浏览器调试出现空白,原因是谷歌有个默认的flash播放器,只要将默认的播放器禁用,留下新安装的插件,就OK了 flex 4 在 chrome中调试时,空白,原因是谷歌有个默认的flash播放器,只要将默认的播放器禁用,留下新安装的插件,就OK了,只要在浏览器地址栏中,输入:"chrome://plugins/",会看到flash player有两个文件,点击查看详细,将chrome下面的关闭就ok了.

flex chrome浏览器调试出现空白的解决方法_Flex

flex 4 在 chrome中调试时,空白,原因是谷歌有个默认的flash播放器,只要将默认的播放器禁用,留下新安装的插件,就OK了,只要在浏览器地址栏中,输入:"chrome://plugins/",会看到flash player有两个文件,点击查看详细,将chrome下面的关闭就ok了.

使用vs2010编写c++Win32 Console Project时会出“error LNK1123” 错误解决方法

终极解决方案: VS2010在经历一些更新后,建立Win32 Console Project时会出"error LNK1123" 错误, 解决方案为 将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 "是"改为"否"即可,但是每新建一个项目都要这样设置一次,很麻烦 在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了"error LNK1123"错误,经过上网查资料,解决方案为: 第一步

使用IBM Rational Functional Tester 7.0.1测试Flex应用程序

关于这篇文章必要的信息 这篇文章假定您已经对使用 IBM Rational Functional Tester 进行自动化测试的基本概念已经非常熟悉.请查看参考资源部分中的链接,是对 Rational Functional Tester 的介绍. 目标 了解各种测试 Adobe Flex 应用程序的场景. 为 Rational Functional Tester 配置一个 Flex 开发环境. 建 立 Flex 应用程序的自动测试操作. 在 Flex 应用程序上记录和回放一 个脚本. 必备条件

Xcode真机测试could not find developer disk image解决方法

Xcode真机测试could not find developer disk image解决方法         在使用Xcode进行真机调试的时候,有时根据真机的系统不同,会出现could not find developer disk image 错误,这是由于真机系统过高或者过低,Xcode中没有匹配的配置包文件,我们可以通过这个路径进入配置包的存放目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platf

请问:用glassfish,jsp运行mysql数据库,测试中显示错误如图,怎么解决

问题描述 请问:用glassfish,jsp运行mysql数据库,测试中显示错误如图,怎么解决 解决方案 这个是找不到你的数据库驱动 你看你的jar包是否导入 ,连接字符串是否正确 解决方案二: 你加了mysql的jar包了吗

Flex开发中使用Ant编译.mxml成.swf后,在.swf里使用Session的解决方法

Flex开发中使用Ant编译.mxml成.swf后,在.swf里使用Session的解决方法 http://iamin.blogdriver.com/iamin/1176113.html Flex Remote Object中直接使用HttpSession的方法在Flex Samples里有Session的操作使用例子:http://localhost:8080/samples/explorer/misc/ServerSessionDemo.mxml但是,使用mxmlc编译.mxml成.swf后

本地测试PHP环境不能正常运行的解决方法

PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写.PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用.PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法.它可以比 CGI 或者 Perl 更快速的执行动态网页. &http://www.aliyun.com/zixun/a