針對UI的自動化技術一般要支持下列的東西:
1. 識別窗口
能夠識別盡量多的窗口種類,支持盡量多的UI技術。比如Win32、WinForm、WPF以及WebPage(這個比較特殊,確切的說不能叫控件)的控件類型
2. 操作窗口
對標准類型的控件方法的支持,比如按下按鈕,在Listview中選擇Item等
3. 驗證結果
實質就是能夠拿到控件的狀態以及控件相關的信息
4. 錯誤恢復
這個其實屬於自動化測試框架的問題,能從錯誤的狀態恢復,並繼續執行。當然寫Testcaes的時候,也要保證Testcase的獨立性
5. 同步
同步在UI的自動化測試中最復雜的部分了,這個地方的工作決定了自動化腳本能否穩定的運行在在各種不同平台,不同配置的測試機上
雖然測試工具有很多,比如WinRunner、QuickTest等,我比較熟悉的只是Silktest,所以我說的很多東西都會跟Silktest來比較
我們拋開各種各樣的工具本身,來看UI自動化的本質,它所用到的技術無非是下面三種:
1. Windows API
相關的API,FindWindow, EnumWindow,GetWindowRect, GetWindowText, SendMessage等
2. MSAA
MSAA是微軟針對視力有障礙的人所提供的一個基於COM的API接口,開發人員可以利用這個技術來開發類似屏幕放大,屏幕閱讀,以及語音控制等。現在很多自動化的工具除了利用window api以外,大部分也支持MSAA技術
相關Link:
http://msdn2.microsoft.com/en-us/library/ms971350.aspx
http://en.wikipedia.org/wiki/Microsoft_Active_Accessibility
3. UIAutomation
測試在各個軟件公司中的地位日趨上升,而且微軟自己在對測試的重視程度以及利用自動化測試方面也一直走在各個公司前面。隨着WPF技術的發布,以往的Window API以及MSAA技術,對WPF控件的操作能力急劇下降,甚至無法操作WPF控件,而微軟也為了增加對自動化測試的支持,發布了MSAA的升級版,並針對自動化測試進行了重新的設計,集成在.Net Framework3.0中發布,這個升級版就是UIAutomation的類庫。
相關鏈接:
http://en.wikipedia.org/wiki/Microsoft_UI_Automation
http://msdn2.microsoft.com/en-us/library/ms747327.aspx