橫向比較Flex自動化功能測試工具
Rational Functional Tester
Rational Functional Tester 8.0目前支持對Flex2.0和Flex3.0的程序進(jìn)行測試。在RFT8中,支持兩種方式測試Flex程序,一種是針對“激活”的Flex程序的測試方式,另外一種是針對“非激活”的Flex程序的測試方式。
所謂“激活”與“非激活”是指:是否在編譯被測試的Flex程序時加入了Functional Tester代理和Flex自動化庫。
在RFT8中進(jìn)行Flex程序測試的一般步驟和流程如下圖所示:
第一步,開發(fā)組的開發(fā)人員為了RFT的功能測試,對被測試的Flex程序進(jìn)行開發(fā)環(huán)境上的設(shè)置。
設(shè)置可以有兩種方式,分別是“激活”與“非激活”的方式:
(1)、“激活”方式
在編譯時加入Functional Tester代理和Flex自動化庫,然后創(chuàng)建HTML包裝(HTML wrapper),把.swf文件嵌入到HTML頁面,再把這些文件交給測試組進(jìn)行測試。
(2)、“非激活”方式
把運(yùn)行時加載器(Runtime Loader)相關(guān)文件和Flex程序一起部署到Web服務(wù)器上,然后把URL測試地址提供給測試組。
第二步,測試組建立測試環(huán)境。
(1)、如果是“激活”方式,則看Flex程序是否已經(jīng)部署到服務(wù)器上,如果是,則打開HTML包裝(HTML wrapper)的URL地址,然后打開RFT8來對嵌入在HTML頁面中的Flex程序進(jìn)行測試。
如果Flex程序尚未被部署到服務(wù)器上,則在本地打開WEB瀏覽器加載HTML包裝(HTML wrapper)的文件,然后打開RFT8來對嵌入在HTML頁面中的Flex程序進(jìn)行測試。
(2)、如果是“非激活”方式,則通過瀏覽器直接打開RuntimeLoadingTest.html頁面(運(yùn)行時加載器)的URL,然后打開RFT8來對嵌入在HTML頁面中的Flex程序進(jìn)行測試。
SilkTest
SilkTest2008 R2目前支持對Flex2.0、Flex3.0以及Flex3.2的程序進(jìn)行測試。
和Rational Functional Tester一樣,在測試Flex程序之前,需要執(zhí)行一系列步驟,對被測試的Flex程序進(jìn)行一些設(shè)置:
1、在被測試的Flex程序中包含Adobe Flex 自動化包(Adobe Flex Automation Package)和SilkTest自動化包(SilkTest Automation Package)。
Adobe Flex 自動化包是由Adobe提供的自動化API,可以為開發(fā)者提供創(chuàng)建Flex程序的自動化測試接口。在Adobe Flex 自動化包中,automation.swc 和automation_agent.swc 是對Flex框架組件的委托實現(xiàn)。而SilkTest自動化包提供了SilkTest特定的一些實現(xiàn)。
在被測試的Flex應(yīng)用程序中的include-libraries編譯選項中加入下面的文件:
automation.swc
automation_agent.swc
FlexTechDomain.swc
automation_charts.swc (如果Flex程序使用Flex 2.0 SDK,使用了charts組件 )
automation_dmv.swc (如果Flex程序使用Flex 3.0 SDK,使用了charts組件 )
automation_flasflexkit.swc(如果Flex程序中使用了嵌入的Flash內(nèi)容 )
2、在SilkTest中創(chuàng)建Flex測試項目:

3、對被測試的Flex程序“激活”Flex擴(kuò)展:

TestComplete
TestComplete 7支持對Flex2.0及以后版本的Flex應(yīng)用程序進(jìn)行測試。
Flex應(yīng)用程序支持MSAA(Microsoft Active Accessibility),它們的元素通過IAccessible接口暴露出來,因此,TestComplete通過它的MSAA引擎來獲取Flex應(yīng)用程序控件和對象的相關(guān)信息。
為了讓TestComplete可以識別出Flex應(yīng)用程序的對象,被測試的Flex應(yīng)用程序必須以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程序而言至關(guān)重要。
QTP
在QTP中測試Flex需要安裝Flex for QTP的插件。
在Flex Builder 3中帶有為QTP自動化測試而提供的插件,運(yùn)行Flex Builder安裝目錄下的\Installers\QTP_Plugin_Installer.exe進(jìn)行安裝。安裝完成后啟動QTP,在Add-ins Manager窗口中出現(xiàn)Flex 3.0.0的插件加載項:
為了讓QTP可以識別Flex對象,還需要對被測試的Flex程序進(jìn)行編譯設(shè)置,打開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所識別了:
并且可以進(jìn)行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
Flex自動化功能測試工具橫向大比拼結(jié)論
本文介紹了4種支持Flex自動化功能測試的商用工具,經(jīng)過粗略的使用和對比,可以發(fā)現(xiàn):每個工具在支持Flex的對象識別所采用的技術(shù)上有所差別,但是總體而言可分為兩類:一類是采用了Flex自動化接口,例如RFT、SilkTest等;另外一類是沒有采用Flex自動化接口,例如TestComplete采用的時MSAA接口。
總體而言,對Flex應(yīng)用程序進(jìn)行測試之前,都需要對編譯環(huán)境進(jìn)行必要的設(shè)置,TestComplete由于采用MSAA接口,需要設(shè)置的內(nèi)容相對少一些。
與其它工具不同,QTP沒有“原生”支持Flex,而是“假手于人”,需要借助Flex Builder專門為QTP提供的插件來實現(xiàn)對Flex測試的支持。雖然QTP沒有直接支持Flex,但是通過初步的使用和比較,發(fā)現(xiàn)Adobe為其量身訂做的Flex插件在識別對象的能力上比采用MSAA接口的TestComplete要略勝一籌。
【編輯推薦】