軟體工程 測試用例設計(白盒技術)

2021-10-12 07:00:01 字數 2823 閱讀 1322

白盒技術:白盒測試是結構測試,所以一般都是以程式的內部邏輯結構為基礎來設計測試用例。

追求程式內部的邏輯結構覆蓋程式, 當程式中有迴圈時, 覆蓋每條路徑是不可能的,要設計覆蓋程式較高的或覆蓋最具代表性的路徑的測試用例。下面分別介紹常用的幾種覆蓋技術:

1. 語句覆蓋

為了發現程式中的錯誤,程式中的每條語句都要執行一次。語句覆蓋指使用足夠多的測試用例,使被測試程式中每個語句至少執行一次。

對於給出的程式流程圖,如果選擇的測試資料可移植性路徑1-2-4,就可以保證程式流程圖中的四個語句至少執行一次,根據條件,選擇a=2,b=0,x=3作為測試資料,就能達到語句覆蓋的測試標準。

存在問題:

語句覆蓋雖然全面檢驗了每個語句,但只測試了邏輯表示式為「true」的情況,如果將第乙個邏輯表示式中的 「and」 錯寫成 「or」、第二個邏輯表示式 「x>1」 錯寫成 「x<1」,仍用剛才的資料進行測試,同樣可以測試每條語句,但是不能發現錯誤。 語句覆蓋是比較弱的覆蓋標準。

2. 判定覆蓋

判定覆蓋設計出足夠多的測試用例,使得被測程式中每個判定表示式都執行一次「true」和一次「false」的執行,從而使程式的每乙個分支至少都通過一次。

從上面的圖例中,只要測試用例能通過路徑1-2-4、1-3-5或者1-2-5、1-3-4,就可以使每個分支都執行一次,為此,我們選擇兩組資料:a=3, b=0, x=1(通過路徑125),a=2, b=1, x=2(通過路徑134)。對於多分支(巢狀if、case)的判定,判定覆蓋同樣要使得每乙個判定表示式獲得每種可能的值來測試。

只要執行了判定覆蓋測試,則語句覆蓋肯定也測試了。因為如果通過了各個分支,則各個語句也執行了。但該測試仍不能檢查出所有的判定條件的錯誤,上述資料只覆蓋了全部路徑的一半,如果將第二個判定表示式中的「x>1」錯寫成「x<1」,仍查不出錯誤。

3. 條件覆蓋

條件覆蓋測試將使得判定表示式中每個條件的各種可能的值都至少出現一次。在上述程式中有四個條件:a>1, b=0, a=2, x>1。

條件覆蓋測試要求選擇足夠的資料,

使得第乙個判定表示式有下述各種結果出現:a>1, b=0, a≤1, b≠0,

並使第二個判定表示式出現如下的結果:a=2, x>1, a≠2, x≤1

才能達到條件覆蓋的標準。

選擇以下兩組測試資料,就可滿足上述要求:

a=2, b=0, x=3(滿足a>1, b=0, a=2, x>1,通過路徑124)

a=1, b=1, x=1(滿足a≤1, b≠0, a≠2, x≤1,通過路徑135)

以上兩組測試覆蓋了判斷表示式的所有可能,還覆蓋了所有判斷的取「真」分支和「假」分支。在此測試資料下,條件覆蓋比判斷覆蓋好。

4. 判定/條件覆蓋

該覆蓋標準指設計足夠的測試用例,使得判定表示式中的每個條件的所有可能取值至少出現一次,並使每個判定表示式所有可能的結果也至少出現一次。

對於上述程式,選擇以下兩組測試用例:

a=2, b=0, x=3

a=1, b=1, x=1

該組測試資料不僅能滿足判定條件覆蓋要求,也滿足條件覆蓋的測試要求。

從表面上看,判定/條件覆蓋似乎測試了所有條件的取值,但因為在條件組合中的某些條件的真假會遮蔽其他條件的結果,判定/條件覆蓋還有不完善的方面。例如在含有「與」運算的判定表示式中,第乙個條件為「假」,則這個表示式中的後面幾個條件的值均不起作用;而在含有「或」運算的表示式中,第乙個條件為「真」,後邊其他條件也不起作用,此時如果後邊其他條件寫錯就不能測試出來。

5. 條件組合覆蓋

條件組合覆蓋是比較強的覆蓋標準,顧名思義,按此標準設計的測試用例,使得每個判定表示式中條件的各種可能的值的組合都至少出現一次。

上述程式中,兩個判定表示式共有4個條件,因此有8種組合:

① a>1, b=0 ② a>1, b≠0

③ a≤1, b=0 ④ a≤1, b≠0

⑤ a=2, x>1 ⑥ a=2, x≤1

⑦ a≠2, x>1 ⑧ a≠2, x≤1

下面4組測試用例就可以滿足條件組合覆蓋標準:

a=0, b=0, x=2 覆蓋條件組合①和⑤,通過路徑124

a=2, b=1, x=1 覆蓋條件組合②和⑥,通過路徑134

a=1, b=0, x=2 覆蓋條件組合③和⑦,通過路徑134

a=1, b=1, x=1 覆蓋條件組合④和⑧,通過路徑135

顯然,滿足條件組合覆蓋的測試一定滿足「判定覆蓋」、「條件覆蓋」和「判定/條件覆蓋」,因為每個判定表示式、每個條件都不止一次地取到過「真」、「假」值。但是,該組測試資料沒有能通過125這條路徑,不能測試出這條路徑中存在的錯誤。

5. 路徑覆蓋

因為存在選擇語句,因此從輸入到輸出有多條路徑。路徑覆蓋就是要求設計足夠多的測試資料,可以覆蓋被測程式中所有可能的路徑。

該程式中,共有4條路徑,選擇以下測試用例,就可以覆蓋程式中的4條路徑:

a=2, b=0, x=2 覆蓋路徑124,覆蓋條件組合①和⑤

a=2, b=1, x=1 覆蓋路徑134,覆蓋條件組合②和⑥

a=1, b=1, x=1 覆蓋路徑135,覆蓋條件組合④和⑧

a=3, b=0, x=1 覆蓋路徑125,覆蓋條件組合①和⑧

可以看出滿足路徑覆蓋卻未滿足條件組合覆蓋。

白盒測試用例設計

檢查設計和 靜態測試是指測試非執行部分 檢查和審查。白盒測試是指訪問 能夠檢視和審查。靜態白盒測試實在不執行的條件下有條理地仔細審查軟體設計 體系結構和 從而找出軟體缺陷的過程。有時也稱為結構分析。進行靜態白盒子測試的首要原因就是盡早發現軟體缺陷,以找出動態黑盒子測試難以揭示或遇到的軟體缺陷 另乙個...

白盒測試用例設計

1.1.1.1 靜態白盒測試 評審 檢查 1.1.1.2 動態白盒測試 邏輯覆蓋 基本路徑覆蓋 迴圈覆蓋 1.1.2.1 檢查方式 桌面檢查 審查 走查1.1.2.2 檢查專案 變數的交叉引用表 標號的交叉引用表 子程式 巨集 函式 等價性檢查 常量檢查 標準檢查 風格檢查 對照程式的規格說明,詳細...

軟體工程 白盒測試 黑盒測試

黑盒測試 白盒測試用例設計的乙個很重要的評估標準就是對 的覆蓋度。白盒測試中常見的覆蓋有六種 語句覆蓋 判定覆蓋 條件覆蓋 判定 條件覆蓋 組合覆蓋和路徑覆蓋。語句覆蓋,顧名思義就是針對 語句。它的含義是我們設計若干個測試用例,執行被測程式,使得每一可執行語句至少執行一次。通常語句覆蓋被認為是 最弱...