專利名稱:用戶界面分析管理的制作方法
用戶界面分析管理背景可以使用測試自動化軟件來對諸如應用程序和網頁之類的其他軟件執(zhí)行測試。測試自動化軟件也可以促進學習測試結果,并提升其他測試控制和測試報告目標。測試自動化可以至少在理論上幫助自動化已經可用的手動進程,但是,在實踐中,手動測試常常是勞動密集的并相當耗時。自動化測試有時可以比手動測試更有效地執(zhí)行,從而可以執(zhí)行更加詳盡的測試。測試自動化的一種方法包括代碼驅動的測試,其中,利用各種輸入自變量對到類、 模塊、庫,及其他軟件組件的接口進行測試,以檢測錯誤。測試自動化的另一種方法包括圖形用戶界面(GUI)測試。測試框架生成實際或模擬的GUI輸入,如鍵擊、鼠標點擊及其他事件,并觀察用戶界面中所產生的變化以檢測錯誤。某些自動化工具允許測試者交互地記錄用戶動作,并重播它們以將實際結果與預期結果進行比較。某些工具構建正在被測試的應用程序的模型,并允許測試者通過編輯參數(shù)和條件來創(chuàng)建測試例。測試工具可以幫助自動化諸如產品安裝、測試數(shù)據(jù)創(chuàng)建以及缺陷記錄之類的任務,不必完全自動化所有測試。概述某些自動化方法快速地將輸入流傳輸?shù)疆a品,以便盡可能快地測試該產品的功能。通過快速地驅動產品的用戶界面(UI),可使用戶界面的更多方面在給定時間內在更多測試序列中被鍛煉。然而,這些測試自動化一般不能有效地適用于諸如UI屏幕捕捉收集之類的、在多個輸入之間需要比自動化所允許的時間更多時間的操作。此處所描述的一些實施例通過利用適當?shù)耐ㄐ艍|片(shim),促進用戶界面分析。 可以利用彼此進行通信的墊片改進(retrofit)現(xiàn)有的本機代碼或其他二進制代碼,以便以使得屏幕捕捉及其他分析操作有足夠的時間完成但不妨礙自動化測試的方式管理用戶界面分析。在某些實施例中,被注入到目標進程中的自動化目標墊片檢測目標進程的用戶界面中的活動,并設置目標-繁忙標志、比特或其他狀態(tài)指示符。被注入到源進程中的自動化源墊片檢測源進程嘗試向目標進程發(fā)送輸入,即,驅動自動化測試的輸入。自動化源墊片判斷已經設置了目標-繁忙狀態(tài)(例如,通過進行遠程過程調用),并阻止源進程向目標進程發(fā)送輸入,直到目標-繁忙狀態(tài)被清除。自動化目標墊片將在某個點確認目標進程的屏幕捕捉或其他用戶界面分析操作已經完成,然后將清除目標-繁忙狀態(tài)。在某些配置中可以存在多個源墊片和/或多個目標墊片??梢宰⑷雴蝹€自動化墊片組件的副本,然后對其分別定制以用作源墊片或作為目標墊片??梢詫踩赃M程,操作系統(tǒng)進程等等列入黑名單,以防止自動化墊片的注入或防止被注入的自動化墊片被激活??梢杂勺詣踊繕藟|片調用用戶界面分析操作??梢灾С指鞣N用戶界面分析操作,如用戶界面屏幕捕捉操作、用戶界面可訪問性測試操作、本地化能力測試操作、或數(shù)據(jù)收集以及可能的細查是否符合設計準則。在某些實施例中,可以在目標進程正在運行時以 “熱”方式加載和/或卸載用戶界面分析模塊。用戶界面分析模塊可以,例如,通過注冊表條目和/或通過讓自動化源墊片向自動化目標墊片發(fā)送自動化驅動程序標識,來標識其本
4身。所給出的示例只是說明性的。本概述并不旨在標識出所要求保護的主題的關鍵特征或必要特征,也不旨在用于限定所要求保護的主題的范圍。相反地,提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的一些概念。利用權利要求書定義本發(fā)明,在本概述與權利要求書有沖突的情況下,應該以權利要求書為準。附圖描述將參考附圖,給出更具體的描述。這些附圖只示出了選定的方面,如此,不完全確
定覆蓋范圍。
圖1是示出了具有至少一個處理器、至少一個存儲器、用于自動地驅動一個或多個應用程序或其他進程的至少一個自動化驅動程序進程、及可以存在于多個網絡節(jié)點上的操作環(huán)境中的其他項的計算機系統(tǒng),還示出了已配置的存儲介質實施例的框圖;圖2是示出了用于基于墊片通信的界面分析管理,S卩,使用源墊片和目標墊片之間的某些通信的管理界面分析的方法的示例體系結構的框圖;圖3是示出了一些進程的步驟和已配置的存儲介質實施例的流程圖;圖4是示出了缺乏基于墊片通信的界面分析管理的自動化的數(shù)據(jù)流程圖;圖5是一般性地示出了帶有基于墊片通信的界面分析管理的自動化的數(shù)據(jù)流程圖;圖6是示出了體系結構中的帶有基于墊片通信的界面分析管理的自動化的數(shù)據(jù)流程圖,其中包括由至少一個工作者線程處理的分析操作的隊列;以及圖7是示出了適合用于如圖6所示的體系結構中的工作者線程的數(shù)據(jù)流程圖。詳細描述概覽對于國際軟件產品的質量控制常常包括檢測本地化的屏幕捕捉(UI捕捉)以驗證本地化版本的質量。確保高質量可以涉及盡可能多地檢測在該版本的執(zhí)行過程中呈現(xiàn)的本地化產品用戶界面(UI)。收集產品的大量的可能的UI捕捉常常涉及創(chuàng)建和維護自動化軟件。然而,國際試驗組可能只是產品測試公司中相對較小的部分,因此,可能缺乏創(chuàng)建或維護足夠的自動化來收集所有所希望的UI捕捉的資源。很難利用現(xiàn)有的產品自動化來自動地收集UI捕捉?,F(xiàn)有的自動化常常被創(chuàng)建為盡可能快地測試產品功能??焖俚販y試可能與UI捕捉收集有沖突,因為每一 UI屏幕只顯示零點幾秒,這比許多當前UI捕捉機制所使用的時間短得多。一個響應涉及在執(zhí)行自動化時在目標機器上運行應用程序或服務。這些應用程序將在自動化有機會關閉/推進目標的狀態(tài)之前嘗試在UI出現(xiàn)在屏幕上時捕捉UI。然而,這樣的應用程序或服務可能不能(并可能甚至不嘗試)修改或減慢自動化進程,因此,要么錯過許多目標UI,要么在自動化進程中產生有害的行為。通過使用此處所描述的一些實施例,通過在自動化和目標UI進程兩者中使用互補墊片,而在自動化執(zhí)行過程中收集UI捕捉。自動化墊片使可能向目標UI進程發(fā)送輸入的所有功能的執(zhí)行繞道,而目標UI墊片使導致UI被顯示或更改的所有功能的執(zhí)行繞道。互補墊片相互進行通信,允許當目標UI進程墊片正在收集新的UI捕捉時阻塞自動化執(zhí)行。具體而言,一些實施例通過加墊片以及互補墊片之間的通信,來管理第三方自動化和目標UI進程之間的通信。這樣的實施例對于測試上下文及其他自動化上下文具有各種潛在的探測用途?,F(xiàn)在將參考諸如附圖中所示出的那些示例性實施例,并使用特定語言來對其進行描述。但是,精通相關技術的人員所能想到的對此處所示出的本發(fā)明的特點的更改和進一步的修改,如此處所示出的本發(fā)明的原理的其他的應用,都應該被視為在帶有權利要求的本發(fā)明的范圍內。在本發(fā)明中闡明了術語的含義,如此,應該仔細閱讀權利要求書。給出了具體示例,但是,那些精通相關技術的普通人員將可以理解,其他示例也可以落在所使用的術語的含義范圍內,并在一個或多個權利要求的范圍內。術語不一定具有與它們在一般用途中,在特定行業(yè)的用途,或在特定詞典或詞典集中擁有的相同含義。參考編號可以與各種措詞一起使用,以幫助顯示術語的廣度。從給定文本片段中省略參考編號不一定意味著沒有通過文本討論附圖的內容。發(fā)明人聲明并行使他們對他們自己的詞典的權限。這里在詳細描述中和/或在申請文件的別處顯式地或隱式地定義了術語。如此處所使用的,“計算機系統(tǒng)”可包括,例如,一個或多個服務器、主板、處理節(jié)點、個人計算機(無論是否是便攜式的)、個人數(shù)字助理、蜂窩或移動電話,和/或至少部分地通過指令提供一個或多個處理器控制的設備。指令可以是存儲器和/或專門電路中的軟件的形式。具體而言,雖然許多實施例在工作站或膝上型計算機上運行,但是,其他實施例也可以在其他計算設備上運行,任何一個或多個這樣的設備都可以是給定實施例的一部分?!岸嗑€程”計算機系統(tǒng)是支持多執(zhí)行線程的計算機系統(tǒng)。術語“線程”應該被理解為包括能夠或接受同步的任何代碼,還可被稱為另一名稱,如“任務”、“進程”或“協(xié)同例程”。 線程可以并行地,按順序,或以并行執(zhí)行(例如,多處理)和按順序執(zhí)行(例如,時間分片) 的組合運行。多線程環(huán)境是以各種配置設計的。執(zhí)行線程可以并行地運行,或者線程可以被組織為并行執(zhí)行,但是實際輪流按順序執(zhí)行。例如,通過在多處理環(huán)境中的不同的核上運行不同的線程,通過時間分片單一處理器核上的不同的線程,或者通過時間分片和多處理器線程的某種組合,來實現(xiàn)多線程??梢裕?,通過內核的線程調度器,通過用戶空間信號, 或通過用戶空間和內核操作的組合,啟動線程上下文開關。線程可以輪流對共享數(shù)據(jù)進行操作,或者,例如,每一線程都可以對其自己的數(shù)據(jù)進行操作。“邏輯處理器”或“處理器”是單一獨立硬件線程處理單元。例如,每個核運行兩個線程的超線程四核芯片具有八個邏輯處理器。處理器可以是通用的,或者針對特定用途,如圖形處理、信號處理、浮點算術處理、加密、I/O處理等等,對它們進行定制。“多處理器”計算機系統(tǒng)是具有多個邏輯處理器的計算機系統(tǒng)。多處理器環(huán)境存在各種配置。在給定配置中,所有處理器都在功能上是相等的,而在另一配置中,由于具有不同的硬件能力、不同的軟件任務,或者兩者,某些處理器可能不同于其他處理器。取決于配置,處理器可以在單一總線上彼此緊密耦合,或者它們可以是松散耦合的。在某些配置中, 處理器共享中央存儲器,在某些配置中,它們每一個都具有它們自己的本地存儲器,而在某些配置中,存在共享的和本地存儲器兩種。“內核”包括操作系統(tǒng)、系統(tǒng)管理程序、虛擬機,以及類似的硬件接口軟件?!按a”表示處理器指令,數(shù)據(jù)(包括常數(shù)、變量,以及數(shù)據(jù)結構),或者指令和數(shù)據(jù)兩者?!白詣拥亍北硎就ㄟ^使用自動化(例如,通過軟件為此處所討論的特定操作而配置的通用計算硬件),而不是沒有自動化。具體而言,“自動地”執(zhí)行的步驟不是手動在紙上執(zhí)行的或在人的心里執(zhí)行的;它們是利用機器執(zhí)行的。在示例中使用了用于測試的自動化,但是,其他自動化上下文也適合用于實施例。在整個本文檔中,可選的復數(shù)的使用表示存在所指出的特征中的一個或多個。例如,“墊片”表示“一個或多個墊片”或等效地,“至少一個墊片”。在整個本文檔中,除非明確地聲明,任何對進程中的步驟的引用都假設,步驟可以由感興趣的一方直接執(zhí)行和/或由該方通過中間機制和/或中間實體間接地執(zhí)行,仍屬于該步驟的范圍內。即,由感興趣的一方直接執(zhí)行該步驟不是必需的,除非直接執(zhí)行是明確地聲明的必要條件。例如,涉及由感興趣的一方執(zhí)行的動作的步驟,如“傳輸?shù)健薄ⅰ鞍l(fā)送到”、或 “將傳送到”目的地,可能涉及居間動作,如某個另一方執(zhí)行的轉發(fā)、復制、上傳、下載、編碼、 解碼、壓縮、解壓縮、加密、解密等等,仍被理解為直接由所感興趣的一方直接執(zhí)行。每當引用數(shù)據(jù)或指令時,應該理解,這些項配置計算機可讀取的存儲器,從而將它轉換為特定制品,而不是簡單地例如存在于紙上,在人的腦子里,或作為線路上的瞬時的信號。操作環(huán)境參考圖1,用于一個實施例的操作環(huán)境100可包括計算機系統(tǒng)102。計算機系統(tǒng) 102可以是多處理器計算機系統(tǒng),或者,也可以不是。操作環(huán)境在給定計算機系統(tǒng)中可包括一個或多個機器,它們可以是集群化的,以客戶端-服務器方式聯(lián)網的,和/或以對等方式聯(lián)網的。人類用戶104可以通過使用顯示器、鍵盤,及其他外圍設備106,與計算機系統(tǒng)102 進行交互。系統(tǒng)管理員、開發(fā)人員、工程師以及最終用戶都是特定類型的用戶104。代表一個或多個人操作的自動化代理也可以是用戶104。在某些實施例中,存儲設備和/或聯(lián)網設備可以被視為外圍設備。圖1中未示出的其他計算機系統(tǒng)可以與計算機系統(tǒng)102進行交互,或者,例如,通過網絡接口設備,使用到網絡108的一個或多個連接,與另一系統(tǒng)實施例進行交互。計算機系統(tǒng)102包括至少一個邏輯處理器110。計算機系統(tǒng)102,與其他合適的系統(tǒng)一樣,還包括一個或多個計算機可讀取的非瞬時的存儲介質112。介質112可以是不同的物理類型。介質112可以是易失性存儲器、非易失性存儲器、被安裝就位的介質、可移動介質、磁介質、光介質,和/或其他類型的非瞬時的介質(而不是諸如只傳播信號的線路之類的瞬時的介質)。具體而言,當被插入或以其他方式安裝,使其內容可被訪問供處理器110 使用時,諸如⑶、DVD、記憶棒、或其他可移動非易失性存儲器介質之類的配置的介質114可以在功能上變?yōu)橛嬎銠C系統(tǒng)的一部分??梢苿优渲玫慕橘|114是計算機可讀取的存儲介質 112的示例。計算機可讀取的存儲介質112的某些其他示例包括內嵌的RAM、ROM、硬盤,及其他不能被用戶104輕松地移走的存儲設備。介質114被配置有可由處理器110執(zhí)行的指令116 ;“可執(zhí)行程序”此處按廣義使用,以包括例如機器代碼、可解釋的代碼以及在虛擬機上運行的代碼。介質114還被配置有被創(chuàng)建、修改、引用和/或以別的方式供指令116的執(zhí)行所使用的數(shù)據(jù)118。指令116和數(shù)據(jù)118配置它們所在的介質114 ;當該存儲器是給定計算機系統(tǒng)的功能部件時,指令116和數(shù)據(jù)118還配置該計算機系統(tǒng)。在某些實施例中,數(shù)據(jù)118的一部分是諸如產品特征、庫存、 物理測量值、設置、圖像、讀數(shù)、目標、卷等等之類的現(xiàn)實的世界的項的代表。也可以如此處所討論的,例如,通過定制、配置、注入、綁定、部署、執(zhí)行、修改、顯示、創(chuàng)建、加載和/或其他操作,來轉換這樣的數(shù)據(jù)。諸如測試工具中的軟件進程之類的自動化驅動程序進程120,應用程序及其他自動化驅動的進程122,以及由驅動程序進程120所生成的用于鍛煉被驅動的進程122的輸入 124、附圖中所示出的其他軟件及其他項可以部分地或完全地駐留在一個或多個介質112 內,從而配置那些介質。具體而言,被驅動的進程122可以控制或以其他方式有效地包括用戶界面126。常常存在內核128以向進程120、122提供諸如硬件資源管理之類的服務。也可以存在安全性130進程,例如,防病毒代碼、防火墻代碼等等。進程120,122與許多其他軟件片段一樣,可以使用配置介質112的本機和/或其他二進制代碼132來實現(xiàn)。除已配置的介質和處理器之外,操作環(huán)境也可以包括例如諸如總線、電源,以及加速器之類的其他硬件。給定操作環(huán)境100可包括向開發(fā)人員提供協(xié)調的軟件開發(fā)工具集的集成開發(fā)環(huán)境(IDE) 134。具體而言,對于一些實施例的一些合適的操作環(huán)境包括或幫助創(chuàng)建被配置成支持程序開發(fā)的Microsoft Visual Studio 開發(fā)環(huán)境(Microsoft Corporation 的商標)。 一些合適的操作環(huán)境包括Java 環(huán)境(Sun Microsystems有限公司的商標),一些包括使用諸如C++或《1之類的語言的環(huán)境,但是,此處的教導適用于各種編程語言、編程模型和程序,以及使用自動化以鍛煉被設計供人類用戶使用的用戶界面進程的軟件開發(fā)本身的領域以外的嘗試。在圖1中以輪廓形式示出了各項以強調它們不必是所示出的操作環(huán)境的一部分, 但是,可以與操作環(huán)境中的項進行交互操作,如此處所討論的。不按照輪廓形式的項在任何附圖或任何實施例中也不一定是必需的。系統(tǒng)圖2示出了適合與一些實施例一起使用的體系結構。進程集202標識進程以及它們對于自動化所起的作用。進程集202可以是諸如列表或腳本之類的顯式的機制,或者也可以是在諸如,例如,命名約定、加載順序,或存儲器中的或特定處理器或網絡節(jié)點上的特定位置之類的機制中隱含。例如,進程集可以將特定自動化驅動程序進程120標識為源進程204,并可以將特定自動化驅動的進程122標識為目標進程206。在某些實施例中,進程集將諸如內核1 進程或安全性130進程之類的特定進程標識為上黑名單的進程208,即, 應該既不作為源進程204也不作為目標進程206的進程。在某些實施例中,可以將自動化墊片組件210的副本插入到源進程204或目標進程206中,然后,對其進行定制,以分別變?yōu)樽詣踊磯|片212或者自動化目標墊片214。在其他實施例中,提供了單獨的墊片組件,一個用于插入到源進程204,一個用于插入到目標進程206中。可以使用諸如進程名稱、進程ID、進程特權等等之類的一個或多個上黑名單的準則216來標識上黑名單的進程208。對于當前的目的等效地,在某些實施例中,還使進程上白名單,例如,沒有明確地被標識為源進程204或目標進程206的任何進程被視為上黑名單
8的進程208。在某些實施例中,源進程204對于其他進程,特別是對于它們的目標進程206,將它們本身標識為如此。這可以涉及向目標進程發(fā)送諸如進程ID之類的自動化驅動程序標識218和進程ID標識驅動程序進程的指示。自動化驅動程序標識218也可以采取注冊220 的形式,諸如,例如,向自動化服務注冊或注冊表中的一個條目。在某些實施例中,源進程 204是自定義用戶界面分析模塊222的一部分,而標識218標識分析模塊222。在某些實施例中,用戶界面分析模塊222執(zhí)行分析操作224。墊片212、214之間的通信幫助協(xié)調來自源進程204的輸入與目標進程用戶界面126中的變化,以便可以完成分析操作224。若沒有這樣的協(xié)調,可能不能為分析操作2M提供足夠的時間來在下一輸入將用戶界面驅動為新的狀態(tài)之前完成。諸如信號量、比特、標志2 或其他狀態(tài)指示符之類的目標-繁忙狀態(tài)226,促進墊片212、214之間的通信。不同的分析操作2M可以涉及不同的方針230,例如,關于可訪問性、本地化能力或審美的或功能設計準則的方針。在某些實施例中,墊片之間的通信是使用遠程過程調用(RPC 232)來實現(xiàn)的。墊片中的一個充當RPC客戶端234,另一個充當RPC服務器236。在某些實施例中,目標墊片214是使用一個或多個工作者線程238來實現(xiàn)的。在其他實施例中,不使用線程。在某些實施例中,墊片212、214或其部分可以在它們的相應的進程204、206正在運行時可以被加載和/或從工作存儲器中卸載,從而改變它們的加載狀態(tài)對0。模塊222 或另一墊片部分的加載被視為該墊片的加載,除非另外指明,墊片部分的卸載也同樣被視為該墊片的卸載,除非另外指明。在某些實施例中,墊片只能在它們的進程正在運行時被卸載,或者只能在它們的進程正在運行時被加載。在某些實施例中,只有在其相應的進程被加載或卸載時才能加載或卸載墊片。參考圖1和2,一些實施例向計算機系統(tǒng)102提供了邏輯處理器110和通過電路、 固件和/或軟件配置以與邏輯處理器通信的存儲介質112,以通過配置它們用于如此處所描述的進程之間的通信,以轉換自動化驅動程序進程120和被驅動的進程122。在某些實施例中,駐留在存儲器中的目標進程206具有用戶界面126,而駐留在存儲器中的源進程204 可操作,以自動地生成用戶界面驅動的輸入124,以鍛煉用戶界面126。駐留在源進程中的源墊片212可操作以檢測目標-繁忙狀態(tài)226,并可操作以當分別設置/清除目標-繁忙狀態(tài)時禁止/允許將用戶界面驅動的輸入傳輸?shù)侥繕诉M程。駐留在目標進程中的目標墊片 214可操作以當涉及用戶界面的操作2M分別被待決/完成時設置/清除目標-繁忙狀態(tài) 226。一些實施例包括具有多個相應的目標墊片214以及相應的目標-繁忙狀態(tài)2 的多個目標進程206。即,一個驅動程序可以驅動多個目標。相反,在某些實施例中,特定帶墊片的目標進程206由多個帶墊片的源進程204驅動。一些實施例包括帶有可配置的用戶界面分析模塊222的多個目標進程206,允許用戶配置N個分析模塊。一些實施例包括進程上黑名單準則216,而墊片212,214被配置成避免來往于上黑名單的進程208的通信中的調解。例如,墊片可以作為內核1 進程的一部分或安全性 130進程的一部分被加載,但是,從不設置(或從不讀取)目標-繁忙狀態(tài)226,如此,在來往于上黑名單的進程208的通信中或在任何上黑名單的進程208的其他活動中從不進行調停??闪磉x地,墊片甚至可以不作為任何上黑名單的進程208的一部分來加載,如此,從不在它們的通信或其他活動中進行調停。在某些實施例中,注冊220將給定源進程204標識為是自動化驅動程序。例如,源進程可以在諸如Microsoft WindowsTM注冊表之類的注冊表中放置條目,將其本身標識為驅動程序,并有可能標識它們驅動的目標進程。在某些實施例中,遠程過程調用(RPC)機制用于墊片之間的通信。例如,在一個實施例中,目標墊片214包括遠程過程調用服務器236,而源墊片212包括遠程過程調用客戶端 234。在某些實施例中,用戶可配置的進程集202顯式地將至少一個進程122標識為目標進程206。在某些實施例中,用戶可配置的進程集202將至少一個進程120標識為源進程204??膳渲玫哪繕撕驮催M程集202可以通過配置文件(例如,注冊表)標識進程204, 206,從而允許目標墊片214和/或源墊片212的運行時判斷和應用??梢?,例如,通過進程簽名,即,諸如圖像名稱和文件路徑之類的屬性集合,或用于標識軟件進程的其他熟悉的機制,來標識進程204,206,208。在某些實施例中,諸如人類用戶I/O設備之類的外圍設備106(屏幕、鍵盤、鼠標、 平板計算機、麥克風、揚聲器、運動傳感器等等)將可操作地與一個或多個處理器110和存儲器進行通信。然而,實施例也可以深深地嵌入在系統(tǒng)中,以便沒有人類用戶104直接與實施例進行交互。軟件進程可以是用戶104。在某些實施例中,該系統(tǒng)包括通過網絡連接的多個計算機。網絡接口設備可以使用例如諸如分組交換網接口卡、無線收發(fā)器或電話網絡接口之類的組件,提供網絡接入 108,并將存在于計算機系統(tǒng)中。然而,實施例也可以通過直接存儲器訪問、可移動非易失性介質,或其他信息存儲-檢索和/或傳輸方法,進行通信,或者,計算機系統(tǒng)中的實施例可以不與其他計算機系統(tǒng)進行通信即可操作。進程圖3在流程圖300中示出了某些進程實施例。在某些實施例中,附圖所示出的進程可以,例如,通過墊片210,212和進程204,206,在腳本的控制之下自動地執(zhí)行,很少或不需要用戶輸入。除非另外指明,進程也可以部分自動地而部分手動地執(zhí)行。在給定實施例中,可以重復進程的零個或多個所示出的步驟,有可能利用不同的參數(shù)或數(shù)據(jù)來操作。實施例中的步驟也可以以與圖3中展示的從頂部到底部的順序不同的排序來執(zhí)行。步驟可以按順序地,以部分重疊的方式,或完全并行地執(zhí)行。遍歷流程圖300以指出在進程中執(zhí)行的步驟的順序可以在進程的一種執(zhí)行與進程的另一執(zhí)行之間不同。流程圖遍歷排序也可以在一個進程實施例與另一進程實施例之間不同。也可以省略、組合、重命名、重組步驟,或以其他方式偏離所示出的流程,只要所執(zhí)行的進程是可操作的,并符合至少一個權利要求。此處提供了幫助示出技術的各方面的示例,但是,在本文檔內給出的示例并未描述所有可能的實施例。實施例不僅限于此處所提供的特定實現(xiàn)、排列、顯示、特征、方法或情況。給定實施例可包括,例如,附加的或不同的特征、機制,和/或數(shù)據(jù)結構,并可以以別的方式偏離此處所提供的示例。在界面活動檢測步驟302中,實施例檢測用戶界面126中的活動。步驟302可以例如使用熟悉的機制來完成。
在輸入發(fā)送嘗試檢測步驟304中,實施例檢測源進程204向一個或多個目標進程 206發(fā)送306輸入124的嘗試。檢測步驟304可以例如使用熟悉的機制來完成。一些實施例可以看到源正在試圖發(fā)送輸入,并阻止它們,直到目標屏幕捕捉或其他分析操作完成。一些實施例看到源已經發(fā)送了輸入,但是不讓目標對輸入進行操作,直到目標屏幕捕捉或其他分析操作完成。如這里所使用的,“發(fā)送輸入的嘗試”包括這兩種情況??梢允褂美?,熟悉的進程之間的通信機制,如消息、信號、共享存儲器、數(shù)據(jù)分組、文件、套接字、管道或其他機制,來完成輸入發(fā)送步驟306。在繁忙判斷步驟308,實施例判斷設置了目標-繁忙狀態(tài)226,即,狀態(tài)2 指出繁忙狀態(tài)而并非可用狀態(tài)??梢岳斫?,此處沒有規(guī)定特定比特值,或者甚至特定機制。當比特值是1時,可以設置實現(xiàn)為單個比特的目標-繁忙狀態(tài)標志228,如果該約定在該實施例內一致地遵循;但是,當比特值是0時,也可以同樣設置狀態(tài)標志228,如果這是該實施例所遵循的約定??梢岳缡褂檬煜さ倪M程之間的通信機制來完成判斷步驟308。在輸入發(fā)送阻止步驟310和輸入發(fā)送允許步驟312,實施例分別阻止或允許源進程204發(fā)送輸入124以驅動目標進程206。對于當前的目的等效地,在某些實施例中,輸入IM從源進程發(fā)送,并甚至可能在可以被目標進程訪問的緩沖器中接收,但是,分別阻止 310或允許312目標進程對輸入IM進行操作。阻止步驟310可以例如通過斷言熟悉的用于截取進程之間的通信的機制來完成,而允許步驟312可以通過撤消這樣的斷言或通過不作出斷言來完成。例如,可以將源墊片注入到源進程中,以使得當源進程發(fā)送輸入時控制流程通過源墊片。在操作完成確認步驟314,實施例確認界面分析操作224已經完成。完全完成不是一定準則;在某些情況下,實施例只確認操作充分完成以至于允許312目標進程206對待決的輸入1 進行操作對操作224的所希望的結果產生干擾的風險在可以接受的范圍內。確認步驟314可以,例如,使用熟悉的進程之間的通信機制來完成,或通過當操作完成時讓目標墊片214從執(zhí)行操作224的模塊222接收控制。在目標-繁忙狀態(tài)清除步驟316和目標-繁忙狀態(tài)設置步驟318,實施例分別清除或設置目標-繁忙狀態(tài)226。步驟316,318可以例如通過在共享變量、信號量、比特標志或另一狀態(tài)226中寫入值來完成。在分析操作調用步驟320,實施例調用代碼來執(zhí)行322界面分析操作224。例如, 目標墊片可以將控制傳遞到分析模塊222。在分析操作執(zhí)行步驟322,實施例執(zhí)行322界面分析操作224。例如,分析模塊222 可以執(zhí)行UI屏幕捕捉,或對于當前的目的等效地,可以將控制傳遞到UI屏幕捕捉實用程序。在加載狀態(tài)改變步驟324,實施例改變墊片的加載狀態(tài)。加載狀態(tài)240可以改變, 例如,通過加載墊片210-214的部分或全部或由墊片控制的代碼,或通過卸載墊片210-214 的部分或全部或由墊片控制的代碼,這些單獨進行地或作為進程204,206的一部分。當包含墊片的進程204、206正在運行時(即,在處理器的控制中或等待處理器的隊列中)發(fā)生的墊片加載狀態(tài)的改變3M可以被說成是“熱”改變。例如,一些實施例允許由目標墊片214 控制的用戶界面分析模塊222被熱加載或熱卸載。在驅動程序ID發(fā)送步驟326,實施例向目標進程發(fā)送源進程的驅動程序標識218。可以例如使用熟悉的進程之間的通信機制來完成步驟326。在某些情況下,通過注冊3 驅動程序標識218,使驅動程序標識218在注冊表中可用。在墊片加載步驟330,實施例將墊片210-214或其一部分加載到存儲器中,以便為執(zhí)行墊片作好準備。在墊片注入步驟332,實施例將墊片210-214注入到進程204-208中。 可以例如使用熟悉的機制來完成步驟330,332。在墊片定制步驟334,實施例定制墊片組件210以扮演作為源墊片212的角色、作為目標墊片214的角色、或者(在上黑名單的進程208的情況下)既不作為源也不作為目標墊片的角色。例如,可以通過根據(jù)進程集202注意到墊片正在被注入/已經被注入的進程是源進程,然后允許墊片組件210代碼的源墊片部分(如RPC客戶端234部分)活動,而同時禁止墊片組件210代碼的目標墊片部分中的活動,來將墊片組件210定制為源墊片212。 可以以類似的方式定制墊片組件210,以充當目標墊片214。在RPC進行步驟336或RPC接收步驟338,實施例分別進行或接收遠程過程調用。 可以使用在這里講述的墊片212,214的上下文中的熟悉的RPC機制來完成步驟336、338。在黑名單判斷步驟340,實施例判斷給定進程已經被列入黑名單342,因此不應該接受通過墊片212,214的輸入選通控制??梢酝ㄟ^找出進程集202中列出為禁止墊片活動 (因此上了黑名單34 的相關的進程,或者沒有在其中被列為被允許墊片活動(另一形式的黑名單34 的進程,或者通過注意到進程是對于墊片212、214活動禁止的那種類型(例如,內核、安全性、私人通信等等),來完成判斷步驟340。一個實施例使用匹配二進制路徑的通配符。例如,可以指定將匹配“c:\windows\not印ad. exe"以及或許還有其他項目的 “? \windows\*pad. ex*”。黑名單是手動地維護的。包括某些Microsoft Windows 系統(tǒng)的某些系統(tǒng)包括諸如沒有被添加墊片的操作系統(tǒng)進程和防病毒進程之類的進程,以便在系統(tǒng)上避免產生不希望發(fā)生的行為。一些實施例在注冊表中包括在進程啟動時讀取的多串值。如果實施例檢測到不應該觸碰進程,那么,實現(xiàn)墊片的模塊將從該進程中卸載其本身。在輸入生成步驟344,實施例生成輸入124以驅動進程122。步驟344可以使用例如熟悉的自動化驅動程序輸入生成機制來完成。在進程角色標識步驟346中,實施例標識由進程扮演的角色。可以,例如,如此處所討論的,使用進程集202來完成步驟346。在存儲器配置步驟348中,通過進程集202顯式地將角色分配給進程,通過一個或多個墊片210-214,或以其他方式結合用于管理自動化輸入和用戶界面分析操作的進程之間的通信,來配置存儲介質112,如此處所討論的。下面將參考各實施例比較詳細地討論前面的步驟和它們的相互關系。一些實施例提供用于促進用戶界面分析的進程。在該進程中,目標進程中的自動化目標墊片檢測302目標進程的用戶界面中的活動,并設置318目標-繁忙標志或其他目標-繁忙狀態(tài)。源進程中的自動化源墊片檢測304源進程嘗試向目標進程發(fā)送306輸入。 自動化源墊片判斷308已經設置了目標-繁忙狀態(tài),并阻止310源進程向目標進程發(fā)送輸入,直到目標-繁忙狀態(tài)被清除。自動化目標墊片在某個點確認314目標進程的用戶界面分析操作已經完成,然后清除316目標-繁忙狀態(tài)。在某些實施例中,判斷308已經設置目標-繁忙狀態(tài)包括自動化源墊片對自動化目標墊片進行336遠程過程調用。在某些實施例中,自動化源墊片向自動化目標墊片發(fā)送326自動化驅動程序標識。
在某些實施例中,自動化目標墊片調用320用戶界面分析操作。在某些實施例中, 自動化目標墊片可以調用320待決的分析模塊222。在某些實施例中,目標墊片檢測UI狀態(tài),并等待UI被完全呈現(xiàn),例如,在它調用320分析模塊之前。在某些實施例中,工作者線程執(zhí)行322用戶界面分析操作。在某些實施例中,用戶界面分析操作2M包括下列各項中的至少一個用戶界面屏幕捕捉操作、用戶界面可訪問性測試操作、本地化能力測試操作, 是否符合設計方針230。在某些實施例中,該方法包括在目標進程正在運行時改變3M用戶界面分析模塊的加載狀態(tài)。更一般而言,在某些實施例中,墊片和/或分析模塊可以是“可熱插入的”。在某些實施例中,該方法包括在屬于源進程的源二進制代碼中注入332自動化源墊片,并在屬于目標進程的目標二進制代碼中注入332自動化目標墊片。在某些實施例中,第二目標進程中的第二自動化目標墊片檢測302第二目標進程的第二用戶界面中的活動,并設置318第二目標-繁忙狀態(tài)。源進程中的自動化源墊片檢測304源進程嘗試向第二目標進程發(fā)送306第二輸入。自動化源墊片判斷308已經設置了第二目標-繁忙狀態(tài),并阻止310源進程向第二目標進程發(fā)送第二輸入,直到第二目標-繁忙狀態(tài)被清除。第二自動化目標墊片確認314,第二目標進程的第二用戶界面分析操作已經完成,然后清除316第二目標-繁忙狀態(tài)。更一般而言,在某些實施例中,兩個源程序有可能驅動同一個目標程序,或者一個源程序有可能驅動兩個目標程序。在任一種情況下,可以使用此處講述的其他方面,例如, 可以使用注冊表或者其他機制來進行驅動程序的注冊。在某些實施例中,源進程加載330自動化墊片組件210的副本,而目標進程加載 330自動化墊片組件210的另一副本。然后,分別針對源進程角色和目標進程角色定制334 自動化墊片組件的副本。在某些實施例中,上黑名單的進程加載330自動化墊片組件210 的副本,但是,自動化墊片組件判斷340上黑名單的進程已經上了黑名單342,并定制334自動化墊片組件(因缺乏作為源或者目標而激活,顯式地,或隱式地),以便避免充當自動化源墊片和避免充當自動化目標墊片。鑒于前面的內容,可以理解,圖4是示出了缺乏基于墊片通信的界面分析管理的自動化的數(shù)據(jù)流程圖。自動化驅動程序進程120發(fā)送諸如命令和數(shù)據(jù)之類的輸入124,以驅動被驅動的進程的用戶界面126。如所注意的,在這樣的配置中,諸如屏幕捕捉之類的用戶界面分析操作2M難以實現(xiàn)或不切實際,因為輸入的流沒有提供適當?shù)貓?zhí)行所希望的分析操作的時間。圖5是一般性地示出了帶有如此處所講述的基于墊片通信的界面分析管理的自動化的數(shù)據(jù)流程圖。在自動化驅動程序進程120中注入了源墊片212,從而構成源進程204。 類似地,在被驅動的進程122中注入了目標墊片214,從而構成目標進程206。墊片之間的通信調停驅動用戶界面的輸入,從而向所希望的分析操作提供在被驅動的進程作用于隨后的輸入之前完成的機會。在某些實施例中,墊片通信包括通過目標-繁忙狀態(tài)的設置和清除的通信,但是,在其他實施例中,還發(fā)生附加的通信。例如,源墊片可以向目標墊片標識其本身和/或其驅動程序進程120。已配置的介質一些實施例包括已配置的計算機可讀取的存儲介質112。介質112可包括盤(磁
13盤、光盤,或別的)、RAM、EEPROM或其他ROM,和/或其他可配置的存儲器,特別包括非瞬時的計算機可讀介質(而不是有線和其他傳播信號介質)。已配置的存儲介質可以是諸如CD、 DVD或閃存之類的可移動存儲介質114??梢允强梢苿拥幕虿豢梢苿拥模⒖梢允且资缘幕蚍且资缘耐ㄓ么鎯ζ?,可以被配置成以從可移動介質114和/或諸如網絡連接之類的另一源中讀取的數(shù)據(jù)118和指令116的形式使用諸如自動化墊片210-214和進程集202之類的項的實施例,以形成已配置的介質。已配置的介質112能夠導致計算機系統(tǒng)執(zhí)行如此處所公開的通過使用墊片來進行界面分析的轉換進程的進程步驟。如此,圖1,2,3,以及5 幫助示出了已配置的存儲介質實施例和進程實施例,以及系統(tǒng)和進程實施例。具體而言,圖 3中所示出的,或此處以其他方式講述的進程步驟中的任何一個,可以被用來幫助配置存儲介質以形成已配置的介質實施例。補充示例下面提供了更多細節(jié)和設計考慮。如同此處的其他示例,在給定實施例中,所描述的特征可以分別地使用和/或組合地使用,或根本不使用。那些本領域的技術人員將理解,實現(xiàn)細節(jié)可以涉及諸如特定API和特定示例程序之類的特定代碼,且因此,不必出現(xiàn)在每個實施例中。那些本領域的技術人員還將理解,在討論細節(jié)時所使用的程序標識符和某些其他術語是實現(xiàn)特定的,如此,不必涉及每個實施例。盡管如此,雖然它們不一定需要出現(xiàn)在這里,但是,提供了這些細節(jié),因為它們通過提供上下文可以幫助一些讀者,和/或可以示出此處所討論的技術的許多可能的實現(xiàn)中的一些。圖6是示出了體系結構中的帶有基于墊片通信的界面分析管理的自動化的數(shù)據(jù)流程圖,體系結構中包括由一個工作者線程處理的分析操作項的隊列602。圖7是示出了適合用于如圖6所示的體系結構中的工作者線程238的數(shù)據(jù)流程圖。如在圖6中所指出的,帶有源墊片212的驅動程序進程120檢查是否有目標進程用戶界面活動。如果檢測到302UI 活動,那么,源進程等待604活動(例如,屏幕捕捉)完成;可以使用目標-繁忙標志來指示完成。如果沒有檢測到302UI活動,或者檢測到但是已經完成,那么,源進程發(fā)送306窗口消息、設備輸入和/或其他自動化輸入124以驅動目標。作為輸入的結果,目標進程可以改變606用戶界面。目標墊片設置318目標-繁忙標志228,并向工作隊列中添加一個項,以便分析模塊將捕捉或以其他方式對改變的界面執(zhí)行322分析操作。如圖7所示,工作者線程238檢查是否有工作隊列項,將它們彈出704隊列602,并執(zhí)行322它們,并且當隊列為空時,工作者線程清除316目標-繁忙標志228。一些實施例使用可擴展的Detours 本機代碼加墊片技術,或使用該技術來實現(xiàn), 該技術可從Microsoft Research (Microsoft Corporation的商標)公開獲得。將兩個互補的墊片注入到自動化進程120和目標UI進程122中。第一墊片用于自動化進程,在一種實現(xiàn)中叫作Automatior^him(自動化墊片);此處通過源墊片212來表示。第二墊片用于目標UI進程,在實現(xiàn)中叫作AutomationTargetShim(自動化目標墊片);此處通過目標墊片214來表示。通過AutomationTargetShim中的RPC(遠程過程調用)服務器236,以及 Automationaiim中的RPC客戶端234來建立兩個墊片之間的通信。在某些實施例中,可以根據(jù)需要將AutomationTargetShim注入332到所需的許多 UI目標應用程序中。例如,如果目標UI是Microsoft Windows操作系統(tǒng)UI,那么,可以將AutomationTargetShim注入到作為Microsoft Windows產品的一部分的每個應用程序中。 此墊片使用于創(chuàng)建或修改進程的UI的Win32 函數(shù)繞道;例如,使CreateWindowExW應用程序編程接口(API)繞道(Win32是Microsoft Corporation的商標)。取決于運行時參數(shù),這些函數(shù)可以導致目標的UI中的變化。這樣的變化信令AutomationTargetShim設置全局“繁忙”標志2 并為工作者線程238排隊UI動作(如用屏幕截圖捕捉UI)的事件。 當正在執(zhí)行標準UI動作時,“繁忙”標志向帶有Automatior^him的任何進程通知它們被阻塞向進程發(fā)送輸入124。在某些實施例中,目標-繁忙狀態(tài)是按照進程的,而在其他實施例中,它被多個進程共享,取決于用戶偏好。一旦完成了標準UI動作,就復位“繁忙”標志(清除316),并對自動化進程解除阻塞。 在某些實施例中,可以將Automatior^him注入到未指定為目標UI應用程序的每一進程中。因為Automatior^him只對向其他進程發(fā)送輸入的代碼模式執(zhí)行動作,因此,將不會對不實際自動化另一進程的進程有顯著的影響。然而,如果進程正在嘗試向目標進程發(fā)送306輸入并且目標進程已經被注入了 AutomationTargetShim (帶有活動RPC服務器), 則在設置了目標進程“繁忙”標志時調用將被阻塞,直到目標進程有機會執(zhí)行任何適用的 UI動作并復位該標志。作為結果,在驅動帶有AutomationTargetShim的應用程序時,帶有 Automatior^him的進程將比往常響應的慢一些,但是常常不會顯示任何其他有害影響。AutoCapture (自動捕捉)技術在某些實施例中,提供了符合前面的原理的AutoCapture工具和方法,用于允許自動地捕捉或以其他方式在UI屏幕啟動時對它們進行實時評估,無論是通過第三方自動化還是通過人手動地使用產品來進行。AutoCapture技術可以例如對于希望評估產品的許多或全部UI但是不一定具有資源來編寫他們自己的自定義自動化的軟件產品服務團隊有用。某些工具將嘗試捕捉在系統(tǒng)上啟動的所有UI。然而,UI自動化通常依賴于緊密調諧的UI事件等待器以信令自動化何時應該等待和繼續(xù)。這些等待器將允許自動化以足夠快速的步調自動化目標UI,以禁止這些工具執(zhí)行足夠的UI捕捉或評估。在某些情況下, AutoCapture技術將不僅捕捉全部所希望的UI,而且還防止UI自動化中斷該捕捉進程。 AutoCapture技術允許中心團隊通過管理應用程序時間選擇和/或通過自我托管導航,來利用現(xiàn)有的自動化?,F(xiàn)在將描述許多可能的情況中的兩種。作為第一示例,假設一個國際產品團隊希望為本地化審閱O創(chuàng)建軟件產品的UI捕捉。由于資源限制,自定義UI自動化以鍛煉和捕捉目標UI屏幕具有有限的覆蓋。通過在測試實驗室中與自定義截取模塊一起使用 AutoCapture技術,也可以捕捉由特征團隊鍛煉的UI,會增大總的覆蓋。作為另一個示例情況,假設可訪問性團隊希望評估軟件產品中的所有UI,以確保各團隊正確地使用某些可訪問性API??稍L問性團隊具有某些自動化,并創(chuàng)建手動工具以允許特征團隊評估他們的UI ;然而,他們不能獲得對產品的UI的詳盡的覆蓋。通過在測試實驗室中與自定義模塊一起使用AutoCapture技術,他們評估由特征團隊啟動的UI,會增大他們的覆蓋以及找到的錯誤的數(shù)量。在許多情況下,可以理解,可以通過對給定環(huán)境的自動化框架、輸入機制、UI目標及其他方面進行充分的測試,來減輕或消除風險。也可以存在卸載指令、性能日志,及其他軟件開發(fā)工具。在一個實施例中,下列特征是AutoCapture技術的目標,但可以理解,其他實施例可以省略、添加、或以其他方式改變特征集和/或目標集從任何本地目錄加載自定義模塊 222,部署在室驗室環(huán)境中,將指定產品的所有進程識別為目標進程206,對系統(tǒng)的性能影響很小,被安裝而不需要重新啟動,排除特定進程,在沒有諸如分析模塊222之類的自定義模塊的情況下對系統(tǒng)的性能或資源-使用影響很小或沒有影響。在某些實施例中,AutoCapture工具是取決于它位于目標進程206中還是自動化進程204中而具有不同的行為的輕型的墊片210。在目標進程中,墊片在UI被啟動時監(jiān)視 UI,管理來自自動化進程墊片的請求,并調用安裝的任何自定義捕捉模塊222。在自動化進程中,墊片監(jiān)視器處理通信API,并將阻塞使向目標進程中的墊片發(fā)送的信息請求待決的那些調用。以此方式,可以在系統(tǒng)上啟動的許多或所有UI中創(chuàng)建捕捉操作224,而將減慢任何自動化,以允許捕捉機制執(zhí)行。在某些實施例中,使用Microsoft Research Detours (版本2. 1)應用程序兼容性墊片引擎基礎結構來部署墊片本身。墊片邏輯被封裝在動態(tài)鏈接庫(DLL)中,墊片引擎迫使DLL在進程啟動時加載到所有進程中(否則,按照每個進程集202加載到所有適用的進程中)。在加載時,DLL確定進程將扮演哪一個角色(自動化、目標、或兩者都不),并使用 Detours定制環(huán)境以應用適當?shù)膲|片。如果進程是目標類型,則它將延遲加載330 (以防止自定義模塊啟動代碼干擾進程初始化)安裝的自定義模塊222,并當UI可用時調用它們。 兩個墊片類型通過RPC232進行通信,以作出調用和接收調用;目標類型變?yōu)镽PC服務器,而自動化類型變?yōu)槠ヅ涞腞PC客戶端。在一個實施例中,使用下列墊片Automation (自動化)類型PostMessageffSendMessageffSendMessageTimeoutffSendInputTarget (目標)類型CreateDialogIndirectParamAorffDialogBoxIndirectParamAorffCreateffindowExff至于此實施例中的RPC,Target類型變?yōu)檎故疽韵路椒ǖ腞PC服務器int RegisterAsDriver ([in] handle_t hBinding, [in, string] WCHAR^automationName);int CanAutomationContinue([in] handle_t hBinding, [in]int hffnd);int EngineTestConnection([in] handle_t hBinding, [in]int iln);至于RegisterAsDriver (注冊為驅動器),當自動化類型進程驅動目標類型進程時,自動化類型將向目標將其本身注冊3 為驅動程序。使諸如驅動程序標識218之類的驅動程序信息對任何自定義模塊222可用,用于記帳目的。至于CanAutomationContinue (可以自動化繼續(xù)),這是查詢目標進程的當前狀態(tài)的非阻塞的調用。當目標進程類型正在捕捉新的UI時,它將設置318繁忙標志。對此方法的調用將返回此標志的狀態(tài)。自動化進程墊片將輪詢此值(阻塞原始函數(shù)調用),直到它返回TRUE (真),允許自動化繼續(xù)。至于EngineTestCormectior^引擎測試連接),這是可以被調用的測試方法,并將返回傳遞的值。至于此實施例中的自定義模塊定義,自定義模塊222是公開地按名稱導出下列原型的方法的本機DLL:typedef HRESULT(WINAPI *PINVOKE_HWND_HANDLER) (HWNDhwnd, LPCffSTR IpStorageFolder, LPCffSTR IpDriver, INT windowNumber);在此實施例中,用戶為不同的體系結構編譯模塊的單獨的版本。通過注冊表設置來處理自定義模塊的安裝。對每個體系結構,設置下列注冊表值機器體系結構HKLM\Software\Microsoft\AutoCapture\HWndHandlers64 上的 32 位HKLM\Software\ffow6432Node\Microsoft\AutoCapture\HWndHandlers在任一種情況下,HWndHandlers是REG_MULTI_SZ值,并應該附帶有完整路徑和包含自定義邏輯的函數(shù)。例如C:\Program Files\MyShimFolder\MyShimLogic. dlIiMyShimFunction在某些實施例中,將通過注冊表設置來完全控制AutoCapture邏輯。通過注冊表, 有兩組可以配置的邏輯,即,用于確定進程類型的基于進程名稱的過濾器,以及自定義窗口處理程序邏輯安裝。至于安全性,在安裝AutoCapture技術之后,它將在所有目標進程上使用RPC服務器,這會帶來某種風險。目標邏輯應該處理那些功能上的任何安全性顧慮,代碼應該符合適用的安全訪問級別(SAL)方針。至于隱私,可以預期,許多實施例將在不包含個人或私人信息而是只依賴于虛擬信息和/或以往的公開信息的可控的測試環(huán)境中進行操作。盡管如此,仍應該對用戶隱私給予適當?shù)淖鹬亍H绻麑嵤├杏凶畛醪皇怯蓹C器生成的而是可能包括私人的或機密信息的輸入和/或數(shù)據(jù),那么,例如,當在Beta測試環(huán)境中捕捉客戶端UI時應該適當?shù)亟鉀Q隱私顧慮??梢詫㈦[私問題管理委托給涉及的用戶,例如,通過在執(zhí)行捕捉進程之前解釋該捕捉進程,獲得用戶同意,為用戶提供查看和編輯所捕捉的屏幕的機會等等,以減輕或消除隱私風險。結論雖然此處作為進程、作為配置的介質,或作為系統(tǒng)顯式地示出和描述了特定實施例,但是,可以理解,對一種類型的實施例的討論也一般性地延伸到其他實施例類型。例如, 參考圖3和5-7對進程的描述也幫助描述已配置的介質,并幫助描述類似于參考其他附圖所討論的那些的系統(tǒng)和產品的操作。對一個實施例的限制也不一定適用于另一個實施例。 具體而言,進程不一定僅限于在討論諸如已配置的存儲器之類的系統(tǒng)或產品時呈現(xiàn)的數(shù)據(jù)結構和方案。不是圖中所示出的每一項都需要存在于每個實施例中。相反,實施例可以包含圖中未顯式地示出的項。雖然這里具體示例在文本和附圖中示出了一些可能性,但是,實施例可以偏離這些示例。例如,可以省略、重命名、以不同的方式分組、重復、以不同的方式以硬件和/或軟件實例化一個示例的特定特征,或者,這些特定特征也可以是在兩個或更多示例中出現(xiàn)的特征的混合。在某些實施例中,也可以在不同的位置處提供在一個位置處示出的功能。通過參考編號,參考了附圖。在附圖或文本中,與給定參考編號相關聯(lián)的措詞中的任何顯而易見的不一致性,應該被理解為簡單地擴大該編號所引用的內容的范圍。如此處所使用的,諸如“一”和“該”之類的術語是包括所指出的項或步驟中的一個或多個。具體而言,在權利要求書中,對一個項的引用一般表示至少一個這樣的項存在, 并且對一個步驟的引用表示執(zhí)行該步驟的至少一個實例。標題只是為了方便;有關給定主題的信息可以在其標題指出該主題的部分外面找到。所提出的所有權利要求都是本說明書的一部分。盡管在附圖中示出了并在上文描述了示例性實施例,但是,對于本領域的技術人員來說顯而易見的是,在不偏離權利要求書中所闡述的原理和概念的情況下,可以進行很多修改。盡管用結構特征和/或過程動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限于權利要求書上面所描述的具體特征或動作。不一定在給定定義或示例中標識的每一個手段或方面都在每個實施例中存在或使用。相反,所描述的具體特征和動作是作為供當實現(xiàn)權利要求書時考慮的示例來公開的。落入權利要求書的等效方案的含義和范圍內的所有改變應在法律允許的最大可能的范圍內被權利要求書的范圍所涵蓋。
權利要求
1.一種用于促進用戶界面分析的方法,所述方法使用具有至少一個與至少一個存儲器的可操作通信的邏輯處理器的設備,所述方法包括下列步驟目標進程中的自動化目標墊片檢測(30 所述目標進程的用戶界面中的活動,并設置 (318)目標-繁忙狀態(tài);源進程中的自動化源墊片檢測(304)源進程嘗試向所述目標進程發(fā)送輸入。 所述自動化源墊片判斷(308)所述目標-繁忙狀態(tài)已經被置位,并阻止(310)所述源進程向所述目標進程發(fā)送所述輸入,直到所述目標-繁忙狀態(tài)被清除;以及所述自動化目標墊片確認(314)所述目標進程的用戶界面分析操作已經完成,然后清除(316)所述目標-繁忙狀態(tài)。
2.如權利要求1所述的方法,其特征在于,所述用戶界面分析操作(224)包括下列各項中的至少一個用戶界面屏幕捕捉操作、用戶界面可訪問性測試操作、本地化能力測試操作、是否符合設計方針。
3.如權利要求1所述的方法,其特征在于,還包括在所述目標進程正在運行時改變 (324)用戶界面分析模塊的加載狀態(tài)。
4.如權利要求1所述的方法,其特征在于,還包括所述自動化源墊片向所述自動化目標墊片發(fā)送(3 )自動化驅動程序標識。
5.如權利要求1所述的方法,其特征在于,還包括下列步驟將所述自動化源墊片注入(332)到屬于所述源進程的源二進制代碼中;以及將所述自動化目標墊片注入(332)到屬于所述目標進程的目標二進制代碼中。
6.如權利要求1所述的方法,其特征在于,還包括工作者線程執(zhí)行(322)所述用戶界面分析操作的步驟。
7.如權利要求1所述的方法,其特征在于,還包括下列步驟第二目標進程中的第二自動化目標墊片檢測(30 所述第二目標進程的第二用戶界面中的活動,并設置(318)第二目標-繁忙狀態(tài);所述源進程中的所述自動化源墊片檢測(304)所述源進程嘗試向所述第二目標進程發(fā)送第二輸入;所述自動化源墊片判斷(308)所述第二目標-繁忙狀態(tài)已經被置位,并阻止(310)所述源進程向所述第二目標進程發(fā)送所述第二輸入,直到所述第二目標-繁忙狀態(tài)被清除; 以及所述第二自動化目標墊片確認(314)所述第二目標進程的第二用戶界面分析操作已經完成,然后清除(316)所述第二目標-繁忙狀態(tài)。
8.配置有數(shù)據(jù)以及當由至少一個處理器執(zhí)行時導致所述處理器執(zhí)行用于阻止用戶界面自動化中斷屏幕捕捉的方法的指令的計算機可讀的非瞬時的存儲介質,所述方法包括下列步驟目標進程中的自動化目標墊片檢測(30 所述目標進程的用戶界面中的活動,并設置 (318)目標-繁忙標志;源進程中的自動化源墊片檢測(304)源進程嘗試向所述目標進程發(fā)送輸入; 所述自動化源墊片判斷(308)目標-繁忙標志已經被置位,并阻止(310)所述源進程向所述目標進程發(fā)送所述輸入,直到所述目標-繁忙標志被清除;以及所述自動化目標墊片確認(314)所述目標進程的用戶界面屏幕捕捉操作已經完成,然后清除(316)所述目標-繁忙標志。
9.如權利要求8所述的已配置的介質,其特征在于,所述方法還包括所述自動化源墊片向所述自動化目標墊片發(fā)送(3 )自動化驅動程序標識。
10.如權利要求8所述的已配置的介質,其特征在于,所述方法還包括所述源進程加載 (330)自動化墊片組件的副本,所述目標進程加載(330)所述自動化墊片組件的另一副本, 所述自動化墊片組件的所述副本是分別針對源進程角色和目標進程角色定制的(334)。
11.如權利要求8所述的已配置的介質,其特征在于,所述方法還包括上黑名單的進程加載(330)自動化墊片組件的副本,所述自動化墊片組件判斷(340)所述上黑名單的進程已經列入黑名單,然后所述自動化墊片組件被定制(334),以避免充當自動化源墊片并避免充當自動化目標墊片。
12.—種計算機系統(tǒng),包括至少一個邏輯處理器(110);可操作地與所述邏輯處理器進行通信的至少一個存儲器(112);駐留在存儲器中的并具有用戶界面(126)的目標進程Q06);駐留在存儲器中的并可操作地自動地生成用戶界面驅動輸入(IM)以鍛煉所述用戶界面的源進程O04);駐留在所述源進程中的、可操作以檢測目標-繁忙狀態(tài)0沈)、并可操作以當所述目標-繁忙狀態(tài)分別被置位/清除時禁止/允許向所述目標進程傳輸所述用戶界面驅動輸入的源墊片012);以及駐留在所述目標進程中的、可操作以當涉及所述用戶界面的操作(224)分別待決/完成時設置/清除目標-繁忙狀態(tài)的目標墊片014)。
13.如權利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括將所述源進程標識為自動化驅動程序的注冊(220)。
14.如權利要求12所述的系統(tǒng),其特征在于,所述目標墊片包括遠程過程調用服務器 036),所述源墊片包括遠程過程調用客戶端(234)。
15.如權利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括滿足下列各項中的至少一個的用戶可配置的進程集O02)所述進程集將至少一個進程標識為是目標進程;所述進程集將至少一個進程標識為是源進程。
全文摘要
被注入到目標進程中的目標墊片檢測用戶界面中的活動,并設置目標-繁忙狀態(tài)。被注入到源進程中的源墊片檢測到有輸入被發(fā)送到目標進程,以驅動自動化測試。源墊片判斷目標-繁忙狀態(tài)被置位,并阻止源進程發(fā)送輸入,直到該狀態(tài)被清除。在確認屏幕捕捉、可訪問性測試、本地化能力測試、或其他用戶界面分析操作完成之后,目標墊片清除該狀態(tài)。可以存在多個源墊片和/或多個目標墊片。可以定制單個自動化墊片組件的副本,以用作源墊片或作為目標墊片??梢粤谐霭踩赃M程和操作系統(tǒng)進程,以防止來自自動化墊片的干擾。可以在目標進程正在運行時“熱”加載和/或卸載用戶界面分析模塊。
文檔編號G06F11/36GK102253885SQ201110144159
公開日2011年11月23日 申請日期2011年5月18日 優(yōu)先權日2010年5月19日
發(fā)明者B·奈爾, I·卡塔納, O·西梅塔特, T·C·富蘭克林 申請人:微軟公司