• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    微軟UI軟件測試自動化技術的演進

    發布: 2011-1-12 11:33 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 250次 | 進入軟件測試論壇討論

    領測軟件測試網

      Windows平臺的桌面開發技術, 從最原始的Win32 SDK,發展到.NET WinForm,一直到今天的WPF和Silverlight, 發生了翻天覆地的變化,相對應的UI自動化測試技術,也隨之演變。

      微軟UI自動化技術揭秘將分兩個部分介紹Windows平臺桌面程序的自動化技術。將介紹從Win32 SDK至今的UI自動化技術演變和最新的UI Automation(UIA)的內部實現和使用技巧。

      自動測試是指用一個程序自動地控制另外一個程序,模擬用戶的操作進行測試。通常自動化測試涉及到下面三個步驟:

      測試源偵測

      測試源偵測是定位測試目標元素的過程。比如要測試Windows附件中的計算器,首先要把計算器窗口和其他程序比如寫字板區分開。進一步測試計算器窗口菜單的時候,需要首先定位菜單條的位置,獲取第二層子菜單等等。簡單地說,自動化測試首先要能夠獲取從桌面開始的整個UI樹結構,定位到特定測試目標。

      用戶行為模擬

      用戶行為模擬指模擬用戶的輸入,比如鼠標、鍵盤和觸摸筆的操作,中間可能會涉及IME輸入法、組合鍵、特定用戶習慣,比如輸入速度的模擬等。

      測試目標檢查

      指獲取測試元素的屬性,比如讀取窗口標題, Listbox的子元素, Checkbox的狀態等等,以便進行測試檢查。

      Win32 SDK和Windows Message

      在.NET問世以前,Windows平臺上的UI程序無外乎兩種技術:Win32 Windows SDK 或者DirectX。由于DirectX多用于專業領域如游戲和CAD,本文并不討論。

      無論是MFC,VCL還是VB6,Win32 SDK都是其根本,最終打交道的其實都是HWND和Windows Message。實現上述自動化的三個步驟 無外乎三件法寶,Win32 API,Windows Message和Windows Hook。

      測試程序首先通過 FindWindowEx和EnumWindow遍歷窗口和子窗口,找到測試元素比如某個按鈕,然后可以通過Windows Message或者API檢查測試目標。比如通過WM_GETTEXT或者GetWindowText讀取窗口標題,通過GetWindowRect讀取按鈕坐標位置等等。對于用戶行為模擬,可以直接通過SendKey API來完成,當然也可以發送WM_CHAR或者WM_KEYDOWN通知等等。

      除此以外,Windows Hook更加豐富了技術的選取。通過Windows Hook,測試人員還可以直接監控、 截取、模擬目標程序的Windows消息,實現更靈活的模擬,檢查甚至錄制的功能。

      Windows Spy++(圖一)雖然不是測試工具,也算是使用這套技術的典型例子。通過Windows Spy++可以定位任意窗口, 讀取窗口屬性,監視窗口消息等等。

      圖一: Microsoft Spy++

      采用Win32 SDK和Windows Message的優點是直接,靈活。由于直接使用Win32 API,沒有額外的學習曲線,遇上問題可以直接參考Win32 SDK解決。使用Message Hook使得測試程序可以靈活實現,直接對Window Message的操作不僅可以把很多情況化繁為簡,還方便test hook的實現。(所謂test hook,是指產品中為了方便測試而專門設計的隱藏功能,該功能對普通用戶不可見,只是為了方便測試。)

      缺點包括以下三個方面:

      使用復雜,實現成本高。Win32 AP的使用上有很多需要特別注意的細節, 比如有的Win32 API不能跨進程工作,有的Windows Message只能發給當前線程所創建的窗口,稍有不慎,就導致測試程序不穩定。

      過于底層,不便使用。為了方便測試用例調用,需要對API進行封裝,增加了實現成本。同時 Win32 API的也使得很多VB程序員不便調用。再者, 不同的開發工具,比如MFC, VCL,以及后來的.NET Framework,在內部實現上對Win32 API有很多細節的處理, 要實現出針對各種情況都通用的測試框架,并非易事。比如, .NET 中的WinForm Control對Win32 HWND的維護是動態的,同一個WinForm Control的HWND在程序的生命周期內是可能發生改變的,這一點對于依賴HWND作為唯一標識的Win32 API就是一個致命傷。

      無法操作自繪窗口。比如打開Excel的工作表,會發現表格中的每一個Cell并沒有對應到HWND上。Excel的cell都是通過代碼繪制,而不是依賴于現成的Win32 Control。這就使得Win32 API對于自繪窗口沒有用武之地。

      MSAA

      MSAA的全稱是Microsoft Active Accessibility。這是類似DCOM技術。技術模型是這樣的,UI程序可以暴露出一個Interface,方便另一個程序對其進行控制。MSAA技術的初衷是為了方便殘疾人使用Windows 程序。比如盲人看不到窗口,但是盲人可以通過一個USB讀屏器連接到電腦上, 讀屏器通過UI程序暴露出來的這個Interface,就可以獲取程序信息,通過盲文或者其它形式傳遞給盲人。

      MSAA提供了如此方便的功能, UI自動化測試自然可以借用這項技術。MSAA暴露出來的Interface叫做IAccessible。測試程序和目標UI程序互操作流程如下:

      1. 測試程序調用Windows API: AccessibleObjectFromWindow,傳入目標UI程序HWND。

      2. AccessibleObjectFromWindow函數向UI程序發送WM_GETOBJECT消息。

      3. UI程序創建實現了IAccessible的內部類,然后通過LresultFromObject API把IAccessible 接口返回給測試程序。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 微軟

    41/41234>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>