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