更新時(shí)間:2022-08-12 來源:黑馬程序員 瀏覽量:
邏輯覆蓋法是白盒測(cè)試最常用的測(cè)試方法,它包括語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋5種,今天先來介紹一下語句覆蓋。
語句覆蓋(Statement Coverage)又稱行覆蓋、段覆蓋、基本塊覆蓋,它是最常見的覆蓋方式。語句覆蓋的目的是測(cè)試程序中的代碼是否被執(zhí)行,它只測(cè)試代碼中的執(zhí)行語句,這里的執(zhí)行語句不包括頭文件、注釋、空行等。語句覆蓋在多分支的程序中,只能覆蓋某一條路徑,使得該路徑中的每一個(gè)語句至少被執(zhí)行一次,但不會(huì)考慮各種分支組合情況。
為了讓讀者更深刻地理解語句覆蓋,下面結(jié)合一段小程序介紹語句覆蓋方法的執(zhí)行,程序偽代碼如下所示。
IF x>0 AND y<0 //條件1 z=z-(x-y) IF x>2 OR z>0 //條件2 z=z+(x+y)
在上述代碼中,AND表示邏輯運(yùn)算&&,OR表示邏輯運(yùn)算Ⅱ,第1~2行代碼表示如果x>0成立并且y<0成立,則執(zhí)行z=z-(x-y)語句;第3~4行代碼表示如果x>2成立或者z>0成立,則執(zhí)行z=z+(x+y)語句。該段程序的流程圖如圖3-1所示。
在圖3-1中,a、b、c、d、e表示程序執(zhí)行分支,在語句覆蓋測(cè)試用例中,使程序中每個(gè)可執(zhí)行語句至少被執(zhí)行一次。根據(jù)圖3-1程序流程圖中標(biāo)示的語句執(zhí)行路徑設(shè)計(jì)測(cè)試用例,具體如下。
Test1: x=1 y=-1 z=2
圖3-1 程序執(zhí)行流程圖
執(zhí)行上述測(cè)試用例,程序運(yùn)行路徑為acd??梢钥闯龀绦蛑衋cd路徑上的每個(gè)語句都能被執(zhí)行,但是語句覆蓋對(duì)多分支的邏輯無法全面反映,僅僅執(zhí)行一次不能進(jìn)行全面覆蓋,因此,語句覆蓋是弱覆蓋方法。
語句覆蓋雖然可以測(cè)試執(zhí)行語句是否被執(zhí)行到,但卻無法測(cè)試程序中存在的邏輯錯(cuò)誤,例如,如果上述程序中的邏輯判斷符號(hào)“AND”誤寫成了“OR”,使用測(cè)試用例Test1同樣可以覆蓋acd路徑上的全部執(zhí)行語句,但卻無法發(fā)現(xiàn)錯(cuò)誤。同樣,如果將x>0誤寫成x>=0,使用同樣的測(cè)試用例Test1也可以執(zhí)行acd路徑上的全部執(zhí)行語句,但卻無法發(fā)現(xiàn)x>=0的錯(cuò)誤。
語句覆蓋無須詳細(xì)考慮每個(gè)判斷表達(dá)式,可以直觀地從源程序中有效測(cè)試執(zhí)行語句是否全部被覆蓋,由于程序在設(shè)計(jì)的時(shí)候,語句之間存在許多內(nèi)部邏輯關(guān)系,而語句覆蓋不能發(fā)現(xiàn)其中存在的缺陷,因此語句覆蓋并不能滿足白盒測(cè)試的測(cè)試所有邏輯語句的基本需求。