Tải bản đầy đủ (.pptx) (31 trang)

Softwaretesting 06 vn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (308.31 KB, 31 trang )

kiểm thử phần mềm
    [6] kiểm thử hộp trắng
Kiểm thử phần mềm
[6] Kỹ thuật kiểm thử hộp trắng

Hirohisa Aman


(C) 2007-2022 Hirohisa AMAN

1


phương pháp kiểm thử hộp
trắng
 Thiết kế test case
dựa vào cấu trúc
nội tại bên trong
của đối tượng cần
kiểm thử.
 Đảm bảo tất cả các
câu lệnh, các biểu
thức điều kiện bên
trong chương trình
đều được thực hiện
ít nhất một lần
(C) 2007-2022 Hirohisa AMAN

2



Các kỹ thuật phương pháp kiểm
thử hộp trắng
 Basis Path Testing
 Control-flow/Coverage Testing
 Data-flow Testing

(C) 2007-2022 Hirohisa AMAN

3


Các cấp bao phủ kiểm thử
 Phủ cấp 0:
thửcâu
những
có thể kiểm
1: kiểm
Bao phủ
lệnhgì(statement/
thử
được, phần
còn lại Các
để người
dùng
phát
instruction
coverage):
câu lệnh
được
hiện

báo
lại sau.
Đây là kiểm thử khơng
thực và
hiện
ít nhất
1 lần
có trách nhiệm
 Phủ cấp 2: Bao phủ nhánh (branch
 Phủ cấp 4: Kết hợp phủ nhánh và điều kiện
coverage):
tại các điểm
quyết định thì các
(branch & condition
coverage)
nhánh đều được thực hiện ở cả hai phía T,F
 Phủ cấp 3: Bao phủ điều kiện(condition
coverage): Các điều kiện con của các điểm
quyết định được thực hiện ít nhất 1 lần
(C) 2007-2022 Hirohisa AMAN

4


Bao phủ câu lệnh
void foo(int x, int y){
int sum, n;
sum = 0;
for ( n = 0; n < x; n++ ){
sum += n;

}
if ( sum < y ){
printf("%dn", sum);
}
else{
printf("%dn", y);
}
}

[ đầu vào ]
đối số x, y
[ đầu ra ]
bản inf Giá trị đầu
ra của

(C) 2007-2022 Hirohisa AMAN

5


Source code

Thực hiện/
không thực
hiện

void foo(int x, int y){

---


int sum, n;



sum = 0;



for
sum



( n = 0; n < x; n++ ){
+= n;

}
if ( sum < y ){
printf("%dn", sum);
}
}
else{
else{

printf("%dn", y);

}
}
}
}


Case:
x=1, y=0


---

C0 = 



--------○
---------

(C) 2007-2022 Hirohisa AMAN

← sum = 0 đó là
lý do tại sao
[ Lưu ý ]
Trước, "Cần xác
định xem có được
tính là lệnh thực thi
hay không
6


C = 100% khi phủ hai case
Source code

x=1, y=0


x=1, y=1

tổng cộng

---

---

---

int sum, n;







sum = 0;







for ( n = 0; n < x; n++ ){








sum += n;







---

---

---








-----


-----



-----

----○
---------

----☓
---------

----○
---------

void foo(int x, int y){

}
if ( sum < y ){
printf("%dn", sum);
}
}
else{
else{
printf("%dn", y);
}
}
}
}

(C) 2007-2022 Hirohisa AMAN


7


Khi vẽ lưu đồ Trường 
hợp kiểm tra ① x=1, y=0
START

một số lệnh
không chạy

sum = 0
F.
sum < y

n = 0

n < x
n++

F.

T.
sumoutput

youtput

T.
sum += n
END
(C) 2007-2022 Hirohisa AMAN


8


Khi vẽ lưu đồ 
Test case ② x = 1, y = 1
START
sum = 0
F.
sum < y

n = 0

n < x
n++

F.

Trong trường 
hợp thử 
nghiệm ở 
case ①
không chạy

T.
sumoutput

youtput

T.

sum += n
END
(C) 2007-2022 Hirohisa AMAN

9


Source code

chấ
p
hàn
h

T, F

void foo(int x, int y){

---

int sum, n;

--○

sum = 0;



for ( n = 0; n < x; n++ ){




--t. f.

sum += n;



---

}

--○

--f.



---

}

---

---

else{

--○


---

}

---

---

}

---

---

if ( sum < y ){
printf("%dn", sum);

printf("%dn", y);

---

(C) 2007-2022 Hirohisa AMAN

---

Case 1:
x=1, y=0
nhánh Tỷ lệ 
bao phủ ( C.
1 )


Phương
pháp phủ
nhánh
10


Phương pháp phủ nhánhC1 = 100% khi phủ hai 
case

Source code

x=1, y=0

x=1, y=1

tổng cộng

void foo(int x, int y){

---

---

---

int sum, n;

---


---

---

sum = 0;

---

---

---

for ( n = 0; n < x; n++ ){

t.

f.

t.

f.

t.

f.

sum += n;

---


---

---

}

---

---

---

f.

if ( sum < y ){
printf("%dn", sum);

t.

t.

f.

---

---

---

}


---

---

---

else{

---

---

---

---

---

---

}

---

---

---

}


---

---

---

printf("%dn", y);

(C) 2007-2022 Hirohisa AMAN

11


Khi vẽ lưu đồ Trường 
hợp kiểm tra ① x=1, y=0
F.only
to 
experien
ce

START
T.andF.of
experienc
e both

sum = 0
F.
sum < y


n = 0

n < x
n++

F.

T.
sumoutput

youtput

T.
sum += n
END
(C) 2007-2022 Hirohisa AMAN

12

for that 
reason,
branchCov
erage rate
(C.1) 3/4


Khi vẽ lưu đồ 
Test case ② x = 1, y = 1
In test case ①
did not run

"T." side cover

START
sum = 0
F.
sum < y

n = 0

n < x
n++

F.

T.
sumoutput

youtput

T.
sum += n
END
(C) 2007-2022 Hirohisa AMAN

13


Hãy xem xét một ví dụ khác
 Hãy xem xét một chương trình thực
hiện kiểm tra bảo mật đơn giản đối

với mật khẩu
[ Kiểm tra mục ]
 Độ dài mật khẩu là 6 Có nhiều hơn các
chữ cái khơng?
 Mật khẩu của bạn có giống với tên người
dùng của bạn không?
(C) 2007-2022 Hirohisa AMAN

14


bao phủ nhánh 75 % ( =3/4 )
test case

START

(user name, password)
① ("taro","")
② ("taro","foobar")
③ ("taro","taro")



T.
password length    
 >= 6





F.

F.

Nooutput

password        
!=User name



T.
OKoutput

END
(C) 2007-2022 Hirohisa AMAN

15


[ Bài tập 1 ]
Tính phạm vi hướng dẫn và phạm vi
chi nhánh
 Tôi đã chạy hai
trường hợp thử
nghiệm cho đoạn
mã bên phải
 (n, giới hạn) 
= (2, 1), (-2, 0)


 C1 và C0 là bao
nhiêu

if ( n < 0 ){
n *= -1;
}
sum = 0;
for (i= 0;isum +=i;
if ( sum > limit ){
sum = 0;
}
}
printf("%dn", sum);

(C) 2007-2022 Hirohisa AMAN

16


[Bài tập 1]Đáp án: 100% for ①
and ②
test case

START

(n, limit)=
①(2, 1)
② (-2, 0)


i = 0
F.

n < 0

① ②

i < n

T.

n *= -1



F.

T.

sum += i


sumoutput
sum = 0

i++

F.
sum > limit
T.






sum = 0
END
(C) 2007-2022 Hirohisa AMAN

17


[ Bài tập 2 ]
Tính phủ sóng nhánh

(lưu ý) trả lại việc thi hành án
Khi đó , tại hàm thời gian
đến mức phải cẩn thận

intis_prime(int n){
int k;
is_prime (1);
if ( n < 2 ){
return 0;
is_prime (2);
}
Tính C1 với hai test for ( k = 2; k < n; k+
+ ){
case trên
if ( n % k == 0 ){

return 0;
}
}
return 1;
}
(C) 2007-2022 Hirohisa AMAN
18

 Test case


Bài tập 2 lưu ý cho
Source code

n=1
điều kiện
thực hiện

n=2
điều kiện
thực hiện

---

---

---

return 0;


---

---

---

}

---

---

---

return 0;

---

---

---

}

---

---

---


}

---

---

---

19

---

int k;

tổng cộng

if ( n < 2 ){

for ( k = 2; k < n; k+
+ ){
    if ( n % k == 0 ){

return 1;

(C) 2007-2022 Hirohisa AMAN

---

---



nhánh Tỷ lệ bao phủ ( C.
1 )

[ Bài tập 2 ]
Source code

n=1
điều kiện
thực hiện

int k;



if ( n < 2 ){



return 0;



}

    if ( n % k == 0 ){

return 1;

---


---



---

---

---

---













}
}

t.


-----



-----

(C) 2007-2022 Hirohisa AMAN

tổng cộng




---

for ( k = 2; k < n; k+
+ ){
return 0;

---

n=2
điều kiện
thực hiện



f.

f.


--TF

f.

---

---

---

---

---

---

---

---

20



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×