三、測(cè)試用例的設(shè)計(jì)(簡(jiǎn)單應(yīng)用)
首先來(lái)了解白盒技術(shù)
白盒測(cè)試是結(jié)構(gòu)測(cè)試,所以被測(cè)對(duì)象基本上是源程序,以程序內(nèi)部邏輯為基礎(chǔ)設(shè)計(jì)測(cè)試用例。
使用白盒技術(shù),要盡可能覆蓋最多的路徑,當(dāng)程序內(nèi)部存在判定時(shí),就要考慮邏輯覆蓋。
(1)語(yǔ)句覆蓋:就是要設(shè)計(jì)足夠多的測(cè)試用例(也就是輸入的數(shù)據(jù)),使被測(cè)程序中每個(gè)語(yǔ)句至少執(zhí)行一次。在這里,重點(diǎn)在于每個(gè)語(yǔ)句即每個(gè)語(yǔ)句都要被執(zhí)行過(guò)。設(shè)計(jì)時(shí)要記住這一點(diǎn)。
(2)判定覆蓋:指設(shè)計(jì)足夠的測(cè)試用例,使得程序中每個(gè)判定表達(dá)式至少獲得一次"真"值和"假"值,從而使程序的每一個(gè)分支至少都通過(guò)一次,因此判定覆蓋又稱為"分支覆蓋"。它和語(yǔ)句覆蓋有什么不同呢?
就在于判定,語(yǔ)句覆蓋不管是真是假,只要執(zhí)行過(guò)這句就成,而判定覆蓋則必須讓這個(gè)語(yǔ)句的執(zhí)行結(jié)構(gòu)為真和為假都要有測(cè)試用例給出。所以判定覆蓋比語(yǔ)句覆蓋嚴(yán)格些。但是判定覆蓋也不能檢查出全部錯(cuò)誤,因?yàn)橛行l件語(yǔ)句即使寫錯(cuò)了,也同樣能夠產(chǎn)生正確真值或假值。
比如 (a=2)or(x>1),由于這個(gè)or的存在,那么把x>1錯(cuò)寫成x<1時(shí),如果用例為a=2,語(yǔ)句的值都為"真"。要解決這個(gè)問(wèn)題,就要看下面的覆蓋。
(3)條件覆蓋:是指設(shè)計(jì)足夠的測(cè)試用例,使得判定表達(dá)式中每個(gè)條件的各種可能的值至少出現(xiàn)一次。這就比上面的單是判定覆蓋要嚴(yán)格得多了,如上例,(a=2)
or (x>1);在這里必須使a=2 、x>1,a≠2、x≤1均出現(xiàn)一次。
(4)判定/條件覆蓋:上面條件覆蓋也不一定滿足判定該,因?yàn)橹环蠗l件覆蓋的用例可能會(huì)不滿足每個(gè)判定語(yǔ)句均有真值或假值出現(xiàn)。因此要兩者兼顧,判定條件覆蓋就是指設(shè)計(jì)足夠
的測(cè)試用例,使得判定表達(dá)式中每個(gè)條件的所有可能取值至少出現(xiàn)一次并且每個(gè)判定表達(dá)式所有可能的結(jié)果也至少出現(xiàn)一次。
(5)條件組合覆蓋:是指設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定表達(dá)式中條件的各種或能的值的組合都至少出現(xiàn)一次。這就是前面兩個(gè)覆蓋的組合。
(6)路徑覆蓋:是指測(cè)設(shè)計(jì)足夠的測(cè)試用例,覆蓋被測(cè)試程序中所有可能的路徑。
這六種覆蓋進(jìn)行比較有下面一個(gè)表:
條件組合發(fā)現(xiàn)錯(cuò)誤的能力較強(qiáng),凡滿足其標(biāo)準(zhǔn)的測(cè)試用例,也必然滿足前四種覆蓋標(biāo)準(zhǔn)。在實(shí)際的邏輯測(cè)試中,一般以條件組合覆蓋為主設(shè)計(jì)測(cè)試用例,然后再補(bǔ)充部分用例來(lái)達(dá)到路徑覆蓋的測(cè)試標(biāo)準(zhǔn)。
2、循環(huán)覆蓋:當(dāng)程序中存在循環(huán)結(jié)構(gòu)時(shí),要覆蓋所有的路徑是不可能的,但是可以通過(guò)限制循環(huán)結(jié)構(gòu)來(lái)測(cè)試。
3、基本路徑測(cè)試:由于實(shí)際問(wèn)題中,程序的路徑是龐大的,因此要將覆蓋的路徑壓縮到一定限度才能解決這個(gè)問(wèn)題;韭窂綔y(cè)試就是在程序控制流程圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本路徑集合從面設(shè)計(jì)測(cè)試用例保證這些路徑至少通過(guò)一次。
再來(lái)看看黑盒技術(shù)
黑盒測(cè)試是功能測(cè)試。測(cè)試的是程序的接口。在設(shè)計(jì)測(cè)試用例時(shí)有以下幾種方法:等價(jià)類的劃分、邊界值分析、錯(cuò)誤推測(cè)和因果圖。這幾種方法都不能提供一組完整的測(cè)試用例,在實(shí)際測(cè)試中應(yīng)把各種方法結(jié)合起來(lái)使用。
1、等價(jià)類的劃分:是將輸入數(shù)據(jù)按有效的或無(wú)效的(也稱合理的或不合理的)劃分成若干個(gè)等價(jià)類,測(cè)試每個(gè)等價(jià)類的代表值就等于對(duì)該類其他值的測(cè)試。用該法設(shè)計(jì)測(cè)試用例的步驟為:
(1)劃分等價(jià)類(列一個(gè)表)
(2)確定測(cè)試用例:根據(jù)已劃分的等價(jià)類,按以下步驟設(shè)計(jì)測(cè)試用例:
1)為每個(gè)等價(jià)類編號(hào)
2)設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多的覆蓋尚未被覆蓋過(guò)的合理等價(jià)類。重復(fù)這步直到所有合理等價(jià)類被測(cè)試用例覆蓋。
3)設(shè)計(jì)一個(gè)測(cè)試用例,使其只覆蓋一個(gè)不合理等價(jià)類。重復(fù)這一步直到所有不合理等價(jià)類被覆蓋。
要注意課本上的例子,會(huì)應(yīng)用這種方法設(shè)計(jì)測(cè)試用例
2、邊界值分析:也就是在為設(shè)計(jì)測(cè)試用例時(shí),在等價(jià)類范圍內(nèi)選擇一些邊界值作為測(cè)試用例,這樣可以比單用等價(jià)類劃分法所選的測(cè)試用例能查出更多錯(cuò)誤,因?yàn)閷?shí)踐表明,程序更容易在處理邊界值時(shí)發(fā)生錯(cuò)誤。
3、錯(cuò)誤推測(cè):通常根據(jù)經(jīng)驗(yàn)或直覺(jué)來(lái)推測(cè)程序中可能出現(xiàn)錯(cuò)誤的情況,并有針對(duì)性的編寫檢查這些錯(cuò)誤的測(cè)試用例。
4、因果圖:因果圖能夠有效地檢測(cè)輸入條件的各種組合可能會(huì)引起的錯(cuò)誤。它的基本原理是通過(guò)畫因果圖,把用自然語(yǔ)言描述的功能說(shuō)明轉(zhuǎn)換為判定表,最后為判定表的每一列設(shè)計(jì)一個(gè)測(cè)試用例。
在以上幾種軟件測(cè)試方法,各有所長(zhǎng),但各有所短,在實(shí)際測(cè)試中,應(yīng)該采用綜合策略,通常先用黑盒法設(shè)計(jì)基本的測(cè)試用例,再用白盒法補(bǔ)充一些必要的測(cè)試用例。
本節(jié)具體要掌握的就是等價(jià)類劃分及邊界值的測(cè)試用例設(shè)計(jì)。
相關(guān)推薦:2010年下半年軟考試題及答案解析匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |