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