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要略勝一籌。
文章來源于領測軟件測試網 http://www.kjueaiud.com/