輸入錯誤的PIN inputPIN<>’123456’[if n=2] and [if !validPIN&&n=1]
輸入正確的PIN inputPIN=’123456’[if n=3] and [if !validPIN&&n=2]
輸入錯誤的PIN inputPIN<>’123456’[if n=3] and [if !validPIN&&n=2]
bank.checkCard(),
為被盜ATM卡驗證PIN ,isStolen=T[if !notATMCard]
為帳戶關閉的ATM卡驗證PIN,accountClosed=T [if !notATMCard]
為合法ATM卡錯誤輸入PIN驗證身份,accountClosed=F,
isStolen=F ,validPIN=F[if !notATMCard&n<4]
為合法ATM卡正確輸入PIN驗證身份,accountClosed=F,
isStolen=F ,validPIN=T[if !notATMCard&n<4]
bank.getFeeAmount(),
獲取非成員卡用戶交易服務費金額,定義feeAmount [if !notATMCard&&ValidPIN&&n<4 and !isMemberCard]
screen.prompt()
屏幕提示“Fee Payed:XXX”
numkeyPad.getEntry(),
輸入同意付費,declineFee=T
輸入拒絕付費,declineFee=F
screen.prompt()
屏幕提示“please select transaction”[if !notATMCard&ValidPIN&&n<4] and [if isMemberCard or !isMembercard&!declineFee]
這樣我們符合spath[5]路徑條件的相應的一個測試用例tcsuite[5]的最后結果為:
Test case 5:
外部事件:插卡
environmentcondtion: ATM卡,非成員卡,卡沒有被盜,帳戶沒有關閉
input category:
inputPIN=’123456’ //輸入有效PIN
declineFee=F //輸入同意付費
interaction behavior category:
session.beginSession(),
為ATM卡合法持卡人建立會話
cardSlot.isATMCard(),
判斷是ATM卡,讀取卡號cardNum, notATMCard=F
screen.prompt(),
屏幕提示“please input PIN”,定義n=1
numkeyPad.getEntry(),
輸入正確的PIN,inputPIN=’123456’
bank.checkCard(),
為合法ATM卡正確輸入PIN驗證身份,定義accountClosed=F,
isStolen=F ,validPIN=T,ismemberCard=F;
bank.getFeeAmount(),
獲取非成員卡用戶交易服務費金額,定義feeAmount=xxx
screen.prompt()
屏幕提示“fee Payed XXX”
numkeyPad.getEntry(),
輸入同意付費 定義declineFee=F
screen.prompt()
屏幕提示“Please select transaction”
預期的方法調用序列:session.beginSession(),cardSlot.isATMCard() ,screen.prompt() ,numKeypad.getEntry() ,bank.checkCard() ,bank.getFeeAmount(),screen. prompt (),numKeypad.getEntry(),screen. prompt ()
后條件:
inputPIN=’123456’,!notATMCard, !isStolen, !accountClosed, validPIN&&n=1,
!declineFee
預期輸出:
屏幕提示“please input PIN”
屏幕提示“fee Payed XXX”
屏幕提示“Please select transaction”
我們可以用同樣方法為屬于同一個用例的其他協作圖構造了測試用例,則該用例的集成測試集構造完成。然后,可以用增量方式為組件、子系統、系統構造完整的集成測試用例集,而且可以用自動的方式進行??梢杂肹15]中的插裝方法按照每一場景路徑上的方法調用順序,對待測試實現進行插裝,這樣在執行時可以觀察到軟件用相應測試用例運行的結果,并將觀察到的實際執行結果與測試用例中的預期結果進行比較,如果一致,說明相應場景的實現與設計是一致的,否則,存在錯誤,并且錯誤在協作圖的相應場景路徑上,可以通過實際結果與預期結果發生不一致的地方定位錯誤,然后調試修改。
3.3算法實現工具框架
為了支撐上述測試用例生成方法的自動化,我們設計一個基于UML設計模型圖的集成測試用例的自動生成工具UMLTGF,我們仍然使用UML為UMLTGF建模,本文給出UMLTGF的類圖,如圖3。相應的功能描述如下:
1、UML模型分析器。能夠直接讀取UML協作圖規約的文本文件(如MDL文件)[11],進行解析,并獲取對象角色、對象的屬性和方法,鏈、約束,消息流和消息標簽,存入相應的中間表,以便測試用例生成器使用;
2、協作集成測試用例生成器。根據消息的順序號和條件,跟蹤消息流,生成每條消息的直接后繼,然后通過遍歷消息及其直接后繼的方法生成協作圖上每個用例場景對應的協作的場景路徑,同時可以獲取場景執行的控制流和數據流,并用范疇-劃分方法生成相應場景路徑對應的集成測試用例。輸入為從協作圖中提取的信息中間表,輸出為生成的測試用例集合;
3、測試用例管理。為使得生成的測試用例集可復用、可維護、無冗余,對每個測試用例設計了增加、修改、刪除操作,用來在測試用例生成過程中管理這些測試用例集。
圖3 UMLTGF類圖
原文轉自:http://www.anti-gravitydesign.com