Windows平臺自動化測試工具基於的一些技術簡介(筆記)
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(託管程式碼) vs Unmanaged Code(非託管程式碼):
在公共語言執行庫環境的外部,由作業系統直接執行的程式碼稱為非託管程式碼,它必須提供自己的垃圾回收、型別檢查、安全支援等服務,它與託管程式碼不同,後者從公共語言執行庫中獲得這些服務,而非託管程式碼是在執行庫之外執行的程式碼。例如Com元件、Active X介面、和Win32 API這些都是非託管程式碼的示例。
自動化測試的實質是為了快速、高效地發現和預防迴歸缺陷,並非發現新缺陷(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和其它自動化伺服器庫使用的各種型別的定義。
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測試屬性是否具有指定的值
相關文章
- [opendx] 基於 appium 的移動端 UI 自動化測試平臺-介紹篇APPUI
- 關於UI自動化技術及測試的一些看法UI
- 自動化測試平臺
- 基於LINUX平臺的自動化測試的研究與應用
- 基於 HttpRunner 的介面自動化測試平臺宣講 (已落地)HTTP
- 基於GUI的自動化軟體測試工具GUI
- 基於 RF 的 WEB 版自動管理測試平臺Web
- UI 自動化測試平臺UI
- Django 介面自動化測試平臺Django
- API自動化測試平臺,高效實現對API的自動化測試API
- 基於 Django 的 Dubbo 介面測試工具平臺Django
- 自動化測試工具Cucumber的簡單介紹,入門篇!
- API自動化測試平臺,支援場景化的API測試API
- 基於 HttpRunner + Django + Vue + Element UI 的介面自動化測試平臺,生產可用HTTPDjangoVueUI
- 基於 Htte 的 API 自動化測試API
- 基於Dubbo的http自動測試工具分享HTTP
- 基於LangChain手工測試用例轉Web自動化測試生成工具LangChainWeb
- 基於LangChain手工測試用例轉介面自動化測試生成工具LangChain
- 基於LangChain手工測試用例轉App自動化測試生成工具LangChainAPP
- Windows桌面自動化測試工具:WinAppDriverWindowsAPP
- 基於PhantomFlow的自動化UI測試UI
- swift - 基於TCL的自動化測試框架Swift框架
- 面向開發的測試技術(三):Web自動化測試Web
- 手把手教你基於 JMeter 開發一個自動化測試平臺 (1)JMeter
- 手把手教你基於 JMeter 開發一個自動化測試平臺 (2)JMeter
- 無人值守自動化效能測試平臺
- 測者的測試技術手冊:自動的自動化EvoSuite 自動生成JUnit的測試用例UI
- 自動化功能測試平臺TestComplete的分散式測試教程(三)分散式
- 自動化功能測試平臺TestComplete的分散式測試教程(二)分散式
- 如何構建有效的自動化測試筆記筆記
- 基於postman的api自動化測試實踐PostmanAPI
- 跨平臺開發技術簡介!
- Robot Framework自動化測試框架核心指南-如何做好自動化測試平臺框架的設計Framework框架
- Linux下搭建介面自動化測試平臺Linux
- iOS平臺如何進行app自動化測試?iOSAPP
- 國產自動化測試工具
- 自動化測試工具QTPQT
- 軟體測試筆記——11.自動化測試和手動測試的選擇筆記