語句覆蓋測試 (Statement Testing)

語句覆蓋測試是一種白箱測試,會針對被測試的程式設計若干個 test case,執行 test case 使得被測試的程式裡每一條可執行的 statements 至少執行一次。

舉例說明,其中每一行都算是一個 statement:

if ((A==true) and (B==true)) {
Action1;
}
if ((C==true) or (D==true)) {
Action2;
}

若要執行到所有 statements,至少要符合 2 個條件:

(1) A = true and B = true
(2) C = true or D = true

整理後可得知最大覆蓋條件是:A = true, B = true,  C = true, D = true
所以我們可以設計一個 test case 的 input 是 {A = true, B = true, C = true, D = true }
來執行語句覆蓋測試,讓每一個 statement 皆有執行到。

語句覆蓋測試的優點:
    確保程式每一行都有被執行,且沒有發生錯誤。

語句覆蓋測試的缺點:
    只能確認每一行程式能夠執行,但無法檢查判斷邏輯是否有問題。

Ex. 若 RD 在第二個判斷式 statement 寫錯變成 if ((C==false) or (D==true)),靠上述 test case 有達到 100% 覆蓋率,但會檢查不出來判斷式有錯誤。

語句覆蓋測試並非萬靈丹,如果在白箱測試只執行語句覆蓋測試,僅能保證受測程式每條 statement 可以被執行到,但並不能檢查判斷邏輯是否有發生問題。
所以我們可以說,語句覆蓋率是最弱的邏輯覆蓋準則。

參考文章:
1. 白盒測試中的邏輯語句覆蓋小議
2. 語句覆蓋
3. 軟件測試中的語句覆蓋,分支覆蓋,條件覆蓋以及路徑覆蓋
4. 陳述 (程式) (Wiki) 

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s