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