天天看點

軟體測試的藝術————學習筆記2

測試用例的設計

對于與條件,我們必須注意測試用例需要測試到每一個條件。

if(a && b) 當a為假時,就不會判斷b,就不會測試到b可能出現的錯誤

白盒測試

邏輯覆寫測試(覆寫到每一個路徑,則需要盡可能多的測試用例)

  • 判定覆寫/分支覆寫
  • 條件覆寫
  • 多重條件覆寫

例子:

public void foo(int a,int b,int x)
{
if(a> && b==)//此處有兩個判斷條件:a>1,a<=1 和 b==0,b<>0
x=x/a;
if(a==||x>)//此處有兩個判斷條件:a==2,a<>2 和 x>1,x<=1
x=x+;
}
           

是以測試用例必須覆寫以下8種組合:2* 2+2 *2

1.a>1,b==0

2.a>1,b<>0

3.a<=1,b==0

4.a<=1,b<>0

5.a==2,x>1

6.a==2,x<=1

7.a<>2,x>1

8.a<>2,x<=1

其中5-8是表示第二個if語句的值

而設計測試用例可以隻用4個,(1,2)(3,4)(5,6)(7,8)

if(x==y && length(z)== && FLAG )
//此處有三個判斷條件x==y,x<>y and length(z)==,length(z)<> and //FLAG=true,FLAG==false
j=;
else
i=;
           

是以需要設計測試用例來滿足2* 2* 2=8個條件。

黑盒測試

等價劃分:

确定等價類(根據輸入條件來劃分兩個或更多的組)——有效等價類代表對程式的有效輸入,而無效等價類代表時其他可能的輸入條件(不正确)。

注,等價類中可再細分。

根據等價類我們可以編寫測試用例:

1.盡可能多的覆寫那些尚未被涵蓋的有效等價類,直到所有的有效類都被測試用例所覆寫;

2.覆寫一個且僅一個尚未被覆寫的無效等價類,直到所有的無效類都被測試用例所覆寫。

注,用單個測試用例覆寫無效等價類,是由于某些特定的輸入錯誤檢查可能會屏蔽或取代其他輸入錯誤檢查(我第一句寫的那樣)

邊界值分析:

對邊界值和恰好超出邊界的值編寫測試用例。

如果程式的輸入或輸出是一個有序序列,(如順序的檔案,線性清單三角格),則應特别注意該序列的第一個和最後一個元素。

因果圖…..