国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      選擇用于復(fù)驗自動化的測試實例執(zhí)行行為的系統(tǒng)和方法

      文檔序號:6642760閱讀:120來源:國知局
      專利名稱:選擇用于復(fù)驗自動化的測試實例執(zhí)行行為的系統(tǒng)和方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及測試用于應(yīng)用的軟件,尤其涉及從測試實例中提取執(zhí)行行為。
      背景技術(shù)
      軟件開發(fā)生命期中的幾個主要階段是設(shè)計階段、編碼階段、代碼完成階段、α階段、β階段,以及最后向市場發(fā)行。在設(shè)計階段期間,將解決軟件產(chǎn)品的客戶問題并定義軟件產(chǎn)品的功能。通常,功能規(guī)范的完成標志著設(shè)計階段的結(jié)束。編碼階段可能已開始。當代碼寫成但尚未調(diào)試時則進入代碼完成階段。α階段標記產(chǎn)品穩(wěn)定的時間點;即,已發(fā)現(xiàn)了大部分的主要缺陷。在β階段,產(chǎn)品理想地沒有了所有的主要缺陷;即所剩的缺陷應(yīng)基本上無害。當產(chǎn)品通過最終的質(zhì)量保證檢查列表時,它已準備就緒向市場發(fā)行。
      因為沒有人想要不工作的軟件,所以測試是生命期的重要部分并可跨越若干階段。軟件測試包括設(shè)計一測試實例(或更可能是測試實例集)、以測試實例為輸入運行該軟件、并檢查以測試實例為輸入的軟件的性能是否產(chǎn)生預(yù)期結(jié)果。軟件測試可由人手動進行,或通過程序來進行(稱為自動化軟件測試)。理想地,軟件的測試在軟件生命期的一開始就應(yīng)開始。然而一般而言,不到完成了設(shè)計階段軟件根本不能測試,因為直到完成設(shè)計階段才能確定期望結(jié)果。通常,在編碼階段,開發(fā)者在寫代碼時手動測試其代碼。自動化軟件測試通常在開發(fā)過程的較后期才會開始。
      有時,所進行的唯一測試由開發(fā)者在他編寫代碼時手動測試來完成。然而測試自己工作的開發(fā)者可能會看不出在情緒上不那么投入代碼的某些人會發(fā)現(xiàn)的缺陷。此外,開發(fā)者測試的范圍通常限于其代碼的功能以及其代碼與有限數(shù)量的其它軟件應(yīng)用程序的結(jié)合。
      針對這些缺點,許多軟件開發(fā)機構(gòu)具有常使用至少部分自動化的測試技術(shù)來測試軟件的獨立的軟件測試組。通常,測試組通過編寫和運行測試實例來測試各特征之間和應(yīng)用程序之間的交互。使測試組及早地甚至在設(shè)計階段就進入產(chǎn)品生命期能獲得很多好處通常是無異議的,這些好處包括標識功能規(guī)范中的不一致、標識難以測試的區(qū)域及其它。然而一般而言,面對特征定義、實現(xiàn)和用戶界面(UI)調(diào)整中的持續(xù)變化而保持每個測試實例通行所需的精力使該方法表現(xiàn)為不實用。因此,編寫并運行測試實例通常是在產(chǎn)品開發(fā)末期倉促發(fā)生的。因而測試特別是自動化測試總是落后于進度曲線。如果有一種在一進入軟件產(chǎn)品的生命期(理想地是在設(shè)計階段期間)就能編寫測試實例并采用自動化測試的方法將是有幫助的。
      一整套測試實例的開發(fā)在任何時候都具挑戰(zhàn)性。為了測試應(yīng)用程序的特定特征,必需編寫許多測試集。例如,應(yīng)用程序可允許與一特征的許多交互模式通過鼠標、鍵盤、數(shù)字化儀、可訪問軟件、通過程序等。因此,為了提供對該特征的綜合性測試,一整套測試應(yīng)包括通過鼠標與該特征交互(像用戶一樣鍵入文本)的一個測試集、通過鍵盤與該特征交互的一個集、通過數(shù)字化儀與該特征交互的一個集、通過可訪問軟件與該特征交互來調(diào)用缺省動作并以其它方式模擬可訪問應(yīng)用程序的一個集、通過應(yīng)用程序的編碼模型與該特征交互的一個集等。如果有一種確保一整套測試實例能提供特征或應(yīng)用程序的綜合性測試,并進一步減少為了提供綜合性測試而必需編寫的測試實例的總量的方法,這將是有幫助的。
      此外,這些測試集的每一個中的許多或全部邏輯都與其它測試集中的邏輯相同,且通常許多或全部的結(jié)果處理校驗也相同。因此,許多測試是相同或非常接近的,僅僅在執(zhí)行選項上有變化。例如,對于上述全部多種形式的輸入,期望結(jié)果可能是相同的。因此,對這些輸入源的每一個編寫測試實例通常需要編寫用于執(zhí)行每個輸入源的測試的獨立方法,并復(fù)制大多數(shù)剩余的測試腳本。重復(fù)編寫僅具有極小變化的相同測試是乏味并耗時的。如果有一種消除或大大減少這種重復(fù)編碼并減少必需編寫的測試實例的總量的方法將是有幫助的。
      編寫用來確定運行測試實例的實際結(jié)果是否與期望結(jié)果相一致(常稱為結(jié)果校驗或校驗)的代碼常包括在測試實例內(nèi)。改變特定結(jié)果校驗的細節(jié)或添加新的結(jié)果校驗通常需要更改每個測試實例。如果校驗代碼獨立于測試實例,使該測試實例更易于理解以及校驗代碼更易于重復(fù)使用和維護將是有幫助的。
      執(zhí)行細節(jié)常難以被編碼到測試實例中,需要設(shè)計階段在編寫測試實例之前就完成。如果有一種根據(jù)用戶動作而不根據(jù)特定執(zhí)行細節(jié)來定義測試實例使得測試實例能在軟件開發(fā)生命期的較早期編寫的方法,這將是有幫助的。
      測試軟件應(yīng)用程序是應(yīng)用程序的初始開發(fā)以及對該應(yīng)用程序的更改的實現(xiàn)中的重要步驟。軟件應(yīng)用程序開發(fā)者在應(yīng)用程序開發(fā)的測試階段投入了大量精力。這樣的測試有助于確保應(yīng)用程序以期望方式響應(yīng)于特定動作。
      通常,專門為測試某一應(yīng)用程序的某一組件而編碼一測試實例。例如,用戶界面(UI)測試實例可包含表示文本框、按鍵、菜單等的標識的代碼,而應(yīng)用程序編程接口(API)測試實例可直接與測試中的API通信。為這些執(zhí)行方法的每一個編寫一測試實例可能需要主要編寫同一測試實例,而在各測試實例之間只有執(zhí)行方式的變化。即,一測試實例可指定使用按鍵來測試應(yīng)用程序的組件,另一個則指定使用一對象模型來測試組件,而又一個可使用鍵盤輸入。除執(zhí)行方法之外,這些測試實例及其實現(xiàn)的期望結(jié)果可能是相同的。
      此外,測試實例可能需執(zhí)行多個操作,其中每個操作能夠使用眾多執(zhí)行方法的任一種來完成(例如用鼠標調(diào)用按鍵或菜單、用鍵盤來調(diào)用按鍵或菜單、用鼠標調(diào)用菜單以及用鍵盤調(diào)用按鍵等)。即使對于相對簡單的應(yīng)用程序,測試用于完成應(yīng)用程序的多個操作的執(zhí)行方法的全部可能組合所需的測試實例數(shù)量可能會很大。
      開發(fā)這樣的大量測試實例通過所有的執(zhí)行方法測試應(yīng)用程序是令人畏懼的。這樣的任務(wù)可能需要編寫眾多的幾乎相同的測試實例而只在執(zhí)行方法上有變化。還有,測試實例維護可能比測試實例創(chuàng)建更為勞動強度大和耗時。當改變應(yīng)用程序時,可應(yīng)用測試實例可能需要更新以確保持續(xù)的兼容性。更新這么大量的為每個執(zhí)行方法編寫的測試實例會是令人畏懼的任務(wù)。
      此外,某些執(zhí)行方法在一測試實例上可能根本沒有測試。測試實例可設(shè)計成確定應(yīng)用程序是否做了特定動作而未導(dǎo)致非期望結(jié)果。測試實例可能并不關(guān)心看起來與測試實例的目的無甚關(guān)系的動作的執(zhí)行方法。然而,如果即使測試的焦點是應(yīng)用程序的某個其它方面但測試實例的無甚關(guān)系步驟仍由各種執(zhí)行方法來測試,這是有利的。如果測試實例主要旨在例如測試應(yīng)用程序畫一藍色長方形的能力,則測試實例可包括用于打開新文檔的步驟。由于打開新文檔與測試實例的目的無甚關(guān)系,測試實例可僅提供使用鼠標來完成的動作。然而,測試用于打開新文檔的所有執(zhí)行方法是有用的,因為例如可能發(fā)現(xiàn)使用鍵盤打開新文檔會使藍色長方形實際上變成紅色、創(chuàng)建為圓、或以其它方式與期望結(jié)果不同。
      因此,需要使用各種執(zhí)行方法但實質(zhì)上不需要為每種執(zhí)行方法或可能的執(zhí)行方法的每個組合編寫相同的測試實例來測試應(yīng)用程序。

      發(fā)明內(nèi)容
      本發(fā)明使單個測試實例能由許多執(zhí)行方法或執(zhí)行方法的組合來執(zhí)行。這些執(zhí)行方法稱為“執(zhí)行行為”。本發(fā)明使單個測試實例能由各種執(zhí)行行為來執(zhí)行而不需要麻煩的、詳細的測試實例代碼來說明執(zhí)行行為的眾多組合。
      本發(fā)明將執(zhí)行行為與測試實例分開,并將執(zhí)行行為的選擇留給稱為“執(zhí)行行為管理器”的單獨裝置。測試實例或測試實例中的步驟可調(diào)用該執(zhí)行行為管理器。執(zhí)行行為管理器可選擇執(zhí)行行為并將該執(zhí)行行為發(fā)送回去用于由測試實例執(zhí)行。該執(zhí)行行為管理器可基于為測試實例的先前調(diào)用發(fā)送的先前執(zhí)行行為來選擇一執(zhí)行行為。執(zhí)行行為管理器可跟蹤先前提供的執(zhí)行行為并遍歷所有可用執(zhí)行行為。這可提供用所有可用執(zhí)行行為來測試應(yīng)用程序的平衡。
      此外,“全局”加權(quán)可由執(zhí)行行為管理器應(yīng)用于有關(guān)對適當執(zhí)行行為的選擇的所有判定中。例如,如果應(yīng)用程序中的菜單已經(jīng)重組,則可應(yīng)用全局加權(quán),告訴執(zhí)行行為管理器80%的時間使用菜單而20%的時間使用工具欄按鍵。該全局加權(quán)可撤銷執(zhí)行行為管理器的選擇每個執(zhí)行行為相等次數(shù)的正常操作。
      此外,通過“局部”加權(quán)測試實例可撤銷全局加權(quán)并告訴執(zhí)行行為管理器例如使用工具欄按鍵來執(zhí)行測試實例的“打開新文檔”步驟。如果例如工具欄最近已經(jīng)重組且測試者想要確保它在特定測試實例中正常工作,則該撤銷較為重要?;蛘呔植考訖?quán)可與全局加權(quán)合作地使用或與之無關(guān)地使用,從而在執(zhí)行一行為時可考慮兩種加權(quán)。


      結(jié)合附圖閱讀時,前面的發(fā)明內(nèi)容和以下說明性實施例的詳細描述能得到更好的理解。為了說明本發(fā)明各實施例,在附圖中示出本發(fā)明的示例性結(jié)構(gòu);然而,本發(fā)明并不限于所揭示的特定方法和裝置。在附圖中圖1是示出可實現(xiàn)執(zhí)行行為從測試實例提取的測試實例實現(xiàn)的各方面的實例計算環(huán)境的框圖;圖2示出用于對執(zhí)行行為提取的測試實例實現(xiàn)的系統(tǒng)的示例實施例的框圖;
      圖3示出示例執(zhí)行行為的框圖;圖4示出用于執(zhí)行行為從測試實例提取的測試實例實現(xiàn)的方法的流程圖;圖5A-5B示出用于執(zhí)行行為從測試實例提取的測試實例實現(xiàn)的可選方法的流程圖。
      具體實施例方式
      縱覽將執(zhí)行行為從測試實例中分開并將各執(zhí)行行為合并在執(zhí)行行為管理器中使應(yīng)用程序能進行更完全的測試。本發(fā)明通過使單個測試實例能通過使用全部執(zhí)行行為以及執(zhí)行行為的組合來執(zhí)行而提供更全面的測試。隨著執(zhí)行行為從測試實例的分離,執(zhí)行行為管理器可繼續(xù)對測試實例的每個步驟遍歷全部執(zhí)行行為。這樣,可對每個步驟測試各個執(zhí)行方法的眾多組合,從而提供更大的綜合性。本發(fā)明可對測試實例的每個步驟使能從執(zhí)行方法的特定組合測試缺陷,其中該缺陷先前未受到注意。此外,本發(fā)明提供用準確的執(zhí)行行為來重新進行該測試實例以確定該缺陷是否已修復(fù)。
      示例計算環(huán)境圖1和以下討論旨在提供一種本發(fā)明的示例實施例可在其中實現(xiàn)的適當計算環(huán)境的簡要一般說明。然而,應(yīng)當理解手持式、便攜式以及所有類型的其它計算裝置可預(yù)期用于本發(fā)明。盡管以下所述為通用計算機,但僅是一個示例。本發(fā)明還可在與網(wǎng)絡(luò)服務(wù)器互操作并交互的瘦客戶機上操作。因而,本發(fā)明的示例實施例可在其中僅含極少或最少客戶機資源的網(wǎng)絡(luò)化主機服務(wù)的環(huán)境中實現(xiàn),例如其中客戶機裝置僅用作萬維網(wǎng)的瀏覽器或接口的網(wǎng)絡(luò)化環(huán)境。
      盡管不是必需的,本發(fā)明可通過由開發(fā)者或測試者使用和/或包括在網(wǎng)絡(luò)瀏覽軟件中的應(yīng)用程序編程接口(API)來實現(xiàn),它將在諸如程序模塊的由一個或多個計算機(例如客戶機工作站、服務(wù)器、或其它裝置)執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)、以及其它類型的結(jié)構(gòu)。通常,程序模塊的功能可按需在各個實施例中組合或分布。此外,本領(lǐng)域技術(shù)人員將理解本發(fā)明可在其它計算機系統(tǒng)配置中實踐。適用于本發(fā)明的其它眾所周知的計算系統(tǒng)、環(huán)境和/或配置包括,但不限于,個人計算機(PC)、自動取款機(ATM)、服務(wù)器計算機、手持式或膝上型裝置、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、或可編程的電子消費品、網(wǎng)絡(luò)PC、小型計算機、大型計算機等等。本發(fā)明的實施例還可在任務(wù)由經(jīng)通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸介質(zhì)鏈接的遠程處理裝置執(zhí)行的分布式計算環(huán)境中實踐。在分布式計算環(huán)境中,程序模塊可置于包括存儲器存儲裝置的本地和遠程計算機存儲介質(zhì)中。
      因而圖1示出本發(fā)明可在其上實現(xiàn)的適當計算系統(tǒng)環(huán)境100的示例,盡管如上闡明的,該計算系統(tǒng)環(huán)境100僅是適當計算環(huán)境的一個示例,并非旨在提出對本發(fā)明使用或功能性范圍作任何限制。計算環(huán)境100也不應(yīng)被解釋為對示例性操作環(huán)境100中所示的任一組件或其組合有任何依賴性或任何需求。
      參照圖1,用于實現(xiàn)本發(fā)明的示例系統(tǒng)包括以計算機110形式的通用計算裝置。計算機110的組件可包括,但不限于,處理單元120、系統(tǒng)存儲器130以及把包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可能是若干總線結(jié)構(gòu)類型中的任何一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用多種總線架構(gòu)的任一種的本地總線。作為示例,而非限制,這些架構(gòu)包括工業(yè)標準架構(gòu)(ISA)總線、微信道架構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子標準協(xié)會(VESA)局部總線和外圍部件互連(PCI)總線(也稱為Mezzanine總線)。
      計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是能被計算機110訪問的任何可用介質(zhì),并包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例,而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以任何方法或技術(shù)實現(xiàn)、用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括但不限于RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字化多功能光盤(DVD)或其它光學(xué)存儲技術(shù)、磁盒、磁帶、磁盤存儲器或其它磁性存儲設(shè)備、或任何其它可用于存儲所需信息并可由計算機110訪問的介質(zhì)。通信介質(zhì)通常在諸如載波或其它傳輸機制的已調(diào)制數(shù)據(jù)信號中體現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù),且包括任何信息輸送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”意指以在信號中編碼信息的方式設(shè)置或改變其一個或多個特征的信號。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接連線的有線介質(zhì),和諸如聲學(xué)、射頻(RF)、紅外線和其它無線介質(zhì)的無線介質(zhì)。以上任何介質(zhì)的組合也應(yīng)包括在計算機可讀介質(zhì)的范圍中。
      系統(tǒng)存儲器130包括諸如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132的易失性和/或非易失性存儲器形式的計算機可讀介質(zhì)。包含有助于如起動時在計算機110內(nèi)元件間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)133通常存儲在ROM 131中。RAM 132通常包含可被處理單元120立即訪問和/或當時正被操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136、和程序數(shù)據(jù)137。RAM 132可包含其它數(shù)據(jù)和/或程序模塊。
      計算機110還可包括其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。作為示例,圖1示出了讀取和寫入不可移動、非易失性磁性介質(zhì)的硬盤驅(qū)動器141,讀取和寫入可移動、非易失性磁盤152的磁盤驅(qū)動器151,讀取和寫入可移動、非易失性光盤156,諸如CD-ROM或其它光學(xué)介質(zhì)的光盤驅(qū)動器155。其它也在示例性計算環(huán)境中使用的可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括,但不限于,如磁帶、閃存卡、數(shù)字化多功能光盤、數(shù)字化錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器141通常通過諸如接口140的不可移動存儲器接口與系統(tǒng)總線121連接,而磁盤驅(qū)動器151和光盤驅(qū)動器155通常通過諸如接口150的可移動存儲器接口與系統(tǒng)總線121連接。
      如上所述并如圖1所示的驅(qū)動器及其相關(guān)聯(lián)的計算機存儲介質(zhì)為計算機110提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、和其它數(shù)據(jù)的存儲。在圖1中,例如,硬盤驅(qū)動器141被示為存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146、和程序數(shù)據(jù)147。注意這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136、和程序數(shù)據(jù)137相同或不同。在此給予操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146、和程序數(shù)據(jù)147的編號不同至少說明他們是不同的副本。用戶可通過諸如鍵盤162、以及通常稱為鼠標、跟蹤球或觸摸板等的定位裝置161的輸入裝置向計算機110輸入命令和信息。其它輸入裝置(未示出)可包括話筒、游戲桿、游戲墊、衛(wèi)星接收天線、掃描儀等等。這些和其它輸入設(shè)備常常通過與系統(tǒng)總線121耦合的用戶輸入接口160與處理單元120相連,但也可通過諸如并行端口、游戲端口或通用串行總線(USB)的其它接口和總線結(jié)構(gòu)連接。
      監(jiān)視器191或其它類型的顯示設(shè)備也可通過諸如視頻接口190的接口與系統(tǒng)總線121相連。除監(jiān)視器191以外,計算機還可包括諸如揚聲器197和打印機196的其它輸出設(shè)備,它們通過輸出外圍接口195相連。
      計算機110可以在使用與一臺或多臺遠程計算機,諸如遠程計算機180的邏輯連接的網(wǎng)絡(luò)化環(huán)境中運行。遠程計算機180可以是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等裝置或其它公共網(wǎng)絡(luò)節(jié)點,而且通常包括上述與個人計算機110相關(guān)的許多或全部組件,盡管在圖1中僅圖示了存儲器存儲設(shè)備181。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)化環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)上是常見的。
      當用于LAN網(wǎng)絡(luò)化環(huán)境中時,計算機110通過網(wǎng)絡(luò)接口或適配器170與LAN171連接。當用于WAN網(wǎng)絡(luò)化環(huán)境中時,計算機110通常包括調(diào)制解調(diào)器172或其它用于在諸如因特網(wǎng)的廣域網(wǎng)173中建立通信的裝置??梢允莾?nèi)置式或外置式的調(diào)制解調(diào)器172與系統(tǒng)總線121通過用戶輸入接口160或其它適當機制連接。在網(wǎng)絡(luò)化環(huán)境中,與計算機110相關(guān)的程序模塊或其一部分可存儲在遠程存儲器存儲裝置中。作為示例,而非限制,圖1示出了駐留于遠程計算機180中的遠程應(yīng)用程序185。應(yīng)當理解,所示網(wǎng)絡(luò)連接是示例性的,且也可以使用其它用于在計算機間建立通信連接的方法。
      本領(lǐng)域技術(shù)人員可理解,計算機110或其它客戶機裝置可用作計算機網(wǎng)絡(luò)的一部分。這樣,本發(fā)明適合具有任何數(shù)量存儲器或存儲單元的任何計算機系統(tǒng)、以及在任何數(shù)量存儲單元或存儲體上發(fā)生的任何數(shù)量的應(yīng)用程序和進程。本發(fā)明一實施例可應(yīng)用于帶有可用于網(wǎng)絡(luò)環(huán)境的具有遠程或本地存儲器的服務(wù)器計算機和客戶計算機的環(huán)境。本發(fā)明還可應(yīng)用于具有編程語言功能、編譯和執(zhí)行功能的單機計算裝置。
      通過執(zhí)行行為提取來測試應(yīng)用程序的系統(tǒng)和方法圖2示出根據(jù)本發(fā)明一實施例用于對執(zhí)行行為提取的測試實例實現(xiàn)的系統(tǒng)5的框圖。系統(tǒng)5可包括以下的一個或多個測試執(zhí)行器50、測試實例20、行為管理器30、寄存器31、以及行為自動化庫40。
      測試執(zhí)行器50可以是一個測試執(zhí)行器50a或可以是多個測試執(zhí)行器50a-c等。每個測試執(zhí)行器都駐留于一個或多個計算機上,每個計算機可以是參照圖1所述的計算機110。測試執(zhí)行器50a可以都運行諸如測試實例20的同一測試實例或可各自運行不同的測試實例。此外,測試執(zhí)行器50a-c可與一行為管理器30通信或可各自與相應(yīng)行為管理器(未示出)通信。測試執(zhí)行器50a-c可通過用戶(未示出)例如在測試執(zhí)行器上按壓按鍵來執(zhí)行測試實例20?;蛘?,測試執(zhí)行器50a-c可以是調(diào)用開始事件來執(zhí)行測試實例20的實驗室測試自動化項目的一部分。該測試執(zhí)行器50a-c也可通過其它方式來執(zhí)行測試實例20。
      測試實例20可測試應(yīng)用程序的一個或多個組件或?qū)傩?。?yīng)用程序可以是任何進程、機器、制造品、合成品、程序、軟件、硬件、裝置、機制、或材料或其任何改進。例如,應(yīng)用程序可以是在任何計算系統(tǒng)或環(huán)境上運行的軟件程序。還有例如,應(yīng)用程序可以是計算機硬件。相反,應(yīng)用程序可以是一種門測試機制,其中大槌在門把手上敲打以測試門把手、附在門上的鉸鏈的強度、彈性、或可操作性。應(yīng)用程序可以是在首次開發(fā)中、先前應(yīng)用程序的更新版本、終端用戶已經(jīng)用某些方法更改的先前發(fā)行的應(yīng)用程序等。
      測試實例20可執(zhí)行應(yīng)用程序的功能、集成、或其它測試。功能測試可包括對應(yīng)用程序的特定功能組件的測試。在功能級別上,組件可包括每個都需要測試的眾多行為。此外,對組件的執(zhí)行行為的每個組合可能都需要測試以確保所有可能組合的測試并覆蓋所有不同可能。集成測試對兩個或多個交互組件組合、一起工作、并互相影響的方式加以測試。
      測試實例20可包括或需要一個或多個執(zhí)行行為的執(zhí)行?!皥?zhí)行行為”是根據(jù)應(yīng)用程序或要由應(yīng)用程序執(zhí)行的動作的描述。執(zhí)行行為可以是例如“打開新文檔”或“畫出一藍色長方形”或“用大槌敲門把手”??捎胁煌愋偷膱?zhí)行行為。
      一類執(zhí)行行為只能具有一種可能執(zhí)行方法。例如,這樣一種執(zhí)行行為可能需要應(yīng)用程序通過按壓鍵盤上的空格鍵來調(diào)用文本框上的按鍵。由于只能用一種方式執(zhí)行該行為,該執(zhí)行行為可標記為“實施”(“do it”)行為。在執(zhí)行之前無需任何其它信息或動作就可執(zhí)行“實施”行為。“實施”行為包括在系統(tǒng)5中作為測試實例20的“實施”行為。執(zhí)行行為可以是由其它子執(zhí)行行為組成的父執(zhí)行行為。因為父執(zhí)行行為由可對其作選擇的多個子執(zhí)行行為組成,這樣的父執(zhí)行行為可稱為“選擇任一”(“choose any”)行為。該父執(zhí)行行為可以是“選擇任一”行為并可使用其它執(zhí)行行為來執(zhí)行。
      測試實例20可包括對“選擇任一”行為21的調(diào)用,該行為請求執(zhí)行行為管理器從行為自動化庫40中選擇一行為。測試實例20還可包括對“實施”行為22的調(diào)用,該行為啟動存儲在行為自動化庫40中的“實施”行為的執(zhí)行。
      圖3是示出幾個實例執(zhí)行行為并示出實例執(zhí)行行為之間關(guān)系的框圖200?!斑x擇任一”行為210可用來打開新文檔。打開新文檔的“選擇任一”行為可通過三個子執(zhí)行行為的任一個來完成?!斑x擇任一”行為210的一個子執(zhí)行行為是使用鼠標打開新文檔的另一個“選擇任一”行為215?!斑x擇任一”行為210的另一個子執(zhí)行行為可以是“實施”行為220,它可通過按壓鍵盤上的空格鍵調(diào)用文本框上的按鍵來打開新文檔。“選擇任一”行為210的第三個子執(zhí)行行為是如下所述的“以任何順序執(zhí)行”(“execute in any sequence”)行為230。如下所述,執(zhí)行行為管理器30可選擇子執(zhí)行行為215、220、230之一用于執(zhí)行“選擇任一”行為210。
      如上所述,“選擇任一”行為210的第一個子執(zhí)行行為本身是使用鼠標打開新文檔的“選擇任一”行為215。該“選擇任一”行為215可包括兩個子行為。一個子行為是使用鼠標點擊某一按鍵來打開新文檔的“實施”行為217。如果執(zhí)行行為管理器30選擇“實施”行為217,則該行為被發(fā)送回“選擇任一”行為210以便執(zhí)行?;蛘?,執(zhí)行行為管理器30可查看“選擇另一”行為215的另一個子行為,它可以是使用鼠標調(diào)用菜單來打開新文檔的“選擇另一”行為216。
      “選擇另一”行為216還可包括兩個子行為。一個子行為可以是使用鼠標調(diào)用菜單并點擊菜單上的“新文件”按鍵來打開新文檔的“實施”行為218。第二子行為可以是使用鼠標調(diào)用菜單并使用直接調(diào)用應(yīng)用程序菜單項的鍵盤“熱鍵”或記憶快捷鍵來打開新文檔的“實施”行為219。熱鍵可調(diào)用菜單上的“新文件”按鍵。因此“實施”行為219可以是“選擇任一”行為210的“曾孫”,并可以是選擇執(zhí)行“選擇任一”行為210的“實施”行為。
      除了“實施”和“選擇任一”行為之外,還可以有其它執(zhí)行行為??梢杂羞x擇所有子行為以任何順序執(zhí)行的“以任何順序執(zhí)行”行為230。例如,如果“以任何順序執(zhí)行”行為包括三個子行為-“實施”行為231、“實施”行為232和“實施”行為233,則執(zhí)行行為管理器30可將每個子“實施”行為231、232和233發(fā)送到“選擇任一”行為210以便以任何順序執(zhí)行。
      此外,還可以有未在圖3中示出的其它執(zhí)行行為。可有一種需要選擇子行為按要求的順序執(zhí)行的“按順序執(zhí)行”(“execute in sequence”)行為。還有需要滿足某些條件才能執(zhí)行一個或多個執(zhí)行行為的“條件實施”(“do until”)行為。例如“條件實施”行為可要求它執(zhí)行了20次后才執(zhí)行子行為。應(yīng)理解,在此所述的執(zhí)行行為是執(zhí)行行為的示例,且本領(lǐng)域技術(shù)人員將理解可有其它在本發(fā)明實施例中使用的執(zhí)行行為。
      每個執(zhí)行行為可包含特性或?qū)傩?。這些特性或?qū)傩钥捎美鏑#或.NET特性機制來編寫。該機制可將各種屬性應(yīng)用于這些行為,包括用于這些行為的這些方法。例如,一屬性可指定使用鼠標來執(zhí)行執(zhí)行行為,而另一屬性可指定使用鍵盤來執(zhí)行。
      執(zhí)行行為可以不“知道”它們是諸如“選擇任一”行為的更大父行為的一部分。然而,執(zhí)行行為可知道它們的子行為。這也可通過例如C#或.NET特性來定義。即,可將特性賦予將其標記為“選擇任一”行為的執(zhí)行行為。該特性還可提供帶有其子行為的“選擇任一”行為。
      再參看圖2,如上所述,測試示例20可包括多個執(zhí)行行為。例如,用于圖形應(yīng)用程序的測試示例20可調(diào)用在文檔的特定位置繪制藍色長方形。這種測試示例20可包括打開新文檔、在特定位置畫一長方形、以及將該長方形涂成藍色的步驟。該測試實例的每個步驟可以是“選擇任一”行為21、“實施”行為22、或任何其它類型的執(zhí)行行為。例如,打開新文檔的步驟可以是包含諸如使用鼠標調(diào)用菜單來打開新文檔、或使用鼠標調(diào)用工具欄上工具來打開新文檔、或使用鍵盤調(diào)用菜單來打開新文檔的“實施”行為的“選擇任一”行為21。繪制并涂色長方形的步驟都可以是需要由各個子“實施”行為調(diào)用項目模板或菜單的“選擇任一”行為21??捎衫缬^看計算機屏幕有困難的用戶使用菜單、鍵盤、對象或可訪問應(yīng)用程序編程接口來調(diào)用菜單??墒褂面I盤來發(fā)出“熱鍵”或箭頭鍵以在菜單上導(dǎo)航。
      在執(zhí)行測試實例20之后,如果步驟包括“實施”行為22,則測試實例20可執(zhí)行該行為。如果例如只有一種完成該步驟的執(zhí)行方法則測試實例可包含一“實施”行為步驟。例如,步驟需要通過按壓鍵盤上的“enter”鍵來調(diào)用一按鍵。因為只有一種執(zhí)行該行為的方法,測試實例20無需調(diào)用執(zhí)行行為管理器就可執(zhí)行該“實施”行為。
      然而,如果步驟包括例如“選擇任一”行為21,則執(zhí)行行為管理器30可選擇“選擇任一”行為21的子執(zhí)行行為并將選定的行為發(fā)送給父“選擇任一”行為以便執(zhí)行。
      執(zhí)行行為管理器30可駐留于參照圖1所述的計算機110上。執(zhí)行行為管理器30可包含執(zhí)行行為的寄存器31。執(zhí)行行為寄存器31可包括諸如“選擇任一”行為21的父執(zhí)行行為以及相關(guān)子行為的列表。使用寄存器31,執(zhí)行行為管理器30可確定哪個或哪些子行為屬于例如父“選擇任一”行為21。
      每個執(zhí)行行為或每個執(zhí)行行為的編碼可位于與執(zhí)行行為管理器30通信的行為自動化庫40中。執(zhí)行行為管理器30可負責處理來自測試實例20的“選擇任一”行為21的對選擇用于執(zhí)行的子行為的請求。
      如所述,例如在執(zhí)行包含“選擇任一”行為21的測試實例20之后,“選擇任一”行為21可調(diào)用執(zhí)行行為管理器30以便該管理器30選擇一子(或?qū)O等)“實施”行為并向“選擇任一”行為21將其送回。該行為管理器可審查與父“選擇任一”執(zhí)行行為相關(guān)聯(lián)的子行為列表并選擇一個子執(zhí)行行為。在完成該操作的過程中,執(zhí)行行為管理器30可使用例如反射(reflection)方法。反射方法可包括使能動態(tài)編程并涉及通過程序查看諸如執(zhí)行行為的對象的特性的一種方法。通過該方法,執(zhí)行行為管理器30可查看諸如執(zhí)行行為的對象并確定其名字、執(zhí)行行為所支持的方法、以及其屬性或特性。執(zhí)行行為管理器30然后可確定例如“選擇任一”行為21的子執(zhí)行行為的屬性或特性,并選擇子行為便于執(zhí)行(假設(shè)子行為是“實施”行為)。通過使用反射方法,可例示子行為并將其傳回“選擇任一”行為21以便執(zhí)行。如果子執(zhí)行行為本身也是“選擇任一”行為,則重復(fù)該順序直到選擇與“選擇任一”行為21相關(guān)的“實施”行為?;蛘撸绻拇嫫魇菙?shù)據(jù)庫或其它數(shù)據(jù)存儲器,則如果寄存器用一功能指針集初始化,那么反射方法就無需執(zhí)行一執(zhí)行方法了。此外,本領(lǐng)域技術(shù)人員將理解,寄存器在測試實例執(zhí)行之前就全部初始化了,而不是在測試實例執(zhí)行期間按要求初始化。
      執(zhí)行行為管理器30可選擇在隊列中下一個要為“選擇任一”行為21執(zhí)行的子執(zhí)行行為。例如,包含“選擇任一”行為21的測試實例20第一次運行時,執(zhí)行行為管理器30可選擇需要例如使用鼠標來調(diào)用菜單來打開新文檔的“實施”行為。當測試實例20再次運行時,執(zhí)行行為管理器30可接著選擇需要使用鍵盤熱鍵來打開新文檔的“實施”行為。這樣執(zhí)行行為管理器30可自動地交替變化父“選擇任一”行為21的執(zhí)行方法而無需測試實例20指定執(zhí)行方法。執(zhí)行行為從測試實例20的提取允許等量地測試每種執(zhí)行方法而無需編寫不同的測試實例20以說明執(zhí)行測試實例20的不同方法。當然也可構(gòu)想各種其它選擇算法。
      應(yīng)注意,即使父行為是測試實例20的“選擇任一”行為21,子執(zhí)行行為并不總是被啟用且可由執(zhí)行行為管理器30選擇。例如,“選擇任一”行為21有5個不同的繪制長方形的子“實施”行為。一個子“實施”行為是用鼠標徒手畫長方形。如果測試實例20需要畫精確尺寸的長方形,則如果執(zhí)行行為管理器30在查看行為的屬性或特性時確定該子執(zhí)行行為并非被設(shè)計用于畫精確尺寸的長方形,不啟用徒手畫長方形的子“實施”行為。因此,執(zhí)行行為管理器可通過查看執(zhí)行行為的屬性或特性來確定不應(yīng)啟用哪個“實施”行為?;蛘?,執(zhí)行行為管理器30可通過例示“實施”行為并確定該子執(zhí)行行為是否能畫精確尺寸的長方形(沿用上例)來確定不應(yīng)啟用哪個“實施”行為?;蛘?,執(zhí)行行為管理器可檢查附于子行為的屬性或在其它地方查找以找到用來確定啟用哪個行為的方法。
      可獨立向執(zhí)行行為管理器30提供全局加權(quán)因子,從而作執(zhí)行行為管理器30可更經(jīng)常地選擇一子“實施”行為或排除其它子“實施”行為。執(zhí)行行為管理器30可基于與每個行為相關(guān)聯(lián)的權(quán)重來判定向測試示例20的“選擇任一”行為21發(fā)送哪些行為。執(zhí)行行為管理器可基于這些權(quán)重考慮來構(gòu)建一個動作的全矩陣。這樣,測試者可按需比其它執(zhí)行行為更經(jīng)常地測試某些執(zhí)行行為。如果例如在應(yīng)用程序中已更改了鍵盤操作,則這些加權(quán)是有用的。當“選擇任一”行為具有指向鼠標輸入和鍵盤輸入的子“實施”行為時,可應(yīng)用全局加權(quán)以便執(zhí)行行為管理器可選擇例如80%的時間、100%的時間、或96.3%的時間調(diào)用鍵盤輸入的子行為。這樣,鍵盤輸入可比未應(yīng)用加權(quán)得到更全面的測試。此外,如果熱鍵在應(yīng)用程序中不工作,則可應(yīng)用全局加權(quán)來告訴執(zhí)行行為管理器30對任何測試實例都不要使用熱鍵。這樣,可執(zhí)行測試實例而不會產(chǎn)生由不工作的熱鍵所導(dǎo)致的失敗。
      局部加權(quán)可用來撤銷全局加權(quán)。局部加權(quán)可包括為測試實例20的一部分,并可應(yīng)用于特定行為而不是應(yīng)用于行為自動化庫40中的所有行為。例如,如果全局加權(quán)排除使用熱鍵,且測試者想要在測試實例的一個步驟期間使用熱鍵,則可在測試實例20內(nèi)使用局部加權(quán)來告訴執(zhí)行行為管理器30選擇包括使用熱鍵的子“實施”行為。這樣,局部加權(quán)撤銷了任何可應(yīng)用的全局加權(quán)。
      在本發(fā)明的另一實施例中,執(zhí)行行為管理器30可允許測試實例20執(zhí)行的“可重新進行性”(replayability)。這樣,可執(zhí)行回歸(regression)測試-以同樣的方法測試先前導(dǎo)致失敗或缺陷的應(yīng)用程序以確定該問題是否已解決。執(zhí)行行為管理器30可記憶或記錄在測試實例20期間執(zhí)行的執(zhí)行行為。這樣,在被調(diào)用時,執(zhí)行行為管理器30就能夠完全像先前執(zhí)行地一樣來重新進行測試實例20。如果測試實例導(dǎo)致失敗,并且已作改變來修復(fù)問題,測試者想要執(zhí)行回歸測試以確保已解決了該問題。為了確保已解決了該問題,測試實例20的“選擇任一”行為21可能想要使用由執(zhí)行行為管理器30發(fā)送的在導(dǎo)致失敗的測試實例運行期間的同一子“實施”行為來執(zhí)行。因此執(zhí)行行為管理器30可記錄在先前測試實例執(zhí)行期間由執(zhí)行行為管理器30發(fā)送的每個“實施”行為,并還記錄執(zhí)行這些“實施”行為的順序。
      此外,應(yīng)注意執(zhí)行行為管理器30可在多個客戶機上運行的多個測試實例上工作。例如,在測試應(yīng)用程序時,一次可有每個運行5000個對于該應(yīng)用程序的測試實例的20個計算機。在本發(fā)明一實施例中,可有一執(zhí)行行為管理器與執(zhí)行測試實例的所有客戶機通信。在一可選實施例中,每個客戶機可包括一個執(zhí)行行為管理器30。
      圖4示出根據(jù)本發(fā)明一實施例用于執(zhí)行行為從測試實例中提取的測試實例實現(xiàn)的方法250的流程圖。在步驟251,測試實例20的“選擇任一”行為21可通知執(zhí)行行為管理器30??烧埱髨?zhí)行行為管理器選擇一子執(zhí)行行為—“實施”行為,并將該子執(zhí)行行為發(fā)送給“選擇任一”行為21。在步驟252,執(zhí)行行為管理器30可查看“選擇任一”行為21的子行為。在步驟253,執(zhí)行行為管理器30可選擇一子行為并將該選定子行為發(fā)送給父“選擇任一”行為以便執(zhí)行。
      圖5A-5B示出根據(jù)本發(fā)明另一實施例用于執(zhí)行行為從測試實例中提取的測試實例實現(xiàn)的方法300的流程圖。方法300可從具有測試實例開始事件的步驟305開始。開始事件可以是測試者按壓諸如圖2測試執(zhí)行器50a的客戶計算機上按鍵,這可向測試執(zhí)行器50a發(fā)送信號以運行測試實例20?;蛘唛_始事件可以是例如監(jiān)視運行測試實例20或多個測試實例的諸如測試執(zhí)行器50a-c的一個或多個客戶計算機的實驗室自動化過程。該實驗室自動化過程還可創(chuàng)建或初始化執(zhí)行行為管理器30,從而執(zhí)行行為管理器30準備好遵照來自測試實例20或多個測試實例的請求行事。
      在開始事件之后,可在步驟310執(zhí)行測試實例20。測試實例可例如指向圖形應(yīng)用程序并可包括例如打開新文檔、在新文檔上繪制長方形、以及將該長方形涂成藍色的步驟。應(yīng)用于測試實例20的每個步驟(即打開新文檔、繪制長方形、以及將該長方形涂成藍色)的方法300都相同。在步驟315,執(zhí)行測試實例的步驟。
      如果測試實例20的步驟是“實施”行為22,則測試實例20可在步驟320執(zhí)行該執(zhí)行行為而不涉及執(zhí)行行為管理器30。如果該步驟是例如“選擇任一”行為21,則該“選擇任一”行為21可在步驟325請求執(zhí)行行為管理器30選擇一子“實施”行為以便執(zhí)行。例如,測試實例20的用于創(chuàng)建新文檔的步驟可以是具有兩個子“實施”行為的“選擇任一”行為,一個子行為用于使用鼠標調(diào)用菜單來創(chuàng)建新文檔而另一個用于使用鍵盤調(diào)用菜單來創(chuàng)建新文檔。
      在步驟330,執(zhí)行行為管理器30可在行為寄存器31上搜索該“選擇任一”行為。在一可選實施例中,執(zhí)行行為管理器30可通過查看執(zhí)行行為的圖形或?qū)傩詠泶_定“選擇任一”行為21的子行為。
      在步驟335-350,執(zhí)行行為管理器30可確定應(yīng)向“選擇任一”行為21發(fā)送哪個子行為以便執(zhí)行。執(zhí)行行為管理器在決定的過程中可考慮眾多因素。執(zhí)行行為管理器可在步驟335確定是否不應(yīng)允許任一子行為。即,如果測試實例的該步驟是通過執(zhí)行“選擇任一”行為的子行為之一而不能滿足“選擇任一”行為的,則執(zhí)行行為管理器可確定不應(yīng)允許該子行為。如上所釋,這種情形的一個示例是包括5個子“實施”行為的用于繪制長方形的“選擇任一”行為21。子“實施”行為之一是用鼠標徒手畫長方形。如果測試實例20想要畫精確尺寸的長方形,則如果執(zhí)行行為管理器30確定該子執(zhí)行行為并非被設(shè)計用于畫精確尺寸的長方形,不啟用徒手畫長方形的子“實施”行為。
      然后,在步驟340,執(zhí)行行為管理器30可確定測試實例20或任何其它機制是否已向選擇子“實施”行為施加了一局部加權(quán)。如果有局部加權(quán),則執(zhí)行行為管理器可應(yīng)用該加權(quán)。在步驟345,執(zhí)行行為管理器30可確定在選擇子行為之前是否應(yīng)該應(yīng)用任一全局加權(quán)。如果局部和全局加權(quán)都應(yīng)用于執(zhí)行行為的同一屬性,則執(zhí)行行為管理器30可在選擇子行為時考慮兩種加權(quán)。例如,全局加權(quán)可要求20%的時間使用鼠標。同時局部加權(quán)可要求50%的時間使用鼠標。執(zhí)行行為管理器30在選擇子行為時可組合或考慮兩種加權(quán)。此外,應(yīng)理解全局和局部加權(quán)可以是互不相關(guān)的。即,全局加權(quán)可要求不使用鼠標而局部加權(quán)可要求不使用鍵盤。執(zhí)行行為管理器30可在選擇子行為時考慮互不相關(guān)的加權(quán)。
      在應(yīng)用適當權(quán)重之后或者如果沒有可應(yīng)用的全局加權(quán),則執(zhí)行行為管理器可在步驟350選擇一子行為。該選擇可基于先前的選擇。例如,如果先前選定的子行為是使用鼠標調(diào)用菜單來打開一新文檔,則執(zhí)行行為管理器30可選擇使用鍵盤調(diào)用菜單來打開新文檔的不同子行為。這樣,執(zhí)行行為管理器30可提供所有執(zhí)行行為的測試而無需將各個執(zhí)行行為寫入每個測試實例。此外,測試實例甚至可不知道使用哪種執(zhí)行方法來打開新文檔而只知道新文檔被打開。
      然而,如果對執(zhí)行行為管理器30對子行為的選擇施加了全局加權(quán),則執(zhí)行行為管理器30可將該加權(quán)應(yīng)用于它對適當子行為的選擇中。例如,如果全局加權(quán)提供80%的時間應(yīng)選擇使用鼠標的執(zhí)行行為而20%的時間應(yīng)選擇使用鍵盤的執(zhí)行行為則執(zhí)行行為管理器30應(yīng)遵從該全局加權(quán)進行它的選擇。
      在步驟350確定應(yīng)選擇哪個子行為之后,執(zhí)行行為管理器30然后可在步驟355查看行為自動化庫40以確定是否先前已創(chuàng)建了選定子行為?;蛘?,執(zhí)行行為管理器30可在行為自動化庫40中查找編譯時可創(chuàng)建子執(zhí)行行為的功能指針。如果還未創(chuàng)建子執(zhí)行行為或者沒有功能指針,則在步驟360執(zhí)行行為管理器可創(chuàng)建選定的子執(zhí)行行為。例如,如果在步驟350執(zhí)行行為管理器選擇使用鼠標調(diào)用菜單來打開新文檔的子行為,且在步驟355執(zhí)行行為管理器確定使用鼠標調(diào)用菜單來打開新文檔的該子執(zhí)行行為不存在,則在步驟360執(zhí)行行為管理器30可創(chuàng)建該子行為。如上所釋,執(zhí)行行為管理器30可通過使用執(zhí)行行為的概況文件或特性并例示存儲在行為自動化庫中的代碼來創(chuàng)建“實施”執(zhí)行行為。如果在步驟355,執(zhí)行行為管理器30確定該子行為存在,則執(zhí)行行為管理器可忽略步驟360?;蛘?,應(yīng)理解為步驟355是不必要的。如果從外部數(shù)據(jù)存儲器來填充寄存器31,則步驟355是必要的。然而,如果寄存器31在測試實例執(zhí)行之前或期間動態(tài)填充,則執(zhí)行行為管理器30可假設(shè)寄存器31不包括不存在的任何行為。
      在選擇存在的或新創(chuàng)建的子行為之后,執(zhí)行行為管理器30可在步驟365記錄對子行為的選擇。如上所釋,這樣,執(zhí)行行為管理器30能夠在需要時完全向先前執(zhí)行一樣地重新執(zhí)行測試實例20。這在測試應(yīng)用程序以確定是否消除缺陷時是重要的。
      在步驟370,執(zhí)行行為管理器可將選定的子“實施”行為發(fā)回測試實例20的父“選擇任一”行為21以便執(zhí)行。在步驟375,測試實例20的“選擇任一”行為21可執(zhí)行由執(zhí)行行為管理器30發(fā)送的行為?;蛘撸瑴y試實例20剩下的步驟也可以方法300步驟315-375中所示的相似方式來執(zhí)行。
      在此所述的各種技術(shù)可用硬件、軟件、或在適當時用兩者的組合來實現(xiàn)。因而,本發(fā)明的方法和裝置或其某些方面或部分可采取包括在諸如軟盤、CD-ROM、硬盤、或任何其它機器可讀的存儲介質(zhì)的有形介質(zhì)中的程序代碼(即指令)的形式,其中當程序代碼由諸如計算機的機器載入并執(zhí)行時,該機器變成實踐本發(fā)明的裝置。程序代碼在可編程計算機上執(zhí)行的情形中,計算裝置通常包括處理器、處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲單元)、至少一個輸入裝置、以及至少一個輸出裝置??衫缤ㄟ^使用數(shù)據(jù)處理API等利用本發(fā)明的領(lǐng)域?qū)S镁幊棠P头矫娴膭?chuàng)建和/或?qū)崿F(xiàn)的一個或多個程序,最好用高級過程或面向?qū)ο蟮木幊陶Z言來實現(xiàn)以與計算機系統(tǒng)通信。然而,如果需要程序也可用匯編或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯或解釋語言,并可與硬件實現(xiàn)相結(jié)合。
      盡管本發(fā)明已結(jié)合各附圖的優(yōu)選實施例進行了描述,可以理解可使用其它實施例或可對所述實施例作更改和添加來執(zhí)行本發(fā)明的相同功能而不從其背離。在說明書中,提供了處理藍色長方形的主要示例。該示例和任何其它示例是為加強理解而提供的。本發(fā)明決不限于在此提供的示例中。此外,本發(fā)明一實施例可包括在涉及任何應(yīng)用程序的涉及任何進程、機器、制造、合成品、程序、軟件、硬件、裝置、機制、或材料、或其任何改進的任何測試中因此,本發(fā)明應(yīng)不限于任一單個實施例,而應(yīng)根據(jù)所附權(quán)利要求在寬度和范圍內(nèi)作解釋。
      權(quán)利要求
      1.一種用于選擇用于執(zhí)行一動作的執(zhí)行行為的系統(tǒng),其特征在于,包括一執(zhí)行行為管理器,用于選擇所述執(zhí)行行為;以及一行為自動化庫,用于向所述執(zhí)行行為管理器提供有關(guān)所述執(zhí)行行為的數(shù)據(jù)。
      2.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一行為寄存器,所述行為寄存器包括多個執(zhí)行行為的列表。
      3.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器確定用于執(zhí)行來自所述行為寄存器的所述動作的可能執(zhí)行行為。
      4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述動作由多個執(zhí)行行為之一執(zhí)行。
      5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述動作通過執(zhí)行多個執(zhí)行行為的序列來執(zhí)行。
      6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器以任何順序執(zhí)行所述序列。
      7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器基于全局加權(quán)和局部加權(quán)的至少之一選擇所述執(zhí)行行為。
      8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述局部加權(quán)撤銷所述全局加權(quán)。
      9.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器基于先前選定的執(zhí)行行為選擇所述執(zhí)行行為。
      10.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器選擇被允許的所述執(zhí)行行為。
      11.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述動作是功能測試、功能測試中的步驟、集成測試、以及集成測試中的步驟的至少之一。
      12.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器例示由所述行為自動化庫所提供的數(shù)據(jù)以創(chuàng)建所述選定執(zhí)行行為。
      13.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為包括若干屬性。
      14.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器記錄一選定的執(zhí)行行為。
      15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述執(zhí)行行為管理器重新進行所述選定的執(zhí)行行為。
      16.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述執(zhí)行行為包括通過鼠標、鍵盤、可訪問應(yīng)用程序編程接口、以及對象模型的至少之一的輸入。
      17.一種具有存儲其上的數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì),其特征在于,包括存儲在行為自動化庫中的一數(shù)據(jù)字段,包括表示多個執(zhí)行行為的數(shù)據(jù),其中每個執(zhí)行行為執(zhí)行由測試實例應(yīng)用的動作。
      18.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)向執(zhí)行行為管理器提供表示執(zhí)行行為的數(shù)據(jù)。
      19.一種用于選擇執(zhí)行一動作的執(zhí)行行為的方法,其特征在于,包括接收所述動作;查看用于執(zhí)行所述動作的多個執(zhí)行行為;以及從所述多個執(zhí)行行為中選擇一個執(zhí)行行為。
      20.如權(quán)利要求19的方法,其特征在于,所述多個執(zhí)行行為由行為寄存器提供。
      21.如權(quán)利要求19的方法,其特征在于,所述動作是測試實例中的一個步驟。
      22.如權(quán)利要求21的方法,其特征在于,還包括將所述選定的執(zhí)行行為發(fā)送給所述測試實例。
      23.如權(quán)利要求19的方法,其特征在于,所述選擇步驟基于局部加權(quán)和全局加權(quán)的至少之一。
      24.如權(quán)利要求19的方法,其特征在于,還包括創(chuàng)建所述選定執(zhí)行行為。
      25.一種用于選擇執(zhí)行一動作的執(zhí)行行為的方法,其特征在于,包括接收所述動作;查看用于執(zhí)行所述動作的多個執(zhí)行行為;以及選擇執(zhí)行行為預(yù)定序列的每一個。
      26.如權(quán)利要求25的方法,其特征在于,所述執(zhí)行行為系列中的每個執(zhí)行行為按預(yù)定順序選擇。
      27.一種具有用于執(zhí)行各步驟的計算機可執(zhí)行指令的計算機可讀介質(zhì),其特征在于,所述步驟包括接收來自測試實例的一動作;查看能夠執(zhí)行所述動作的多個執(zhí)行行為。
      28.如權(quán)利要求27所述的計算機可讀介質(zhì),其特征在于,還具有用于執(zhí)行從所述多個執(zhí)行行為中選擇一個執(zhí)行行為的步驟的計算機可執(zhí)行指令。
      29.如權(quán)利要求28所述的計算機可讀介質(zhì),其特征在于,還具有用于執(zhí)行將所述選定執(zhí)行行為發(fā)送到所述測試實例的步驟的計算機可執(zhí)行指令。
      30.如權(quán)利要求27所述的計算機可讀介質(zhì),其特征在于,還具有用于執(zhí)行選擇執(zhí)行行為預(yù)定系列的每一個的步驟的計算機可執(zhí)行指令。
      31.如權(quán)利要求30所述的計算機可讀介質(zhì),其特征在于,所述執(zhí)行行為系列中的每個執(zhí)行行為按預(yù)定順序選擇。
      全文摘要
      一種用于將執(zhí)行行為從測試實例中分開并用包括執(zhí)行行為庫或與其通信的執(zhí)行行為管理器來合并執(zhí)行行為的系統(tǒng)和方法。該方法包括選擇用于執(zhí)行測試實例中的步驟或動作的執(zhí)行行為,并將該執(zhí)行行為發(fā)送給測試實例以便執(zhí)行。此外,該系統(tǒng)和方法提供將全局和局部加權(quán)應(yīng)用于執(zhí)行行為選擇過程,并允許用先前執(zhí)行的行為來重新進行測試實例。
      文檔編號G06F11/36GK1755645SQ200510099450
      公開日2006年4月5日 申請日期2005年8月29日 優(yōu)先權(quán)日2004年9月29日
      發(fā)明者A·M·烏爾里希, M·D·加拉赫, M·J·亨特 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1