專利名稱:從抽象測(cè)試用例表示中基于規(guī)則產(chǎn)生自動(dòng)測(cè)試腳本的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及產(chǎn)生測(cè)試用例的系統(tǒng)和方法,尤其涉及使用測(cè)試用例從抽象表示中基于規(guī)則產(chǎn)生的產(chǎn)生測(cè)試用例的方法和系統(tǒng)。
背景技術(shù):
在暴露程序缺陷方面提供足夠覆蓋和效力的適當(dāng)測(cè)試用例的創(chuàng)建和維護(hù)是一項(xiàng)非常有挑戰(zhàn)性且資源密集的活動(dòng)。測(cè)試用例管理的當(dāng)前方法不保證所需級(jí)別的測(cè)試用例的可重用性和可維護(hù)性。這導(dǎo)致從一個(gè)版本到另一個(gè)版本、從一種環(huán)境到另一種環(huán)境以及從一種平臺(tái)到另一種平臺(tái)測(cè)試用例重新創(chuàng)建的重復(fù)周期。
測(cè)試用例創(chuàng)建的當(dāng)前方法是以多種編程語(yǔ)言中一種手工編程或使用記錄/回放系統(tǒng)記錄測(cè)試用例。在兩種方法中,測(cè)試用例作為已知為測(cè)試腳本的編程語(yǔ)言語(yǔ)句序列創(chuàng)建和管理。這些測(cè)試腳本然后通過(guò)將它們看作存儲(chǔ)磁盤上的文件的一組實(shí)用程序管理。
這樣管理測(cè)試用例的一個(gè)缺點(diǎn)在于它們依賴于目標(biāo)執(zhí)行環(huán)境。不同測(cè)試執(zhí)行環(huán)境支持不同的腳本語(yǔ)言并且相同的操作在這些環(huán)境中將由不同的語(yǔ)句表示。如果企業(yè)軟件公司決定改變測(cè)試執(zhí)行環(huán)境,所有他們的測(cè)試用例不得不在新的環(huán)境中重新創(chuàng)建。
考慮到這種努力所需的基本投資,許多軟件開(kāi)發(fā)組織將依賴于單個(gè)廠商的測(cè)試執(zhí)行環(huán)境。另外,在用戶化環(huán)境中測(cè)試企業(yè)應(yīng)用也表現(xiàn)出一種挑戰(zhàn)。大多數(shù)企業(yè)應(yīng)用基本上在它們客戶環(huán)境中用戶化。相對(duì)于一套標(biāo)準(zhǔn)測(cè)試程序測(cè)試應(yīng)用可以保證應(yīng)用沒(méi)有以不期望的方式更改。假設(shè)這種測(cè)試用例可以減少這種應(yīng)用在客戶場(chǎng)所的首次展示時(shí)間以及提高現(xiàn)場(chǎng)支持活動(dòng)的效率??蛻舨荒苤С峙c軟件供應(yīng)商相同的測(cè)試執(zhí)行環(huán)境使這變得不可能。
企業(yè)應(yīng)用需要跨越大量平臺(tái)的測(cè)試。這些平臺(tái)涉及彼此配合的操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)和其他應(yīng)用的技術(shù)堆棧。為了有效管理測(cè)試用例,腳本將不依賴于任何特定平臺(tái)。
幾乎所有企業(yè)應(yīng)用都支持國(guó)際化和地方化,相同的測(cè)試可以使用不同語(yǔ)言和不同地區(qū)格式的數(shù)據(jù)集執(zhí)行是重要的。為了實(shí)現(xiàn)這一點(diǎn),數(shù)據(jù)集必須與測(cè)試場(chǎng)景分離。當(dāng)測(cè)試用例作為腳本管理時(shí),這需要一個(gè)人手工確定腳本的參數(shù)。這又涉及高等技工的基本投資。
如前一段落描述的確定參數(shù)的測(cè)試用例也需要保證足夠的覆蓋。相同的測(cè)試場(chǎng)景必須以不同的數(shù)據(jù)集、不同的邊界條件值例如執(zhí)行以保證系統(tǒng)的正常機(jī)能。
當(dāng)企業(yè)應(yīng)用從一個(gè)版本遷移至下一個(gè)時(shí),甚至細(xì)小改變例如用戶界面的布局改變可能導(dǎo)致測(cè)試用例的改變。使用腳本的測(cè)試用例表示中抽象的缺乏基本上降低測(cè)試用例的可重用性而增加維護(hù)成本。
所有企業(yè)應(yīng)用都具有在許多不同上下文中重復(fù)的功能性。以模塊化方式創(chuàng)建測(cè)試用例的能力提高其可重用性。針對(duì)相同功能性的測(cè)試用例可以在使用相同功能性的測(cè)試場(chǎng)景中重復(fù)使用。大多數(shù)腳本編輯環(huán)境通過(guò)過(guò)程支持提供模塊化。這種過(guò)程抽象局限于它們的能力,因?yàn)闇y(cè)試用例不僅包括過(guò)程抽象而且包括數(shù)據(jù)抽象。設(shè)計(jì)測(cè)試用例管理系統(tǒng)中的適當(dāng)抽象使得測(cè)試用例可以模塊化方式建立并有效且有力地重新組合。
需要產(chǎn)生測(cè)試用例的改進(jìn)系統(tǒng)和方法。進(jìn)一步需要使用測(cè)試用例從抽象表示中基于規(guī)則產(chǎn)生的產(chǎn)生測(cè)試用例的改進(jìn)方法和系統(tǒng)。
發(fā)明內(nèi)容
因此,本發(fā)明的一個(gè)目的在于提供產(chǎn)生測(cè)試用例的改進(jìn)系統(tǒng)和方法。
本發(fā)明的另一個(gè)目的在于提供使用測(cè)試用例從抽象表示中基于規(guī)則產(chǎn)生的產(chǎn)生測(cè)試用例的改進(jìn)方法和系統(tǒng)。
本發(fā)明的又一個(gè)目的在于提供使用測(cè)試用例從抽象表示中基于規(guī)則產(chǎn)生的產(chǎn)生測(cè)試用例的改進(jìn)方法和系統(tǒng),其中抽象表示包括應(yīng)用狀態(tài)、外部交互序列和來(lái)自數(shù)據(jù)存儲(chǔ)的測(cè)試用例的輸入數(shù)據(jù)。
本發(fā)明的再一個(gè)目的在于提供使用測(cè)試用例從抽象表示中基于規(guī)則產(chǎn)生的產(chǎn)生測(cè)試用例的改進(jìn)方法和系統(tǒng),其中抽象表示包括表示應(yīng)用在定義外部交互上下文的測(cè)試下的運(yùn)行時(shí)間快照的應(yīng)用狀態(tài)。
本發(fā)明的另一個(gè)目的在于提供使用測(cè)試用例從抽象表示中基于規(guī)則產(chǎn)生的產(chǎn)生測(cè)試用例的改進(jìn)方法和系統(tǒng),其中抽象表示包括包含一組應(yīng)用對(duì)象、其屬性和屬性值的應(yīng)用狀態(tài)。
本發(fā)明的這些和其他目的在產(chǎn)生測(cè)試用例的方法中實(shí)現(xiàn)。測(cè)試用例的基于規(guī)則的產(chǎn)生從包括應(yīng)用狀態(tài)、外部交互序列和來(lái)自數(shù)據(jù)存儲(chǔ)的測(cè)試用例的輸入數(shù)據(jù)的抽象表示中提供。確認(rèn)產(chǎn)生的測(cè)試用例。然后測(cè)試用例轉(zhuǎn)換成測(cè)試腳本。
在本發(fā)明的另一種實(shí)施方案中,提供一種計(jì)算機(jī)系統(tǒng),其包括連接到存儲(chǔ)器的處理器。存儲(chǔ)器存儲(chǔ)測(cè)試用例從抽象表示中基于規(guī)則的產(chǎn)生,其中抽象表示包括應(yīng)用狀態(tài)、外部交互序列和來(lái)自數(shù)據(jù)存儲(chǔ)的測(cè)試用例的輸入數(shù)據(jù),以產(chǎn)生測(cè)試用例。邏輯確認(rèn)測(cè)試用例。邏輯將測(cè)試用例轉(zhuǎn)換成測(cè)試腳本。
圖1是說(shuō)明本發(fā)明的測(cè)試用例轉(zhuǎn)換實(shí)施方案的一種實(shí)施方案的示意圖。
圖2是說(shuō)明圖1實(shí)施方案的一般流程圖。
圖3是說(shuō)明在本發(fā)明一種實(shí)施方案中使用的應(yīng)用狀態(tài)和交互表示的關(guān)系的示意圖。
圖4是說(shuō)明以本發(fā)明的方式使用的測(cè)試用例導(dǎo)入的一種實(shí)施方案的示意圖。
圖5是說(shuō)明以本發(fā)明的方式使用的導(dǎo)入處理的一種實(shí)施方案的流程圖。
圖6是說(shuō)明可以本發(fā)明一種實(shí)施方案的方式使用的應(yīng)用對(duì)象模型的示意圖。
圖7是說(shuō)明可以本發(fā)明的方式使用的語(yǔ)義分析的一種實(shí)施方案的流程圖。
圖8是說(shuō)明可以用來(lái)實(shí)現(xiàn)本發(fā)明的圖1測(cè)試用例轉(zhuǎn)換實(shí)施方案的計(jì)算機(jī)系統(tǒng)的示意圖。
圖9是說(shuō)明本發(fā)明測(cè)試用例轉(zhuǎn)換實(shí)施方案的一種實(shí)施方案的示意圖。
圖10是說(shuō)明使用組成、抽象形式和確認(rèn)的本發(fā)明測(cè)試用例轉(zhuǎn)換實(shí)施方案的一種實(shí)施方案的示意圖。
圖11是說(shuō)明可以用來(lái)實(shí)現(xiàn)圖9和10測(cè)試轉(zhuǎn)換實(shí)施方案的計(jì)算機(jī)系統(tǒng)的示意圖。
具體實(shí)施例方式
參考圖1和2,本發(fā)明的一種實(shí)施方案是轉(zhuǎn)換測(cè)試用例的系統(tǒng)10和方法。導(dǎo)入以一種或多種腳本語(yǔ)言編寫的測(cè)試用例12。測(cè)試用例12然后轉(zhuǎn)換成抽象表示14,其包括一種或多種應(yīng)用狀態(tài)16、外部交互序列18和輸入數(shù)據(jù)20。抽象表示14存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)22中。多種不同的數(shù)據(jù)庫(kù)系統(tǒng)22可以使用,包括但不局限于,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、XML數(shù)據(jù)庫(kù)管理系統(tǒng)等。
應(yīng)用狀態(tài)16表示應(yīng)用在定義外部交互上下文的測(cè)試下的運(yùn)行時(shí)間快照。在一種實(shí)施方案中,如圖3所示,應(yīng)用狀態(tài)16是一組應(yīng)用對(duì)象24,例如網(wǎng)頁(yè)或窗口控制或賬戶對(duì)象等。每個(gè)應(yīng)用對(duì)象24與一組屬性26及其值相關(guān)聯(lián)。例如,網(wǎng)頁(yè)可以具有稱作url的屬性26,其包含與當(dāng)前網(wǎng)頁(yè)相對(duì)應(yīng)的統(tǒng)一資源定位器(URL),以及稱作標(biāo)題的屬性26,其包含當(dāng)前網(wǎng)頁(yè)的標(biāo)題。在一種實(shí)施方案中,該組應(yīng)用狀態(tài)16在測(cè)試用例12中表示并且以分層方式排列。
使用的腳本語(yǔ)言可以是用于記錄或編輯測(cè)試用例的類型化或未類型化編程語(yǔ)言。外部交互序列18可以表示由外部代理28在應(yīng)用對(duì)象24上調(diào)用的事件。外部代理28可以是人工代理或其他軟件代理。交互序列可以包括捕獲順序、并發(fā)、循環(huán)、條件交互等的流控制結(jié)構(gòu)32。
如圖4所示,在一種實(shí)施方案中,語(yǔ)法分析34可以為引入的腳本而實(shí)現(xiàn)。語(yǔ)法分析器34可以為每種腳本語(yǔ)言實(shí)現(xiàn)一個(gè)。語(yǔ)法分析器34可以利用在擴(kuò)展巴科斯諾爾范式(EBNF)中指定的語(yǔ)法分析規(guī)則36。語(yǔ)法分析可以產(chǎn)生抽象語(yǔ)法樹(shù)(AST)38形式的分析樹(shù)。使用本發(fā)明處理腳本的方法的一種實(shí)施方案在圖5流程圖中說(shuō)明。
在一種實(shí)施方案中,實(shí)現(xiàn)基于應(yīng)用對(duì)象模型(AOM)44將AST 38轉(zhuǎn)換成抽象內(nèi)部測(cè)試用例表示42的語(yǔ)義分析40。語(yǔ)義分析40將表示為AST 38的測(cè)試用例分解為應(yīng)用狀態(tài)16、外部交互序列和輸入數(shù)據(jù)。
如圖6所示,AOM 44可以是在測(cè)試下模擬應(yīng)用的元數(shù)據(jù)表示。元數(shù)據(jù)表示的組成部分包括,但不局限于,應(yīng)用對(duì)象24的應(yīng)用對(duì)象類型定義48,每個(gè)應(yīng)用對(duì)象24類型的屬性定義50,由每個(gè)應(yīng)用對(duì)象24類型支持的方法和事件52的定義,事件52在應(yīng)用狀態(tài)16上效果的定義等。使用本發(fā)明執(zhí)行語(yǔ)義分析的方法的一種實(shí)施方案在圖7流程圖中說(shuō)明。
應(yīng)用對(duì)象類型定義48可以包括每個(gè)應(yīng)用對(duì)象24類型的另外分類,并且可以是(i)分層,(ii)容器和(iii)簡(jiǎn)單(simple)。分層對(duì)象類型與其自己的應(yīng)用狀態(tài)16相關(guān)聯(lián)??梢园渌麑?duì)象實(shí)例的應(yīng)用對(duì)象類型16是容器型。例如,網(wǎng)頁(yè)可以由分層對(duì)象類型表示且網(wǎng)頁(yè)中的表格由容器型表示。頁(yè)面中的標(biāo)簽由簡(jiǎn)單對(duì)象類型表示。與分層應(yīng)用對(duì)象類型16相關(guān)聯(lián)的狀態(tài)是模態(tài)應(yīng)用狀態(tài)或非模態(tài)應(yīng)用狀態(tài)。模態(tài)應(yīng)用狀態(tài)限制對(duì)當(dāng)前應(yīng)用狀態(tài)16中可用的應(yīng)用對(duì)象24實(shí)例的可能交互。對(duì)話窗口例如將所有用戶交互限制于當(dāng)前對(duì)話窗口。
事件52在應(yīng)用狀態(tài)16上的效果捕獲事件52對(duì)應(yīng)用狀態(tài)16的一個(gè)或多個(gè)結(jié)果。事件52的結(jié)果可以是給定類型對(duì)象實(shí)例的創(chuàng)建、對(duì)象類型實(shí)例的刪除、該類型現(xiàn)有對(duì)象屬性的修改、對(duì)象類型實(shí)例的選擇等。
分層對(duì)象類型的創(chuàng)建或選擇可以導(dǎo)致新的應(yīng)用狀態(tài)16的形成,與該對(duì)象類型相關(guān)聯(lián)的應(yīng)用狀態(tài)16的選擇等。
在另一種實(shí)施方案中,測(cè)試用例12的抽象表示14使用來(lái)自應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)54的信息豐富。測(cè)試用例12的抽象表示14可以通過(guò)提取與在引入的測(cè)試腳本中缺少的測(cè)試用例12相關(guān)聯(lián)的應(yīng)用對(duì)象24的那些屬性26的值來(lái)豐富。測(cè)試用例12的豐富可以分離測(cè)試用例12及其記錄或編輯環(huán)境等,并且允許在應(yīng)用元數(shù)據(jù)表示54中固定的屬性26的使用。例如,應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)54中的內(nèi)部識(shí)別字段56可以用來(lái)識(shí)別給定對(duì)象24,代替依賴語(yǔ)言的顯示標(biāo)簽。這提高測(cè)試用例12的可重用性。因?yàn)椴煌臏y(cè)試執(zhí)行環(huán)境可以使用不同的屬性26來(lái)識(shí)別相同的應(yīng)用對(duì)象16,這種分離提供平臺(tái)獨(dú)立性。
在一種實(shí)施方案中,應(yīng)用對(duì)象屬性26和輸入數(shù)據(jù)與外部交互序列分離以提供自動(dòng)參數(shù)確定。通過(guò)自動(dòng)分離數(shù)據(jù)和測(cè)試用例場(chǎng)景,10系統(tǒng)極大地減少確定腳本參數(shù)所涉及的手工勞動(dòng)。使用應(yīng)用對(duì)象模型,與每個(gè)事件52相關(guān)聯(lián)的輸入數(shù)據(jù)與場(chǎng)景定義分離。應(yīng)用相同的處理以存儲(chǔ)對(duì)象屬性26。輸入數(shù)據(jù)定義形成為場(chǎng)景中涉及的事件52而驅(qū)動(dòng)的嵌套表格數(shù)據(jù)類型定義,以及應(yīng)用對(duì)象模型中的對(duì)象事件定義。這允許匹配該定義的任何數(shù)據(jù)集應(yīng)用于同一組場(chǎng)景。
在本發(fā)明另一種實(shí)施方案中,如圖8所示,計(jì)算機(jī)系統(tǒng)110包括連接到存儲(chǔ)器114的處理器112。存儲(chǔ)器114存儲(chǔ)可由處理器112執(zhí)行的程序指令116,用于將測(cè)試用例轉(zhuǎn)換成包括應(yīng)用狀態(tài)、外部交互序列和輸入數(shù)據(jù)的抽象內(nèi)部表示。數(shù)據(jù)庫(kù)116存儲(chǔ)測(cè)試用例的抽象表示。語(yǔ)法分析器118可以為引入的腳本而包括。語(yǔ)法分析器118產(chǎn)生抽象語(yǔ)法樹(shù)(AST)120形式的分析樹(shù)。
邏輯122提供以實(shí)現(xiàn)語(yǔ)義分析并且基于應(yīng)用對(duì)象模型(AOM)將AST 120轉(zhuǎn)換成抽象內(nèi)部測(cè)試用例表示122。邏輯124使用來(lái)自應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)126的信息豐富抽象內(nèi)部測(cè)試用例表示。邏輯126將應(yīng)用對(duì)象屬性和輸入數(shù)據(jù)與外部交互序列分離以提供自動(dòng)參數(shù)確定。
在本發(fā)明另一種實(shí)施方案中,如圖9和10所示,提供產(chǎn)生測(cè)試用例212的方法和系統(tǒng)210。測(cè)試用例212從包括應(yīng)用狀態(tài)216、外部交互序列218和來(lái)自數(shù)據(jù)存儲(chǔ)222的測(cè)試用例的輸入數(shù)據(jù)220的抽象表示214中產(chǎn)生。測(cè)試用例212產(chǎn)生,然后被確認(rèn)。測(cè)試用例212轉(zhuǎn)換成測(cè)試腳本224。多種數(shù)據(jù)存儲(chǔ)222可以使用,包括但不局限于,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、XML數(shù)據(jù)庫(kù)管理系統(tǒng)、文件系統(tǒng)等。應(yīng)用狀態(tài)216可以與應(yīng)用狀態(tài)26相同。
在一種實(shí)施方案中,規(guī)則226為測(cè)試用例定義的組成部分,也就是應(yīng)用狀態(tài)216、外部交互序列218和輸入數(shù)據(jù)220的選擇而提供,像數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生的規(guī)則228一樣。選擇規(guī)則226可以使用查詢語(yǔ)言來(lái)指定,包括但不局限于,SQL、Xquery、從以編程語(yǔ)言編寫的代碼中調(diào)用的API等。查詢語(yǔ)言的使用允許測(cè)試用例從現(xiàn)場(chǎng)客戶數(shù)據(jù)產(chǎn)生。
在本發(fā)明一種實(shí)施方案中,測(cè)試用例212的產(chǎn)生包括如輸入數(shù)據(jù)222指示地組成測(cè)試用例212。多個(gè)數(shù)據(jù)集230可以為測(cè)試用例212的輸入數(shù)據(jù)集220的至少一部分或全部提供。這導(dǎo)致多個(gè)測(cè)試用例212或在每個(gè)數(shù)據(jù)集230的循環(huán)控制結(jié)構(gòu)中重復(fù)的外部交互序列的產(chǎn)生。對(duì)于輸入數(shù)據(jù)220的一部分,多個(gè)數(shù)據(jù)集230的使用導(dǎo)致與在循環(huán)控制結(jié)構(gòu)例如“while”循環(huán)中重復(fù)的輸入數(shù)據(jù)的該部分相對(duì)應(yīng)的交互序列。
在一種實(shí)施方案中,輸入數(shù)據(jù)220的每個(gè)元素使用數(shù)據(jù)有效性標(biāo)記232標(biāo)記為有效或無(wú)效。輸入數(shù)據(jù)220中有效性標(biāo)記232的存在,其不同于當(dāng)記錄或編輯測(cè)試用例212時(shí)與輸入數(shù)據(jù)220相對(duì)應(yīng)的有效性標(biāo)記,導(dǎo)致包括異常處理的適當(dāng)交互序列的產(chǎn)生步驟。例如,存儲(chǔ)在抽象表示214中的測(cè)試用例可以具有當(dāng)提供有效輸入數(shù)據(jù)集220時(shí)的正常交互序列218。抽象表示也可以包含在異常條件例如無(wú)效數(shù)據(jù)進(jìn)入的情況下遵循的交互序列218。當(dāng)從該抽象表示以及無(wú)效輸入數(shù)據(jù)產(chǎn)生測(cè)試用例212的產(chǎn)生器將創(chuàng)建包括異常情況的交互序列218而不是正常交互交互序列的測(cè)試用例。
產(chǎn)生的測(cè)試用例212可以相對(duì)于外部應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)238而確認(rèn)。確認(rèn)行為可以通過(guò)另外的確認(rèn)規(guī)則240來(lái)控制。
測(cè)試用例212從內(nèi)部表示到腳本語(yǔ)言的轉(zhuǎn)換可以通過(guò)平臺(tái)相關(guān)映射234。平臺(tái)相關(guān)映射包括語(yǔ)言映射和其他環(huán)境映射。使用的語(yǔ)言映射可以將作為關(guān)于應(yīng)用對(duì)象的事件而捕獲的外部交互218映射成腳本語(yǔ)言236的適當(dāng)語(yǔ)句。不止一種語(yǔ)言映射可以同時(shí)提供。這允許多種測(cè)試執(zhí)行環(huán)境的測(cè)試腳本的產(chǎn)生。另外的環(huán)境映射提供以支持另外的平臺(tái)獨(dú)立性。例如,如果測(cè)試下的應(yīng)用使用第三方報(bào)表書(shū)寫程序,測(cè)試用例可以使用一般報(bào)表書(shū)寫程序?qū)ο蟊硎?,并且特定?bào)表書(shū)寫程序的映射可以通過(guò)環(huán)境映射而提供。這一級(jí)別的支持可以延伸到任何級(jí)別的底層平臺(tái)。
在本發(fā)明另一種實(shí)施方案中,如圖11所示,提供有計(jì)算機(jī)系統(tǒng)310,其包括處理器312和連接到處理器310的存儲(chǔ)器314。存儲(chǔ)器314存儲(chǔ)測(cè)試用例316從抽象表示318的基于規(guī)則的產(chǎn)生。抽象表示318包括應(yīng)用狀態(tài)、外部交互序列以及來(lái)自數(shù)據(jù)存儲(chǔ)的測(cè)試用例的輸入數(shù)據(jù)以產(chǎn)生測(cè)試用例。邏輯320確認(rèn)測(cè)試用例。邏輯322為將測(cè)試用例轉(zhuǎn)換成測(cè)試腳本而提供。
邏輯320規(guī)定測(cè)試用例定義的組成部分,也就是應(yīng)用狀態(tài)、外部交互序列和輸入數(shù)據(jù)彼此以及與應(yīng)用對(duì)象模型一致。邏輯320可以是外部確認(rèn)邏輯。外部確認(rèn)邏輯可以包括相對(duì)于應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)確認(rèn)產(chǎn)生的測(cè)試用例的步驟。
計(jì)算機(jī)系統(tǒng)310也可以包括提供測(cè)試用例定義的組成部分,也就是應(yīng)用狀態(tài)、外部交互序列和輸入數(shù)據(jù)的選擇規(guī)則;數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生的規(guī)則的邏輯324。計(jì)算機(jī)系統(tǒng)310也可以包括提供數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生的邏輯326。邏輯326可以如輸入數(shù)據(jù)指示地組成測(cè)試用例。
雖然本發(fā)明的實(shí)施方案已經(jīng)說(shuō)明和描述,這些實(shí)施方案并不打算說(shuō)明和描述本發(fā)明的全部可能形式。相反地,在本說(shuō)明書(shū)中使用的文字是描述而不是限制的文字,并且應(yīng)當(dāng)理解,可以進(jìn)行各種改變而不背離本發(fā)明的本質(zhì)和范圍。
權(quán)利要求
1.一種產(chǎn)生測(cè)試用例的方法,包括提供測(cè)試用例從抽象表示中的基于規(guī)則的產(chǎn)生,其中抽象表示包括應(yīng)用狀態(tài)、外部交互序列和來(lái)自數(shù)據(jù)存儲(chǔ)的測(cè)試用例的輸入數(shù)據(jù);確認(rèn)產(chǎn)生的測(cè)試用例;以及將測(cè)試用例轉(zhuǎn)換成測(cè)試腳本。
2.根據(jù)權(quán)利要求1的方法,其中數(shù)據(jù)存儲(chǔ)是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。
3.根據(jù)權(quán)利要求1的方法,其中數(shù)據(jù)存儲(chǔ)是XML數(shù)據(jù)庫(kù)管理系統(tǒng)。
4.根據(jù)權(quán)利要求1的方法,其中數(shù)據(jù)存儲(chǔ)是文件系統(tǒng)。
5.根據(jù)權(quán)利要求1的方法,其中應(yīng)用狀態(tài)表示應(yīng)用在定義外部交互上下文的測(cè)試下的運(yùn)行時(shí)間快照。
6.根據(jù)權(quán)利要求5的方法,其中應(yīng)用狀態(tài)包括一組應(yīng)用對(duì)象、其屬性和屬性值。
7.根據(jù)權(quán)利要求5的方法,其中與測(cè)試用例相對(duì)應(yīng)的應(yīng)用狀態(tài)以分層方式排列。
8.根據(jù)權(quán)利要求1的方法,其中外部交互序列表示由外部代理在應(yīng)用對(duì)象上調(diào)用的事件。
9.根據(jù)權(quán)利要求8的方法,其中外部代理是人工代理或其他軟件代理。
10.根據(jù)權(quán)利要求8的方法,其中交互序列包括捕獲順序、并發(fā)、循環(huán)和條件交互的流控制結(jié)構(gòu)。
11.根據(jù)權(quán)利要求1的方法,其中產(chǎn)生的測(cè)試用例的確認(rèn)包括內(nèi)部和外部確認(rèn)。
12.根據(jù)權(quán)利要求11的方法,其中內(nèi)部確認(rèn)保證測(cè)試用例定義的組成部分、外部交互序列和輸入數(shù)據(jù)彼此以及與應(yīng)用對(duì)象模型一致。
13.根據(jù)權(quán)利要求12的方法,其中應(yīng)用對(duì)象模型是在測(cè)試下模擬應(yīng)用的元數(shù)據(jù)表示。
14.根據(jù)權(quán)利要求13的方法,其中元數(shù)據(jù)表示包括應(yīng)用對(duì)象的對(duì)象類型定義。
15.根據(jù)權(quán)利要求13的方法,其中元數(shù)據(jù)表示包括每個(gè)應(yīng)用對(duì)象類型的屬性定義。
16.根據(jù)權(quán)利要求13的方法,其中元數(shù)據(jù)表示包括由每個(gè)應(yīng)用對(duì)象類型支持的方法和事件的定義。
17.根據(jù)權(quán)利要求13的方法,其中元數(shù)據(jù)表示包括事件在應(yīng)用狀態(tài)上的效果的定義。
18.根據(jù)權(quán)利要求14的方法,其中應(yīng)用對(duì)象類型定義包括每個(gè)應(yīng)用對(duì)象類型到分層、容器和簡(jiǎn)單類型的另外分類。
19.根據(jù)權(quán)利要求18的方法,其中分層對(duì)象類型與其自己的應(yīng)用狀態(tài)相關(guān)聯(lián),其中可以包含其他對(duì)象實(shí)例的應(yīng)用對(duì)象類型稱為容器型。
20.根據(jù)權(quán)利要求19的方法,其中與分層應(yīng)用對(duì)象類型相關(guān)聯(lián)的狀態(tài)是模態(tài)應(yīng)用狀態(tài)或非模態(tài)應(yīng)用狀態(tài)。
21.根據(jù)權(quán)利要求20的方法,其中模態(tài)應(yīng)用狀態(tài)限制對(duì)當(dāng)前應(yīng)用狀態(tài)中可用的應(yīng)用對(duì)象實(shí)例的可能交互。
22.根據(jù)權(quán)利要求17的方法,其中事件在應(yīng)用狀態(tài)上的效果捕獲事件對(duì)應(yīng)用狀態(tài)的一個(gè)或多個(gè)結(jié)果。
23.根據(jù)權(quán)利要求22的方法,其中事件的結(jié)果選自給定類型的新的對(duì)象實(shí)例的創(chuàng)建、給定類型的對(duì)象實(shí)例的刪除、現(xiàn)有對(duì)象實(shí)例屬性的修改以及對(duì)象類型實(shí)例的選擇。
24.根據(jù)權(quán)利要求23的方法,其中分層類型的對(duì)象的新實(shí)例的創(chuàng)建導(dǎo)致新的應(yīng)用狀態(tài)的創(chuàng)建。
25.根據(jù)權(quán)利要求23的方法,其中分層類型的對(duì)象實(shí)例的選擇導(dǎo)致與該對(duì)象實(shí)例相關(guān)聯(lián)的應(yīng)用狀態(tài)的選擇。
26.根據(jù)權(quán)利要求11的方法,其中外部確認(rèn)相對(duì)于應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)確認(rèn)產(chǎn)生的測(cè)試用例。
27.根據(jù)權(quán)利要求26的方法,其中應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)包含應(yīng)用對(duì)象的定義以及測(cè)試下應(yīng)用中它們交互的性質(zhì)。
28.根據(jù)權(quán)利要求26的方法,其中外部確認(rèn)用作測(cè)試用例的靜態(tài)驗(yàn)證測(cè)試。
29.根據(jù)權(quán)利要求26的方法,其中外部確認(rèn)通過(guò)指出無(wú)效測(cè)試用例增加生產(chǎn)力。
30.根據(jù)權(quán)利要求26的方法,其中外部確認(rèn)通過(guò)指出可靜態(tài)驗(yàn)證的應(yīng)用行為中的矛盾來(lái)增加生產(chǎn)力。
31.根據(jù)權(quán)利要求1的方法,其中測(cè)試腳本是以腳本語(yǔ)言表示的測(cè)試用例。
32.根據(jù)權(quán)利要求31的方法,其中腳本語(yǔ)言可以是用于記錄或編輯測(cè)試用例的類型化或未類型化編程語(yǔ)言。
33.根據(jù)權(quán)利要求1的方法,還包括提供測(cè)試用例定義的組成部分、外部交互序列和輸入數(shù)據(jù)的選擇規(guī)則;數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生的規(guī)則。
34.根據(jù)權(quán)利要求33的方法,其中選擇規(guī)則使用查詢語(yǔ)言指定。
35.根據(jù)權(quán)利要求34的方法,其中查詢語(yǔ)言是結(jié)構(gòu)化查詢語(yǔ)言(SQL)。
36.根據(jù)權(quán)利要求34的方法,其中查詢語(yǔ)言是XML查詢(XQuery)。
37.根據(jù)權(quán)利要求34的方法,其中查詢語(yǔ)言是從以編程語(yǔ)言編寫的代碼中調(diào)用的應(yīng)用編程接口(API)。
38.根據(jù)權(quán)利要求34的方法,其中查詢語(yǔ)言的使用允許測(cè)試用例從現(xiàn)場(chǎng)客戶數(shù)據(jù)產(chǎn)生。
39.根據(jù)權(quán)利要求33的方法,其中數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生涉及如輸入數(shù)據(jù)指示地組成測(cè)試用例。
40.根據(jù)權(quán)利要求39的方法,其中輸入數(shù)據(jù)的多個(gè)數(shù)據(jù)集的可用性將導(dǎo)致多個(gè)測(cè)試用例或在每個(gè)數(shù)據(jù)集的循環(huán)控制結(jié)構(gòu)中重復(fù)的外部交互序列的產(chǎn)生。
41.根據(jù)權(quán)利要求39的方法,其中對(duì)于輸入數(shù)據(jù)的一部分的多個(gè)數(shù)據(jù)集的可用性將導(dǎo)致與在循環(huán)控制結(jié)構(gòu)中重復(fù)的輸入數(shù)據(jù)的該部分相對(duì)應(yīng)的交互序列。
42.根據(jù)權(quán)利要求39的方法,其中輸入數(shù)據(jù)的每個(gè)元素可以標(biāo)記為有效或無(wú)效。
43.根據(jù)權(quán)利要求42的方法,其中輸入數(shù)據(jù)中有效性標(biāo)記的存在,其不同于當(dāng)記錄或編輯測(cè)試用例時(shí)與輸入數(shù)據(jù)相對(duì)應(yīng)的有效性標(biāo)記,導(dǎo)致包括異常處理的適當(dāng)交互序列的產(chǎn)生器。
44.根據(jù)權(quán)利要求1的方法,還包括通過(guò)語(yǔ)言映射將測(cè)試用例從內(nèi)部表示轉(zhuǎn)換成腳本語(yǔ)言。
45.根據(jù)權(quán)利要求44的方法,其中映射用來(lái)將作為關(guān)于應(yīng)用對(duì)象的事件而捕獲的外部交互映射成腳本語(yǔ)言的適當(dāng)語(yǔ)句。
46.根據(jù)權(quán)利要求44的方法,其中不止一種語(yǔ)言映射同時(shí)提供。
47.根據(jù)權(quán)利要求44的方法,其中產(chǎn)生的測(cè)試用例同時(shí)轉(zhuǎn)換成不止一種腳本語(yǔ)言。
48.根據(jù)權(quán)利要求47的方法,其中以多種腳本語(yǔ)言產(chǎn)生測(cè)試用例允許多種測(cè)試執(zhí)行環(huán)境的測(cè)試腳本的產(chǎn)生。
49.一種計(jì)算機(jī)系統(tǒng),包括處理器;連接到處理器的存儲(chǔ)器,存儲(chǔ)器存儲(chǔ)測(cè)試用例從抽象表示中基于規(guī)則的產(chǎn)生,其中抽象表示包括應(yīng)用狀態(tài)、外部交互序列和來(lái)自數(shù)據(jù)存儲(chǔ)的測(cè)試用例的輸入數(shù)據(jù),以產(chǎn)生測(cè)試用例;確認(rèn)測(cè)試用例的邏輯;以及將測(cè)試用例轉(zhuǎn)換成測(cè)試腳本的邏輯。
50.根據(jù)權(quán)利要求49的系統(tǒng),其中確認(rèn)測(cè)試用例的邏輯規(guī)定測(cè)試用例定義的組成部分、外部交互序列和輸入數(shù)據(jù)彼此以及與應(yīng)用對(duì)象模型一致。
51.根據(jù)權(quán)利要求49的系統(tǒng),其中確認(rèn)測(cè)試用例的邏輯是外部確認(rèn)邏輯。
52.根據(jù)權(quán)利要求51的系統(tǒng),其中外部確認(rèn)邏輯包括相對(duì)于應(yīng)用元數(shù)據(jù)倉(cāng)庫(kù)確認(rèn)產(chǎn)生的測(cè)試用例。
53.根據(jù)權(quán)利要求49的系統(tǒng),還包括提供測(cè)試用例定義的組成部分、外部交互序列和輸入數(shù)據(jù)的選擇規(guī)則的邏輯;其中規(guī)則是數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生。
54.根據(jù)權(quán)利要求49的系統(tǒng),還包括提供數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生的邏輯。
55.根據(jù)權(quán)利要求54的系統(tǒng),其中提供數(shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生的邏輯包括如輸入數(shù)據(jù)指示地組成測(cè)試用例。
全文摘要
本發(fā)明提供一種一般的基于規(guī)則的技術(shù),用于從抽象內(nèi)部測(cè)試用例表示中產(chǎn)生測(cè)試用例。抽象內(nèi)部測(cè)試用例表示基于測(cè)試用例表示模型,其包括應(yīng)用狀態(tài)(狀態(tài)信息)、外部交互序列(控制流信息)和輸入數(shù)據(jù)。抽象表示本質(zhì)上提供測(cè)試用例的平臺(tái)獨(dú)立表示。應(yīng)用對(duì)象模型提供捕獲測(cè)試下應(yīng)用的結(jié)構(gòu)和行為性質(zhì)所需的表示能力。規(guī)則可以被指定以定義哪種應(yīng)用狀態(tài)(狀態(tài)信息)、外部交互序列(控制信息)和輸入數(shù)據(jù)集應(yīng)當(dāng)在測(cè)試用例的產(chǎn)生中使用。多個(gè)數(shù)據(jù)集可以創(chuàng)建并應(yīng)用以支持?jǐn)?shù)據(jù)驅(qū)動(dòng)測(cè)試用例產(chǎn)生。提供一種基于平臺(tái)映射的技術(shù)以將測(cè)試用例轉(zhuǎn)換成針對(duì)任何特定應(yīng)用平臺(tái)的任何特定測(cè)試腳本執(zhí)行環(huán)境的自動(dòng)測(cè)試腳本。
文檔編號(hào)G06F11/36GK1954298SQ200580006415
公開(kāi)日2007年4月25日 申請(qǐng)日期2005年1月6日 優(yōu)先權(quán)日2004年1月13日
發(fā)明者約翰·蘭道爾·維斯特, 薩希施·K.·M.·戈皮納蘭內(nèi)爾, 安德魯·海安-查爾·金 申請(qǐng)人:交響樂(lè)服務(wù)公司