轉(zhuǎn)帖|其它|編輯:郝浩|2008-07-08 15:36:35.000|閱讀 780 次
概述: WPF強(qiáng)化了用戶界面的自動(dòng)化測(cè)試,使測(cè)試人員可以從繁瑣的UI測(cè)試中解脫出來(lái),將更多的精力用于更加底層的測(cè)試工作。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
WPF強(qiáng)化了用戶界面的自動(dòng)化測(cè)試,使測(cè)試人員可以從繁瑣的UI測(cè)試中解脫出來(lái),將更多的精力用于更加底層的測(cè)試工作。
從Visual Studio2005開(kāi)始,微軟將測(cè)試集成到其開(kāi)發(fā)工具中,從工具上保證了測(cè)試工作在軟件生命周期中的重要地位。而從NET3.0的WPF開(kāi)始,微軟通過(guò)其UI的自動(dòng)化支持,協(xié)助開(kāi)發(fā)人員為界面元素建立自動(dòng)化測(cè)試標(biāo)識(shí)。
WPF的UI自動(dòng)化技術(shù)
WPF為Windows桌面應(yīng)用程序和WEB應(yīng)用程序提供了一個(gè)智能客戶端開(kāi)發(fā)模型,以方便構(gòu)建豐富統(tǒng)一的UI、媒體、圖形圖像、動(dòng)畫(huà)和文檔等。一方面WPF可以促使開(kāi)發(fā)人員更積極地參與到用戶界面的開(kāi)發(fā),另一方面提升用戶體驗(yàn)的滿意度。
在傳統(tǒng)的軟件開(kāi)發(fā)中,用戶界面開(kāi)發(fā)費(fèi)工費(fèi)時(shí),并且跨越了表現(xiàn)層和技術(shù)層,使一般的程序員都苦惱不已。WPF則從技術(shù)層面上減輕了這種復(fù)雜性,提升了開(kāi)發(fā)人員參與用戶界面設(shè)計(jì)開(kāi)發(fā)的積極性。
UI自動(dòng)化對(duì)大多數(shù)用戶界面元素提供可編程訪問(wèn),即通過(guò)除標(biāo)準(zhǔn)輸入輸出 (比如鍵盤(pán)鼠標(biāo)) 方式以外的方法操作UI。UI自動(dòng)化核心層屏蔽不同框架技術(shù)下多種UI元素的差異,確保UI自動(dòng)化客戶應(yīng)用程序能在多種框架技術(shù)下工作。比如,WPF按鈕的內(nèi)容(Content)屬性,標(biāo)準(zhǔn)Win32按鈕的標(biāo)題(Caption)屬性以及HTML頁(yè)面上顯示圖像的替換文字(ALT)屬性等都映射為WPF中UI自動(dòng)化視圖中單一的名字(Name)屬性。藉此,一些輔助技術(shù)產(chǎn)品和自動(dòng)化測(cè)試框架可獲得其所需要的獲取用戶界面信息統(tǒng)一的程序化訪問(wèn)方法,此外,通過(guò)自動(dòng)化的用戶界面技術(shù),應(yīng)用開(kāi)發(fā)商也可以提高其產(chǎn)品的易用性。
UI自動(dòng)化模型
現(xiàn)有技術(shù)下實(shí)現(xiàn)UI自動(dòng)化測(cè)試系統(tǒng)開(kāi)發(fā)需要通過(guò)不同方法獲得和展現(xiàn)UI元素信息,開(kāi)發(fā)人員需要花費(fèi)大量的時(shí)間和精力去搜集這些必需的UI元素信息,而不能集中精力于系統(tǒng)特征和功能的實(shí)現(xiàn)上。借助于WPF的UI自動(dòng)化所提供的統(tǒng)一的控制模式,通過(guò)其等價(jià)的名字屬性 (NameProperty) 就可以輕松實(shí)現(xiàn)對(duì)不同UI元素的統(tǒng)一控制。UI自動(dòng)化技術(shù)減少了此類(lèi)應(yīng)用系統(tǒng)的開(kāi)發(fā)成本,將成為下一代輔助訪問(wèn)技術(shù)產(chǎn)品和自動(dòng)化測(cè)試系統(tǒng)主要的界面信息資源提供者。
UI自動(dòng)化包括兩部分。UI自動(dòng)化服務(wù)提供者 (UI Automation Providers) 和UI自動(dòng)化客戶程序 (UI Automation Clients) 。UI自動(dòng)化服務(wù)提供者是提供UI自動(dòng)化服務(wù)的應(yīng)用程序,比如Word, Excel及其它基于Windows的應(yīng)用程序 等,為用戶通過(guò)輔助程序技術(shù)對(duì)其訪問(wèn)提供支持。UI自動(dòng)化客戶端程序是實(shí)現(xiàn)用戶界面自動(dòng)化訪問(wèn)的輔助技術(shù)程序,比如Word和Excel中供應(yīng)用程序訪問(wèn)的對(duì)象模型及其宏腳本等。相應(yīng)的,對(duì)開(kāi)發(fā)人員來(lái)說(shuō),可以通過(guò)調(diào)用UI自動(dòng)化提供者應(yīng)用程序接口(UI Automation Providers API)創(chuàng)建用戶界面控制元素,也可以通過(guò)調(diào)用UI自動(dòng)化客戶端應(yīng)用程序接口(UI Automation Clients API)創(chuàng)建應(yīng)用程序,通過(guò)UI自動(dòng)化核心層與UI自動(dòng)化界面控制元素進(jìn)行通訊。
UI自動(dòng)化通過(guò)把界面上一個(gè)個(gè)的UI元素作為自動(dòng)化元素 (AutomationElement)暴露給客戶端應(yīng)用程序供其調(diào)用。所有UI自動(dòng)化元素組成以桌面(Desktop)為根節(jié)點(diǎn)的樹(shù)型層次結(jié)構(gòu),樹(shù)狀結(jié)構(gòu)包含所有正在運(yùn)行的應(yīng)用程序,每一個(gè)正在運(yùn)行的應(yīng)用程序都是這個(gè)根的子節(jié)點(diǎn),其每一個(gè)可能與用戶進(jìn)行互動(dòng)的界面元素都是一系列層次化的自動(dòng)化元素(AutomationElement)。樹(shù)型層次結(jié)構(gòu)通過(guò)原始視圖(Raw View) 的形式展現(xiàn)給客戶端,客戶端可以通過(guò)過(guò)濾自動(dòng)化元素樹(shù)的原始視圖 (Raw View) ,得到控制項(xiàng)視圖 (Control View) 和內(nèi)容項(xiàng)視圖 (Content View) 。 NET3.0提供UI 探測(cè)程序UISpy.exe供開(kāi)發(fā)人員調(diào)用以察看UI自動(dòng)化元素視圖。
自動(dòng)化元素 ( AutomationElement)對(duì)象包括UI元素在界面上所呈現(xiàn)的兩類(lèi)共有屬性。一個(gè)是控制類(lèi)型屬性(Control Type),控制類(lèi)型屬性定義界面元素的基本表現(xiàn)形式和功能,并以此作為單一的識(shí)別實(shí)體。比如,按鈕Button類(lèi)型或者多選框Check Box類(lèi)型。一個(gè)是控制模式(Control Patterns),控制模式提供一個(gè)統(tǒng)一的方法來(lái)構(gòu)建和表達(dá)控制類(lèi)型所擁有的功能。比如,可以對(duì)擁有被調(diào)用功能的控制類(lèi)型比如按鈕Button類(lèi)型使用調(diào)用模式,對(duì)編輯類(lèi)控制類(lèi)型使用文本模式等。控制模式通過(guò)公開(kāi)方法調(diào)用使客戶端得到界面元素進(jìn)一步的詳細(xì)信息并提供輸入。微軟鑒別出18種控制模式,通過(guò)這18種控制模式可以展現(xiàn)出任何類(lèi)UI元素及其任意組合所能實(shí)現(xiàn)的所有事情。
注意,控制類(lèi)型和控制模式之間并不是一一對(duì)應(yīng)的關(guān)系。一個(gè)控制模式可以被多種控制類(lèi)型支持,一個(gè)控制類(lèi)型也可以支持多種控制模式,每一個(gè)組合都展現(xiàn)其不同的行為樣式。比如,一個(gè)下拉框類(lèi)型(Combo Box)具有至少兩種控制模式:一個(gè)是呈現(xiàn)其折疊和展開(kāi)能力的模式(ExpandCollapsePattern),另一個(gè)是呈現(xiàn)其選擇項(xiàng)的可選擇模式(SelectionItemPattern)。
WPF的UI自動(dòng)化測(cè)試
我們知道,現(xiàn)有技術(shù)條件下實(shí)現(xiàn)UI自動(dòng)化測(cè)試系統(tǒng)開(kāi)發(fā)需要分別實(shí)現(xiàn)不同技術(shù)條件下的UI元素的鑒別和控制,實(shí)現(xiàn)復(fù)雜而且有效性不高。而借助于WPF的UI自動(dòng)化所提供的統(tǒng)一的控制模式就可以輕松實(shí)現(xiàn)。
作為UI自動(dòng)化服務(wù)提供者,在開(kāi)發(fā)一個(gè)應(yīng)用程序的時(shí)候,必須注意最終用戶通過(guò)標(biāo)準(zhǔn)鍵盤(pán)和鼠標(biāo)操作UI對(duì)象進(jìn)行交互的行為。一旦這些關(guān)鍵行為被確定,則其相應(yīng)的反映UI元素功能和行為的UI自動(dòng)化控制模式就需要被應(yīng)用程序?qū)崿F(xiàn)。比如,要實(shí)現(xiàn)一個(gè)組合框?qū)ο螅托枰_定用戶對(duì)組合框所進(jìn)行的操作控制模式,用戶通常需要調(diào)用組合框的折疊和展開(kāi)模式去隱藏和顯示其可選擇項(xiàng)列表,也需要調(diào)用其編輯模式通過(guò)鍵盤(pán)輸入增加一個(gè)新的選擇項(xiàng)。UI自動(dòng)化服務(wù)提供者實(shí)現(xiàn)控制模式的接口位于System.Windows.Automation.Provider 名字空間中,其所有控制模式接口都包含后綴“Provider”,比如調(diào)用模式接口 IInvokeProvider,文本模式接口ITextProvider等。所有標(biāo)準(zhǔn)WPF控制項(xiàng)自動(dòng)支持UI自動(dòng)化,應(yīng)用程序自定義的控制項(xiàng)必須提供支持UI自動(dòng)化的訪問(wèn)類(lèi)和接口。
作為UI自動(dòng)化客戶端,通過(guò)調(diào)用UI自動(dòng)化的控制模式類(lèi)提供的方法和屬性得到UI元素的控制信息和內(nèi)容信息,達(dá)到對(duì)UI操作和控制目的。這些控制模式類(lèi)位于System.Windows.Automation名字空間,其所有控制模式類(lèi)都包含后綴“Pattern” ,比如調(diào)用模式類(lèi)InvokePattern,文本模式類(lèi)TextPattern等。
控制模式將一個(gè)界面元素對(duì)象所支持的結(jié)構(gòu),方法,屬性和事件結(jié)合在一起。控制模式對(duì)于UI元素的關(guān)系相比于接口對(duì)于COM對(duì)象的關(guān)系。對(duì)于COM,我們可以通過(guò)詢問(wèn)COM對(duì)象得到它所支持的接口,然后通過(guò)接口調(diào)用對(duì)應(yīng)的COM功能。對(duì)于UI自動(dòng)化對(duì)象,客戶端可以通過(guò)詢問(wèn)UI對(duì)象得到它所支持的控制模式,然后通過(guò)其控制模式調(diào)用得到其結(jié)構(gòu)、方法、屬性和事件,從而實(shí)現(xiàn)和UI的交互。
例如,提供者實(shí)現(xiàn)了多行文本編輯控制的滾動(dòng)模式接口IScrollProvider,當(dāng)一個(gè)客戶端程序探測(cè)到這個(gè)界面元素支持滾動(dòng)模式,則可以通過(guò)調(diào)用滾動(dòng)模式類(lèi)ScrollPattern得到這個(gè)文本編輯框的屬性、方法和事件來(lái)收集所支持的文本滾動(dòng)信息,通過(guò)程序化的方法實(shí)現(xiàn)文本編輯框內(nèi)容的滾動(dòng)。
綜上所述,WPF的UI自動(dòng)化技術(shù)旨在提供一個(gè)統(tǒng)一的UI控制訪問(wèn)方式,由UI自動(dòng)化服務(wù)提供者 (UI Automation Providers) 實(shí)現(xiàn)控制模式接口,UI自動(dòng)化客戶程序 (UI Automation Clients) 則通過(guò)調(diào)用相應(yīng)的控制模式類(lèi)來(lái)實(shí)現(xiàn)UI自動(dòng)化操作和控制。
軟件測(cè)試的花費(fèi)往往很高。自動(dòng)化是一個(gè)節(jié)省時(shí)間和成本的好辦法。但是軟件自動(dòng)化測(cè)試的工具和技術(shù),往往缺乏通用的適用性和伸縮性。為了實(shí)現(xiàn)測(cè)試過(guò)程的自動(dòng)化,我們依據(jù)軟件需求或規(guī)格設(shè)計(jì)說(shuō)明書(shū),針對(duì)測(cè)試對(duì)象,自動(dòng)生成測(cè)試用例,使測(cè)試能自動(dòng)執(zhí)行,自動(dòng)驗(yàn)證其正確性。
在整個(gè)軟件測(cè)試過(guò)程中,由于UI在提升用戶體驗(yàn)方面的特殊作用,UI級(jí)別的測(cè)試不但在于驗(yàn)證系統(tǒng)的正確性和有效性,而且在驗(yàn)證整個(gè)系統(tǒng)的易用性、行為一致性和穩(wěn)定性方面有著非常重要的作用。
但UI自動(dòng)化測(cè)試歷來(lái)困難。一般來(lái)說(shuō),一個(gè)系統(tǒng)大量的UI人為干預(yù),都需要測(cè)試。今天我們還沒(méi)有一個(gè)完全能達(dá)到此一目標(biāo)而頗具規(guī)模的系統(tǒng)。UI自動(dòng)化程度仍停留在自動(dòng)化測(cè)試腳本的水平。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:測(cè)試時(shí)代