Windows平台自動化測試載入器基於的一些技術簡介(筆記)

來源:互聯網
上載者:User

GUI: 使用者圖形介面。

 

1. Windows API

FindWindow, EnumWindows可用於尋找到視窗控制代碼。

GetWindowText, GetWindowRect, GetWindowLong可用於擷取視窗屬性。

SetWindowText, GetWindowText可用於操作控制項上顯示的文字。

SetForegroundWindow用於設定頂層視窗。

GetForegroundWindow用於擷取當前的頂層視窗。

GetActiveWindow

SetActiveWindow

...

優點:對標準Windows的控制項支援還不錯,較底層。

缺點:底層意味著複雜,需要多層的封裝,開發效率低下,對Windows API的完全依賴。對非標準(自訂)控制項,較難實現自動化,就算實現了代碼不穩定,維護和分析結果的成本也很高。

 

2. MSAA——Microsoft Active Accessibility

IAccessible,本身是一個Com組件,最主要的是其介面提供的方法可以擷取控制項更詳細的資訊,也可以通過一些方法對控制項進行簡單的操作。

優點:使用者只需跟IAccessible打交道,通過這個介面能獲得的控制項資訊相對豐富,基本操作也不需要通過Windows Message的方式來實現。另外一個較大優點是自訂控制項的支援。開發自訂控制項時可以實現IAccessible的介面,並且通過這個介面,把一些屬性的操作暴露出來,測試人員就可以將這個控制項當做標準控制項,並用MSAA來自動化。

缺點:並非為自動化測試設計,擷取到的控制項資訊比Windows API多,但仍對自動化測試不夠,僅支援一個基本操作,其它的仍需Windows Message。

 

3. UIAutomation

從架構上說UIA針對標準控制項時通過UI Automation Proxy調用了MSAA Server,基本覆蓋了MSAA功能。

UI Spy是UIA的一個小工具。

與MSAA比較:

1)Tree.broken Exception,維護成本提高

2)只能用.Net語言來寫,運行在.Net託管堆中->效能差異

3)MSAA支援進程內操作

      UIA未定義支援,使用可能有效能問題

4)自訂控制項支援好

 

4. Window Automation API 3.0

是對UIA和MSAA的升級。

Windows 7對自動化測試的支援將會更好。可用Managed Code和Unmanaged Code,基本解決上面UIA的問題。

Managed Code(Managed 程式碼) vs Unmanaged Code(Unmanaged 程式碼):

在公用語言運行庫環境的外部,由作業系統直接執行的代碼稱為Unmanaged 程式碼,它必須提供自己的記憶體回收、類型檢查、安全支援等服務,它與Managed 程式碼不同,後者從公用語言運行庫中獲得這些服務,而Unmanaged 程式碼是在運行庫之外啟動並執行代碼。例如Com組件、Active X介面、和Win32 API這些都是Unmanaged 程式碼的樣本。

 

自動化測試的實質是為了快速、高效地發現和預防迴歸缺陷,並非發現新缺陷(Test Monkey除外)。旨在解決成本問題。

 

UIAutomation無法產生滑鼠、鍵盤事件->可用Win API

 

UI Spy使用:

焦點跟蹤、懸停,注意run as Admin,可獲得以下內容:

1)UI項和UI自動化屬性值

2)控制項模式實現

3)UI自動化事件資訊

4)導航和鍵盤焦點

 

注意IE 8以上版本IE開啟會有兩個進程,大的為主進程,用於正在瀏覽的網頁,小的是輔助進程,用於網頁錯誤時恢複並reopen。

 

從UI 測試自動化的角度來看,意味著所測試的應用程式被稱為伺服器,測試載入器被視為用戶端。

UIAutomationClient.dll庫實際上就是UI自動化用戶端使用的測試自動化庫。

UIAutomationTypes.dll庫包含UIAutomationClient.dll和其它Automation 伺服程式庫使用的各種類型的定義。

UIAutomationClientSideProvider.dll包含一組與構建時不支援自動化的控制項配件配合使用的代碼,這些控制項可能包括舊式控制項和自訂的.NET控制項。

UIAutomationProvider.dll庫是一組介面定義,可供建立自訂UI控制項和希望控制項被UI自動化庫訪問的開發人員使用。

 

TreeScope是個枚舉類型:

Element, Children, Descendants, Parent, Ancestors, Subtree(包含搜尋的根和全部子代)

 

System.Windows.Automation.AndCondition代表一個與條件

System.Windows.Automation.NotCondition

System.Windows.Automation.OrCondition

System.Windows.Automation.PropertyCondition測試屬性是否具有指定的值

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.