黎秀 電子科技大學成都學院
關鍵字:軟件測試 邏輯覆蓋 NS 流程圖 最小測試用例數(shù)
隨著軟件技術的發(fā)展以及人們對軟件功能要求越來越高,軟件的復雜的也隨之增大,那么在軟件測試過程中,邏輯覆蓋測試的難度也會越來越大,所以為了實現(xiàn)測試的邏輯覆蓋,必須設計足夠多的測試用例,并使用這些測試用例執(zhí)行被測程序,實施測試。但是基于對軟件邏輯進行全覆蓋的不可實現(xiàn)性,我們更加關心的是,對于某個具體程序來說,至少要設計多少測試用例數(shù)才能做到足夠的覆蓋。本文我們將提供一種基于NS 流程圖的最小測試用例數(shù)的計算方法。
NS 流程圖是一種取代傳統(tǒng)流程圖的一種描述方式。它是以結構化程序設計方法為基礎,并完全去掉了流程線,算法的每一步都用一個矩形框來描述,把一個個矩形框按執(zhí)行的次序連接起來就是一個完整的算法描述。NS 流程圖包含了結構話程序設計的3 種基本控制結構,即:順序型、選擇型和重復型。
在NS 流程圖中,每個“處理步驟”是用一個盒子表示的,所謂“處理步驟”可以是語句序列。需要時,盒子中還可以嵌套另一個盒子,嵌套深度一般沒有限制,只要整張圖在一頁紙上能容納得下,由于只能從上邊進入盒子然后從下邊走出,除此之外沒有其他的入口和出口,所以NS 流程圖限制了隨意的控制轉移,保證了程序的良好結構。
利用NS 流程圖進行最小測試用例計算算法中,一般要考慮問題的簡化,避免出現(xiàn)測試用例極多的組合爆炸,把構成循環(huán)操作的重復型結構用選擇結構代替。也就是說,并不指望測試循環(huán)體所有的重復執(zhí)行,而是只對循環(huán)體檢驗一次。這樣,任一循環(huán)便改為造成進入循環(huán)體或不進入循環(huán)體的分支操作了。
例如,圖1 表達了兩個順序執(zhí)行的分支結構。兩個分支謂詞P1和P2 取不同值時,將分別執(zhí)行a 或b 及c 或d 操作。顯然,要測試這個小程序,需要至少提供4 個測試用例才能作到邏輯覆蓋,使得ac、ad、bc 及bd 操作均得到檢驗。 這里的4 是圖中第1 個分支謂詞引出的兩個操作,及第2 個分支謂詞引出的兩個操作組合起來而得到的,即2×2 =4。其中的2 是由于兩個并列的操作,1 十1=2 而得到的。
對于一般的、更為復雜的問題,估算最少測試用例數(shù)的原則也是同樣的,例如圖2 表示的程序中共有9 個分支謂詞。盡管這些分支結構交錯起來似乎十分復雜,很難一眼看出應該至少需要多少個測試用例,但如果仍然用上面的方法,也是很容易解決的。將圖分為上下兩層:分支謂詞1 的操作域是上層;分支謂詞8 的操作域是下層。這兩層正像前面簡單例中的P1 和P2 的關系一樣。只要分別得到兩層的測試用例個數(shù),再將其相乘即得總的測試用例數(shù)。
首先考慮較為復雜的上層結構。當謂詞1 不滿足時要作的操作又可進一步分解為兩層。其中第一層所需測試用例個數(shù)分別為1 十1十1 十1 十1=5;第二層所需測試用例個數(shù)分別為及1 十1 十1=3。因而兩層組合,得到5×3 =15。整個程序的上層所需測試用例數(shù)為1十15 =16。
接著考慮整個程序的最下層,觀察圖中不難發(fā)現(xiàn),最下層所需的測試用例數(shù)3。于是,對于整個程序所需的測試用例數(shù)為上層數(shù)量乘以下層數(shù)量,即為:16×3 =48。
軟件測試執(zhí)行過程中,決定測試效率的關鍵因素在于測試用例的選取。基于測試時間的限制,測試用例數(shù)量不宜過多;當然,為了達到足夠的測試覆蓋,測試用例數(shù)量也不能過少。本文提供的基于NS流程圖的方式計算最少測試用例數(shù)的方法從兩方面對測試進行了保證,第一方面,對于程序邏輯結構進行了完整的分析,保證了程序分支的各種組合不被遺漏;另一方面,本方法是基于成熟的NS 流程圖的方法,理論上得到了很好的保證。