国产精品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>

      測(cè)試自動(dòng)化的堆棧分層的制作方法

      文檔序號(hào):6642762閱讀:212來(lái)源:國(guó)知局
      專利名稱:測(cè)試自動(dòng)化的堆棧分層的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及軟件測(cè)試,尤其涉及使用分層體系結(jié)構(gòu)來(lái)進(jìn)行自動(dòng)化軟件測(cè)試。
      背景技術(shù)
      軟件開發(fā)生命期中的主要階段是設(shè)計(jì)階段、編碼階段、代碼完成階段、α階段、β階段,以及最后向市場(chǎng)發(fā)行。在設(shè)計(jì)階段期間,將解決軟件產(chǎn)品的客戶問(wèn)題并定義軟件產(chǎn)品的功能。通常,功能規(guī)范的完成標(biāo)志著設(shè)計(jì)階段的結(jié)束。編碼階段開始。當(dāng)代碼寫成但尚未調(diào)試時(shí)則進(jìn)入代碼完成階段。α階段標(biāo)記產(chǎn)品穩(wěn)定的時(shí)間點(diǎn);即,已發(fā)現(xiàn)了大部分的主要缺陷。在β階段,產(chǎn)品幾乎沒(méi)有了所有的主要缺陷;即所剩的缺陷應(yīng)基本上無(wú)害。當(dāng)產(chǎn)品通過(guò)最終的質(zhì)量保證檢查列表時(shí),它已準(zhǔn)備就緒向市場(chǎng)發(fā)行。
      因?yàn)闆](méi)有人想要不工作的軟件,測(cè)試是生命期的重要部分并可跨越若干階段。軟件測(cè)試包括設(shè)計(jì)一測(cè)試實(shí)例(或更可能是測(cè)試實(shí)例集)、以測(cè)試實(shí)例為輸入運(yùn)行該軟件、并檢查以測(cè)試實(shí)例為輸入的軟件的性能是否產(chǎn)生預(yù)期結(jié)果。軟件測(cè)試可由人們手動(dòng)引導(dǎo),或通過(guò)程序來(lái)引導(dǎo)(稱為自動(dòng)化軟件測(cè)試)。理想地,軟件的測(cè)試在軟件生命期的一開始就應(yīng)開始。然而一般而言,不到完成了設(shè)計(jì)階段軟件根本不能測(cè)試,因?yàn)橹钡酵瓿稍O(shè)計(jì)階段才能確定期望結(jié)果。通常,在編碼階段,開發(fā)者在寫代碼時(shí)手動(dòng)測(cè)試其代碼。自動(dòng)化軟件測(cè)試通常在開發(fā)過(guò)程的較后期才會(huì)開始。
      有時(shí),所引導(dǎo)的唯一測(cè)試由開發(fā)者在他編寫程序時(shí)手動(dòng)測(cè)試來(lái)完成。測(cè)試自已工作的開發(fā)者可能會(huì)忽視在情緒上不那么投入代碼的某些人會(huì)發(fā)現(xiàn)的缺陷。此外,開發(fā)者測(cè)試的范圍通常限于其代碼的功能以及其代碼與有限數(shù)量的其它軟件應(yīng)用程序的結(jié)合。
      為了解決這些缺點(diǎn),許多軟件開發(fā)機(jī)構(gòu)具有常使用至少部分自動(dòng)化的測(cè)試技術(shù)來(lái)測(cè)試軟件的獨(dú)立的軟件測(cè)試組。通常,測(cè)試組通過(guò)編寫和運(yùn)行測(cè)試實(shí)例來(lái)測(cè)試各特征之間和應(yīng)用程序之間的交互。使測(cè)試組及早地甚至在設(shè)計(jì)階段就進(jìn)入產(chǎn)品生命期能獲得很多好處通常是無(wú)異議的,這些好處包括標(biāo)識(shí)功能規(guī)范中的不一致、標(biāo)識(shí)難以測(cè)試的區(qū)域及其它。然而一般而言,面對(duì)特征定義、實(shí)現(xiàn)和用戶界面(UI)調(diào)整中的持續(xù)變化而保持每個(gè)測(cè)試實(shí)例最新所需的精力使該方法呈現(xiàn)為不實(shí)用。因此,編寫并運(yùn)行測(cè)試實(shí)例通常是在產(chǎn)品開發(fā)末期倉(cāng)促發(fā)生的。因而測(cè)試特別是自動(dòng)化測(cè)試總是落后于需求。如果有一種在一進(jìn)入軟件產(chǎn)品的生命期(理想地是在設(shè)計(jì)階段期間)就能編寫測(cè)試實(shí)例并采用自動(dòng)化測(cè)試的方法將是有幫助的。
      一整套測(cè)試實(shí)例的開發(fā)在任何時(shí)候都具挑戰(zhàn)性。為了測(cè)試應(yīng)用程序的特定特征,必需編寫許多測(cè)試集。例如,應(yīng)用程序可允許與一特征的許多交互模式通過(guò)鼠標(biāo)、鍵盤、數(shù)字化儀、可訪問(wèn)軟件、通過(guò)程序等。因此,為了提供對(duì)該特征的綜合性測(cè)試,一整套測(cè)試應(yīng)包括通過(guò)鼠標(biāo)與該特征交互(像用戶一樣鍵入文本)的一個(gè)測(cè)試集、通過(guò)鍵盤與該特征交互的一個(gè)集、通過(guò)數(shù)字化儀與該特征交互的一個(gè)集、通過(guò)可訪問(wèn)軟件與該特征交互來(lái)調(diào)用缺省動(dòng)作并以其它方式模擬可訪問(wèn)應(yīng)用程序的一個(gè)集、通過(guò)應(yīng)用程序的編碼模型與該特征交互的一個(gè)集等。如果有一種確保一整套測(cè)試實(shí)例提供特征或應(yīng)用程序的綜合性測(cè)試,并進(jìn)一步減少為了提供綜合性測(cè)試而必需編寫的測(cè)試實(shí)例的總量的方法,這將是有幫助的。
      此外,這些測(cè)試集的每一個(gè)中的許多或全部邏輯都與其它測(cè)試集中的邏輯相同,且通常許多或全部的結(jié)果處理驗(yàn)證也相同。因此,許多測(cè)試是相同或非常接近的,僅僅在執(zhí)行選項(xiàng)上有變化。例如,對(duì)于上述全部多種形式的輸入,期望結(jié)果可能是相同的。因此,對(duì)這些輸入源的每一個(gè)編寫測(cè)試實(shí)例通常需要編寫用于執(zhí)行每個(gè)輸入源的測(cè)試的獨(dú)立方法,并復(fù)制大多數(shù)剩余的測(cè)試腳本。重復(fù)編寫僅具有極小變化的相同測(cè)試是乏味并耗時(shí)的。如果有一種消除或大大減少這種重復(fù)編碼并減少必需編寫的測(cè)試實(shí)例的總量的方法將是有幫助的。
      編寫用來(lái)確定運(yùn)行測(cè)試實(shí)例的實(shí)際結(jié)果是否與期望結(jié)果相一致(常稱為結(jié)果驗(yàn)證或驗(yàn)證)的代碼常包括在測(cè)試實(shí)例內(nèi)。改變特定結(jié)果驗(yàn)證的細(xì)節(jié)或添加新的結(jié)果驗(yàn)證通常需要更改每個(gè)測(cè)試實(shí)例。如果驗(yàn)證代碼獨(dú)立于測(cè)試實(shí)例,使該測(cè)試實(shí)例更易于理解以及驗(yàn)證代碼更易于重復(fù)使用和維護(hù)將是有幫助的。
      執(zhí)行細(xì)節(jié)常被硬編碼到測(cè)試實(shí)例中,需要設(shè)計(jì)階段在編寫測(cè)試實(shí)例之前就完成。如果有一種根據(jù)用戶動(dòng)作而不根據(jù)特定執(zhí)行細(xì)節(jié)來(lái)定義測(cè)試實(shí)例使得測(cè)試實(shí)例能在軟件開發(fā)生命期的較早期編寫的方法,這將是有幫助的。
      在編寫測(cè)試實(shí)例之后對(duì)執(zhí)行細(xì)節(jié)和驗(yàn)證作出的改變通常需要為必須尋找并更改許多測(cè)試實(shí)例而付出的大量維護(hù)精力。如果維護(hù)精力可局部化從而使更改可在一個(gè)地方而不是每個(gè)測(cè)試實(shí)例中進(jìn)行,這將是有幫助的。

      發(fā)明內(nèi)容
      利用自動(dòng)化堆棧的自動(dòng)化測(cè)試系統(tǒng)可使測(cè)試實(shí)例能早在軟件開發(fā)的設(shè)計(jì)階段就進(jìn)行編寫和編譯了。一旦編寫了實(shí)現(xiàn)要測(cè)試特征的代碼就可執(zhí)行測(cè)試實(shí)例。
      自動(dòng)化測(cè)試系統(tǒng)可包括以下的一個(gè)或多個(gè)測(cè)試實(shí)例執(zhí)行器、數(shù)據(jù)管理器、行為管理器和行為數(shù)據(jù)庫(kù)、驗(yàn)證管理器、以及自動(dòng)化堆棧。測(cè)試實(shí)例執(zhí)行器可執(zhí)行一測(cè)試實(shí)例。數(shù)據(jù)管理器可確保測(cè)試數(shù)據(jù)中的可變性。行為管理器可確定適于特定測(cè)試實(shí)例的執(zhí)行細(xì)節(jié)。驗(yàn)證管理器可在測(cè)試實(shí)例已執(zhí)行之后執(zhí)行驗(yàn)證處理。自動(dòng)化堆??商峁┦箿y(cè)試實(shí)例執(zhí)行分成對(duì)象層或集的體系結(jié)構(gòu)。自動(dòng)化堆??砂ㄟ壿媽雍臀锢韺?,而測(cè)試實(shí)例層可建立在邏輯層上。測(cè)試實(shí)例可根據(jù)特征或用戶動(dòng)作而不根據(jù)特定執(zhí)行細(xì)節(jié)/用戶界面細(xì)節(jié)而定義,因而使測(cè)試實(shí)例能在軟件開發(fā)生命期中的較早期編寫,并使執(zhí)行細(xì)節(jié)和用戶界面細(xì)節(jié)的改變?nèi)ヱ畈⑴c測(cè)試實(shí)例細(xì)節(jié)分開。
      測(cè)試實(shí)例執(zhí)行和測(cè)試實(shí)例驗(yàn)證可通過(guò)分成執(zhí)行行為層和驗(yàn)證層而去耦。結(jié)果處理的驗(yàn)證可與測(cè)試實(shí)例分開,從而使從實(shí)施例更可理解并便于驗(yàn)證代碼的再使用。通過(guò)定位到自動(dòng)化堆棧內(nèi)或驗(yàn)證或行為層內(nèi)的單個(gè)變化點(diǎn)可簡(jiǎn)化維護(hù),從而使該測(cè)試實(shí)例能基本上免維護(hù)。
      將如何執(zhí)行測(cè)試實(shí)例中各個(gè)步驟的細(xì)節(jié)分到它自己的對(duì)象層或集中使這些因素的每一個(gè)能獨(dú)立變化。每個(gè)層可將可變性引入該層或其下各層,從而較少必須編寫的測(cè)試數(shù)量。例如,寫入較高層的運(yùn)行5次的一個(gè)測(cè)試可與寫入較低層的5個(gè)、10個(gè)甚至50個(gè)測(cè)試具有相同的功效。組織到各層中可使測(cè)試本身更簡(jiǎn)單并更易于理解,并在減少覆蓋執(zhí)行路徑集必須編寫的測(cè)試實(shí)例數(shù)量之外還可減少編寫測(cè)試實(shí)例所需的時(shí)間。
      邏輯層可基于可采取的動(dòng)作(例如“打開文檔”的動(dòng)作)而不是用戶界面的特定細(xì)節(jié)(例如諸如“打開File菜單并點(diǎn)擊Open、等待File Open對(duì)話框打開、輸入要打開的文件名、點(diǎn)擊OK、等待File Open對(duì)話框消失、等待應(yīng)用程序打開文檔并為進(jìn)一步的輸入作好準(zhǔn)備”的具體細(xì)節(jié))來(lái)提供應(yīng)用程序的視圖。邏輯層還可提取盡可能多的用戶界面實(shí)際的知識(shí),從而當(dāng)用戶界面改變時(shí)無(wú)需編輯寫入該層的測(cè)試。邏輯層還可將可變性引入執(zhí)行的各個(gè)物理方法,從而可通過(guò)鼠標(biāo)或鍵盤執(zhí)行寫入該層的單個(gè)測(cè)試實(shí)例而無(wú)需對(duì)該測(cè)試實(shí)例有任何改變。
      物理層將測(cè)試從與特定控制通信的高度特定細(xì)節(jié)中隔離開,包括諸如特定控制的標(biāo)識(shí)代碼、以及訪問(wèn)該控制的方法(通過(guò)鼠標(biāo)、鍵盤、可存取性、書寫板等)的細(xì)節(jié)。物理層可提供圍繞應(yīng)用程序的用戶界面的對(duì)象模型從而測(cè)試具有對(duì)該用戶界面的強(qiáng)類型化訪問(wèn)。物理層還可使執(zhí)行方法能獨(dú)立于控制定義,從而無(wú)論執(zhí)行方法有多少都只需單個(gè)對(duì)象模型。
      驗(yàn)證層可獨(dú)立于測(cè)試實(shí)例并與測(cè)試實(shí)例的直接聯(lián)系相隔離,從而對(duì)驗(yàn)證細(xì)節(jié)的改變無(wú)需對(duì)測(cè)試有任何改變。
      執(zhí)行行為層可獨(dú)立于測(cè)試實(shí)例并與測(cè)試實(shí)例的直接聯(lián)系相隔離,從而無(wú)需對(duì)測(cè)試實(shí)例作改變或僅需對(duì)其作最少改變就可改變可用的執(zhí)行行為或任何特定行為實(shí)現(xiàn)。
      當(dāng)測(cè)試實(shí)例需要測(cè)試數(shù)據(jù)時(shí),數(shù)據(jù)管理層可由測(cè)試實(shí)例使用。數(shù)據(jù)管理層可提供所有測(cè)試數(shù)據(jù)的集中存儲(chǔ),并無(wú)需對(duì)測(cè)試實(shí)例作改變或僅需對(duì)其作最少改變就可改變測(cè)試數(shù)據(jù)或產(chǎn)生測(cè)試數(shù)據(jù)的方式。
      每個(gè)層可提供對(duì)其下層的(直接)訪問(wèn)但測(cè)試實(shí)例可按需調(diào)用任何層。例如顯式驗(yàn)證菜單行為的測(cè)試實(shí)例可使用邏輯層來(lái)創(chuàng)建包含各種形狀的繪圖,然后使用該物理層來(lái)直接操作菜單。測(cè)試實(shí)例可到物理層下獲取用于結(jié)果驗(yàn)證的操作系統(tǒng)服務(wù)。因而測(cè)試實(shí)例可利用較高層的全部能力同時(shí)還利用由較低層提供的全部控制。


      結(jié)合附圖閱讀時(shí),前面的發(fā)明內(nèi)容和以下說(shuō)明性實(shí)施例的詳細(xì)描述能得到更好的理解。為了說(shuō)明本發(fā)明各實(shí)施例,在附圖中示出本發(fā)明的示例性結(jié)構(gòu);然而,本發(fā)明并不限于所揭示的特定方法和裝置。在附圖中圖1是示出其中可實(shí)現(xiàn)本發(fā)明各方面的實(shí)例計(jì)算環(huán)境的示圖;圖2是根據(jù)本發(fā)明一實(shí)施例用于使用分層體系結(jié)構(gòu)的自動(dòng)化軟件測(cè)試的示例性系統(tǒng)的框圖;圖3是根據(jù)本發(fā)明一實(shí)施例的圖2系統(tǒng)的一部分的更詳細(xì)框圖;
      圖4是根據(jù)本發(fā)明一實(shí)施例用于使用圖2的自動(dòng)化軟件測(cè)試系統(tǒng)的示例性方法的流程圖。
      具體實(shí)施方法縱覽測(cè)試實(shí)例的開發(fā)中的一個(gè)挑戰(zhàn)是要準(zhǔn)備提供綜合性測(cè)試的測(cè)試實(shí)例集。較大比例的測(cè)試實(shí)例實(shí)施較小比例的測(cè)試中的用戶動(dòng)作。為了理解為什么這會(huì)發(fā)生,考慮通常可通過(guò)若干不同的用戶動(dòng)作來(lái)執(zhí)行單個(gè)操作。例如,在微軟Word中創(chuàng)建一新文檔可通過(guò)以下動(dòng)作來(lái)完成點(diǎn)擊File(文件)菜單,點(diǎn)擊New(新)子菜單,再點(diǎn)擊New Document(新文檔)菜單項(xiàng)。
      按下Alt+F鍵調(diào)用File菜單,按下N鍵來(lái)調(diào)用New子菜單,然后按下N鍵來(lái)調(diào)用New Document菜單項(xiàng)。
      按下Alt鍵調(diào)用主菜單并重復(fù)按向左箭頭鍵直到選中File菜單,重復(fù)按向下箭頭鍵直到選中New子菜單項(xiàng),按向左箭頭鍵一次以擴(kuò)展New子菜單,重復(fù)按向下箭頭鍵直到選中New Document菜單項(xiàng),然后按下Enter鍵以調(diào)用New Document菜單項(xiàng)。
      通過(guò)可訪問(wèn)API來(lái)調(diào)用New Document菜單項(xiàng)。
      點(diǎn)擊New Document工具欄按鍵。
      通過(guò)可訪問(wèn)API調(diào)用New Document工具欄按鍵。
      按下Ctl+N。
      執(zhí)行創(chuàng)建新文檔的腳本對(duì)象模型方法。
      應(yīng)當(dāng)測(cè)試這些打開文檔的每一個(gè)不同方法,每一個(gè)都可能調(diào)用不同的代碼路徑。根據(jù)本發(fā)明某些實(shí)施例,實(shí)施所有可能的執(zhí)行路徑和數(shù)據(jù)值。
      因?yàn)槎鄠€(gè)執(zhí)行路徑是普通的,驗(yàn)證處理在集內(nèi)許多測(cè)試實(shí)例中都完全相同。常常,驗(yàn)證代碼將被復(fù)制-粘貼到每個(gè)測(cè)試實(shí)例中。除了冗長(zhǎng)且耗時(shí)外,還因此造成維護(hù)問(wèn)題。例如,如果在執(zhí)行或驗(yàn)證處理中進(jìn)行隨后的改變,必須找到并修改整個(gè)受影響測(cè)試實(shí)例集。根據(jù)本發(fā)明某些實(shí)施例,測(cè)試實(shí)例的維護(hù)定位于自動(dòng)化堆棧中的單個(gè)位置,使得測(cè)試實(shí)例能幾乎免于維護(hù)。
      在典型的測(cè)試實(shí)例中,涉及測(cè)試實(shí)例執(zhí)行的代碼和涉及確定執(zhí)行結(jié)果的代碼(驗(yàn)證代碼)被硬編碼到測(cè)試實(shí)例本身。執(zhí)行代碼常常與驗(yàn)證代碼相混和。根據(jù)本發(fā)明某些實(shí)施例,驗(yàn)證處理和執(zhí)行處理的細(xì)節(jié)彼此分開并與測(cè)試實(shí)例分開。
      通常測(cè)試實(shí)例并不區(qū)分測(cè)試操作和用來(lái)調(diào)用那些動(dòng)作的步驟。對(duì)于每個(gè)執(zhí)行方法常編寫顯式測(cè)試。例如每個(gè)測(cè)試可包括必須重復(fù)以調(diào)用要測(cè)試的操作的每個(gè)序列的鼠標(biāo)移動(dòng)、按鍵點(diǎn)擊和鍵擊的代碼。對(duì)于UI測(cè)試,每個(gè)測(cè)試不得不跟蹤由每個(gè)UI組件使用的那類控制、標(biāo)識(shí)所使用的特定控制、并指定可在UI分層結(jié)構(gòu)中的哪兒找到該控制。根據(jù)本發(fā)明的某些實(shí)施例,測(cè)試實(shí)例根據(jù)用戶動(dòng)作而不是根據(jù)執(zhí)行細(xì)節(jié)來(lái)編寫。因而用戶界面細(xì)節(jié)與用戶動(dòng)作細(xì)節(jié)分開。
      自動(dòng)化測(cè)試實(shí)例通常極緊密地限于測(cè)試中的特定軟件,即典型測(cè)試實(shí)例直接根據(jù)所測(cè)試的對(duì)象進(jìn)行編碼。例如,應(yīng)用程序通過(guò)測(cè)試實(shí)例的自動(dòng)化測(cè)試常常直接操縱該應(yīng)用程序的狀態(tài)。用于用戶界面(UI)的自動(dòng)化測(cè)試的測(cè)試實(shí)例常常被直接寫入該UI的一個(gè)或多個(gè)控件,并通過(guò)顯式編碼測(cè)試實(shí)例中控制的名字或唯一標(biāo)識(shí)符來(lái)標(biāo)識(shí)控制。如果控制改變(例如從按鍵到列表框,甚至從一按鍵(例如按鍵36)變成另一按鍵(42)),則該UI的所有測(cè)試實(shí)例必須改變。
      為了解決這些和其它問(wèn)題,可創(chuàng)建從腳本測(cè)試實(shí)例、基于模型的測(cè)試和單元測(cè)試可使用的多層庫(kù)。該庫(kù)可包括物理層、邏輯層、驗(yàn)證層、執(zhí)行行為管理層以及數(shù)據(jù)管理層的一個(gè)或多個(gè)層。物理層、邏輯層和測(cè)試實(shí)例可包括自動(dòng)化堆棧,而驗(yàn)證、執(zhí)行行為和數(shù)據(jù)管理層可分開但與邏輯層在同一層上。
      邏輯層可基于可采取的動(dòng)作(例如“打開文檔”的動(dòng)作)而不是用戶界面的特定細(xì)節(jié)(例如諸如“打開File菜單并點(diǎn)擊Open、等待File Open對(duì)話框打開、輸入要打開的文件名、點(diǎn)擊OK、等待File Open對(duì)話框消失、等待應(yīng)用程序打開文檔并為進(jìn)一步的輸入作好準(zhǔn)備”的具體細(xì)節(jié))來(lái)提供應(yīng)用程序的視圖。邏輯層還可提取盡可能多的用戶界面實(shí)際的知識(shí),從而當(dāng)用戶界面改變時(shí)無(wú)需編輯寫入該層的測(cè)試。邏輯層還可將可變性引入執(zhí)行的各個(gè)物理方法,從而可通過(guò)鼠標(biāo)或鍵盤等執(zhí)行寫入該層的單個(gè)測(cè)試實(shí)例而無(wú)需對(duì)該測(cè)試實(shí)例有任何改變。
      物理層將測(cè)試從與特定控制通信的高度特定細(xì)節(jié)中隔離開,包括諸如什么是特定控制的標(biāo)識(shí)代碼、以及如何訪問(wèn)該控制(通過(guò)鼠標(biāo)、鍵盤等)的細(xì)節(jié)。物理層可提供圍繞應(yīng)用程序的用戶界面的對(duì)象模型從而測(cè)試具有對(duì)該用戶界面的強(qiáng)類型化訪問(wèn)。物理層還可使執(zhí)行方法能獨(dú)立于控制定義,從而無(wú)論執(zhí)行方法有多少都只需單個(gè)對(duì)象模型。
      驗(yàn)證層可獨(dú)立于測(cè)試實(shí)例并與測(cè)試實(shí)例的直接聯(lián)系隔離,從而對(duì)驗(yàn)證細(xì)節(jié)的改變無(wú)需對(duì)測(cè)試實(shí)例有任何改變。驗(yàn)證層可比較實(shí)際狀態(tài)和期望狀態(tài)以確定測(cè)試實(shí)例結(jié)果是否象期望的一樣。
      執(zhí)行行為管理層可獨(dú)立于測(cè)試實(shí)例并與測(cè)試實(shí)例的直接聯(lián)系隔離,從而無(wú)需對(duì)測(cè)試實(shí)例作改變或僅需對(duì)其作最少改變就可改變執(zhí)行行為的可用性或任何特定行為的實(shí)現(xiàn)。執(zhí)行行為層可選擇可應(yīng)用于測(cè)試實(shí)例的一個(gè)或多個(gè)適當(dāng)行為。執(zhí)行行為層可確保實(shí)施所有可能的執(zhí)行路徑。
      當(dāng)測(cè)試實(shí)例需要測(cè)試數(shù)據(jù)時(shí),數(shù)據(jù)管理層可由測(cè)試實(shí)例使用。數(shù)據(jù)管理層可提供所有測(cè)試數(shù)據(jù)的集中存儲(chǔ),并無(wú)需對(duì)測(cè)試實(shí)例作改變或僅需對(duì)其作最少改變就可改變測(cè)試數(shù)據(jù)或產(chǎn)生測(cè)試數(shù)據(jù)的方式。數(shù)據(jù)管理可確保實(shí)施所有可能數(shù)據(jù)值。
      每個(gè)層可提供對(duì)其下層的(直接)訪問(wèn)但測(cè)試實(shí)例可按需調(diào)用任何層。例如顯式驗(yàn)證菜單行為的測(cè)試實(shí)例可使用邏輯層來(lái)創(chuàng)建包含各種形狀的繪圖,然后使用該物理層來(lái)直接操作菜單,并去到用于結(jié)果驗(yàn)證的操作系統(tǒng)服務(wù)。可隱藏執(zhí)行方法細(xì)節(jié)。寫到邏輯層的測(cè)試在執(zhí)行方法之間切換時(shí)可不需要變化。如果測(cè)試實(shí)例與執(zhí)行方法完全隔離,則在測(cè)試實(shí)例外部并于之分開的機(jī)制可在編譯時(shí)或運(yùn)行時(shí)使用以指定應(yīng)當(dāng)對(duì)測(cè)試的特定運(yùn)行使用哪種執(zhí)行方法。
      示例計(jì)算環(huán)境圖1和以下討論旨在提供一種本發(fā)明的示例實(shí)施例可在其中實(shí)現(xiàn)的適當(dāng)計(jì)算環(huán)境的簡(jiǎn)要一般說(shuō)明。然而,應(yīng)當(dāng)理解手持式、便攜式以及所有類型的其它計(jì)算裝置可預(yù)期用于本發(fā)明。盡管以下所述為通用計(jì)算機(jī),但僅是一個(gè)示例。本發(fā)明還可在與網(wǎng)絡(luò)服務(wù)器互操作并交互的瘦客戶機(jī)上操作。因而,本發(fā)明的示例實(shí)施例可在其中僅含極少或最少客戶機(jī)資源的網(wǎng)絡(luò)化主機(jī)服務(wù)的環(huán)境中實(shí)現(xiàn),例如其中客戶機(jī)裝置僅用作萬(wàn)維網(wǎng)的瀏覽器或接口的網(wǎng)絡(luò)化環(huán)境。
      盡管不是必需的,本發(fā)明可通過(guò)由開發(fā)者使用和/或包括在網(wǎng)絡(luò)瀏覽軟件中的應(yīng)用程序編程接口(API)來(lái)實(shí)現(xiàn),它將在諸如程序模塊的由一個(gè)或多個(gè)計(jì)算機(jī)(例如客戶機(jī)工作站、服務(wù)器、或其它裝置)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型的例程、對(duì)象、程序、組件、數(shù)據(jù)結(jié)構(gòu)。通常,程序模塊的功能可按需在各個(gè)實(shí)施例中組合或分布。此外,本領(lǐng)域技術(shù)人員將理解本發(fā)明可在其它計(jì)算機(jī)系統(tǒng)配置中實(shí)踐。適用于本發(fā)明的其它眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括,但不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)取款機(jī)(ATM)、服務(wù)器計(jì)算機(jī)、手持式或膝上型裝置、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、或可編程的電子消費(fèi)品、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。本發(fā)明的實(shí)施例還可在任務(wù)由經(jīng)通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸介質(zhì)鏈接的遠(yuǎn)程處理裝置執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可置于包括存儲(chǔ)器存儲(chǔ)裝置的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
      因而圖1示出本發(fā)明可在其上實(shí)現(xiàn)的適當(dāng)計(jì)算系統(tǒng)環(huán)境100的示例,盡管如上闡明的,該計(jì)算系統(tǒng)環(huán)境100僅是適當(dāng)計(jì)算環(huán)境的一個(gè)示例,并非旨在提出對(duì)本發(fā)明使用或功能性范圍作任何限制。計(jì)算環(huán)境100也不應(yīng)被解釋為對(duì)示例性操作環(huán)境100中所示的任一組件或其組合有任何依賴性或任何需求。
      參照?qǐng)D1,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括以計(jì)算機(jī)110形式的通用計(jì)算裝置。計(jì)算機(jī)110的組件可包括,但不限于,處理單元120、系統(tǒng)存儲(chǔ)器130以及把包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可能是若干總線結(jié)構(gòu)類型中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、以及使用多種總線架構(gòu)的任一種的本地總線。作為示例,而非限制,這些架構(gòu)包括工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線、微信道架構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和外圍部件互連(PCI)總線(也稱為Mezzanine總線)。
      計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能被計(jì)算機(jī)110訪問(wèn)的任何可用介質(zhì),并包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)、用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字化多功能光盤(DVD)或其它光學(xué)存儲(chǔ)技術(shù)、磁盒、磁帶、磁盤存儲(chǔ)器或其它磁性存儲(chǔ)設(shè)備、或任何其它可用于存儲(chǔ)所需信息并可由計(jì)算機(jī)110訪問(wèn)的介質(zhì)。通信介質(zhì)通常在諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù),且包括任何信息輸送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”意指以在信號(hào)中編碼信息的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直線連接的有線介質(zhì),和諸如聲學(xué)、射頻(RF)、紅外線和其它無(wú)線介質(zhì)的無(wú)線介質(zhì)。以上任何介質(zhì)的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍中。
      系統(tǒng)存儲(chǔ)器130包括諸如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132的易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)可讀介質(zhì)。包含有助于如起動(dòng)時(shí)在計(jì)算機(jī)110內(nèi)元件間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)133通常存儲(chǔ)在ROM 131中。RAM 132通常包含可被處理單元120立即訪問(wèn)和/或當(dāng)時(shí)正被操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136、和程序數(shù)據(jù)137。
      計(jì)算機(jī)110還可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。作為示例,圖1示出了讀取和寫入不可移動(dòng)、非易失性磁性介質(zhì)的硬盤驅(qū)動(dòng)器141,讀取和寫入可移動(dòng)、非易失性磁盤152的磁盤驅(qū)動(dòng)器151,讀取和寫入可移動(dòng)、非易失性光盤156,諸如CD-ROM或其它光學(xué)介質(zhì)的光盤驅(qū)動(dòng)器155。其它也在示例性計(jì)算環(huán)境中使用的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,如磁帶、閃存卡、數(shù)字化多功能光盤、數(shù)字化錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器141通常通過(guò)諸如接口140的不可移動(dòng)存儲(chǔ)器接口與系統(tǒng)總線121連接,而磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常通過(guò)諸如接口150的可移動(dòng)存儲(chǔ)器接口與系統(tǒng)總線121連接。
      如上所述并如圖1所示的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、和其它數(shù)據(jù)的存儲(chǔ)。在圖1中,例如,硬盤驅(qū)動(dòng)器141被示為存儲(chǔ)操作系統(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的編號(hào)不同至少說(shuō)明他們是不同的副本。用戶可通過(guò)諸如鍵盤162、以及通常稱為鼠標(biāo)、跟蹤球或觸摸板等的定位裝置161的輸入裝置向計(jì)算機(jī)110輸入命令和信息。其它輸入裝置(未示出)可包括話筒、操縱桿、游戲墊、衛(wèi)星接收天線、掃描儀等等。這些和其它輸入設(shè)備常常通過(guò)與系統(tǒng)總線121耦合的用戶輸入接口160與處理單元120相連,但也可通過(guò)諸如并行端口、游戲端口或通用串行總線(USB)的其它接口和總線結(jié)構(gòu)連接。
      監(jiān)視器191或其它類型的顯示設(shè)備也可通過(guò)諸如視頻接口190的接口與系統(tǒng)總線121相連。諸如“North-bridge”的圖形接口182也可連接至系統(tǒng)總線121?!癗orth-bridge”是與CPU或主機(jī)處理單元120通信的芯片組,并承擔(dān)與加速圖形端口(AGP)通信的責(zé)任。一個(gè)或多個(gè)圖形處理單元184(GPU)184可與圖形接口182通信。在這方面GPU 184一般包括諸如寄存器存儲(chǔ)的芯片內(nèi)存儲(chǔ)器存儲(chǔ),且GPU 194與視頻存儲(chǔ)器186通信。然而,GPU 184僅是協(xié)處理器的一個(gè)示例,因而在計(jì)算機(jī)110中可包括各種協(xié)處理裝置。監(jiān)視器或其它類型的顯示裝置也可通過(guò)諸如視頻接口190的接口與系統(tǒng)總線121相連,該接口還與視頻存儲(chǔ)器186通信。除監(jiān)視器191以外,計(jì)算機(jī)還可包括諸如揚(yáng)聲器197和打印機(jī)196的其它輸出設(shè)備,它們通過(guò)輸出外圍接口195相連。
      計(jì)算機(jī)110可以在使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接的網(wǎng)絡(luò)化環(huán)境中運(yùn)行。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等裝置或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),而且通常包括上述與個(gè)人計(jì)算機(jī)110相關(guān)的許多或全部組件,盡管在圖1中僅圖示了存儲(chǔ)器存儲(chǔ)設(shè)備181。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)化環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)上是常見的。
      當(dāng)用于LAN網(wǎng)絡(luò)化環(huán)境中時(shí),計(jì)算機(jī)110通過(guò)網(wǎng)絡(luò)接口或適配器170與LAN171連接。當(dāng)用于WAN網(wǎng)絡(luò)化環(huán)境中時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或其它用于在諸如因特網(wǎng)的廣域網(wǎng)173中建立通信的裝置。可以是內(nèi)置式或外置式的調(diào)制解調(diào)器172通過(guò)用戶輸入接口160或其它適當(dāng)機(jī)制與系統(tǒng)總線121連接。在網(wǎng)絡(luò)化環(huán)境中,與計(jì)算機(jī)110相關(guān)的程序模塊或其一部分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置中。作為示例,而非限制,圖1示出了駐留于存儲(chǔ)器裝置181中的遠(yuǎn)程應(yīng)用程序185。應(yīng)當(dāng)理解,所示網(wǎng)絡(luò)連接是示例性的,且也可以使用其它用于在計(jì)算機(jī)間建立通信連接的方法。
      本領(lǐng)域技術(shù)人員可理解,計(jì)算機(jī)110或其它客戶機(jī)裝置可用作計(jì)算機(jī)網(wǎng)絡(luò)的一部分。這樣,本發(fā)明適合具有任何數(shù)量存儲(chǔ)器或存儲(chǔ)單元的任何計(jì)算機(jī)系統(tǒng)、以及在任何數(shù)量存儲(chǔ)單元或存儲(chǔ)體上發(fā)生的任何數(shù)量的應(yīng)用程序和進(jìn)程。本發(fā)明可應(yīng)用于帶有可用于網(wǎng)絡(luò)環(huán)境的具有遠(yuǎn)程或本地存儲(chǔ)器的服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)的環(huán)境。本發(fā)明還可應(yīng)用于具有編程語(yǔ)言功能、編譯和執(zhí)行功能的獨(dú)立計(jì)算裝置。
      自動(dòng)化堆棧分層在本發(fā)明某些實(shí)施例中,通過(guò)對(duì)應(yīng)用程序采取與對(duì)象模型視圖或其它類型視圖相反的用戶中心視圖的邏輯功能模型來(lái)定義應(yīng)用程序。不斷重復(fù)使用的代碼可用用戶中心方式來(lái)組件化。例如,動(dòng)作可按邏輯層中的目標(biāo)來(lái)分組,SceneElements可包含影響活動(dòng)景物上諸如創(chuàng)建、選擇、取消選擇、剪切、復(fù)制、粘貼、刪除元素的元素集的方法。變換方法組可具有旋轉(zhuǎn)、縮放、并以其它方式將變換應(yīng)用于景物元素的方法。路徑可包含操縱是路徑的景物元素的方法等。在大多數(shù)應(yīng)用程序中,大多數(shù)用戶動(dòng)作可用多種不同方法來(lái)執(zhí)行。不同執(zhí)行方法所需的基礎(chǔ)結(jié)構(gòu)通常是相同的。因此,在本發(fā)明的某些實(shí)施例中,執(zhí)行行為管理器在各測(cè)試實(shí)例上共享,并為測(cè)試實(shí)例選擇適當(dāng)?shù)男袨?邏輯功能模型方法)。在本發(fā)明某些實(shí)施例中,在測(cè)試實(shí)例或邏輯功能模型方法執(zhí)行一種操作之前,通知驗(yàn)證管理器。驗(yàn)證管理器可存儲(chǔ)應(yīng)用程序的完全當(dāng)前狀態(tài)的一個(gè)副本。該副本形成操作完成時(shí)的期望狀態(tài)的基礎(chǔ)。在本發(fā)明某些實(shí)施例中,測(cè)試實(shí)例執(zhí)行一序列的動(dòng)作而不知道如何執(zhí)行或驗(yàn)證這些動(dòng)作。
      圖2是根據(jù)本發(fā)明一實(shí)施例示出使用分層體系結(jié)構(gòu)的示例性自動(dòng)化測(cè)試系統(tǒng)的框圖。圖2的自動(dòng)化測(cè)試系統(tǒng)可使能測(cè)試實(shí)例創(chuàng)建和維護(hù)中的效率從而可使用較少的測(cè)試實(shí)例來(lái)完成更綜合性的測(cè)試。測(cè)試實(shí)例更易于創(chuàng)建、更易于維護(hù)并更易于理解。
      自動(dòng)化測(cè)試系統(tǒng)250可駐留于一個(gè)或多個(gè)計(jì)算機(jī)上,諸如參照?qǐng)D1所述的示例性計(jì)算機(jī)110。自動(dòng)化測(cè)試系統(tǒng)250可包括一個(gè)或多個(gè)測(cè)試執(zhí)行器252、數(shù)據(jù)管理器254、行為管理器256以及相關(guān)聯(lián)的行為數(shù)據(jù)庫(kù)(未示出)、驗(yàn)證管理器258和自動(dòng)化堆棧200。測(cè)試執(zhí)行器252可根據(jù)應(yīng)用程序262來(lái)執(zhí)行測(cè)試實(shí)例260。數(shù)據(jù)管理器262在本發(fā)明某些實(shí)施例中可提供測(cè)試實(shí)例260所需的測(cè)試數(shù)據(jù)。數(shù)據(jù)管理器可提供對(duì)集中存儲(chǔ)的所有測(cè)試數(shù)據(jù)的訪問(wèn),并允許測(cè)試數(shù)據(jù)或?qū)Ξa(chǎn)生測(cè)試數(shù)據(jù)的方式進(jìn)行改變而無(wú)需改變測(cè)試實(shí)例或只需測(cè)試實(shí)例的極少改變。
      行為管理器256可從行為數(shù)據(jù)庫(kù)中選擇測(cè)試實(shí)例260的適當(dāng)行為。驗(yàn)證管理器258可提供對(duì)執(zhí)行測(cè)試實(shí)例260的結(jié)果的驗(yàn)證。
      圖3是根據(jù)本發(fā)明一實(shí)施例示出自動(dòng)化測(cè)試系統(tǒng)的自動(dòng)化堆棧的示例性分層體系結(jié)構(gòu)的框圖。圖3是圖2系統(tǒng)一部分的更詳細(xì)框圖。在圖3中,自動(dòng)化庫(kù)200可包括一個(gè)或多個(gè)層。自動(dòng)化庫(kù)200的每個(gè)層可包括一個(gè)或多個(gè)對(duì)象集。自動(dòng)化庫(kù)200的層可包括以下的一個(gè)或多個(gè)物理層202、邏輯層204、測(cè)試實(shí)例層206中的一個(gè)或多個(gè)測(cè)試實(shí)例、綜合性驗(yàn)證層208、行為層210以及數(shù)據(jù)管理層213。行為層210可包括執(zhí)行行為管理器212和執(zhí)行行為數(shù)據(jù)庫(kù)214。或者,執(zhí)行行為可駐留在邏輯層204中。
      自動(dòng)化庫(kù)200可包括一個(gè)或多個(gè)物理層202、邏輯層204、以及測(cè)試實(shí)例層206中的一個(gè)或多個(gè)測(cè)試實(shí)例,而執(zhí)行行為層210、綜合性驗(yàn)證層208以及數(shù)據(jù)管理器層213可存在于自動(dòng)化體系結(jié)構(gòu)堆棧230之外。在本發(fā)明某些實(shí)施例中,執(zhí)行行為層210、綜合性驗(yàn)證層208、以及數(shù)據(jù)管理層213盡管與邏輯層204分開卻都被結(jié)合到邏輯層204中。因?yàn)閳?zhí)行行為層210、綜合性驗(yàn)證層208、以及數(shù)據(jù)管理層213都與邏輯層204分開,可從體系結(jié)構(gòu)堆棧外部訪問(wèn)執(zhí)行行為層210、綜合性驗(yàn)證層208、以及數(shù)據(jù)管理層213。
      自動(dòng)化庫(kù)200可代表系統(tǒng)庫(kù)上的包括一個(gè)或多個(gè)組件的一個(gè)層,例如以下的一個(gè)或多個(gè)操作系統(tǒng)、外部工具、圖形動(dòng)畫子系統(tǒng)等。在圖2中,示例性系統(tǒng)庫(kù)240包括內(nèi)部測(cè)試自動(dòng)化模塊216、可存取性模塊218、UI自動(dòng)化模塊222、圖形動(dòng)畫子系統(tǒng)228(包括圖形動(dòng)畫對(duì)象模型220和圖形動(dòng)畫應(yīng)用程序224)、以及系統(tǒng)層應(yīng)用程序226。
      自動(dòng)化庫(kù)200可包括圖形動(dòng)畫子系統(tǒng)228的布局和控件。自動(dòng)化庫(kù)200的布局部分可包括圖形動(dòng)畫子系統(tǒng)228的每個(gè)視覺(jué)元素實(shí)例的類。即,布局部分可包括表示圖形子系統(tǒng)228的“頂層”視覺(jué)元素的所有類,這些“頂層”視覺(jué)元素諸如但不限于新項(xiàng)目對(duì)話框、一個(gè)或多個(gè)工具箱窗格、以及主菜單??丶糠挚砂糠N視覺(jué)元素的類。即,控件部分可包括用于圖形動(dòng)畫子系統(tǒng)的所有系統(tǒng)和定制控件的類,這些控件諸如但不限于按鍵類、組合框類、文本框類、以及色彩選擇器類。這些控件僅可通過(guò)頂層元素(例如通過(guò)主菜單、工具箱窗格、或新項(xiàng)目對(duì)話框)訪問(wèn)。自動(dòng)化庫(kù)200的控件部分中的每個(gè)控件可包括訪問(wèn)和操縱控件所需的所有方法和屬性,包括所有輸入方法的實(shí)現(xiàn)(例如通過(guò)鍵盤、鼠標(biāo)、可存取性軟件等)。
      自動(dòng)化庫(kù)200可用于引導(dǎo)任何類型的測(cè)試,包括基于模型、集成、性能、載入、壓力、接受、單元、建立驗(yàn)證、基本功能、退出標(biāo)準(zhǔn)、綜合性/擴(kuò)展功能、局部化、全局化、可訪問(wèn)性以及其它測(cè)試。自動(dòng)化庫(kù)200可通過(guò)已寫成腳本的測(cè)試實(shí)例來(lái)訪問(wèn)或包括這些測(cè)試實(shí)例?;蛘撸L問(wèn)或包括在自動(dòng)化庫(kù)200中的測(cè)試實(shí)例可用XML、編譯語(yǔ)言、字節(jié)代碼、數(shù)據(jù)庫(kù)、文本、表格等來(lái)表示。
      自動(dòng)化庫(kù)200的每個(gè)層可直接訪問(wèn)(或調(diào)用)下面的層。即,測(cè)試實(shí)例層206可直接訪問(wèn)邏輯層204。邏輯層204可直接訪問(wèn)物理層202等。在本發(fā)明某些實(shí)施例中,向一個(gè)層提供了訪問(wèn)或調(diào)用更深一層的裝置,即,例如在需要時(shí)測(cè)試實(shí)例直接訪問(wèn)內(nèi)部測(cè)試自動(dòng)化層216、物理層202等是可能的。
      測(cè)試實(shí)例層206可包括應(yīng)用于要測(cè)試的應(yīng)用程序或模塊、特征或功能的一個(gè)或多個(gè)測(cè)試實(shí)例??蓪y(cè)試實(shí)例寫成腳本。寫到邏輯層204的示例性測(cè)試實(shí)例可以是,例如Start Graphics Animation SubsystemAdd a new ProjectDraw a rectangle from 0,0 to 4,4Set the color of the rectangle to redSave the projectShut down the Graphics Animation Subsystem可以理解,以上示例性測(cè)試實(shí)例所缺少的是涉及結(jié)果驗(yàn)證的代碼、涉及執(zhí)行選項(xiàng)的代碼、涉及標(biāo)識(shí)諸如控件的特定UI元素的代碼等。由于封裝了應(yīng)用程序的邏輯操作,測(cè)試實(shí)例層206的寫到邏輯層204的測(cè)試實(shí)例因此應(yīng)當(dāng)幾乎不需要隨自動(dòng)化庫(kù)200中的變化而改變。
      在本發(fā)明某些實(shí)施例中,邏輯層202涉及應(yīng)用程序期望執(zhí)行的功能而不是每個(gè)功能的操作如何實(shí)現(xiàn)。邏輯層202可封裝或包裝圖形動(dòng)畫子系統(tǒng)228的邏輯操作,提取邏輯操作的實(shí)現(xiàn)特性。在本發(fā)明的某些實(shí)施例中,邏輯層202提取掉UI的所有知識(shí)并提供在測(cè)試實(shí)例層206、驗(yàn)證層208、行為層210和數(shù)據(jù)管理器層213的測(cè)試實(shí)例之間的接口。邏輯層202還可提供圖形動(dòng)畫對(duì)象模型220(圖形動(dòng)畫應(yīng)用程序224的內(nèi)部狀態(tài))以及測(cè)試實(shí)例之間的接口。邏輯層可提供用來(lái)執(zhí)行單個(gè)用戶動(dòng)作的一序列動(dòng)作的可變性。
      物理層202提取執(zhí)行方法使得寫入物理層的測(cè)試實(shí)例不必說(shuō)明執(zhí)行細(xì)節(jié),諸如控件是否通過(guò)使用鼠標(biāo)、或鍵盤、可存取性軟件等來(lái)調(diào)用。物理層可提供用來(lái)與特定控件交互的方法的可變性。物理層202還可提供圍繞UI的對(duì)象模型,即物理層202可提供與UI的接口。因此,當(dāng)應(yīng)用程序或UI中的元素改變時(shí),可在物理層中而不是在所有測(cè)試實(shí)例中作出改變。
      寫入物理層的另一示例性測(cè)試實(shí)例可以是,例如Start Graphics Animation SubsystemInvoke the File menuInvoke the New submenuInvoke the New Project menu itemType the name to give the new projectClose the New Project dialog boxWait for the Graphics Animation Subsystem to finish creating the new projectActivate the rectangle shape toolDrag the mouse from 0,0 to 4,4Select“Red”from the list of possible stroke colors in the color-properties paneInvoke the File menuInvoke the Save menu itemWait for the Graphics Animation Subsystem to finish saving the projectInvoke the File menuInvoke the Exit menu itemWait for the Graphics Animation Subsystem to shut down可以理解,以上示例性測(cè)試實(shí)例沒(méi)有指定動(dòng)作(例如“Invoke the File Menu”(“調(diào)用菜單項(xiàng)”))如何實(shí)現(xiàn)(即未指定執(zhí)行路徑)。因?yàn)閳?zhí)行管理器從全體可能執(zhí)行路徑中選擇,運(yùn)行測(cè)試實(shí)例多次將執(zhí)行所有可用的執(zhí)行路徑多次。因?yàn)樗械尿?yàn)證代碼駐留于測(cè)試實(shí)例之外,可更完整地進(jìn)行驗(yàn)證處理而無(wú)需改變測(cè)試實(shí)例。類似地,如果任一動(dòng)作的期望結(jié)果包括變化,測(cè)試實(shí)例也無(wú)需改變??梢岳斫猓瑴y(cè)試實(shí)例并不包含對(duì)任何UI的引用。因此,如果UI改變則測(cè)試實(shí)例無(wú)需改變。可以理解,測(cè)試實(shí)例集中于用戶可能采取的動(dòng)作上。
      測(cè)試實(shí)例寫入的物理層中的相應(yīng)代碼可如下<pre listing-type="program-listing">class UIPane  {  UIButton Minimize{return new UIButton(“idOfTheMinimizeButton”);}  UIButton Restore{return new UIButton(“idOfTheRestoreButton”);}  UIButton Close{return new UIButton(“idOfTheCloseButton”);}  }  class UIColorPane derives from class UIPane  {   UIComboBox AvailableColorsForFill{return new UIComboBox(“idOfTheAvailableFillColorsComboBox”);}   UIColorPicker CustomColorsForFill{return new UIColorPicker(“idOfTheCustomFillColorColorPicker”);}   UIComboBox AvailableColorsForStroke{return new UIComboBox(“idOfTheAvailableStrokeColorsComboBox”);}   UIColorPicker CustomColorsForStroke{return new UIColorPicker(“idOfTheCustomStrokeColorColorPicker”);}  }  class UIButton    {   Area boundingBox;   UIButton(identifier)   {   GraphicsSubsystem.Control control=GraphicsSubsystem.FindControl(identifier);   boundingBox=contro1.BoundingBox;   }   Invoke()   {   ScreenCoordinate clickPoint;   clickPoint.x=boundingBox.Left+(boundingBox.Width/2);   clickPoint.y=boundingBox.Top+(boundingBox.Height/2);   Mouse.Move(clickPoint);   Mouse.Click();   }  }</pre>因?yàn)檫壿媽?04僅與功能相關(guān)而與實(shí)現(xiàn)細(xì)節(jié)無(wú)關(guān),且因?yàn)榇蠖鄶?shù)測(cè)試實(shí)例被寫入邏輯層204,所以測(cè)試實(shí)例可在軟件生命期中前期編寫。一旦代碼完成,可運(yùn)行測(cè)試實(shí)例,因而可更早更快地進(jìn)行更多的測(cè)試。
      綜合性的驗(yàn)證層208在本發(fā)明的某些實(shí)施例中封裝驗(yàn)證處理。邏輯層204在本發(fā)明某些實(shí)施例中在邏輯層204執(zhí)行測(cè)試實(shí)例之前通知驗(yàn)證層208以使驗(yàn)證層208能取得測(cè)試前狀態(tài)的抽點(diǎn)打印。在執(zhí)行測(cè)試實(shí)例之后,邏輯層204通知驗(yàn)證層208已執(zhí)行測(cè)試實(shí)例。然后驗(yàn)證層208可確定實(shí)際結(jié)果是否與期望結(jié)果一致。其它有關(guān)驗(yàn)證層的信息可在相關(guān)的律師案號(hào)為MSFT-4149題為“Automated Test CaseVerification that is Loosely Coupled with Respect to Automated Test Case Execution”(“相對(duì)自動(dòng)化測(cè)試實(shí)例的執(zhí)行松散耦合的自動(dòng)化測(cè)試實(shí)例驗(yàn)證”)的美國(guó)專利申請(qǐng)中找到。
      邏輯層204在某些實(shí)施例中對(duì)每種實(shí)現(xiàn)邏輯操作的方法實(shí)現(xiàn)(執(zhí)行行為214的)特定行為。例如,在本發(fā)明某些實(shí)施例中,對(duì)于CreateNewProject行為,這將包括實(shí)現(xiàn)應(yīng)用程序的對(duì)象模型、發(fā)送一序列鍵擊、通過(guò)可存取性模塊調(diào)用菜單項(xiàng)、使用鼠標(biāo)調(diào)用菜單項(xiàng)、使用箭頭鍵在菜單上導(dǎo)航來(lái)調(diào)用菜單項(xiàng)、并使用助記字符導(dǎo)航菜單來(lái)調(diào)用菜單項(xiàng)。執(zhí)行行為層可確定哪些行為與邏輯操作相關(guān)。
      在本發(fā)明某些實(shí)施例中,對(duì)每種實(shí)現(xiàn)邏輯操作的方法可實(shí)現(xiàn)一獨(dú)立行為(存儲(chǔ)在執(zhí)行行為數(shù)據(jù)庫(kù)214、邏輯層202或其它地方)。行為的使用使得編寫少得多的測(cè)試實(shí)例同時(shí)仍然提供同樣程度綜合性的測(cè)試成為可能。執(zhí)行行為層210的執(zhí)行行為管理器212在本發(fā)明某些實(shí)施例中確定各執(zhí)行行為214中的哪些行為與考慮中的邏輯操作相關(guān)。在本發(fā)明某些實(shí)施例中,加權(quán)因子和其它設(shè)置可用來(lái)選擇一特定行為。有關(guān)行為層210的其它信息可在相關(guān)的律師案號(hào)為MSFT-4148的題為“System and Method for Selecting Test Case Execution Behaviors for ReproducibleTest Automation”(“選擇用于復(fù)驗(yàn)自動(dòng)化的測(cè)試實(shí)例執(zhí)行行為的系統(tǒng)和方法”)的美國(guó)專利申請(qǐng)中找到。
      然后邏輯層204可使用選定行為來(lái)執(zhí)行操作。在本發(fā)明某些實(shí)施例中選擇機(jī)制可在運(yùn)行時(shí)配置。該特征使測(cè)試行為能更改而無(wú)需更改測(cè)試實(shí)例本身。例如,如果制作菜單機(jī)制最近已重新編寫,則可能需要使用制作菜單機(jī)制來(lái)執(zhí)行動(dòng)作,一般給予新代碼好的測(cè)試?;蛘?,如果在快捷鍵處理中有一已知缺陷,則在修復(fù)缺陷之前需要對(duì)使用快捷鍵的方法避免使用。該改變可通過(guò)行為層而不在測(cè)試實(shí)例本身中進(jìn)行。
      圖4是在自動(dòng)化測(cè)試中使用體系結(jié)構(gòu)堆棧的方法的流程圖。在步驟402,接收寫入體系結(jié)構(gòu)堆棧的測(cè)試實(shí)例。該測(cè)試實(shí)例可被寫入邏輯層。或者,測(cè)試實(shí)例可被寫入堆棧中的較深層。在步驟404,可向驗(yàn)證層發(fā)送將執(zhí)行測(cè)試實(shí)例的通知。在本發(fā)明某些實(shí)施例中,取得應(yīng)用程序的測(cè)試前期望狀態(tài)的抽點(diǎn)打印。在步驟406,解析測(cè)試實(shí)例的語(yǔ)句。在本發(fā)明某些實(shí)施例中,測(cè)試實(shí)例的每個(gè)語(yǔ)句表示一邏輯操作。在步驟408,確定與邏輯操作相關(guān)的行為。測(cè)試實(shí)例本身并不實(shí)現(xiàn)每個(gè)步驟的細(xì)節(jié),而是向執(zhí)行行為管理器詢問(wèn)適當(dāng)?shù)男袨?。在本發(fā)明某些實(shí)施例中,執(zhí)行行為層的執(zhí)行行為管理器確定在執(zhí)行行為數(shù)據(jù)庫(kù)中的哪些行為與考慮中的邏輯操作相關(guān)。執(zhí)行行為管理器可瀏覽用于實(shí)現(xiàn)測(cè)試實(shí)例中步驟的各個(gè)行為之間的關(guān)系集并作出選擇。加權(quán)因子和其它設(shè)置可用來(lái)選擇一特定行為。在步驟410可使用選定行為來(lái)執(zhí)行操作。對(duì)測(cè)試實(shí)例中的每個(gè)語(yǔ)句可重復(fù)步驟406到410。在步驟412可通知驗(yàn)證層已執(zhí)行測(cè)試實(shí)例。驗(yàn)證層可確定實(shí)際結(jié)果是否與期望結(jié)果一致?;蛘撸?yàn)證處理可在執(zhí)行測(cè)試實(shí)例中每個(gè)語(yǔ)句之后進(jìn)行。
      在此所述的各種技術(shù)可用硬件、軟件、或在適當(dāng)時(shí)用兩者的組合來(lái)實(shí)現(xiàn)。因而,本發(fā)明的方法和裝置或其某些方面或部分可采取包括在諸如軟盤、CD-ROM、硬盤、或任何其它機(jī)器可讀的存儲(chǔ)介質(zhì)的有形介質(zhì)中的程序代碼(即指令)的形式,其中當(dāng)程序代碼由諸如計(jì)算機(jī)的機(jī)器載入并執(zhí)行時(shí),該機(jī)器變成實(shí)踐本發(fā)明的裝置。程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情形中,計(jì)算裝置通常包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)單元)、至少一個(gè)輸入裝置、以及至少一個(gè)輸出裝置??衫缤ㄟ^(guò)使用數(shù)據(jù)處理API等利用本發(fā)明的領(lǐng)域?qū)S镁幊棠P头矫娴膭?chuàng)建和/或?qū)崿F(xiàn)的一個(gè)或多個(gè)程序,最好用高級(jí)過(guò)程或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn)以與計(jì)算機(jī)系統(tǒng)通信。然而,如果需要程序也可用匯編或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)。在任何情形中,語(yǔ)言可以是編譯或解釋語(yǔ)言,并可與硬件實(shí)現(xiàn)相組合。
      盡管本發(fā)明已結(jié)合各附圖的優(yōu)選實(shí)施例進(jìn)行了描述,可以理解可使用其它實(shí)施例或可對(duì)所述實(shí)施例作更改和添加來(lái)執(zhí)行本發(fā)明的相同功能而不從其背離。因此,本發(fā)明應(yīng)不限于任一單個(gè)實(shí)施例,而應(yīng)根據(jù)所附權(quán)利要求在寬度和范圍內(nèi)作解釋。
      權(quán)利要求
      1.一種自動(dòng)化測(cè)試系統(tǒng),其特征在于,包括一體系結(jié)構(gòu)的測(cè)試自動(dòng)化堆棧,包括一對(duì)象集,包括邏輯層、與要測(cè)試的應(yīng)用程序的用戶動(dòng)作集相關(guān)聯(lián)的所述邏輯層的對(duì)象集、可直接訪問(wèn)物理層的對(duì)象集的所述邏輯層的對(duì)象集;以及所述物理層的對(duì)象集,所述物理層的對(duì)象集包括指向與所述用戶動(dòng)作集相關(guān)聯(lián)的執(zhí)行選項(xiàng)的對(duì)象集。
      2.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一測(cè)試實(shí)例,所述測(cè)試實(shí)例涉及所述邏輯層的對(duì)象集中的對(duì)象。
      3.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一測(cè)試實(shí)例,所述測(cè)試實(shí)例不引用所述物理層的對(duì)象集中的對(duì)象。
      4.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述測(cè)試實(shí)例不包括驗(yàn)證代碼。
      5.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述測(cè)試實(shí)例不包括執(zhí)行選項(xiàng)。
      6.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述測(cè)試實(shí)例駐留于所述測(cè)試自動(dòng)化堆棧的測(cè)試實(shí)例層中。
      7.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一數(shù)據(jù)管理器,所述數(shù)據(jù)管理器提供測(cè)試實(shí)例所需的可變測(cè)試數(shù)據(jù)。
      8.如權(quán)利要求1所述的系統(tǒng),其特征在于,與測(cè)試數(shù)據(jù)選擇相關(guān)聯(lián)的對(duì)象存儲(chǔ)于不在所述測(cè)試自動(dòng)化堆棧中的第二邏輯層。
      9.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一行為管理器,所述行為管理器選擇測(cè)試實(shí)例的執(zhí)行選項(xiàng)。
      10.如權(quán)利要求1所述的系統(tǒng),其特征在于,與要測(cè)試的所述應(yīng)用程序的用戶動(dòng)作集的用戶動(dòng)作的執(zhí)行路徑相關(guān)聯(lián)的對(duì)象存儲(chǔ)于不在所述自動(dòng)化堆棧中的執(zhí)行行為邏輯層。
      11.如權(quán)利要求1所述的系統(tǒng),其特征在于,與要測(cè)試的所述應(yīng)用程序的用戶動(dòng)作集的用戶動(dòng)作的執(zhí)行路徑相關(guān)聯(lián)的對(duì)象存儲(chǔ)于所述自動(dòng)化堆棧的邏輯層中。
      12.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一驗(yàn)證管理器,所述驗(yàn)證管理器確定測(cè)試實(shí)例的執(zhí)行結(jié)果。
      13.如權(quán)利要求1所述的系統(tǒng),其特征在于,與測(cè)試結(jié)果的驗(yàn)證相關(guān)聯(lián)的對(duì)象存儲(chǔ)于不在所述自動(dòng)化堆棧中的驗(yàn)證層。
      14.如權(quán)利要求1所述的系統(tǒng),其特征在于,與測(cè)試結(jié)果的驗(yàn)證相關(guān)聯(lián)的對(duì)象存儲(chǔ)于所述自動(dòng)化堆棧的邏輯層。
      15.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述驗(yàn)證管理器比較所述測(cè)試實(shí)例執(zhí)行的實(shí)際結(jié)果和所述測(cè)試實(shí)例執(zhí)行的期望結(jié)果。
      16.一種用于建立測(cè)試實(shí)例創(chuàng)建和維護(hù)中效率的方法,其特征在于,包括接收一測(cè)試實(shí)例,所述測(cè)試實(shí)例包括至少一個(gè)語(yǔ)句,所述至少一個(gè)語(yǔ)句涉及多層庫(kù)中邏輯層中的對(duì)象,所述對(duì)象與用戶動(dòng)作相關(guān)聯(lián);選擇與所述用戶動(dòng)作相關(guān)聯(lián)的行為,所述行為與所述用戶動(dòng)作的特定執(zhí)行路徑相關(guān)聯(lián);以及使用所述選定的特定執(zhí)行路徑來(lái)執(zhí)行所述測(cè)試實(shí)例,所述特定執(zhí)行路徑涉及所述多層庫(kù)的物理層中的對(duì)象。
      17.如權(quán)利要求16所述的方法,其特征在于,還包括發(fā)送將執(zhí)行所述測(cè)試實(shí)例的通知。
      18.如權(quán)利要求16所述的方法,其特征在于,還包括存儲(chǔ)所述測(cè)試實(shí)例的執(zhí)行所導(dǎo)致的測(cè)試前期望狀態(tài)。
      19.如權(quán)利要求18所述的方法,其特征在于,還包括比較所述測(cè)試實(shí)例的執(zhí)行所導(dǎo)致的測(cè)試前期望狀態(tài)和所述測(cè)試實(shí)例的執(zhí)行所導(dǎo)致的測(cè)試后實(shí)際狀態(tài)。
      20.如權(quán)利要求16所述的方法,其特征在于,關(guān)聯(lián)于測(cè)試結(jié)果的驗(yàn)證的對(duì)象與關(guān)聯(lián)于執(zhí)行選項(xiàng)的對(duì)象分開。
      21.一種包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令用于接收一測(cè)試實(shí)例,所述測(cè)試實(shí)例包括至少一個(gè)語(yǔ)句,所述至少一個(gè)語(yǔ)句涉及多層庫(kù)中邏輯層中的對(duì)象,所述對(duì)象與用戶動(dòng)作相關(guān)聯(lián);發(fā)送將執(zhí)行所述測(cè)試實(shí)例的通知;選擇與所述用戶動(dòng)作相關(guān)聯(lián)的行為,所述行為與所述用戶動(dòng)作的特定執(zhí)行路徑相關(guān)聯(lián);使用所述選定的特定執(zhí)行路徑來(lái)執(zhí)行所述測(cè)試實(shí)例,所述特定執(zhí)行路徑涉及所述多層庫(kù)的物理層中的對(duì)象;以及比較測(cè)試前期望狀態(tài)和測(cè)試后的實(shí)際狀態(tài)。
      22.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其它指令用于存儲(chǔ)所述測(cè)試實(shí)例的執(zhí)行所導(dǎo)致的測(cè)試前期望狀態(tài)。
      23.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其它指令用于比較所述測(cè)試實(shí)例的執(zhí)行所導(dǎo)致的測(cè)試前期望狀態(tài)和所述測(cè)試實(shí)例的執(zhí)行所導(dǎo)致的測(cè)試后實(shí)際狀態(tài)。
      24.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其它指令用于解析所述測(cè)試實(shí)例。
      25.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其它指令用于發(fā)送已執(zhí)行所述測(cè)試實(shí)例的通知。
      全文摘要
      將自動(dòng)化測(cè)試的各方面分成各體系結(jié)構(gòu)層使得自動(dòng)化測(cè)試能更早更快地進(jìn)行并提供更綜合性的測(cè)試。物理層提供應(yīng)用程序用戶界面上的對(duì)象模型。邏輯層提供圍繞應(yīng)用程序功能的對(duì)象模型。測(cè)試實(shí)例執(zhí)行器可執(zhí)行測(cè)試實(shí)例。數(shù)據(jù)管理器可確保測(cè)試數(shù)據(jù)中的可變性。行為管理器可確定適于特定測(cè)試實(shí)例的執(zhí)行細(xì)節(jié)。驗(yàn)證管理器可在已執(zhí)行測(cè)試實(shí)例之后執(zhí)行驗(yàn)證處理。
      文檔編號(hào)G06F9/44GK1755647SQ20051009945
      公開日2006年4月5日 申請(qǐng)日期2005年8月29日 優(yōu)先權(quán)日2004年9月29日
      發(fā)明者A·M·烏爾里希, M·D·加拉赫, M·J·亨特 申請(qǐng)人:微軟公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1