語句覆蓋測試


語句覆蓋是廣泛使用的軟體測試之一。它來自白盒測試。

語句覆蓋技術用於設計白盒測試用例。該技術涉及至少執行一次原始碼的所有語句。它用於計算原始碼中原始碼中執行的語句總數。

語句覆蓋在白盒測試過程中得出測試用例的場景,該過程基於程式碼的結構。

在白盒測試中,測試人員的專注點是內部原始碼和流程圖或程式碼流程圖的工作。

通常,在內部原始碼中,有各種各樣的元素,如運算子,方法,陣列,迴圈,控制語句,例外處理程式等。根據給程式的輸入,執行一些程式碼語句,有些可能不執行 被執行。語句覆蓋技術的目標是覆蓋程式碼中所有可能的執行語句和路徑行。

下面通過一個例子來理解計算語句覆蓋率的過程:

在這裡,我們採用原始碼根據輸入值建立兩個不同的場景,以檢查每個場景的語句覆蓋百分比。

原始碼結構:

  • 輸入兩個值,如a = 0和b = 1。
  • 計算出這兩個值的總和。
  • 如果總和大於0,則列印「這是正結果」。
  • 如果總和小於0,則列印「這是負結果」。
input (int a, int b)   
{   
    Function to print sum of these integer values (sum = a+b)   
    If (sum>0)   
    {   
        Print ("這是正結果")   
    } else    
    {   
        Print ("這是負結果")   
    }   
}

所以,這是程式的基本結構,這是它將要完成的任務。

現在,讓我們看一下兩種不同的場景,並計算給定原始碼的語句覆蓋的百分比。

場景1:
如果a = 5,則b = 4

print (int a, int b) {   
    int sum = a+b;   
    if (sum>0) {   
        Print ("這是正結果")   
    } else    
    {   
        Print ("這是負結果")   
    }   
}

場景1中,可以看到sum的值是9,並且根據條件結果將是「這是正結果」。以黃色突出顯示的語句是此方案的已執行語句。
要計算第一個場景的語句覆蓋率,假設取語句總數為7和執行語句數為5。

Total number of statements = 7  
Number of executed statements = 5

Statement coverage = 5/7*100   
= 500/7  
= 71%

類似地,在場景2中,

如果:A = -2, B = -7

print (int a, int b) {   
int sum = a+b;   
if (sum>0)   
    print ("這是正的結果")   
else   
    print ("這是負的結果")   
}

在場景2中,可以看到sum的值將是-9(小於0),並且根據條件,結果將是「這是負的結果」。以黃色突出顯示的語句是此方案的已執行語句。

要計算第一個場景的語句覆蓋率,請使用語句總數為7的和已使用語句數為6。

Total number of statements = 7 
Number of executed statements = 6

Statement coverage = 6/7*100 <br>  
= 600/7  
= 85%

但是,可以看到兩種情況都涵蓋了所有語句,我們可以認為整體語句覆蓋率是100%。

因此,語句覆蓋技術涵蓋了死程式碼,未使用的程式碼和分支。