Flex自动化功能测试工具大比拼---陈能技

上一篇 / 下一篇  2010-10-18 10:43:47 / 个人分类:Flex

RIA 越来越“火”,各测试工具厂商也紧跟潮流,纷纷开始支持对 RIA 程序的测试,对于 Flex ,它们支持得怎么样呢?今天,我们就来看个究竟,来个 Flex 自动化功能测试工具大比拼。
Rational Functional Tester
Rational Functional Tester 8.0 目前支持对 Flex2.0 和 Flex3.0 的程序进行测试。在 RFT8 中,支持两种方式测试 Flex 程序,一种是针对“激活”的 Flex 程序的测试方式,另外一种是针对“非激活”的 Flex 程序的测试方式。
 
所谓“激活”与“非激活”是指:是否在编译被测试的 Flex 程序时加入了 Functional Tester 代理和 Flex 自动化库。
 
在 RFT8 中进行 Flex 程序测试的一般步骤和流程如下图所示:

第一步,开发组的开发人员为了 RFT 的功能测试,对被测试的 Flex 程序进行开发环境上的设置。
设置可以有两种方式,分别是“激活”与“非激活”的方式:
( 1 )、“激活”方式
在编译时加入 Functional Tester 代理和 Flex 自动化库,然后创建 HTML 包装( HTML wrapper ),把 .swf 文件嵌入到 HTML 页面,再把这些文件交给测试组进行测试。
 
( 2 )、“非激活”方式
把运行时加载器( Runtime Loader )相关文件和 Flex 程序一起部署到 Web 服务器上,然后把 URL 测试地址提供给测试组。
 
第二步,测试组建立测试环境。
( 1 )、如果是“激活”方式,则看 Flex 程序是否已经部署到服务器上,如果是,则打开 HTML 包装( HTML wrapper )的 URL 地址,然后打开 RFT8 来对嵌入在 HTML 页面中的 Flex 程序进行测试。
 
如果 Flex 程序尚未被部署到服务器上,则在本地打开 WEB 浏览器加载 HTML 包装( HTML wrapper )的文件,然后打开 RFT8 来对嵌入在 HTML 页面中的 Flex 程序进行测试。
 
( 2 )、如果是“非激活”方式,则通过浏览器直接打开 RuntimeLoadingTest.html 页面(运行时加载器)的 URL ,然后打开 RFT8 来对嵌入在 HTML 页面中的 Flex 程序进行测试。
 
SilkTest
SilkTest2008 R2 目前支持对 Flex2.0 、 Flex3.0 以及 Flex3.2 的程序进行测试。
 
和 Rational Functional Tester 一样,在测试 Flex 程序之前,需要执行一系列步骤,对被测试的 Flex 程序进行一些设置:
1 、在被测试的 Flex 程序中包含 Adobe Flex 自动化包( Adobe Flex Automation Package )和 SilkTest 自动化包( SilkTest Automation Package )。
 
Adobe Flex 自动化包是由 Adobe 提供的自动化 API ,可以为开发者提供创建 Flex 程序的自动化测试接口。在 Adobe Flex 自动化包中, automation.swc 和 automation_agent.swc 是对 Flex 框架组件的委托实现。而 SilkTest 自动化包提供了 SilkTest 特定的一些实现。
 
在被测试的 Flex 应用程序中的 include-libraries 编译选项中加入下面的文件:
l         automation.swc
l         automation_agent.swc
l         FlexTechDomain.swc
l         automation_charts.swc (如果 Flex 程序使用 Flex 2.0 SDK ,使用了 charts 组件 )
l         automation_dmv.swc (如果 Flex 程序使用 Flex 3.0 SDK ,使用了 charts 组件 )
l         automation_flasflexkit.swc (如果 Flex 程序中使用了嵌入的 Flash 内容 )
 
2 、在 SilkTest 中创建 Flex 测试项目:

 
3 、对被测试的 Flex 程序“激活” Flex 扩展:

 
 
TestComplete
TestComplete 7 支持对 Flex2.0 及以后版本的 Flex 应用程序进行测试。
 
Flex 应用程序支持 MSAA ( Microsoft Active Accessibility ),它们的元素通过 IAccessible 接口暴露出来,因此, TestComplete 通过它的 MSAA 引擎来获取 Flex 应用程序控件和对象的相关信息。
 
为了让 TestComplete 可以识别出 Flex 应用程序的对象,被测试的 Flex 应用程序必须以 MSAA 接口支持的方式编译,并且封装到 WEB 页面( HTML Wrapper ):

 
如果不以 MSAA 方式编译,通过 TestComplete 也可以录制到 Flex 程序的测试脚本,如下代码所示:
  Dim iexplore
  Dim page
  Dim vobject
  Dim edit
  Set iexplore = Aliases .iexplore
  Call iexplore.IEFrame.Click(557, 13)
  Set page = iexplore.pageFlickrriaSwf
  Call page.ToURL("file:///D:/RIA/官方实例 /FlickrRIA.swf")
  Set vobject = page.objectFileDRiaFlickrriaSwf
  Set edit = vobject.editFlickrTagsOrSearchTerms
  Call edit.Click(25, 8)
  Call edit.Keys("dog")
  Call vobject.Graphic.Click(48, 5)
  Call vobject.Graphic1.Click(320, 46)
 
以 MSAA 编译后,则录制到如下代码:
  Dim iexplore
  Dim page
  Dim vobject
  Dim edit
  Dim list
  Set iexplore = Aliases .iexplore
  Call iexplore.IEFrame.Click(524, 9)
  Set page = iexplore.pageFlickrriaSwf
  Call page.ToURL("file:///D:/RIA/官方实例 /FlickrRIA.swf")
  Set vobject = page.objectFileDRiaFlickrriaSwf
  Set edit = vobject.editFlickrTagsOrSearchTerms
  Call edit.Click(82, 7)
  Call edit.Keys("dog")
  vobject.buttonSearch.ClickButton
  Set list = vobject.List
  Call list.ClickItem("[object Object]")
  Call list.Click(308, 192)
 
由此可见, MSAA 接口的编译方式对于 TestComplete 测试 Flex 程序而言至关重要。
 
QTP
在 QTP 中测试 Flex 需要安装 Flex for QTP 的插件。
 
在 Flex Builder 3 中带有为 QTP 自动化测试而提供的插件,运行 Flex Builder 安装目录下的 \Installers\QTP_Plugin_Installer.exe 进行安装。安装完成后启动 QTP ,在 Add-ins Manager 窗口中出现 Flex 3.0.0 的插件加载项:

 
为了让 QTP 可以识别 Flex 对象,还需要对被测试的 Flex 程序进行编译设置,打开 Flex Builder ,右键选择 Project -> Properties -> Flex Compiler ,修改属性“ Additional compiler arguments ”,在该属性中添加:
-locale en_US -include-libraries "C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\libs\automation.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\libs\automation_agent.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\libs\qtp.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\libs\automation_dmv.swc"
 
这样编译后的 Flex 程序就可以被 QTP 所识别了:

 
并且可以进行 Flex 程序脚本的录制:

录制的脚本如下所示:
Window("Microsoft Internet Explorer").FlexApplication("PhotoAlbum").FlexLinkBar("_PhotoAlbum_LinkBar1").Change "Shopping Cart"
Window("Microsoft Internet Explorer").FlexApplication("PhotoAlbum").FlexLinkBar("_PhotoAlbum_LinkBar1").Change "Photo Catalog"
Window("Microsoft Internet Explorer").FlexApplication("PhotoAlbum").FlexBox("Photo Catalog").FlexList("slideList").FlexBox("assets/thumbs/alcatraz.jpg").FlexImage("assets/thumbs/alcatraz.jpg").Click
 
结论
本文介绍了 4 种支持 Flex 自动化功能测试的商用工具,经过粗略的使用和对比,可以发现:每个工具在支持 Flex 的对象识别所采用的技术上有所差别,但是总体而言可分为两类:一类是采用了 Flex 自动化接口,例如 RFT 、 SilkTest 等;另外一类是没有采用 Flex 自动化接口,例如 TestComplete 采用的时 MSAA 接口。
总体而言,对 Flex 应用程序进行测试之前,都需要对编译环境进行必要的设置, TestComplete 由于采用 MSAA 接口,需要设置的内容相对少一些。
其它工具不同, QTP 没有“原生”支持 Flex ,而是“假手于人”,需要借助 Flex Builder 专门为 QTP 提供的插件来实现对 Flex 测试的支持。虽然 QTP 没有直接支持 Flex ,但是通过初步的使用和比较,发现 Adobe 为其量身订做的 Flex 插件在识别对象的能力上比采用 MSAA 接口的 TestComplete 要略胜一筹。

TAG: Automation automation flex Flex RIA

 

评分:0

我来说两句

Open Toolbar