注:本文最早于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
要略胜一筹。
分享到:
相关推荐
本 文介绍了 4 种支持 Flex 自动化功能测试的商用工具,经过粗略的使用和对比,可以发现:每个工具在支持 Flex 的对象识别所采用的技术上有所差别,但是总体而言可分为两类:一类是采用了 Flex 自动化接口,例如 RFT...
Flex功能软件测试中Flex自动化功能测试工具大比拼RIA越来越“火”,各测试工具厂商也紧跟潮流,纷纷开始支持对RIA程序的测试,对于Flex,它们支持得怎么样呢?今天,我们就来看个究竟,来个Flex自动化功能测试工具大...
自动格式化工具
selenium对flex程序的自动化测试.docx
selenium 工具 原理 自动化 测试 介绍了selenium的基本使用和工作原理。相对来说selenium还是相对比较轻量级的工具,本身支持的功能不多,但是好处在于易扩展,容易整合,最大的特色是跨操作系统和跨浏览器平台,还...
Flex格式化代码工具 安装步骤参考readme.txt
针对手机性能测试中效率低、工作量大等问题,提出自动化性能测试的方法,并运用这一方法设计了 Android平台手机性能测试的FLEX-ANDROID工具。对这一工具的组成结构和测试脚本的编写进行了详细研究,并且对如何计算和...
基于flex性能测试的一些简单流程描述和测试方法
主要是用于flex AIR工程远程自动检测新版本更新功能。 主要对比是<version>v4中version的版本,如v4
FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具FLEX 特效工具
Flex对rtmp的测试工具,本人主要用于对FluorineFx的Rtmp服务测试。Flex对rtmp的测试工具,本人主要用于对FluorineFx的Rtmp服务测试。Flex对rtmp的测试工具,本人主要用于对FluorineFx的Rtmp服务测试。
详细为大家讲解了如何使用Flexmonkey对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自动化的一些东西,今天先介绍下一个收费的flex自动化的工具RIAtest。第一次认识它是在InfoQ的周刊上看到的,当时没有留意,这次好好的使用了下。您...
一个自制的词法分析自动生成工具
FLEX开发必备的工具,可以通过实例查看源代码FLEX开发必备的工具,可以通过实例查看源代码
webload系列之--flex应用的性能测试,webload系列之--flex应用的性能测试
flex 入门介绍 flex 如何结合 j2ee 开发应用程序以及 flex 的国际化等
FLEX 自动生成器