因果圖法
【產(chǎn)生背景】
等價(jià)類劃分法和邊界值分析法都著重考慮輸入條件,而沒(méi)有考慮到輸入條件的各種組合情況,也沒(méi)有考慮到各個(gè)輸入條件之間的相互制約關(guān)系肃续。這樣雖然各種輸入條件可能出錯(cuò)的情況已經(jīng)測(cè)試到了霹肝,但多個(gè)輸入條件組合起來(lái)可能出錯(cuò)的情況卻被忽視了。
如果在測(cè)試時(shí)必須考慮輸入條件的各種組合颂碧,則可能的組合數(shù)目將是天文數(shù)字荠列,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)進(jìn)行測(cè)試用例的設(shè)計(jì)载城,這就需要利用因果圖(邏輯模型)肌似。
【定義】
利用圖解法分析輸入的各種組合情況,從而設(shè)計(jì)測(cè)試用例的方法诉瓦,它適合于檢查程序輸入條件的各種組合情況川队。
【優(yōu)點(diǎn)】
(1)考慮到了輸入情況的各種組合以及各個(gè)輸入情況之間的相互制約關(guān)系受楼。
(2)能夠幫助測(cè)試人員按照一定的步驟,高效率的開(kāi)發(fā)測(cè)試用例呼寸。
(3)因果圖法是將自然語(yǔ)言規(guī)格說(shuō)明轉(zhuǎn)化成形式語(yǔ)言規(guī)格說(shuō)明的一種嚴(yán)格的方法艳汽,可以指出規(guī)格說(shuō)明存在的不完整性和二義性。
因果圖中4種因果關(guān)系
用直線連接左右節(jié)點(diǎn)对雪,其中左節(jié)點(diǎn)Ci表示輸入狀態(tài)(或稱原因)河狐,右節(jié)點(diǎn)ei表示輸出狀態(tài)(或稱結(jié)果)。Ci和ei都可取值0或1瑟捣,0表示某狀態(tài)不出現(xiàn)馋艺,1表示某狀態(tài)出現(xiàn)。
因果圖中的約束
在實(shí)際問(wèn)題中輸入狀態(tài)相互之間迈套、輸出狀態(tài)相互之間可能存在某些依賴關(guān)系捐祠,稱為“約束”。對(duì)于輸入條件的約束有E桑李、I踱蛀、O、R四種約束贵白,對(duì)于輸出條件的約束只有M約束率拒。
E 約束(異) :a和b中最多有一個(gè)可能為1,即a和b不能同時(shí)為1禁荒。
I 約束(或) :a猬膨、b、c中至少有一個(gè)必須為1呛伴,即 a勃痴、b、c不能同時(shí)為0热康。
O約束(唯一):a和b必須有一個(gè)且僅有一個(gè)為1沛申。
R約束(要求):a是1時(shí),b必須是1褐隆,即a為1時(shí)污它,b不能為0。
M約束(強(qiáng)制):若結(jié)果a為1庶弃,則結(jié)果b強(qiáng)制為0衫贬。
【設(shè)計(jì)測(cè)試用例步驟】
(1)根據(jù)程序規(guī)格說(shuō)明書描述,分析并確定因(輸入條件)和果(輸出結(jié)果或程序狀態(tài)的改變)歇攻,并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符固惯。
(2)分析軟件規(guī)格說(shuō)明中的語(yǔ)義,找出原因與結(jié)果之間缴守、原因與原因之間對(duì)應(yīng)的關(guān)系葬毫, 根據(jù)這些關(guān)系畫出因果圖镇辉。
(3)由于語(yǔ)法或環(huán)境的限制,有些原因與原因之間贴捡、原因與結(jié)果之間的組合情況不可能出現(xiàn)忽肛。為表明這些特殊情況,在因果圖上用一些記號(hào)表明約束或限制條件烂斋。
(4)把因果圖轉(zhuǎn)換為決策表屹逛。
(5)為判定表中每一列所表示的情況設(shè)計(jì)一個(gè)測(cè)試用例。
【案例】
1.程序的規(guī)格說(shuō)明要求:輸入的第一個(gè)字符必須是#或汛骂,第二個(gè)字符必須是一個(gè)數(shù)字罕模,此情況下進(jìn)行文件的修改;如果第一個(gè)字符不是#或帘瞭,則給出信息N淑掌,如果第二個(gè)字符不是數(shù)字,則給出信息M蝶念。
分析:
(1)分析程序規(guī)格說(shuō)明中的原因和結(jié)果:
(2)畫出因果圖(中間結(jié)點(diǎn)是導(dǎo)出結(jié)果的進(jìn)一步原因):
(3)將因果圖轉(zhuǎn)換成如下所示的決策表:
(4)根據(jù)決策表中的每一列設(shè)計(jì)測(cè)試用例
2.自動(dòng)飲料機(jī)問(wèn)題描述:某自動(dòng)飲料機(jī)銷售罐裝飲料抛腕,銷售的飲料包括可樂(lè)、雪碧祸轮、芬達(dá)兽埃。每罐飲料的單價(jià)為1元5角,且僅接受硬幣适袜。若投入1元5角的硬幣,按下‘可樂(lè)’舷夺、‘雪碧’或‘芬達(dá)’按鈕苦酱,相應(yīng)的飲料就送出來(lái)。若投入的是兩元硬幣给猾,在送出飲料的同時(shí)退出5角硬幣疫萤。