專(zhuān)利名稱(chēng):檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及web應(yīng)用測(cè)試,更具體涉及一種用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)和方法。
背景技術(shù):
對(duì)于大多數(shù)web應(yīng)用來(lái)說(shuō),可構(gòu)建自動(dòng)測(cè)試腳本以覆蓋基本的用戶(hù)場(chǎng)景。每當(dāng)開(kāi)發(fā)人員修改某些代碼時(shí),例如當(dāng)發(fā)布產(chǎn)品的新版本時(shí),這些腳本或其子集需要重新運(yùn)行以確保產(chǎn)品的功能仍然是正確的。然而在很多情況下,由于web應(yīng)用的用戶(hù)界面(UI)的更改,測(cè)試腳本本身已不再有效。也就是說(shuō),這些自動(dòng)測(cè)試腳本需要根據(jù)開(kāi)發(fā)人員做出的Π更改來(lái)進(jìn)行更新。在目前,開(kāi)發(fā)人對(duì)做出的Π更改并不會(huì)被同步到自動(dòng)測(cè)試腳本,因此測(cè)試人員需要一遍一遍地重新運(yùn)行自動(dòng)測(cè)試腳本,以在沒(méi)有任何提示的情況下發(fā)現(xiàn)斷裂點(diǎn),并手工將其修復(fù)。對(duì)于大的項(xiàng)目來(lái)說(shuō),有可能需要一天多的時(shí)間來(lái)僅僅發(fā)現(xiàn)一自動(dòng)測(cè)試用例中的所有斷裂點(diǎn),更不用說(shuō)手工糾正它們了。這顯然是非常低效的,且也是不準(zhǔn)確的。因此,本領(lǐng)域中需要一種用于響應(yīng)于Π更改而檢測(cè)自動(dòng)測(cè)試腳本中的斷裂點(diǎn)的更準(zhǔn)確和有效的方法。
發(fā)明內(nèi)容
在本發(fā)明的一個(gè)方面,提供了一種用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng),包括:記錄模塊,被配置為在自動(dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,以及在該web頁(yè)面輸出中該步所操縱的元素的信息,其中該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)怀尸F(xiàn)引擎模塊,被配置為在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出;檢測(cè)模塊,被配置為檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)。在本發(fā)明的另一個(gè)方面,提供了一種用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的方法,包括:在開(kāi)發(fā)環(huán)境中向所開(kāi)發(fā)的web頁(yè)面添加用于標(biāo)識(shí)該web頁(yè)面的注釋?zhuān)辉谧詣?dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,以及該步所操縱的web頁(yè)面輸出中的元素的信息,其中該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)辉趙eb應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出;檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)。與現(xiàn)有的解決方案相比,本發(fā)明的主要優(yōu)點(diǎn)在于:I)它可以直接向測(cè)試人員提供關(guān)于在UI代碼更改后測(cè)試腳本中的哪些內(nèi)容需要更新的完整的指示,使得測(cè)試人員不必再一遍一遍地運(yùn)行測(cè)試用例來(lái)發(fā)現(xiàn)斷裂點(diǎn)。
2)在一些實(shí)施例中,本發(fā)明的解決方案還可以幫助在一定程度上檢查測(cè)試用例的覆蓋性。例如,如果一個(gè)web頁(yè)面具有導(dǎo)致三個(gè)不同路徑的不同三個(gè)不同的出口點(diǎn),則本發(fā)明的解決方案可以幫助檢查自動(dòng)測(cè)試腳本池是否覆蓋了所有這三個(gè)路徑。
所附權(quán)利要求中闡述了被認(rèn)為是本發(fā)明的特點(diǎn)的新穎特征。但是,通過(guò)在結(jié)合附圖閱讀時(shí)參照下面對(duì)說(shuō)明性實(shí)施例的詳細(xì)說(shuō)明將最好地理解發(fā)明本身以及其優(yōu)選使用模式、另外的目標(biāo)以及優(yōu)點(diǎn),其中:圖1示出了本發(fā)明的解決方案可應(yīng)用的典型自動(dòng)測(cè)試腳本場(chǎng)景的示例;圖2示出了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的整體操作過(guò)程的示意圖;圖3示出了為由多個(gè)子web頁(yè)面組成web頁(yè)面添加注釋的示例;圖4示出了本發(fā)明的系統(tǒng)中的記錄模塊所記錄的測(cè)試用例中的一步所對(duì)應(yīng)的web頁(yè)面輸出的副本;圖5示出了一個(gè)示例性JSP頁(yè)面的源代碼及其作為不同條件判斷分支的不同的頁(yè)面輸出;圖6示出了本發(fā)明的系統(tǒng)中的比較模塊針對(duì)如圖5中所示的不同的web頁(yè)面輸出與如圖4中所示的web頁(yè)面輸出副本所執(zhí)行的比較、判斷和記錄的過(guò)程;圖7示出了本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊呈現(xiàn)相應(yīng)的修改后的web頁(yè)面以及檢測(cè)模塊確定斷裂點(diǎn)的過(guò)程;圖8示出了檢測(cè)模塊生成的關(guān)于斷裂點(diǎn)的報(bào)告的示例;圖9示出了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的結(jié)構(gòu)組成;圖10示出了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的方法;以及圖11示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)700的框圖。
具體實(shí)施例方式下面參照附圖來(lái)說(shuō)明本發(fā)明的實(shí)施例。在下面的說(shuō)明中,闡述了許多具體細(xì)節(jié)以便更全面地了解本發(fā)明。但是,對(duì)于本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明顯的是,本發(fā)明的實(shí)現(xiàn)可不具有這些具體細(xì)節(jié)中的一些。此外,應(yīng)當(dāng)理解的是,本發(fā)明并不限于所介紹的特定實(shí)施例。相反,可以考慮用下面的特征和要素的任意組合來(lái)實(shí)施本發(fā)明,而無(wú)論它們是否涉及不同的實(shí)施例。因此,下面的方面、特征、實(shí)施例和優(yōu)點(diǎn)僅作說(shuō)明之用而不應(yīng)被看作是所附權(quán)利要求的要素或限定,除非權(quán)利要求中明確提出。圖1示出了本發(fā)明的解決方案可應(yīng)用的典型自動(dòng)測(cè)試腳本場(chǎng)景的示例。如圖所示,該自動(dòng)測(cè)試腳本所測(cè)試的web頁(yè)面輸出由JSP頁(yè)面Homepage, jsp構(gòu)成,Homepage, jsp包含 Leftnav.jsp 和 Content, jsp。Content, jsp 包含如下 GUI 兀素:標(biāo)簽為 ProjectID、名稱(chēng)為projectID的文本輸入框以及標(biāo)簽為Search、id為submit的按鈕。用于測(cè)試該JSP頁(yè)面的自動(dòng)測(cè)試腳本中包含分別用于測(cè)試該文本輸入框和該按鈕的測(cè)試語(yǔ)句type(" xpath=//input[iname = ' projectld] " , " 12345 ")和 click(〃 xpath = //input[iid=丨submit']")。自動(dòng)測(cè)試腳本中的每個(gè)測(cè)試語(yǔ)句用于執(zhí)行針對(duì)web頁(yè)面輸出中的元素的一個(gè)操作,其可以稱(chēng)為自動(dòng)測(cè)試腳本中的步,且每步可以有在該自動(dòng)測(cè)試腳本中唯一的編號(hào)。用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的整體操作過(guò)程圖2示出了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的整體操作過(guò)程的示意圖。如圖所示,該操作過(guò)程包括如下步驟:1.在web應(yīng)用的開(kāi)發(fā)階段,例如在集成開(kāi)發(fā)環(huán)境(IDE)中,本發(fā)明的系統(tǒng)中的注釋模塊自動(dòng)在每一個(gè)web頁(yè)面(例如HTML頁(yè)面或JSP頁(yè)面)的開(kāi)頭和結(jié)尾處添加用于標(biāo)識(shí)該web頁(yè)面的注釋(如果頁(yè)面中有<html>元素,則注釋?xiě)?yīng)當(dāng)分別位于開(kāi)頭的<html>之后,以及位于結(jié)尾的之前)。所述注釋例如為HTML注釋。注釋模塊可以根據(jù)web頁(yè)面的名稱(chēng)(通常是用戶(hù)在創(chuàng)建web頁(yè)面時(shí)指定的)或該web頁(yè)面的其他標(biāo)識(shí)來(lái)生成并添加注釋。注釋模塊例如可以在每當(dāng)開(kāi)發(fā)人員在IDE中保存web頁(yè)面文件時(shí),自動(dòng)在該文件的開(kāi)頭和結(jié)尾處添加標(biāo)識(shí)該web頁(yè)面的注釋。由于這種標(biāo)識(shí)是以HTML注釋的形式出現(xiàn)的,因此當(dāng)開(kāi)發(fā)人員在IDE中打開(kāi)這些文件時(shí),注釋是不可見(jiàn)的。對(duì)于由多個(gè)子web頁(yè)面(例如JSP文件等)組成的web頁(yè)面,貝U可以在每一個(gè)子web頁(yè)面的開(kāi)頭和結(jié)尾處分別添加標(biāo)識(shí)該子web頁(yè)面的注釋。圖3示出了為由多個(gè)子web頁(yè)面組成web頁(yè)面添加注釋的示例。如圖所示,該web頁(yè)面由一標(biāo)識(shí)為frame, jsp的jsp頁(yè)面構(gòu)成,該jsp頁(yè)面包含標(biāo)識(shí)為root_container.jsp的 jsp 頁(yè)面,而 root_container.jsp 頁(yè)面又包含了標(biāo)識(shí)為 left_nav.jsp 和 main, jsp 的jsp頁(yè)面。本發(fā)明的系統(tǒng)中的注釋模塊自動(dòng)在每個(gè)jsp頁(yè)面的開(kāi)頭和結(jié)尾添加了包含其標(biāo)識(shí)的注釋。例如〈! -startframe.jsp—>和〈! -end frame.jsp>為所添加的一對(duì)注釋?zhuān)錁?biāo)識(shí)了 jsp頁(yè)面frame, jsp,并被添加在該頁(yè)面的開(kāi)頭和結(jié)尾處。當(dāng)然,也有可能在web應(yīng)用的開(kāi)發(fā)階段完成后等其他時(shí)間向web頁(yè)面添加注釋。2.在web應(yīng)用的測(cè)試階段,測(cè)試人員構(gòu)建針對(duì)web頁(yè)面的一組測(cè)試用例,每個(gè)測(cè)試用例通常用于針對(duì)一個(gè)web頁(yè)面輸出中的元素進(jìn)行測(cè)試,例如,一個(gè)測(cè)試用例用于通過(guò)操縱某一個(gè)web頁(yè)面輸出中的元素A(以及其他元素)進(jìn)行測(cè)試。3.當(dāng)測(cè)試人員通過(guò)針對(duì)web應(yīng)用運(yùn)行測(cè)試用例進(jìn)行測(cè)試時(shí),在測(cè)試用例的各步,本發(fā)明的系統(tǒng)中的記錄模塊記錄該測(cè)試用例的該步與其所操縱的web頁(yè)面輸出中的元素之間的映射關(guān)系(可稱(chēng)為元素映射關(guān)系)。該元素映射關(guān)系例如可被存儲(chǔ)在一元素映射數(shù)據(jù)庫(kù)中。在該元素映射數(shù)據(jù)庫(kù)中,主鍵可以為測(cè)試用例的標(biāo)識(shí)以及測(cè)試用例中的步的編號(hào),且可以在每一行記錄該測(cè)試用例中的該步所操縱的web頁(yè)面輸出的標(biāo)識(shí)(例如上述web頁(yè)面的注釋?zhuān)挥捎趙eb頁(yè)面輸出是由web頁(yè)面生成的,因此兩者的標(biāo)識(shí)是一致的)及其中的元素的標(biāo)識(shí)。例如,在元素映射數(shù)據(jù)庫(kù)的某一行記錄了測(cè)試用例的標(biāo)識(shí)為1,步的編號(hào)為1,元素的標(biāo)識(shí)為A,web頁(yè)面輸出的標(biāo)識(shí)為a.jsp,這表明在測(cè)試用例I的步I中操縱了 web頁(yè)面輸出a.jsp中的元素A。當(dāng)然,在該元素映射數(shù)據(jù)庫(kù)中還可以記錄測(cè)試用例中的步所操作的元素的類(lèi)型、名稱(chēng)及其他屬性。Γ.開(kāi)發(fā)人員通過(guò)例如修改web頁(yè)面中的元素對(duì)web應(yīng)用進(jìn)行更新。修改的web頁(yè)面的標(biāo)識(shí)應(yīng)當(dāng)保持不變,以表明該修改的web頁(yè)面是具有相同標(biāo)識(shí)的原web頁(yè)面的更新頁(yè)面。2’.在開(kāi)發(fā)人員對(duì)web應(yīng)用進(jìn)行更新之后,本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊呈現(xiàn)(render)修改后的web頁(yè)面。呈現(xiàn)引擎模塊可針對(duì)在上述步驟3中所記錄的元素映射關(guān)系中的每一個(gè)測(cè)試用例的每一步,呈現(xiàn)具有與該步所對(duì)應(yīng)的web頁(yè)面相同的注釋的修改后的web頁(yè)面,從而生成修改后的web頁(yè)面輸出(對(duì)web頁(yè)面進(jìn)行呈現(xiàn)的結(jié)果可稱(chēng)為web頁(yè)面輸出)。在web頁(yè)面包含諸如JSP等動(dòng)態(tài)內(nèi)容的情況下,呈現(xiàn)包括執(zhí)行web頁(yè)面中的JSP等動(dòng)態(tài)內(nèi)容的代碼,從而生成HTML代碼。當(dāng)然,在web頁(yè)面不包含動(dòng)態(tài)內(nèi)容的情況下,呈現(xiàn)可以?xún)H包括從開(kāi)發(fā)環(huán)境或應(yīng)用服務(wù)器處獲得和/或組合web頁(yè)面的代碼。3’.本發(fā)明的系統(tǒng)中的一檢測(cè)模塊可檢測(cè)在上述步驟2’中生成的修改后的web頁(yè)面輸出,以判斷在該修改后的web頁(yè)面輸出中是否仍然包括所記錄的元素映射關(guān)系中的該步所對(duì)應(yīng)的元素。如果判斷為否,則檢測(cè)模塊可確定該步為一斷裂點(diǎn),并可向用戶(hù)報(bào)告有關(guān)該斷裂點(diǎn)的信息,以便由用戶(hù)進(jìn)行修復(fù)。用戶(hù)可通過(guò)將該測(cè)試用例中的該步所操縱的元素替換為修改后的web頁(yè)面中存在的其他元素、刪除該步等方式對(duì)該斷裂點(diǎn)進(jìn)行修復(fù)。以上操作過(guò)程主要適用于web頁(yè)面為靜態(tài)頁(yè)面(或者不包含條件判斷語(yǔ)句和循環(huán)語(yǔ)句的動(dòng)態(tài)頁(yè)面)時(shí)的情況。然而,web頁(yè)面中通常包含諸如JSP等動(dòng)態(tài)內(nèi)容,所述動(dòng)態(tài)內(nèi)容是指在web頁(yè)面中包含或引入的JSP代碼等編程代碼,這些代碼將在該web頁(yè)面的呈現(xiàn)過(guò)程被執(zhí)行,從而生成相應(yīng)的HTML代碼,且所述編程代碼通常包含循環(huán)語(yǔ)句、條件判斷語(yǔ)句等各種編程語(yǔ)句。對(duì)于包含由JSP代碼等表示的條件判斷語(yǔ)句的web頁(yè)面來(lái)說(shuō),在web頁(yè)面的呈現(xiàn)過(guò)程中,將根據(jù)條件判斷語(yǔ)句中涉及的一個(gè)或多個(gè)關(guān)鍵變量(在本申請(qǐng)中,關(guān)鍵變量即是指條件判斷語(yǔ)句的條件中包含的變量)的取值不同,而得到屬于不同的條件判斷分支的不同的web頁(yè)面輸出。對(duì)于包含條件判斷語(yǔ)句的web頁(yè)面來(lái)說(shuō),本發(fā)明的系統(tǒng)中的一比較模塊或記錄模塊除了如上所述記錄測(cè)試用例的步所對(duì)應(yīng)的web頁(yè)面輸出外,還需要記錄該步所對(duì)應(yīng)的web頁(yè)面輸出所屬的原web頁(yè)面中的條件判斷的分支,即關(guān)鍵變量的取值。只有這樣,當(dāng)web頁(yè)面被修改后,才能根據(jù)所記錄的測(cè)試用例的步所對(duì)應(yīng)的web頁(yè)面輸出所屬的條件判斷分支,生成該修改后的web頁(yè)面的相同的條件判斷分支中的修改后的web頁(yè)面輸出,并判斷該修改后的web頁(yè)面輸出中是否仍包含該步所操縱的元素。為此,根據(jù)本發(fā)明的實(shí)施例,首先,在上述步驟3中,本發(fā)明的系統(tǒng)中的記錄模塊還需要記錄測(cè)試用例的各步所對(duì)應(yīng)的web頁(yè)面輸出的副本。圖4示出了本發(fā)明的系統(tǒng)中的記錄模塊所記錄的測(cè)試用例中的一步所對(duì)應(yīng)的web頁(yè)面輸出的副本。如圖所示,該web頁(yè)面輸出副本中包含一 id為btnl的按鈕。例如,自動(dòng)測(cè)試用例testcasel中的步stepl是對(duì)該按鈕的點(diǎn)擊操作,這樣,記錄模塊將在元素映射數(shù)據(jù)庫(kù)中記錄testcasel的stepl與該web頁(yè)面輸出中的元素(element) btnl之間的映射,并將記錄testcasel的stepl所對(duì)應(yīng)的該web頁(yè)面輸出副本。其次,返回參照?qǐng)D2,在上述步驟3之后,本發(fā)明的系統(tǒng)的所述操作過(guò)程還包括如下步驟:4.針對(duì)在步驟3中所記錄的測(cè)試用例的每一步,本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊可對(duì)于具有該步所對(duì)應(yīng)的web頁(yè)面輸出的標(biāo)識(shí)的web頁(yè)面,判斷該web頁(yè)面中是否包含條件判斷語(yǔ)句,并響應(yīng)于該判斷為是,通過(guò)對(duì)該web頁(yè)面中的條件判斷語(yǔ)句的關(guān)鍵變量取不同的值,生成該web頁(yè)面的所有可能的web頁(yè)面輸出。呈現(xiàn)引擎模塊還可以將所述web頁(yè)面的標(biāo)識(shí)、條件判斷語(yǔ)句、關(guān)鍵變量、關(guān)鍵變量的不同取值、對(duì)應(yīng)于關(guān)鍵變量的不同取值的各web頁(yè)面輸出存儲(chǔ)起來(lái),例如存儲(chǔ)在一關(guān)系表中,以用于下文中所述的覆蓋性判斷。圖5示出了一個(gè)示例性JSP頁(yè)面的源代碼及其作為不同條件判斷分支的不同頁(yè)面輸出。如圖所示,該JSP頁(yè)面包含一 if...else判斷語(yǔ)句,根據(jù)該判斷語(yǔ)句的判斷條件中的關(guān)鍵變量role的取值等于rolel或不等于rolel,而生成如圖右邊所示的分別具有id為btnl的按鈕和id為txtl的文本輸入框的不同的頁(yè)面輸出。對(duì)于該JSP頁(yè)面,本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊可通過(guò)將關(guān)鍵變量role取等于rolel以及不等于rolel的值,而生成該JSP頁(yè)面的兩種可能的頁(yè)面輸出。5.本發(fā)明的系統(tǒng)中的比較模塊將所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)與在步驟3中記錄的web頁(yè)面輸出副本進(jìn)行比較,以判斷所記錄的web頁(yè)面輸出副本與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的哪一個(gè)web頁(yè)面輸出相一致。這種比較例如是通過(guò)首先生成所記錄的web頁(yè)面輸出副本的DOM樹(shù)以及所生成的每一個(gè)web頁(yè)面輸出的DOM樹(shù),然后對(duì)所述DOM樹(shù)進(jìn)行比較來(lái)完成的。此外,對(duì)于包含循環(huán)語(yǔ)句的web頁(yè)面來(lái)說(shuō),由于在呈現(xiàn)過(guò)程中循環(huán)語(yǔ)句的執(zhí)行結(jié)果通常為數(shù)量可變的信息項(xiàng)(例如,一下拉菜單的項(xiàng)),因此,即使所記錄的web頁(yè)面輸出副本與所生成一個(gè)web頁(yè)面輸出是由同一個(gè)web頁(yè)面的同一個(gè)條件判斷分支生成的,兩者仍然可能包含數(shù)量不同的信息項(xiàng)。為此,本發(fā)明的系統(tǒng)可在呈現(xiàn)過(guò)程中識(shí)別web頁(yè)面的動(dòng)態(tài)內(nèi)容中的循環(huán)語(yǔ)句,并在web頁(yè)面輸出中對(duì)由循環(huán)語(yǔ)句生成的信息項(xiàng)加上特殊標(biāo)記,用以表明所述信息項(xiàng)是由循環(huán)語(yǔ)句生成的。這樣,在比較所呈現(xiàn)的web頁(yè)面輸出與所記錄的web頁(yè)面輸出副本時(shí),可以忽略所呈現(xiàn)的web頁(yè)面輸出中包含的具有所述特殊標(biāo)記的信息項(xiàng)以及所記錄的web頁(yè)面輸出副本中的相應(yīng)信息項(xiàng)。在執(zhí)行上述比較之后,將與所記錄的web頁(yè)面輸出副本一致的所呈現(xiàn)的一個(gè)web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其取值與所述測(cè)試用例的步之間的映射關(guān)系(可稱(chēng)為條件映射關(guān)系)記錄下來(lái),例如記錄在一條件映射數(shù)據(jù)庫(kù)中。例如,在條件映射數(shù)據(jù)庫(kù)中的某行記錄了測(cè)試用例1,步I, web頁(yè)面輸出a.jsp,條件role = IDPLAN,這表明測(cè)試用例I中的步I所測(cè)試的是web頁(yè)a.jsp的、當(dāng)條件變量role為IDPLAN時(shí)的web頁(yè)面輸出。該條件映射數(shù)據(jù)庫(kù)也可以與前述元素映射數(shù)據(jù)庫(kù)合并為同一個(gè)映射數(shù)據(jù)庫(kù),這樣,在該映射數(shù)據(jù)庫(kù)將以測(cè)試用例的名稱(chēng)或標(biāo)識(shí)以及步的編號(hào)為主鍵,記錄每一個(gè)測(cè)試用例的每一步所對(duì)應(yīng)的web頁(yè)面輸出的標(biāo)識(shí)、所操縱的web頁(yè)面輸出中元素的標(biāo)識(shí)及其他屬性、所對(duì)應(yīng)的關(guān)鍵變量及其取值等。由于該條件映射數(shù)據(jù)庫(kù)或映射數(shù)據(jù)庫(kù)可包含針對(duì)一 web應(yīng)用的全部測(cè)試用例中的每一步所對(duì)應(yīng)的web頁(yè)面輸出、所操作的web頁(yè)面的標(biāo)識(shí)以及所對(duì)應(yīng)的關(guān)鍵變量及其取值,因此它可以方便地提供關(guān)于測(cè)試用例的測(cè)試覆蓋性的信息。例如,本發(fā)明的系統(tǒng)中的一覆蓋性確定模塊可通過(guò)查詢(xún)?cè)摋l件映射數(shù)據(jù)庫(kù)中的對(duì)應(yīng)于測(cè)試用例中的步的關(guān)鍵變量及其取值,并將其與上述步驟4中呈現(xiàn)引擎模塊針對(duì)所述具有所記錄的測(cè)試用例中的步所對(duì)應(yīng)的web頁(yè)面輸出的相同標(biāo)識(shí)的web頁(yè)面所獲得的、用于生成該web頁(yè)面的所有可能的web頁(yè)面輸出的關(guān)鍵變量的不同取值進(jìn)行比較,以判斷條件映射數(shù)據(jù)庫(kù)中的測(cè)試用例的步所對(duì)應(yīng)的關(guān)鍵變量的值是否覆蓋了用于生成web頁(yè)面的所有可能的web頁(yè)面輸出的關(guān)鍵變量的所有不同取值,從而判斷出測(cè)試用例的覆蓋性。圖6示出了本發(fā)明的系統(tǒng)中的比較模塊針對(duì)在步驟4中所生成的如圖5中所示的不同的web頁(yè)面輸出與在步驟3中記錄的如圖4中所示的web頁(yè)面輸出副本所執(zhí)行的比較、判斷和記錄的過(guò)程。如圖所示,比較模塊通過(guò)比較圖5中所示的所生成的不同的web頁(yè)面輸出與圖4中所示的所記錄的web頁(yè)面輸出副本,可確定圖5中所示的所呈現(xiàn)的不同的web頁(yè)面輸出中對(duì)應(yīng)于關(guān)鍵變量role等于rolel的web頁(yè)面輸出與圖4中的所記錄的web頁(yè)面輸出副本相一致,由此可確定圖4中的所記錄的web頁(yè)面輸出副本所對(duì)應(yīng)的測(cè)試用例testcasel的步stepl及其操縱的按鈕元素btnl與關(guān)鍵變量role及其值rolel之間的映射關(guān)系:testcasel: stepl: element (btnl) - > JSPl:role = = " rolel ",并可將該映射關(guān)系記錄在條件映射數(shù)據(jù)庫(kù)中。在執(zhí)行上述步驟4和5之后,相應(yīng)地,在上述步驟2’中,呈現(xiàn)引擎模塊可針對(duì)在上述步驟3中所記錄的元素映射關(guān)系中的每一個(gè)測(cè)試用例的每一步,獲得該步所對(duì)應(yīng)的web頁(yè)面輸出的標(biāo)識(shí),并獲得具有相同標(biāo)識(shí)的修改后的web頁(yè)面,然后根據(jù)在上述步驟5中所記錄的條件映射關(guān)系獲得該步所對(duì)應(yīng)的關(guān)鍵變量及其取值,并使用所述關(guān)鍵變量及其取值來(lái)呈現(xiàn)所述具有相同標(biāo)識(shí)的修改后的web頁(yè)面,從而生成修改后的web頁(yè)面輸出。然后,在上述步驟3’中,本發(fā)明的系統(tǒng)中的檢測(cè)模塊可檢測(cè)在上述步驟2’中使用所述關(guān)鍵變量及其取值生成的修改后的web頁(yè)面輸出,以判斷在該修改后的web頁(yè)面輸出中是否仍然包括所記錄的元素映射關(guān)系中的該步所對(duì)應(yīng)的元素。如果判斷為否,則檢測(cè)模塊可確定該步為一斷裂點(diǎn),并可向用戶(hù)報(bào)告,以便由用戶(hù)進(jìn)行修復(fù)。圖7示出了本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊呈現(xiàn)相應(yīng)的修改后的web頁(yè)面以及檢測(cè)模塊確定斷裂點(diǎn)的過(guò)程。如圖所示,呈現(xiàn)引擎模塊根據(jù)如圖6中所示的所記錄的條件映射關(guān)系,針對(duì)該條件映射關(guān)系中的測(cè)試用例testcasel中的步stepl,從上述步驟3中生成的元素映射關(guān)系數(shù)據(jù)庫(kù)獲得該測(cè)試用例testcasel的該步stepl所對(duì)應(yīng)的web頁(yè)面輸出的標(biāo)識(shí)JSPl (或直接從該條件映射關(guān)系中獲得該標(biāo)識(shí),如果其中存在的話(huà)),從而獲得具有相同標(biāo)識(shí)的修改后的web頁(yè)面(如圖中左上方所示);接著,根據(jù)該條件映射關(guān)系中的關(guān)鍵變量及其值JSPl: role =" rolel",使用該關(guān)鍵變量及其值來(lái)呈現(xiàn)該修改后的web頁(yè)面,從而生成修改后的web頁(yè)面輸出。如圖中所示,該修改后的web頁(yè)面輸出中將包括id為txt2的文本輸入框。然后,檢測(cè)模塊從上述步驟3中生成的元素映射關(guān)系數(shù)據(jù)庫(kù)獲得該測(cè)試用例testcasel中的步驟stepl所操作的web頁(yè)面輸出JSPl中的元素的類(lèi)型和標(biāo)識(shí),即按鈕btnl (或者直接從所述條件映射關(guān)系數(shù)據(jù)庫(kù)中獲得該元素的類(lèi)型和標(biāo)識(shí),如果其中存在的話(huà)),判斷在所述修改后的web頁(yè)面輸出中是否仍然包括相同類(lèi)型和標(biāo)識(shí)的元素btnl,并在判斷為否時(shí)確定存在斷裂點(diǎn),然后生成并向用戶(hù)顯示關(guān)于斷裂點(diǎn)的報(bào)告。如圖所示,由于在修改后的web頁(yè)面輸出中僅包括id為txt2的文本輸入框,而不再包括id為btnl的按鈕,因此可確定該測(cè)試用例中的該步為一斷裂點(diǎn),并可向用戶(hù)報(bào)告該斷裂點(diǎn)。檢測(cè)模塊還可以將該測(cè)試用例中的該步原來(lái)所對(duì)應(yīng)的元素的信息(如在元素映射數(shù)據(jù)庫(kù)中所記錄的)與修改后的web頁(yè)面輸出中所包含的元素的相關(guān)信息的對(duì)照?qǐng)?bào)告給用戶(hù),并可以根據(jù)這種對(duì)照向用戶(hù)提出適當(dāng)?shù)男迯?fù)提示。此外,檢測(cè)模塊還可以根據(jù)測(cè)試用例中的步原來(lái)所對(duì)應(yīng)的元素的信息與修改后的web頁(yè)面輸出中所包含的元素的相關(guān)信息的比較結(jié)果為斷裂點(diǎn)分配不同的斷裂級(jí)別。例如,對(duì)于元素的id未變,而只是名稱(chēng)或其他屬性改變的情況,可以分配“警告”的斷裂級(jí)別;而對(duì)于其他情況,可以分配“錯(cuò)誤”的斷裂級(jí)別。圖8示出了檢測(cè)模塊生成的關(guān)于斷裂點(diǎn)的報(bào)告的示例。如圖所示,該報(bào)告中包括檢測(cè)模塊所確定的三個(gè)斷裂點(diǎn)。第一個(gè)斷裂點(diǎn)是測(cè)試用例I中的步1,其測(cè)試腳本代碼為ClickAt (" //input [iid = ; signlnBtn '],""),其所操縱的元素的信息為 tag = " input " id = " signlnBtn " name = " signlnBtn " xpath = " //form[iid = ' login_form/ ]/p [I]/input
" key=" id"(包括該元素的類(lèi)型、id、名稱(chēng)、路徑屬性以及哪個(gè)屬性是用于在腳本中尋找該元素的鍵),其斷裂級(jí)別為錯(cuò)誤,以及其修復(fù)提示為(修改后的web頁(yè)面輸出中)具有相同名稱(chēng)的元素的id為signBtn(而不再是signlnbtn)。第二個(gè)斷裂點(diǎn)是測(cè)試用例3中的步2,其測(cè)試腳本代碼為clickAt (" //button [iid = ' btnStart'],""),其所操縱的元素的信息為 tag = " button" id="btnStart" xpath = " //div[iid = " content" ]/p
/Button" key = " id〃(包括該元素的類(lèi)型、id、名稱(chēng)、路徑屬性以及哪個(gè)屬性是用于在腳本中尋找該元素的鍵),其斷裂級(jí)別為警告,以及其修復(fù)提示為(修改后的web頁(yè)面中)的元素為輸入框“btnStart”(而不再是按鈕“btnStart”)。第三個(gè)斷裂點(diǎn)是測(cè)試用例3中的步4,其測(cè)試腳本代碼為 clcikAt(" link = Notices ;/ ),其所操縱的元素的信息為 tag = " a" IinkText="Notices" key=" IinkText"(包括該元素的類(lèi)型、鏈接文本屬性以及哪個(gè)屬性是用于在腳本中尋找該元素的鍵),其斷裂級(jí)別為錯(cuò)誤,以及其修復(fù)提示為空。通常,一個(gè)JSP文件(及用于生成動(dòng)態(tài)web內(nèi)容的其他文件)中的關(guān)鍵變量的數(shù)量及相應(yīng)的分支的數(shù)量是很少的,且典型的數(shù)量是O、I或2。因此,在大多數(shù)情況下對(duì)web應(yīng)用的更新不會(huì)改變關(guān)鍵變量本身,尤其是在web應(yīng)用已進(jìn)行穩(wěn)定階段后,而自動(dòng)測(cè)試往往正是在這個(gè)階段被引入的。對(duì)于這種未改變關(guān)鍵變量本身的web應(yīng)用更新,本發(fā)明的系統(tǒng)通過(guò)上述過(guò)程可以確定并向用戶(hù)提供所有的斷裂點(diǎn)。然而,在某些情況下,對(duì)web應(yīng)用的更新會(huì)修改關(guān)鍵變量本身,包括對(duì)關(guān)鍵變量進(jìn)行更名、刪除關(guān)鍵變量以及添加新的關(guān)鍵變量。對(duì)于在更新web應(yīng)用時(shí)關(guān)鍵變量被更名的情況,本發(fā)明的系統(tǒng)中的一更新模塊可以響應(yīng)于更新后的web頁(yè)面中的關(guān)鍵變量已更名,相應(yīng)地更新條件映射數(shù)據(jù)庫(kù)中的相應(yīng)關(guān)鍵變量名。這樣,本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊可使用與測(cè)試用例中的步關(guān)聯(lián)地記錄的已更名的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)更新后的web頁(yè)面的web頁(yè)面輸出,且本發(fā)明的系統(tǒng)中的檢測(cè)模塊可檢測(cè)該呈現(xiàn)的web頁(yè)面輸出中是否仍然包含該步所操縱的元素。對(duì)于在更新web應(yīng)用時(shí)關(guān)鍵變量被刪除的情況,本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊可響應(yīng)于在更新后的web頁(yè)面中與該測(cè)試用例中的步相關(guān)聯(lián)地記錄的關(guān)鍵變量已被刪除,不再使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)該更新后的web頁(yè)面的web頁(yè)面輸出,而是使用其余的與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍(如果有的話(huà))或不使用任何關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)該更新后的web頁(yè)面的web頁(yè)面輸出。這樣,本發(fā)明的系統(tǒng)中的檢測(cè)模塊可檢測(cè)該呈現(xiàn)的web頁(yè)面輸出中是否包含該步所操縱的元素。對(duì)于在更新web應(yīng)用時(shí)添加了新的關(guān)鍵變量的情況,本發(fā)明的系統(tǒng)中的呈現(xiàn)引擎模塊可響應(yīng)于在更新后的web頁(yè)面中添加了新的關(guān)鍵變量,通過(guò)對(duì)該新的關(guān)鍵變量取不同值或值范圍(以及使用與測(cè)試用例中的步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍,如果有的話(huà))來(lái)呈現(xiàn)該更新后的web頁(yè)面中取決于該新的關(guān)鍵變量的不同值或值范圍的所有可能的web頁(yè)面輸出。然后,本發(fā)明的系統(tǒng)中的檢測(cè)模塊可檢測(cè)所呈現(xiàn)的所有可能的web頁(yè)面輸出中是否包含所記錄的測(cè)試用例中的步所操縱的元素,且只有當(dāng)所有可能的web頁(yè)面輸出中均包含所記錄的測(cè)試用例中的步所操縱的元素時(shí),才判斷該步不是斷裂點(diǎn),而在任何一個(gè)web頁(yè)面輸出中不包含所記錄的測(cè)試用例中的步所操縱的元素時(shí),判斷該步為斷裂點(diǎn)。用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的結(jié)構(gòu)組成以上參照附圖描述了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的整體操作過(guò)程,下面參照?qǐng)D9描述根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的結(jié)構(gòu)組成。在以下描述中省略了與以上描述重復(fù)的一些細(xì)節(jié),因此可參照以上描述獲得對(duì)本發(fā)明的系統(tǒng)的更詳細(xì)的了解。如圖9所示,該用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)900包括:
記錄模塊902,被配置為在自動(dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,以及在該web頁(yè)面輸出中該步所操縱的元素的信息,其中該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)怀尸F(xiàn)引擎模塊903,被配置為在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出;檢測(cè)模塊904,被配置為檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)。所述記錄模塊902優(yōu)選地位于測(cè)試環(huán)境中。所述呈現(xiàn)引擎模塊903優(yōu)選地于位于運(yùn)行web應(yīng)用的web應(yīng)用服務(wù)器之外,且可從web應(yīng)用服務(wù)器或直接從開(kāi)發(fā)環(huán)境獲得web頁(yè)面,并對(duì)其進(jìn)行呈現(xiàn)。這樣,可以不必修改web應(yīng)用服務(wù)器本身。所述檢測(cè)模塊904優(yōu)選地位于測(cè)試環(huán)境中。根據(jù)本發(fā)明的實(shí)施例,所述檢測(cè)模塊904還被配置為在檢測(cè)結(jié)果為否時(shí)向用戶(hù)報(bào)告所述被確定的斷裂點(diǎn)的相關(guān)信息。根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述檢測(cè)模塊904被配置為:在檢測(cè)結(jié)果為否時(shí)向用戶(hù)報(bào)告所記錄的該步所操縱的元素的信息與所述更新后的web頁(yè)面的web頁(yè)面輸出中所包含的相關(guān)元素的信息之間的比較結(jié)果。根據(jù)本發(fā)明的實(shí)施例,該系統(tǒng)900還包括可選的注釋模塊901,被配置為在開(kāi)發(fā)環(huán)境中向所開(kāi)發(fā)的web頁(yè)面添加用于標(biāo)識(shí)該web頁(yè)面的注釋。所述注釋模塊901優(yōu)選地位于IDE中,且作為IDE中的一插件模塊。根據(jù)本發(fā)明的實(shí)施例,針對(duì)所記錄的帶有注釋的web頁(yè)面輸出,所述呈現(xiàn)引擎模塊903還被配置為判斷帶有相同注釋的原web頁(yè)面中是否包含條件判斷語(yǔ)句,且響應(yīng)于該判斷為是,通過(guò)對(duì)條件判斷語(yǔ)句中的關(guān)鍵變量取不同值或值范圍來(lái)呈現(xiàn)帶有相同注釋的原web頁(yè)面的所有可能的web頁(yè)面輸出;
該系統(tǒng)900還包括:可選的比較模塊905,被配置為比較所記錄的web頁(yè)面輸出與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè),以找到所呈現(xiàn)的所有可能的web頁(yè)面輸出中與所記錄的web頁(yè)面輸出一致的web頁(yè)面輸出,且將所呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地記錄。根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述呈現(xiàn)引擎模塊903進(jìn)一步被配置為:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)引擎模塊903還被配置為:通過(guò)分析所述帶有相同注釋的原web頁(yè)面的源代碼獲得其中包含的循環(huán)語(yǔ)句;對(duì)所呈現(xiàn)的所有可能的web頁(yè)面輸出中的由循環(huán)語(yǔ)句生成的信息項(xiàng)加上特殊標(biāo)記。根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述比較模塊905進(jìn)一步被配置為:在比較過(guò)程中忽略所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)中的具有所述特殊標(biāo)記的信息項(xiàng)與所記錄的web頁(yè)面輸出中的相應(yīng)信息項(xiàng)。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地被記錄在條件映射數(shù)據(jù)庫(kù)中;且該系統(tǒng)900還包括更新模塊(未示出),被配置為在web應(yīng)用更新后,響應(yīng)于更新后的web頁(yè)面中的關(guān)鍵變量已變更,相應(yīng)更新條件映射數(shù)據(jù)庫(kù)中的相應(yīng)關(guān)鍵變量名。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)引擎模塊903進(jìn)一步被配置為:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量已被刪除,不使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍而呈現(xiàn)該更新后的web頁(yè)面的web頁(yè)面輸出。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)引擎模塊903進(jìn)一步被配置為:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中添加了新的關(guān)鍵變量,通過(guò)對(duì)該新的關(guān)鍵變量取不同的值來(lái)呈現(xiàn)該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出;且所述檢測(cè)模塊904進(jìn)一步被配置為:檢測(cè)所呈現(xiàn)的該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出中的每一個(gè)web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在針對(duì)所有可能的web頁(yè)面輸出中的任何Iv web頁(yè)面輸出的檢測(cè)結(jié)果為否時(shí),確定該步為斷裂點(diǎn)。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地被記錄在條件映射數(shù)據(jù)庫(kù)中;且該系統(tǒng)900還包括覆蓋性確定模塊(未示出),被配置為通過(guò)查詢(xún)所述條件映射數(shù)據(jù)庫(kù)確定測(cè)試用例的覆蓋性。
以上參照附圖描述了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)的結(jié)構(gòu)組成,應(yīng)指出的是,以上描述僅為示例,而不是對(duì)本發(fā)明的限制。在本發(fā)明的其他實(shí)施例中,所述系統(tǒng)可具有更多、更少或不同的模塊,且各模塊之間的連接、包含、功能等關(guān)系可以與所描述的不同。用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的方法下面參照附圖10描述根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的方法。如圖所示,該方法包括以下步驟: 在步驟1002,在自動(dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,以及在該web頁(yè)面輸出中該步所操縱的元素的信息,其中該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)辉诓襟E1005,在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出;在步驟1006,檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)。根據(jù)本發(fā)明的實(shí)施例,所述步驟1006還包括在檢測(cè)結(jié)果為否時(shí)向用戶(hù)報(bào)告所述被確定的斷裂點(diǎn)的相關(guān)信息。根據(jù)本發(fā)明的進(jìn)一步實(shí)施例,該方法還包括:在所述檢測(cè)結(jié)果為否時(shí)向用戶(hù)報(bào)告所記錄的該步所操縱的元素的信息與所述更新后的web頁(yè)面的web頁(yè)面輸出中所包含的相關(guān)元素的信息之間的比較結(jié)果。根據(jù)本發(fā)明的實(shí)施例,該方法還包括可選步驟1001,其中,在開(kāi)發(fā)環(huán)境中向所開(kāi)發(fā)的web頁(yè)面添加用于標(biāo)識(shí)該web頁(yè)面的注釋。根據(jù)本發(fā)明的實(shí)施例,該方法還包括如下可選步驟:在步驟1003,針對(duì)所記錄的帶有注釋的web頁(yè)面輸出,判斷帶有相同注釋的原web頁(yè)面中是否包含條件判斷語(yǔ)句,且響應(yīng)于該判斷為是,通過(guò)對(duì)條件判斷語(yǔ)句中的關(guān)鍵變量取不同值或值范圍來(lái)呈現(xiàn)帶有相同注釋的原web頁(yè)面的所有可能的web頁(yè)面輸出;在步驟1004,比較所記錄的web頁(yè)面輸出與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè),以找到所呈現(xiàn)的所有可能的web頁(yè)面輸出中與所記錄的web頁(yè)面輸出一致的web頁(yè)面輸出,且將所呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地記錄。根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出的步驟1005進(jìn)一步包括:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)帶有相同注釋的原web頁(yè)面的所有可能的web頁(yè)面輸出的步驟還包括:通過(guò)分析所述帶有相同注釋的原web頁(yè)面的源代碼獲得其中包含的循環(huán)語(yǔ)句;對(duì)所呈現(xiàn)的所有可能的web頁(yè)面輸出中的由循環(huán)語(yǔ)句生成的信息項(xiàng)加上特殊標(biāo)記;
且所述比較所記錄的web頁(yè)面輸出與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)進(jìn)一步包括:在比較過(guò)程中忽略所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)中的具有所述特殊標(biāo)記的信息項(xiàng)與所記錄的web頁(yè)面輸出中的相應(yīng)信息項(xiàng)。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地被記錄在條件映射數(shù)據(jù)庫(kù)中;且該方法還包括如下步驟:在web應(yīng)用更新后,響應(yīng)于更新后的web頁(yè)面中的關(guān)鍵變量已更名,相應(yīng)更新條件映射數(shù)據(jù)庫(kù)中的相應(yīng)關(guān)鍵變量名。根據(jù)本發(fā)明的實(shí)施例,所述在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出進(jìn)一步包括:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量已被刪除,不使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍而呈現(xiàn)該更新后的web頁(yè)面的web頁(yè)面輸出。根據(jù)本發(fā)明的實(shí)施例,所述在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出的呈現(xiàn)引擎模塊進(jìn)一步包括:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中添加了新的關(guān)鍵變量,通過(guò)對(duì)該新的關(guān)鍵變量取不同的值來(lái)呈現(xiàn)該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出;且所述檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)進(jìn)一步包括:檢測(cè)所呈現(xiàn)的該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出中的每一個(gè)web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在針對(duì)所有可能的web頁(yè)面輸出中的任何Iv web頁(yè)面輸出的檢測(cè)結(jié)果為否時(shí),確定該步為斷裂點(diǎn)。根據(jù)本發(fā)明的實(shí)施例,所述呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地被記錄在條件映射數(shù)據(jù)庫(kù)中;且該方法還包括:通過(guò)查詢(xún)所述條件映射數(shù)據(jù)庫(kù)確定測(cè)試用例的覆蓋性。以上參照附圖描述了根據(jù)本發(fā)明的實(shí)施例的用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的方法的步驟,應(yīng)指出的是,以上描述僅為示例,而不是對(duì)本發(fā)明的限制。在本發(fā)明的其他實(shí)施例中,所述方法可具有更多、更少或不同的步驟,且各步驟之間的順序、包含、功能等關(guān)系可以與所描述的不同。圖11示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)1100的框圖。如所示,計(jì)算機(jī)系統(tǒng)1100可以包括:CPU(中央處理單元)1101、RAM (隨機(jī)存取存儲(chǔ)器)1102、ROM(只讀存儲(chǔ)器)1103、系統(tǒng)總線(xiàn)1104、硬盤(pán)控制器1105、鍵盤(pán)控制器1106、串行接口控制器1107、并行接口控制器1108、顯示控制器1109、硬盤(pán)1110、鍵盤(pán)1111、串行外部設(shè)備1112、并行外部設(shè)備1113和顯示器1114。在這些設(shè)備中,與系統(tǒng)總線(xiàn)1104耦合的有CPU110URAM 1102,ROM 1103、硬盤(pán)控制器1105、鍵盤(pán)控制器1106、串行控制器1107、并行控制器1108和顯示控制器1109。硬盤(pán)1110與硬盤(pán)控制器1105耦合,鍵盤(pán)1111與鍵盤(pán)控制器1106耦合,串行外部設(shè)備1112與串行接口控制器1107耦合,并行外部設(shè)備1113與并行接口控制器1108耦合,以及顯示器1114與顯示控制器1109耦合。應(yīng)當(dāng)理解,圖11所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明的多個(gè)方面可以體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的多個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱(chēng)為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明的多個(gè)方面還可以采取體現(xiàn)在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可用的程序碼??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電的、磁的、光的、電磁的、紅外線(xiàn)的、或半導(dǎo)體的系統(tǒng)、裝置、器件或任何以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括以下:有一個(gè)或多個(gè)導(dǎo)線(xiàn)的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任何合適的組合。在本文件的語(yǔ)境中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形的介質(zhì),該程序被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可包括在基帶中或者作為載波一部分傳播的、其中體現(xiàn)計(jì)算機(jī)可讀的程序碼的傳播的數(shù)據(jù)信號(hào)。這種傳播的信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或任何以上合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以是并非為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、但是能發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序的任何計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于——無(wú)線(xiàn)、電線(xiàn)、光纜、RF等等,或者任何合適的上述組合。計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于——無(wú)線(xiàn)、電線(xiàn)、光纜、RF等等,或者任何合適的上述組合。用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序碼,可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任何組合來(lái)編寫(xiě),所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++之類(lèi),還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如” C”程序設(shè)計(jì)語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序碼可以完全地在用戶(hù)的計(jì)算上執(zhí)行、部分地在用戶(hù)的計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶(hù)的計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任何種類(lèi)的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN) —連接到用戶(hù)的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng))連接到外部計(jì)算機(jī)。以上參照按照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的多個(gè)方面。要明白的是,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產(chǎn)生實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能指令計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品。也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上,使得在計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令就提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
權(quán)利要求
1.一種用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng),包括: 記錄模塊,被配置為在自動(dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,以及在該web頁(yè)面輸出中該步所操縱的元素的信息,其中該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)? 呈現(xiàn)引擎模塊,被配置為在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出; 檢測(cè)模塊,被配置為檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述檢測(cè)模塊還被配置為在檢測(cè)結(jié)果為否時(shí)向用戶(hù)報(bào)告所述被確定的斷裂點(diǎn)的相關(guān)信息。
3.根據(jù)權(quán)利要求1的系統(tǒng),還包括: 注釋模塊,被配置為在開(kāi)發(fā)環(huán)境中向所開(kāi)發(fā)的web頁(yè)面添加用于標(biāo)識(shí)該web頁(yè)面的注釋。
4.根據(jù)權(quán)利要求1的系統(tǒng),其中, 針對(duì)所記錄的帶有注釋的web頁(yè)面輸出,所述呈現(xiàn)引擎模塊還被配置為判斷帶有相同注釋的原web頁(yè)面中是否包含條件判斷語(yǔ)句,且響應(yīng)于該判斷為是,通過(guò)對(duì)條件判斷語(yǔ)句中的關(guān)鍵變量取不同值或值范圍 來(lái)呈現(xiàn)帶有相同注釋的原web頁(yè)面的所有可能的web頁(yè)面輸出; 該系統(tǒng)還包括:比較模塊,被配置為比較所記錄的web頁(yè)面輸出與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè),以找到所呈現(xiàn)的所有可能的web頁(yè)面輸出中與所記錄的web頁(yè)面輸出一致的web頁(yè)面輸出,且將所呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地記錄。
5.根據(jù)權(quán)利要求4的系統(tǒng),其中, 所述呈現(xiàn)引擎模塊進(jìn)一步被配置為:在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出。
6.根據(jù)權(quán)利要求4的系統(tǒng),其中, 所述呈現(xiàn)引擎模塊還被配置為: 通過(guò)分析所述帶有相同注釋的原web頁(yè)面的源代碼獲得其中包含的循環(huán)語(yǔ)句; 對(duì)所呈現(xiàn)的所有可能的web頁(yè)面輸出中的由循環(huán)語(yǔ)句生成的信息項(xiàng)加上標(biāo)記。
7.根據(jù)權(quán)利要求6的系統(tǒng),其中,所述比較模塊進(jìn)一步被配置為: 在比較過(guò)程中忽略所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)中的具有所述標(biāo)記的信息項(xiàng)與所記錄的web頁(yè)面輸出中的相應(yīng)信息項(xiàng)。
8.根據(jù)權(quán)利要求4的系統(tǒng),其中,所述呈現(xiàn)引擎模塊進(jìn)一步被配置為: 在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量已被刪除,不使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍而呈現(xiàn)該更新后的web頁(yè)面的web頁(yè)面輸出。
9.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述呈現(xiàn)引擎模塊進(jìn)一步被配置為: 在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中添加了新的關(guān)鍵變量,通過(guò)對(duì)該新的關(guān)鍵變量取不同的值來(lái)呈現(xiàn)該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出; 且所述檢測(cè)模塊進(jìn)一步被配置為: 檢測(cè)所呈現(xiàn)的該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出中的每一個(gè)web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在針對(duì)所有可能的web頁(yè)面輸出中的任何一個(gè)web頁(yè)面輸出的檢測(cè)結(jié)果為否時(shí),確定該步為斷裂點(diǎn)。
10.根據(jù)權(quán)利要求4的系統(tǒng),其中,所述呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地被記錄在條件映射數(shù)據(jù)庫(kù)中; 且該系統(tǒng)還包括覆蓋性確定模塊,被配置為通過(guò)查詢(xún)所述條件映射數(shù)據(jù)庫(kù)確定測(cè)試用例的覆蓋性。
11.一種用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的方法,包括: 在自動(dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,以及在該web頁(yè)面輸出中該步所操縱的元素的信息,其中該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)? 在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出; 檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)。
12.根據(jù)權(quán)利要求11的方法,還包括: 在檢測(cè)結(jié)果為否時(shí)向用戶(hù)報(bào)告所述被確定的斷裂點(diǎn)的相關(guān)信息。
13.根據(jù)權(quán)利要求11的方法,還包括: 在開(kāi)發(fā)環(huán)境中向所開(kāi)發(fā)的web頁(yè)面添加用于標(biāo)識(shí)該web頁(yè)面的注釋。
14.根據(jù)權(quán)利要求11的方法,還包括: 針對(duì)所記錄的帶有注釋的web頁(yè)面輸出,判斷帶有相同注釋的原web頁(yè)面中是否包含條件判斷語(yǔ)句,且響應(yīng)于該判斷為是,通過(guò)對(duì)條件判斷語(yǔ)句中的關(guān)鍵變量取不同值或值范圍來(lái)呈現(xiàn)帶有相同注釋的原web頁(yè)面的所有可能的web頁(yè)面輸出; 比較所記錄的web頁(yè)面輸出與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè),以找到所呈現(xiàn)的所有可能的web頁(yè)面輸出中與所記錄的web頁(yè)面輸出一致的web頁(yè)面輸出,且將所呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地記錄。
15.根據(jù)權(quán)利要求14的方法,其中,所述在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出進(jìn)一步包括: 在web應(yīng)用更新后,對(duì) 于所記錄的測(cè)試用例的所述至少一步,使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出。
16.根據(jù)權(quán)利要求14的方法,其中, 所述呈現(xiàn)帶有相同注釋的原web頁(yè)面的所有可能的web頁(yè)面輸出還包括: 通過(guò)分析所述帶有相同注釋的原web頁(yè)面的源代碼獲得其中包含的循環(huán)語(yǔ)句; 對(duì)所呈現(xiàn)的所有可能的web頁(yè)面輸出中的由循環(huán)語(yǔ)句生成的信息項(xiàng)加上標(biāo)記。
17.根據(jù)權(quán)利要求16的方法,其中,所述比較所記錄的web頁(yè)面輸出與所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)進(jìn)一步包括: 在比較過(guò)程中忽略所呈現(xiàn)的所有可能的web頁(yè)面輸出中的每一個(gè)中的具有所述標(biāo)記的信息項(xiàng)與所記錄的web頁(yè)面輸出中的相應(yīng)信息項(xiàng)
18.根據(jù)權(quán)利要求14的方法,其中,所述在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍來(lái)呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出進(jìn)一步包括: 在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量已被刪除,不使用與該步相關(guān)聯(lián)地記錄的關(guān)鍵變量及其值或值范圍而呈現(xiàn)該更新后的web頁(yè)面的web頁(yè)面輸出。
19.根據(jù)權(quán)利要求11的方法,其中, 所述在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出進(jìn)一步包括: 在web應(yīng)用更新后,對(duì)于所記錄的測(cè)試用例的所述至少一步,響應(yīng)于在帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面中添加了新的關(guān)鍵變量,通過(guò)對(duì)該新的關(guān)鍵變量取不同的值來(lái)呈現(xiàn)該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出; 且所述檢測(cè)所呈現(xiàn)的更新后的web頁(yè)面的web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定該步為斷裂點(diǎn)進(jìn)一步包括: 檢測(cè)所呈現(xiàn)的該更新后的web頁(yè)面的所有可能的web頁(yè)面輸出中的每一個(gè)web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在針對(duì)所有可能的web頁(yè)面輸出中的任何一個(gè)web頁(yè)面輸出的檢測(cè)結(jié)果為否時(shí),確定該步為斷裂點(diǎn)。
20.根據(jù)權(quán)利要求14的方法,其中,所述呈現(xiàn)的一致的web頁(yè)面輸出所對(duì)應(yīng)的關(guān)鍵變量及其值或值范圍與所記錄的web頁(yè)面輸出所對(duì)應(yīng)的測(cè)試用例中的步相關(guān)聯(lián)地被記錄在條件映射數(shù)據(jù)庫(kù)中; 且該方法還包括:通過(guò)查詢(xún)所述條件映射數(shù)據(jù)庫(kù)確定測(cè)試用例的覆蓋性。
全文摘要
一種用于檢測(cè)web應(yīng)用自動(dòng)測(cè)試用例中的斷裂點(diǎn)的系統(tǒng)和方法,該系統(tǒng)包括記錄模塊,被配置為在自動(dòng)測(cè)試用例運(yùn)行時(shí),針對(duì)自動(dòng)測(cè)試用例中的至少一步,記錄該步所對(duì)應(yīng)的web頁(yè)面輸出,該web頁(yè)面輸出帶有用于標(biāo)識(shí)該web頁(yè)面輸出的注釋?zhuān)约霸谠搘eb頁(yè)面輸出中該步所操縱的元素的信息;呈現(xiàn)引擎模塊,被配置為在web應(yīng)用更新后,對(duì)于所記錄的所述至少一步,呈現(xiàn)帶有該步所對(duì)應(yīng)的web頁(yè)面輸出的相同注釋的更新后的web頁(yè)面的web頁(yè)面輸出;檢測(cè)模塊,被配置為檢測(cè)所述web頁(yè)面輸出中是否包含所記錄的該步所操縱的元素,并在檢測(cè)結(jié)果為否時(shí)確定所述至少一步為斷裂點(diǎn)。
文檔編號(hào)G06F11/36GK103164334SQ201110427398
公開(kāi)日2013年6月19日 申請(qǐng)日期2011年12月19日 優(yōu)先權(quán)日2011年12月19日
發(fā)明者周登朋, 王佳燁, 劉西西, 胡長(zhǎng)春 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司