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

本文对比了Rational Functional Tester、SilkTest、TestComplete和QTP四种商用工具对Flex应用程序进行自动化功能测试的能力。每种工具都有其独特的对象识别技术和编译设置要求。

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

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

Rational Functional Tester

Rational Functional Tester 8.0 目前支持对 Flex2.0Flex3.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.0Flex3.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 应用程序支持 MSAAMicrosoft 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 自动化接口,例如 RFTSilkTest 等;另外一类是没有采用 Flex 自动化接口,例如 TestComplete 采用的时 MSAA 接口。

总体而言,对 Flex 应用程序进行测试之前,都需要对编译环境进行必要的设置, TestComplete 由于采用 MSAA 接口,需要设置的内容相对少一些。

与其它工具不同, QTP 没有“原生”支持 Flex ,而是“假手于人”,需要借助 Flex Builder 专门为 QTP 提供的插件来实现对 Flex 测试的支持。虽然 QTP 没有直接支持 Flex ,但是通过初步的使用和比较,发现 Adobe 为其量身订做的 Flex 插件在识别对象的能力上比采用 MSAA 接口的 TestComplete 要略胜一筹。


内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值