`
kuwoleft
  • 浏览: 1074783 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

注:本文最早于2009年7月发表于It168.com

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 程序测试的一般步骤和流程如下图所示:

<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:401.25pt; height:625.5pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

第一步,开发组的开发人员为了 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 编译选项中加入下面的文件:

<!-- [if !supportLists]-->l <!-- [endif]-->automation.swc

<!-- [if !supportLists]-->l <!-- [endif]-->automation_agent.swc

<!-- [if !supportLists]-->l <!-- [endif]-->FlexTechDomain.swc

<!-- [if !supportLists]-->l <!-- [endif]-->automation_charts.swc (如果 Flex 程序使用 Flex 2.0 SDK ,使用了 charts 组件

<!-- [if !supportLists]-->l <!-- [endif]-->automation_dmv.swc (如果 Flex 程序使用 Flex 3.0 SDK ,使用了 charts 组件

<!-- [if !supportLists]-->l <!-- [endif]-->automation_flasflexkit.swc (如果 Flex 程序中使用了嵌入的 Flash 内容

2 、在 SilkTest 中创建 Flex 测试项目:

<!-- [if gte vml 1]><v:shape id="_x0000_i1030" type="#_x0000_t75" style='width:248.25pt;height:329.25pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image002.emz" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image002.emz" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

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

<!-- [if gte vml 1]><v:shape id="_x0000_i1031" type="#_x0000_t75" style='width:363.75pt;height:183.75pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image004.emz" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image004.emz" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

TestComplete

TestComplete 7 支持对 Flex2.0 及以后版本的 Flex 应用程序进行测试。

Flex 应用程序支持 MSAA Microsoft Active Accessibility ),它们的元素通过 IAccessible 接口暴露出来,因此, TestComplete 通过它的 MSAA 引擎来获取 Flex 应用程序控件和对象的相关信息。

为了让 TestComplete 可以识别出 Flex 应用程序的对象,被测试的 Flex 应用程序必须以 MSAA 接口支持的方式编译,并且封装到 WEB 页面( HTML Wrapper ):

<!-- [if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:387pt;height:390.75pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image006.png" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image006.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

如果不以 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 的插件加载项:

<!-- [if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:317.25pt;height:334.5pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image008.png" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image008.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

为了让 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 所识别了:

<!-- [if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:303.75pt;height:436.5pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image010.png" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image010.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

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

<!-- [if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:381.75pt;height:215.25pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image012.png" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image012.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

录制的脚本如下所示:

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 要略胜一筹。


分享到:
评论

相关推荐

    Flex自动化功能测试工具大比拼.docx

    本 文介绍了 4 种支持 Flex 自动化功能测试的商用工具,经过粗略的使用和对比,可以发现:每个工具在支持 Flex 的对象识别所采用的技术上有所差别,但是总体而言可分为两类:一类是采用了 Flex 自动化接口,例如 RFT...

    软件测试中Flex自动化功能测试工具大比拼

    Flex功能软件测试中Flex自动化功能测试工具大比拼RIA越来越“火”,各测试工具厂商也紧跟潮流,纷纷开始支持对RIA程序的测试,对于Flex,它们支持得怎么样呢?今天,我们就来看个究竟,来个Flex自动化功能测试工具大...

    Flex自动格式化工具

    自动格式化工具

    selenium对flex程序的自动化测试.docx

    selenium对flex程序的自动化测试.docx

    selenium自动化测试工具介绍

    selenium 工具 原理 自动化 测试 介绍了selenium的基本使用和工作原理。相对来说selenium还是相对比较轻量级的工具,本身支持的功能不多,但是好处在于易扩展,容易整合,最大的特色是跨操作系统和跨浏览器平台,还...

    Flex格式化代码工具

    Flex格式化代码工具 安装步骤参考readme.txt

    Android手机自动化性能测试工具的研究与开发 (2012年)

    针对手机性能测试中效率低、工作量大等问题,提出自动化性能测试的方法,并运用这一方法设计了 Android平台手机性能测试的FLEX-ANDROID工具。对这一工具的组成结构和测试脚本的编写进行了详细研究,并且对如何计算和...

    flex性能测试PPT

    基于flex性能测试的一些简单流程描述和测试方法

    flex AIR 工程自动更新测试

    主要是用于flex AIR工程远程自动检测新版本更新功能。 主要对比是&lt;version&gt;v4中version的版本,如v4

    FLEX 特效工具FLEX 特效工具

    FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具

    flex对Rtmp服务器联接测试工具.rar

    Flex对rtmp的测试工具,本人主要用于对FluorineFx的Rtmp服务测试。Flex对rtmp的测试工具,本人主要用于对FluorineFx的Rtmp服务测试。Flex对rtmp的测试工具,本人主要用于对FluorineFx的Rtmp服务测试。

    自动化测试之Flexmonkey

    详细为大家讲解了如何使用Flexmonkey对Flex应用程序进行自动化测试,通过这个自动化测试工具的学习,大家还可以深入研究如何开展基于数据驱动的自动化测试

    Flex 代码格式化工具

    Flex 代码格式化工具 1. 将jar包放在Flex Builder或者Eclipse的plugins文件夹里(例如:C:\Program Files\Adobe\Flex Builder 3\plugins); 2. 重启Flex Builder或Eclipse,必要时使用-clean参数重启; 3. 工具栏...

    如何对Flex进行自动化测试之RIAtest使用方法

    如何对Flex进行自动化测试之RIAtest使用方法.今天有时间摸一下flex自动化的一些东西,今天先介绍下一个收费的flex自动化的工具RIAtest。第一次认识它是在InfoQ的周刊上看到的,当时没有留意,这次好好的使用了下。您...

    词法分析自动生成工具flex

    一个自制的词法分析自动生成工具

    FLEX开发必备的工具,

    FLEX开发必备的工具,可以通过实例查看源代码FLEX开发必备的工具,可以通过实例查看源代码

    webload系列之--flex应用的性能测试.swf.swf

    webload系列之--flex应用的性能测试,webload系列之--flex应用的性能测试

    flex 入门 flex 国际化

    flex 入门介绍 flex 如何结合 j2ee 开发应用程序以及 flex 的国际化等

    FLEX 自动生成器

    FLEX 自动生成器

Global site tag (gtag.js) - Google Analytics