白箱測試就是Program裡面如何運作的是透明的可見的
主要用來測底下幾個測試類型
主要使用人員類型
Statement指的是任一一行code
而statement coverage的目標是覆蓋所有code的statements,得到100%的statement coverage
Statement Coverage = no. of statements tests / total no. of statements
if x > 7:
print "hello"
x = 8
當給予x = 8時,會執行到所有的code,這時候就是100%的覆蓋率
x = 5
當給予x=5時,只會執行第一行,這時候為50%的覆蓋率
if x == 3:
print "hey"
else:
print "never mind"
在這個案例,沒辦法只使用一個test case就完成100% statement coverage,必須要至少兩個
x = 3, x= 5 達到100% Statement 覆蓋率
if day == "Monday"
then statement a
else
statement b
end if
if day == Tuesday
then statement c
end if
這種情形有很多的測試選擇,且沒有辦法用很少數的測項達到100%覆蓋率
至少會有兩個test cases
Start
Do until B == C
if today == Monday
set A=1
else if today == Wednesday
set A=2, B=C
end if;
if B < C
B = B + 1
end if;
end loop
end
至少會有兩個test cases來達到100%覆蓋率
if Quantity >= 20
Discount = 0.05
if Quantity >= 100
Discount = 0.1
只要一個test case就達到100% Statement覆蓋率
有些地方會稱為Branch Coverage
decision是在code裡面,為if, while, do while, 等等的數量
Test all decision outcomes in your code
DC = Decision outcomes covered / Total no. of decision outcomes
if x > 3
print "hello"
if會有兩種結果: yes or no
所以在這邊的coverage test要達到100%必須要有兩個測項
if day == "Monday"
then statement a
else
statement b
end if
if day == Tuesday
then statement c
end if
if會有兩種結果: yes or no,所以這邊總共有4個decisions
所以在這邊的coverage test要達到100%必須要有兩個測項
Start
Do until B == C
if today == Monday
set A=1
else if today == Wednesday
set A=2, B=C
end if;
if B < C
B = B + 1
end if;
end loop
end
if和Do until會有兩種結果: yes or no,所以這邊總共有4個decisions
至少要有四個test cases來達到100%覆蓋率
T | B | C | |
---|---|---|---|
TC1 | M | 5 | 7 |
TC2 | W | 5 | 7 |
TC3 | S | 10 | 6 |
TC4 | ? | 6 | 6 |
Test each condition in the code in true & false cases
測試code裡面所有的true和false條件
Decision 和 Condition的差異?
Condition Coverage測試了每一個conditon在true和false的狀態
read x
read y
if (x == 0) or (y > 0):
y = y/x
else:
x = y + 2
print(x)
print(y)
所以Condition coverage test要達到100%必須要有兩個測項
if number of books > 8 or sum > 100
extra discount
這邊有兩個condition
所以Condition coverage test要達到100%必須要有兩個測項
本文章同步發布於個人blogger。