WPF強(qiáng)化了用戶界面的自動(dòng)化測試,使測試人員可以從繁瑣的UI測試中解脫出來,將更多的精力用于更加底層的測試工作。
從Visual Studio2005開始,微軟將測試集成到其開發(fā)工具中,從工具上保證了測試工作在軟件生命周期中的重要地位。而從NET3.0的WPF開始,微軟通過其UI的自動(dòng)化支持,協(xié)助開發(fā)人員為界面元素建立自動(dòng)化測試標(biāo)識。
WPF的UI自動(dòng)化技術(shù)
WPF為Windows桌面應(yīng)用程序和WEB應(yīng)用程序提供了一個(gè)智能客戶端開發(fā)模型,以方便構(gòu)建豐富統(tǒng)一的UI、媒體、圖形圖像、動(dòng)畫和文檔等。一方面WPF可以促使開發(fā)人員更積極地參與到用戶界面的開發(fā),另一方面提升用戶體驗(yàn)的滿意度。
在傳統(tǒng)的軟件開發(fā)中,用戶界面開發(fā)費(fèi)工費(fèi)時(shí),并且跨越了表現(xiàn)層和技術(shù)層,使一般的程序員都苦惱不已。WPF則從技術(shù)層面上減輕了這種復(fù)雜性,提升了開發(fā)人員參與用戶界面設(shè)計(jì)開發(fā)的積極性。
UI自動(dòng)化對大多數(shù)用戶界面元素提供可編程訪問,即通過除標(biāo)準(zhǔ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頁面上顯示圖像的替換文字(ALT)屬性等都映射為WPF中 UI自動(dòng)化視圖中單一的名字(Name)屬性。藉此,一些輔助技術(shù)產(chǎn)品和自動(dòng)化測試框架可獲得其所需要的獲取用戶界面信息統(tǒng)一的程序化訪問方法,此外,通過自動(dòng)化的用戶界面技術(shù),應(yīng)用開發(fā)商也可以提高其產(chǎn)品的易用性。
UI自動(dòng)化模型
現(xiàn)有技術(shù)下實(shí)現(xiàn)UI自動(dòng)化測試系統(tǒng)開發(fā)需要通過不同方法獲得和展現(xiàn)UI元素信息,開發(fā)人員需要花費(fèi)大量的時(shí)間和精力去搜集這些必需的UI元素信息,而不能集中精力于系統(tǒng)特征和功能的實(shí)現(xiàn)上。借助于WPF的UI自動(dòng)化所提供的統(tǒng)一的控制模式,通過其等價(jià)的名字屬性 (NameProperty) 就可以輕松實(shí)現(xiàn)對不同UI元素的統(tǒng)一控制。UI自動(dòng)化技術(shù)減少了此類應(yīng)用系統(tǒng)的開發(fā)成本,將成為下一代輔助訪問技術(shù)產(chǎn)品和自動(dòng)化測試系統(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)用程序等,為用戶通過輔助程序技術(shù)對其訪問提供支持。UI自動(dòng)化客戶端程序是實(shí)現(xiàn)用戶界面自動(dòng)化訪問的輔助技術(shù)程序,比如Word和Excel中供應(yīng)用程序訪問的對象模型及其宏腳本等。相應(yīng)的,對開發(fā)人員來說,可以通過調(diào)用UI自動(dòng)化提供者應(yīng)用程序接口(UI Automation Providers API)創(chuàng)建用戶界面控制元素,也可以通過調(diào)用UI自動(dòng)化客戶端應(yīng)用程序接口(UI Automation Clients API)創(chuàng)建應(yīng)用程序,通過UI自動(dòng)化核心層與UI自動(dòng)化界面控制元素進(jìn)行通訊。
UI自動(dòng)化通過把界面上一個(gè)個(gè)的UI元素作為自動(dòng)化元素 (AutomationElement)暴露給客戶端應(yīng)用程序供其調(diào)用。所有UI自動(dòng)化元素組成以桌面(Desktop)為根節(jié)點(diǎn)的樹型層次結(jié)構(gòu),樹狀結(jié)構(gòu)包含所有正在運(yùn)行的應(yīng)用程序,每一個(gè)正在運(yùn)行的應(yīng)用程序都是這個(gè)根的子節(jié)點(diǎn),其每一個(gè)可能與用戶進(jìn)行互動(dòng)的界面元素都是一系列層次化的自動(dòng)化元素 (AutomationElement)。樹型層次結(jié)構(gòu)通過原始視圖(Raw View) 的形式展現(xiàn)給客戶端,客戶端可以通過過濾自動(dòng)化元素樹的原始視圖 (Raw View) ,得到控制項(xiàng)視圖 (Control View) 和內(nèi)容項(xiàng)視圖 (Content View) 。 NET3.0提供UI 探測程序UISpy.exe供開發(fā)人員調(diào)用以察看UI自動(dòng)化元素視圖。
自動(dòng)化元素 ( AutomationElement)對象包括UI元素在界面上所呈現(xiàn)的兩類共有屬性。一個(gè)是控制類型屬性(Control Type),控制類型屬性定義界面元素的基本表現(xiàn)形式和功能,并以此作為單一的識別實(shí)體。比如,按鈕Button類型或者多選框Check Box類型。一個(gè)是控制模式(Control Patterns),控制模式提供一個(gè)統(tǒng)一的方法來構(gòu)建和表達(dá)控制類型所擁有的功能。比如,可以對擁有被調(diào)用功能的控制類型比如按鈕Button類型使用調(diào)用模式,對編輯類控制類型使用文本模式等??刂颇J酵ㄟ^公開方法調(diào)用使客戶端得到界面元素進(jìn)一步的詳細(xì)信息并提供輸入。微軟鑒別出18種控制模式,通過這18種控制模式可以展現(xiàn)出任何類UI元素及其任意組合所能實(shí)現(xiàn)的所有事情。
從Visual Studio2005開始,微軟將測試集成到其開發(fā)工具中,從工具上保證了測試工作在軟件生命周期中的重要地位。而從NET3.0的WPF開始,微軟通過其UI的自動(dòng)化支持,協(xié)助開發(fā)人員為界面元素建立自動(dòng)化測試標(biāo)識。
WPF的UI自動(dòng)化技術(shù)
WPF為Windows桌面應(yīng)用程序和WEB應(yīng)用程序提供了一個(gè)智能客戶端開發(fā)模型,以方便構(gòu)建豐富統(tǒng)一的UI、媒體、圖形圖像、動(dòng)畫和文檔等。一方面WPF可以促使開發(fā)人員更積極地參與到用戶界面的開發(fā),另一方面提升用戶體驗(yàn)的滿意度。
在傳統(tǒng)的軟件開發(fā)中,用戶界面開發(fā)費(fèi)工費(fèi)時(shí),并且跨越了表現(xiàn)層和技術(shù)層,使一般的程序員都苦惱不已。WPF則從技術(shù)層面上減輕了這種復(fù)雜性,提升了開發(fā)人員參與用戶界面設(shè)計(jì)開發(fā)的積極性。
UI自動(dòng)化對大多數(shù)用戶界面元素提供可編程訪問,即通過除標(biāo)準(zhǔ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頁面上顯示圖像的替換文字(ALT)屬性等都映射為WPF中 UI自動(dòng)化視圖中單一的名字(Name)屬性。藉此,一些輔助技術(shù)產(chǎn)品和自動(dòng)化測試框架可獲得其所需要的獲取用戶界面信息統(tǒng)一的程序化訪問方法,此外,通過自動(dòng)化的用戶界面技術(shù),應(yīng)用開發(fā)商也可以提高其產(chǎn)品的易用性。
UI自動(dòng)化模型
現(xiàn)有技術(shù)下實(shí)現(xiàn)UI自動(dòng)化測試系統(tǒng)開發(fā)需要通過不同方法獲得和展現(xiàn)UI元素信息,開發(fā)人員需要花費(fèi)大量的時(shí)間和精力去搜集這些必需的UI元素信息,而不能集中精力于系統(tǒng)特征和功能的實(shí)現(xiàn)上。借助于WPF的UI自動(dòng)化所提供的統(tǒng)一的控制模式,通過其等價(jià)的名字屬性 (NameProperty) 就可以輕松實(shí)現(xiàn)對不同UI元素的統(tǒng)一控制。UI自動(dòng)化技術(shù)減少了此類應(yīng)用系統(tǒng)的開發(fā)成本,將成為下一代輔助訪問技術(shù)產(chǎn)品和自動(dòng)化測試系統(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)用程序等,為用戶通過輔助程序技術(shù)對其訪問提供支持。UI自動(dòng)化客戶端程序是實(shí)現(xiàn)用戶界面自動(dòng)化訪問的輔助技術(shù)程序,比如Word和Excel中供應(yīng)用程序訪問的對象模型及其宏腳本等。相應(yīng)的,對開發(fā)人員來說,可以通過調(diào)用UI自動(dòng)化提供者應(yīng)用程序接口(UI Automation Providers API)創(chuàng)建用戶界面控制元素,也可以通過調(diào)用UI自動(dòng)化客戶端應(yīng)用程序接口(UI Automation Clients API)創(chuàng)建應(yīng)用程序,通過UI自動(dòng)化核心層與UI自動(dòng)化界面控制元素進(jìn)行通訊。
UI自動(dòng)化通過把界面上一個(gè)個(gè)的UI元素作為自動(dòng)化元素 (AutomationElement)暴露給客戶端應(yīng)用程序供其調(diào)用。所有UI自動(dòng)化元素組成以桌面(Desktop)為根節(jié)點(diǎn)的樹型層次結(jié)構(gòu),樹狀結(jié)構(gòu)包含所有正在運(yùn)行的應(yīng)用程序,每一個(gè)正在運(yùn)行的應(yīng)用程序都是這個(gè)根的子節(jié)點(diǎn),其每一個(gè)可能與用戶進(jìn)行互動(dòng)的界面元素都是一系列層次化的自動(dòng)化元素 (AutomationElement)。樹型層次結(jié)構(gòu)通過原始視圖(Raw View) 的形式展現(xiàn)給客戶端,客戶端可以通過過濾自動(dòng)化元素樹的原始視圖 (Raw View) ,得到控制項(xiàng)視圖 (Control View) 和內(nèi)容項(xiàng)視圖 (Content View) 。 NET3.0提供UI 探測程序UISpy.exe供開發(fā)人員調(diào)用以察看UI自動(dòng)化元素視圖。
自動(dòng)化元素 ( AutomationElement)對象包括UI元素在界面上所呈現(xiàn)的兩類共有屬性。一個(gè)是控制類型屬性(Control Type),控制類型屬性定義界面元素的基本表現(xiàn)形式和功能,并以此作為單一的識別實(shí)體。比如,按鈕Button類型或者多選框Check Box類型。一個(gè)是控制模式(Control Patterns),控制模式提供一個(gè)統(tǒng)一的方法來構(gòu)建和表達(dá)控制類型所擁有的功能。比如,可以對擁有被調(diào)用功能的控制類型比如按鈕Button類型使用調(diào)用模式,對編輯類控制類型使用文本模式等??刂颇J酵ㄟ^公開方法調(diào)用使客戶端得到界面元素進(jìn)一步的詳細(xì)信息并提供輸入。微軟鑒別出18種控制模式,通過這18種控制模式可以展現(xiàn)出任何類UI元素及其任意組合所能實(shí)現(xiàn)的所有事情。