首頁常見問題正文

邏輯覆蓋法:語句覆蓋【軟件測試培訓】

更新時間:2022-08-12 來源:黑馬程序員 瀏覽量:

IT培訓班

  邏輯覆蓋法是白盒測試最常用的測試方法,它包括語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋5種,今天先來介紹一下語句覆蓋。

  語句覆蓋(Statement Coverage)又稱行覆蓋、段覆蓋、基本塊覆蓋,它是最常見的覆蓋方式。語句覆蓋的目的是測試程序中的代碼是否被執(zhí)行,它只測試代碼中的執(zhí)行語句,這里的執(zhí)行語句不包括頭文件、注釋、空行等。語句覆蓋在多分支的程序中,只能覆蓋某一條路徑,使得該路徑中的每一個語句至少被執(zhí)行一次,但不會考慮各種分支組合情況。

  為了讓讀者更深刻地理解語句覆蓋,下面結合一段小程序介紹語句覆蓋方法的執(zhí)行,程序偽代碼如下所示。

IF x>0 AND y<0  //條件1
  z=z-(x-y)
IF x>2 OR z>0   //條件2
  z=z+(x+y)

  在上述代碼中,AND表示邏輯運算&&,OR表示邏輯運算Ⅱ,第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í)行分支,在語句覆蓋測試用例中,使程序中每個可執(zhí)行語句至少被執(zhí)行一次。根據(jù)圖3-1程序流程圖中標示的語句執(zhí)行路徑設計測試用例,具體如下。

Test1: x=1 y=-1 z=2

  

1660285484500_程序執(zhí)行流程圖.jpg

       圖3-1 程序執(zhí)行流程圖

  執(zhí)行上述測試用例,程序運行路徑為acd??梢钥闯龀绦蛑衋cd路徑上的每個語句都能被執(zhí)行,但是語句覆蓋對多分支的邏輯無法全面反映,僅僅執(zhí)行一次不能進行全面覆蓋,因此,語句覆蓋是弱覆蓋方法。

  語句覆蓋雖然可以測試執(zhí)行語句是否被執(zhí)行到,但卻無法測試程序中存在的邏輯錯誤,例如,如果上述程序中的邏輯判斷符號“AND”誤寫成了“OR”,使用測試用例Test1同樣可以覆蓋acd路徑上的全部執(zhí)行語句,但卻無法發(fā)現(xiàn)錯誤。同樣,如果將x>0誤寫成x>=0,使用同樣的測試用例Test1也可以執(zhí)行acd路徑上的全部執(zhí)行語句,但卻無法發(fā)現(xiàn)x>=0的錯誤。

  語句覆蓋無須詳細考慮每個判斷表達式,可以直觀地從源程序中有效測試執(zhí)行語句是否全部被覆蓋,由于程序在設計的時候,語句之間存在許多內部邏輯關系,而語句覆蓋不能發(fā)現(xiàn)其中存在的缺陷,因此語句覆蓋并不能滿足白盒測試的測試所有邏輯語句的基本需求。

分享到:
在線咨詢 我要報名
和我們在線交談!