• <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 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 241次 | 進入軟件測試論壇討論

    領測軟件測試網

      4. 測試程序拿到IAccessible接口,開始調用IAccessible接口函數操作測試目標。

      IAccessible接口里面的幾個關鍵函數是:

      IAccessible::get_accChild/ IAccessible::get_accParent通過這兩個函數,調用者可以瀏覽目標程序的窗口關系樹,定位到UI元素。

      IAccessible::accLocation/I Accessible::accHitTest讀取和分辨目標元素的屏幕位置。

      IAccessible::accName/ I Accessible:: accSelect讀取元素的名字,對UI元素進行指定的操作,比如選取Listbox里面的某一項等等。

      IAccessible::accValue 開發人員可以自定義value屬性的實現。比如針對折線圖控件,開發人員可以在accValue中返回折線的坐標數列。

      MSAA的理念類似于test hook。 通過主動讓UI程序暴露一個接口來讓調用者控制。在具體使用中,測試人員往往是結合MSAA和Win32 API操作,取長補短。一方面對于UI元素豐富的屬性,比如style,鉤選狀態,是否最大化和模擬用戶輸入等,繼續采用Win32 API。另一方面用MSAA的優勢來彌補Win32 API的一些不足,比如:

      由于MSAA有自己的get_accChild方法,使其控件樹關系并不一定要和Win32 HWNDd關系對應一致。對于自繪窗口,雖然說只有一個HWND,但是開發人員可以通過實現IAccessible接口來實現邏輯上的層次關系。比如Excel中就可以通過IAccessible把多個cell的子IAccessible接口暴露給調用者。

      IAccessible的實現是由開發者提供,開發者可以靈活地根據實際情況決定方法的實現。比如前面提到了折線圖控件可以返回坐標數列。對于.NET WinForm, 微軟在Framework中就提供了IAccessible的默認實現,這樣在具體實現中,就可以處理.NET動態維護HWND的細節等等。

      針對MSAA的工具也有很多,比如AccExplorer(圖二)可以像Spy++一樣對指定程序進行控件的樹形瀏覽,檢查MSAA屬性等。

      圖二: AccExplorer

      如果您是開發人員, 對于unmanaged UI程序的MSAA實現,參考MSDN中關于WM_GETOBJECT的說明返回IAccessible interface就可以了。對于managed程序, 實現方法更簡單, 現成的例子可以參考:

      Control..::.ControlAccessibleObject Class

      How to create accessible controls by using Visual Basic .NET or Visual Basic 2005

      對于測試程序如何直接獲取并使用IAccessible接口,并非本系列重點,所以并不提供更多介紹。在后面的文章中, 會介紹如何隱含使用IAccessible和MSAA。

      MSAA也有自身的缺點:

      1. 雖然說MSAA基于COM技術, 但IAccessible并不是一個COM標準接口。 比如使用者不需要調用CoInitialize即可使用,也無法通過QueryInterface進一步獲取更多的自定義接口。這局限了MSAA所能提供的功能。

      2. IAccessible接口的定義有缺陷。里面不少方法是可有可無的,但是又缺少一些支持UI自動化的關鍵方法。 比如它提供了accSelect支持控件的選取,但是卻沒有類似accExpand這樣的方法支持樹狀控件的展開等。

      關于MSAA和UI自動化的更多淵源,MSAA設計理念,現狀和缺陷,可以參考微軟早期的一篇名為What is UI Automation的文章。

      UIAutomation和WPF

      UIAutomation是微軟從Windows Vista開始推出的一套全新UI自動化測試技術, 簡稱UIA。在最新的Windows SDK中,UIA和MSAA等其它支持UI自動化技術的組件放在一起發布,叫做Windows Automation API。

      和前面的介紹相比,我傾向于認為UIA是一項自動化測試“技術”,而MSAA和Win32 API只是實現自動化測試的兩種“方法”。這里區分“技術”和 “方法”的原因是, 一項“技術”往往有獨立的模型,體貼的開發接口,用來專門解決某一類的問題,同時允許不同的實現細節。UIA可以被看作“技術”,是因為:

      UIA定義了全新的、針對UI自動化的接口和模式。 分別是支持對UI元素進行遍歷和條件化查詢的TreeWalker/FindAll。定義了讀寫UI元素屬性的UIA Property, 包括Name、 ID、Type、ClassName、Location、 Visibility等等。定義了UI元素行為的UIA Pattern, 比如Select、Expand、Resize、 Check、Value等等。 還引入了UIA Event接口,可以讓測試程序在某些事件發生后得到通知,比如新窗口打開事件等。

      以往的Win32和MSAA 設計出發點并不是為解決UI自動化。Win32旨在提供的通用開發接口, MSAA旨在提供程序的多種訪問方式。相反,UIA的設計目的,以及新引入的模式和接口都完全是針對UI自動化測試的。

      在后面的文章中我們會詳細分析UIA的內部實現?梢钥吹,UIA這一套接口和模式,可以在不同平臺,不同開發工具中實現和使用。其內部實現方式也因地制宜, 前后的兼容性都照顧得很好。 同時,UIA提供了托管的和非托管兩種API,這些都是Win32和MSAA無法比擬的。

    延伸閱讀

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

    42/4<1234>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>