黑盒測(cè)試用例設(shè)計(jì)之等價(jià)類劃分钦扭、邊界值分析、因果圖床绪、判定表客情、錯(cuò)誤推斷

測(cè)試策略

一組合理的策略如下:

  1. 如果規(guī)格說明包含輸入條件組合的情況,應(yīng)首先使用因果圖分析法癞己。
  2. 任何情況下都應(yīng)使用邊界值分析法膀斋。邊界值分析法可以產(chǎn)生一系列補(bǔ)充的測(cè)試條件,多數(shù)甚至全部條件可以被整合到因果圖分析中末秃。
  3. 為輸入和輸出確定有效和無效等價(jià)類概页,在必要情況下對(duì)上面確認(rèn)的測(cè)試用例進(jìn)行補(bǔ)充。
  4. 使用錯(cuò)誤猜測(cè)增加更多的測(cè)試用例练慕。
  5. 針對(duì)上述測(cè)試用例惰匙,檢查程序的邏輯結(jié)構(gòu)技掏。如果覆蓋準(zhǔn)則未能被前四個(gè)步驟中確定的測(cè)試用例所滿足,并且滿足準(zhǔn)則也并非不可能项鬼,那么增加足夠數(shù)量的測(cè)試用例哑梳,以使覆蓋準(zhǔn)則得到滿足。
    再一次聲明绘盟,使用上述策略并不能保證可以發(fā)現(xiàn)所有的錯(cuò)誤鸠真。但實(shí)踐證明這是一個(gè)合理折中的方案。同時(shí)龄毡,它也代表了客觀的艱巨工作量吠卷,雖然沒人說軟件測(cè)試是一件容易的事。

一沦零、等價(jià)類劃分

確定等價(jià)類

有效等價(jià)類代表對(duì)程序的有效輸入祭隔;無效等價(jià)類代表的是其他不正確的任何輸入。如果需要路操,我們還可以將一個(gè)等價(jià)類劃分為更小的一些等價(jià)類疾渴。

書籍?dāng)?shù)量

規(guī)格說明規(guī)定了“請(qǐng)輸入書籍的數(shù)量(1~99)”

書籍類型

規(guī)格說明規(guī)定了“書籍類型(硬皮、軟皮或活頁(yè))”

生成測(cè)試用例

  1. 為每個(gè)等價(jià)類設(shè)置編號(hào)屯仗。
輸入條件 有效等價(jià)類 無效等價(jià)類
書籍?dāng)?shù)量 ①1≤X≤99 ②X<1③X>99
書籍類型 ④硬皮⑤軟皮⑥活頁(yè) ⑦其他
  1. 編寫測(cè)試用例搞坝,盡可能多的覆蓋尚未被覆蓋的有效等價(jià)類。直到所有的有效等價(jià)類都被測(cè)試用例覆蓋魁袜。
編號(hào) 用例 覆蓋等價(jià)類
1 50桩撮,硬皮 覆蓋①④
2 50,軟皮 覆蓋①⑤
3 50慌核,活頁(yè) 覆蓋①⑥
  1. 編寫測(cè)試用例距境,覆蓋一個(gè)且僅一個(gè)尚未被覆蓋的無效等價(jià)類。直到所有的無效等價(jià)類都被測(cè)試用例所覆蓋垮卓。
編號(hào) 用例 覆蓋無效等價(jià)類
4 -50垫桂,硬皮 覆蓋②
5 199,軟皮 覆蓋③
6 50粟按,線裝 覆蓋⑦

用單個(gè)的測(cè)試用例覆蓋無效等價(jià)類诬滩,是因?yàn)橛行┹斎氲腻e(cuò)誤檢查可能會(huì)屏蔽或取代其他輸入的錯(cuò)誤檢查。比如②⑦灭将,也許程序提示“非法的書籍?dāng)?shù)量”后疼鸟,就不會(huì)執(zhí)行對(duì)書籍類型的檢查了。

二庙曙、邊界值分析

所謂邊界條件空镜,是指輸入和輸出等價(jià)類中恰好處在邊界、或超過邊界、或在邊界以下的狀態(tài)吴攒≌懦考慮了邊界條件的測(cè)試用例具有更高的測(cè)試回報(bào)率。

上例中的書籍?dāng)?shù)量范圍是1~99洼怔,所以針對(duì)0署惯,1和99,100的情況分別設(shè)計(jì)測(cè)試用例镣隶。


書籍?dāng)?shù)量的邊界值分析

從定義可以看出极谊,等價(jià)劃分只關(guān)注輸入空間(輸入等價(jià)類)的不同,邊界值分析還需要從輸出空間(輸出等價(jià)類)設(shè)計(jì)測(cè)試用例安岂。

例轻猖,某個(gè)程序按月計(jì)算個(gè)人所得稅的速算扣除數(shù),且最小金額是0域那,最大金額是13,505蜕依。使用邊界值分析法,應(yīng)該設(shè)計(jì)測(cè)試用例測(cè)試速算扣除數(shù)結(jié)果為0和13505的情況琉雳。此外,還應(yīng)觀察是否可能設(shè)計(jì)出導(dǎo)致速算扣除數(shù)為負(fù)數(shù)友瘤,或者超過13505的測(cè)試用例翠肘。

輸出結(jié)果的邊界值分析

邊界值分析法和等價(jià)劃分重要的區(qū)別是,等價(jià)劃分是從等價(jià)類中挑選任意一個(gè)元素作為測(cè)試數(shù)據(jù)辫秧;邊界值分析法考察正處于等價(jià)劃分邊界或在邊界附近的狀態(tài)束倍。

三、因果圖

邊界值分析和等價(jià)劃分的缺點(diǎn)是盟戏,未對(duì)輸入條件的組合情況绪妹、輸入條件之間的相互制約關(guān)系進(jìn)行分析。

因果圖的基本關(guān)系

  • 恒等(Identify):若a為1柿究,則b為1邮旷;否則b為0。
  • (NOT):若a為1蝇摸,則b為0婶肩;否則b為1。
  • (OR):若a或b或c為1貌夕,則d為1律歼;否則d為0。
  • (AND):若a和b和c都為1啡专,則d為1险毁;否則d為0。
因果圖基本關(guān)系

因果圖的約束條件

1、對(duì)于輸入條件的約束有E畔况、I鲸鹦、O、R四種:

  • (E):E必須總為真问窃,而a亥鬓、b最多只有一個(gè)為1。
  • (I):I為真時(shí)域庇,a嵌戈、b和c中至少有一個(gè)必須為1。
  • 唯一(O):a听皿、b中熟呛,有且僅有一個(gè)必須為1。
  • 要求(R):如果a為1尉姨,b也必須為1庵朝。
輸入約束條件

2、對(duì)于輸出結(jié)果的約束只有M一種:
屏蔽(M):如果結(jié)果a為0又厉,則b強(qiáng)制為0九府。

輸出約束條件

一、假設(shè)有一規(guī)格說明:“第一列中的字符必須是‘A’或‘B’覆致,第二列中的字符必須是一個(gè)數(shù)字拱镐。在這種情況下尖坤,對(duì)文件進(jìn)行更新塞耕。如果第一個(gè)字符不正確煤篙,產(chǎn)生提示信息X12。如果第二個(gè)字符不是數(shù)字璧诵,產(chǎn)生提示信息X13汰蜘。”

(1)將規(guī)格說明分解為可執(zhí)行的片段之宿,確定“因”和“果”族操,為每個(gè)“因”和“果”都賦予唯一的編號(hào)〕喝保“因”是條件坪创,是指一個(gè)明確的輸入條件等價(jià)類〗闵模“果”是動(dòng)作莱预,是指一個(gè)輸出或系統(tǒng)轉(zhuǎn)換(輸入對(duì)程序或系統(tǒng)狀態(tài)的延續(xù)影響)。

“因” “果”
1 —— 第一列的字符是“A” 70 —— 對(duì)文件做了更新
2 —— 第一列的字符是“B” 71 —— 產(chǎn)生提示信息X12
3 —— 第二列的字符是一個(gè)數(shù)字 72 —— 產(chǎn)生提示信息X13

(2)分析規(guī)格說明的語(yǔ)義项滑,轉(zhuǎn)換為因果圖依沮。原因①和原因②不可能同時(shí)成立,為因果圖添加對(duì)應(yīng)的約束條件,得到右圖危喉。

因果圖和添加了約束條件后的因果圖

(3)將因果圖轉(zhuǎn)換為判定表宋渔,每一列代表一個(gè)測(cè)試用例。

判定表

(4)將判定表中的列轉(zhuǎn)換為測(cè)試用例辜限。

編號(hào) 用例 輸出 編號(hào) 用例 輸出
1 A皇拣,1 對(duì)文件做了更新 4 1,A 產(chǎn)生提示信息X12薄嫡,X13
2 B氧急,1 對(duì)文件做了更新 5 A,A 產(chǎn)生提示信息X13
3 1毫深,1 產(chǎn)生提示信息X12 6 B吩坝,B 產(chǎn)生提示信息X13

二、將因果圖轉(zhuǎn)換為判定表的思路(以上述的例子來說明)

  1. 選擇一個(gè)“果”作為當(dāng)前狀態(tài)哑蔫。例:71钉寝。
  2. 對(duì)因果圖回溯,找出導(dǎo)致該“果”為1的所有因的組合(需要考慮到約束條件)闸迷。例:001嵌纲,000。
  3. 在判定表中為每個(gè)“因”的組合生成一列腥沽。例:(列3)和(列4)疹瘦。
  4. 對(duì)于每種“因”的組合,判斷所有其他“果”的狀態(tài)巡球,并放置在對(duì)應(yīng)的每一列中。例:已得在001邓嘹,000兩種組合下結(jié)點(diǎn)71的結(jié)果為1酣栈。判斷在“因”為001的組合下,得到70和72的結(jié)果為0汹押。判斷在“因”為000的組合下矿筝,得到70的結(jié)果為0,72的結(jié)果為1棚贾。將“果”的狀態(tài)填入其對(duì)應(yīng)的列窖维。

對(duì)因果圖進(jìn)行回溯時(shí),需要做到以下考慮:

a) 當(dāng)回溯經(jīng)過一個(gè)結(jié)果為1的OR結(jié)點(diǎn)時(shí)妙痹,不要將OR結(jié)點(diǎn)的1個(gè)以上的輸入同時(shí)設(shè)為1铸史。
b) 當(dāng)回溯經(jīng)過一個(gè)結(jié)果為0的AND結(jié)點(diǎn)時(shí),應(yīng)列舉出導(dǎo)致該結(jié)果為0的所有輸入情況的組合怯伊。然而琳轿,當(dāng)該AND結(jié)點(diǎn)的一個(gè)輸入條件為0時(shí),其他輸入有一個(gè)或更多的1,則不必考慮其他輸入為1的所有情況崭篡。
c) 當(dāng)回溯經(jīng)過一個(gè)結(jié)果為0的AND結(jié)點(diǎn)時(shí)挪哄,所有輸入皆為0的這一種情況應(yīng)當(dāng)列舉出來。

找出因果圖中琉闪,所有導(dǎo)致輸出狀態(tài)為0的輸入條件

(1) 根據(jù)上述第c)條思路迹炼,我們只需列出使得結(jié)點(diǎn)⑤和結(jié)點(diǎn)⑥皆為0的情況。結(jié)點(diǎn)①②③④的取值狀態(tài)為:

0颠毙,0斯入,0,0 (5=0吟秩,6=0)

(2) 根據(jù)第b)條思路咱扣,對(duì)于結(jié)點(diǎn)⑤為1而結(jié)點(diǎn)⑥為0的情況,應(yīng)該列出導(dǎo)致⑥為0的所有輸入情況組合涵防。同時(shí)闹伪,只需列出一種使得⑤為1的情況即可,不需要列出⑤為1時(shí)的所有輸入情況組合壮池。又根據(jù)第a)條思路偏瓤,當(dāng)結(jié)點(diǎn)⑤為1時(shí),我們不應(yīng)將結(jié)點(diǎn)①和②同時(shí)設(shè)為1椰憋。于是厅克,得到結(jié)點(diǎn)①②③④的取值狀態(tài):

1,0橙依,0证舟,0 (5=1,6=0)
1窗骑,0女责,0,1 (5=1创译,6=0)
1抵知,0,1软族,0 (5=1刷喜,6=0)

同樣的,對(duì)于⑤為0而⑥為1的情況立砸,也只需要列出⑥為1的一種情況即可(盡管在本例中也只有這一種)掖疮。

0,0颗祝,1氮墨,1 (5=0纺蛆,6=1)

因果圖有助于用一個(gè)系統(tǒng)的方法選擇出高效的測(cè)試用例集。它還有一個(gè)額外的好處规揪,就是可以指出規(guī)格說明的不完整性二義性桥氏。但通常它不能生成全部應(yīng)該被確定的有效測(cè)試用例

注意:因果圖方法沒有充分考慮邊界條件猛铅。建議字支,最好是單獨(dú)考慮邊界值分析。這不意味著我們要為此增加相應(yīng)多的測(cè)試用例奸忽,而是在由因果圖生成測(cè)試用例時(shí)堕伪,可以將邊界條件分析一并考慮進(jìn)去。最好的結(jié)果是既滿足了兩方面的目標(biāo)栗菜,又不需要增加新的測(cè)試用例欠雌。

四、錯(cuò)誤推測(cè)

錯(cuò)誤猜測(cè)是一項(xiàng)依賴于直覺的非正規(guī)的過程疙筹,其基本思想是人們利用直覺和經(jīng)驗(yàn)猜測(cè)可能犯得錯(cuò)誤或錯(cuò)誤易發(fā)情況的清單富俄,然后編寫測(cè)試用例來暴露這些錯(cuò)誤。

例如而咆,程序輸入中出現(xiàn)0這個(gè)值霍比,就是一種錯(cuò)誤易發(fā)情況。因此可以編寫測(cè)試用例檢查特定的輸入值中有0暴备,或特定的輸出值被強(qiáng)制為0的情況悠瞬。
同樣,在出現(xiàn)輸入或輸出數(shù)目不定的地方涯捻,如浅妆,對(duì)某個(gè)列表進(jìn)行搜索,結(jié)果為“空列表”或“只包含一個(gè)”條目的列表障癌,也是錯(cuò)誤容易發(fā)生的情況狂打。

另一個(gè)思想是,在閱讀規(guī)格說明時(shí)混弥,聯(lián)系程序員可能做的假設(shè)來確定測(cè)試用例。如規(guī)格說明中被忽略的一些內(nèi)容对省,要么是由于偶然因素蝗拿,要么是程序員認(rèn)為其顯而易見。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒿涎,一起剝皮案震驚了整個(gè)濱河市哀托,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劳秋,老刑警劉巖仓手,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胖齐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嗽冒,警方通過查閱死者的電腦和手機(jī)呀伙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來添坊,“玉大人剿另,你說我怎么就攤上這事”嵬埽” “怎么了雨女?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)阳准。 經(jīng)常有香客問我氛堕,道長(zhǎng),這世上最難降的妖魔是什么野蝇? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任讼稚,我火速辦了婚禮,結(jié)果婚禮上浪耘,老公的妹妹穿的比我還像新娘乱灵。我一直安慰自己,他們只是感情好七冲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布痛倚。 她就那樣靜靜地躺著,像睡著了一般澜躺。 火紅的嫁衣襯著肌膚如雪蝉稳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天掘鄙,我揣著相機(jī)與錄音耘戚,去河邊找鬼。 笑死操漠,一個(gè)胖子當(dāng)著我的面吹牛收津,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浊伙,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼撞秋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了嚣鄙?” 一聲冷哼從身側(cè)響起吻贿,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哑子,沒想到半個(gè)月后舅列,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肌割,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年帐要,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了把敞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宠叼,死狀恐怖先巴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冒冬,我是刑警寧澤伸蚯,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站简烤,受9級(jí)特大地震影響剂邮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜横侦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一挥萌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枉侧,春花似錦引瀑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至翼虫,卻和暖如春屑柔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背珍剑。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工掸宛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人招拙。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓唧瘾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親别凤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饰序,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348