Bài giảng Kiểm thử phần mềm - Chương 3: Kiểm thử hộp trắng - Nguyễn Thanh Hùng
Giới thiệu về kiểm thử hộp trắng
Các kỹ thuật kiểm thử hộp trắng:
Kiểm thử đường dẫn cơ sở
Kiểm thử điều kiện/kiểm thử nhánh
Kiểm thử vòng lặp
Kiểm thử luồng điều khiểnNhắc lại: Kiểm thử hộp đen
Kiểm thử hộp đen là kiểm thử bỏ qua
cấu trúc bên trong, chỉ quan tâm tới
Output từ Input cho trước có chính xác
không.
Phân loại:
Kiểm thử biên
Kiểm thử lớp tương tương
Bảng quyết định
Kiểm thử đoán lỗi

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiểm thử phần mềm - Chương 3: Kiểm thử hộp trắng - Nguyễn Thanh Hùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Kiểm thử phần mềm - Chương 3: Kiểm thử hộp trắng - Nguyễn Thanh Hùng
iều khiển
Lưu ý
Không thể có được tất cả các test case
mong muốn bằng việc áp dụng 1 kỹ thuật
kiểm thử duy nhất.
Trước khi áp dụng các kỹ thuật kiểm thử hộp
trắng, hãy xem lại code.
Nội dung
Giới thiệu về kiểm thử hộp trắng
Các kỹ thuật kiểm thử hộp trắng:
. Kiểm thử đường dẫn cơ sở
. Kiểm thử điều kiện/kiểm thử nhánh
. Kiểm thử vòng lặp
. Kiểm thử luồng điều khiển
Kiểm thử đường cơ sở (Basis Path)
Định nghĩa: Thu được các trường hợp thử
nghiệm từ đường cơ sở, được xác định
theo biểu đồ dòng chảy của chương trình
Các bước:
. 1. Xây dựng một đồ thị dòng chảy dựa trên logic của
chương trình
. 2. Tính toán độ phức tạp Cyclomatic của đồ thì dòng chảy
. 3. Xác định đường cơ sở.
. 4. Kiểm tra nếu số đường cơ sở không nhiều hơn độ phức
tạp Cyclomatic.
. 5. Thiết kế trường hợp thử nghiệm để kiểm tra các đường
cơ sở
ng
ng
.
nh.
.
nh.
.
ch:
•
•
19
ng
m:
.
n.
.
n,
ng:
. n.
.
c cung.
20
ng
ng:
Các cấu trúc điều khiển
21
nh
u
a một
nh
22
ng
23
m:
. :
. )
. 11 cung
. n
24
Ví dụ 2
25
nh
t một lệnh).
nh
n hơn).
26
nh
ch sau:
. V(G) = E - N + 2 (= 11-9+2 = 4)
. ng (= 4)
. V(G) = P – 1 (= 5-1 =4)
.
: V(G) = 4
.
27
Quy trình xác định các đường tuyến tính độc lập
c :
t.
i.
i.
a.
C).
28
c nh c ca m thư
29
Ví dụ
30
Độ phức tạp Cyclomatic C
nh
p C = 5+1 = 6.
:
11 ﰂ10 ﰂ 2 ﰂ 1 .1
11 ﰂ10 ﰂ3 ﰂ 2 ﰂ1 .2
12 ﰂ10 ﰂ 2 ﰂ1 .3
9 ﰂ8 ﰂ5 ﰂ4 ﰂ3 ﰂ 2 ﰂ1 .4
9 ﰂ8 ﰂ6 ﰂ5 ﰂ4 ﰂ3 ﰂ 2 ﰂ1 .5
9 ﰂ8 ﰂ7 ﰂ6 ﰂ5 ﰂ4 ﰂ3 ﰂ 2 ﰂ1 .6
31
Thiết kế các test-cases
ng 1:
-
-
a k
ng 4 hay 5 hay 6.
ng 2:
ﰂ i -
p lệ. (2) tcnt = 100. (3) vcnt = 100
ng 3:
-
ng : (1) average = -999. (2) tcnt = 0 (3) vcnt = 0
32
Thiết kế các test-cases
ng 4:
i -999
i k < i
p lệ)
ng 5:
i <= 100 ﰂ i -
i k <= i
p lệ)
ng 6:
ﰂ i -
i<=100
33
p lệ. (2) tcnt3 )= vcnt 100 .= ( 100
Ví dụ
Xét ví dụ về tam giác:
1. program triangle (input, output);
2. VAR a,b,c: integer;
3. IsATriangle: boolean;
4. BEGIN
5. writeln(“Enter integers: “);
6. readln(a,b,c);
7. Writeln(“Side A is: “, a, “Side B is: “, b, “Side C is: “, c);
8. IF(a <b+c) AND (b < a+c) AND (c<a+b) THEN
9. IsATriangle = True;
10. ELSE IsATriangle = False;
11. IF IsATriangle)
12. THEN
13. BEGIN
14. IF (a=b) XOR (a=c) XOR (b=c) AND NOT((a=b) AND (a=c)
15. THEN writeln(“Equilateral”);
16. IF (a=b) AND (b=c)
17. THEN writeln(“Equilateral”);
18. IF(a b) AND (a c) AND (ac)
19. THEN writeln(“Scalene”);
20. END
21. ELSE Writeln(“Not a Triangle”);
22. END
Ví dụ
Thiết kế trường hợp kiểm thử cho kiểm thử đường cơ sở
35
Ví dụ
36
Đồ thị dòng chảy
37
Độ phức tạp “Cyclomatic”
Số vùng khép kín bao gồm cả các hình
tứ giác = 4 +1
Số lượng nhị phân +1 = 4+1=5
Số cạnh – số nút + 2 = 15-12+2=5
Đường cơ sở và các trường hợp kiểm thử (1)
1. 12-15->16->17->21->22->24->26-27->30
Trường hợp kiểm thử: Input = (68,68,56)
Kết quả dự kiến: tam giác cân
2. 12-15->16->17->21->22->24->25->30
Trường hợp kiểm thử: Input = (68,60,56)
Kết quả dự kiến: tam giác không cân
Đường cơ sở và các trường hợp kiểm thử (2)
3. 12-15->16->17->21->22->23->30
Trường hợp kiểm thử: Input = (68,68,68)
Kết quả dự kiến: tam giác đều
4. 12-15->16->18->20->21->28-29->30
Trường hợp kiểm thử: Input = (68,8,56)
Kết quả dự kiến: không phải là tam giác
binarySearch() Example
Bài tập - BinarySearch
public int binarySearch(int sortedArray[ ], int searchValue)
{
int bottom = 0;
int top = sortedArray.length - 1;
int middle, locationOfsearchValue; 2
boolean found = flase;
1 locationOfsearchValue = -1; /* the location of searchValue in the sortedArray */
/* location = -1 means that searchValue is not found */
while ( bottom <= top && !found)
{ 3
middle = (top + bottom)/2;
4 if (searchValue == sortedArray[ middle ])
{
5 found = true;
locationOfsearchValue = middle;
}
6 else if (searchValue < sortedArray[ middle ])
top = middle - 1;
else 7
8 bottom = middle + 1;
} // end while
9
10 return locationOfsearchValue;
}
41
25
The CFG of Function binarySearch()
1
2
3
4
6 5
8 7
9
10 26
13
binarySearch() Example
public int binarySearch(int sortedArray[ ], int searchValue)
{
int bottom = 0;
int top = sortedArray.length - 1;
int middle, locationOfsearchValue; 2
boolean found = flase;
1 locationOfsearchValue = -1; /* the location of searchValue in the sortedArray */
/* location = -1 means that searchValue is not found */
while ( bottom <= top && !found)
{ 3
middle = (top + bottom)/2;
4 if (searchValue == sortedArray[ middle ])
{
5 found = true;
locationOfsearchValue = middle;
}
6 else if (searchValue < sortedArray[ middle ])
top = middle - 1;
else 7
8 bottom = middle + 1;
} // end while
9
10 return locationOfsearchValue;
}
25
Bài tập – BinarySearch - CFG
The CFG of Function binarySearch()
1
2
3
4
6 5
8 7
9
10 26
42
13
Cyclomatic Complexity
• Three ways to compute cyclomatic complexity:
– The number of regions of the flow graph correspond
to the cyclomatic complexity.
– Cyclomatic complexity, V(G), for a flow graph G is
defined as V(G) = E - N + 2 (13-10+2=5)
where E is the number of flow graph edges and N is
the number of flow graph nodes.
– Cyclomatic complexity, V(G) = P + 1
where P is the number of predicate nodes contained
in the flow graph G.
29
CyclomatBàiic tậpCo –mBinarySearchplexity o f– FĐộu nphứccti otạpn
binarySearch()
1 predicate nodes
2
3
R3 4
R1 regions
6 R2 5
8 R5
R4 7
9 V(G) = 5 regions
10 V(G) = 13(edges) – 10(nodes) +2 = 5
V(G) = 4(predicate nodes)30 + 1 = 5
43
15
Cyclomatic Complexity
• Three ways to compute cyclomatic complexity:
– The number of regions of the flow graph correspond
to the cyclomatic complexity.
– Cyclomatic complexity, V(G), for a flow graph G is
defined as V(G) = E - N + 2 (13-10+2=5)
where E is the number of flow graph edges and N is
the number of flow graph nodes.
– Cyclomatic complexity, V(G) = P + 1
where P is the number of predicate nodes contained
in the flow graph G.
29
CyclomatBàiic tậpCo –mBinarySearchplexity o f– FĐườngunct icơo nsở
binarySearch()
1 predicate nodes
2
3
R3 4
R1 regions
6 R2 5
8 R5
R4 7
9 Path 1: 1-2-10
Path 2: 1-2-3-10
10 Path 3: 1-2-3-4-5-9-2- ...
Path 4: 1-2-3-4-6-7-9-230-...
Path 5: 1-2-3-4-6-8-9-2-... 44
15
Bài tập – BinarySearch – Test-cases
Path 1 test case:
. Inputs: sortedArray = { }, searchValue = 2
. Expected results: locationOfSearchValue = -1
Path 2 test case: cannot be tested stand-alone!
. Inputs: sortedArray = {2, 4, 6}, searchValue = 8
. Expected results: locationOfSearchValue = -1
Path 3 test case:
. Inputs: sortedArray={2,4,6,8,10},searchValue = 6
. Expected results: locationOfSearchValue = 2
• Path 4 test case:
. Inputs: sortedArray = {2, 4, 6, 8, 10}, searchValue = 4
. Expected results: locationOfSearchValue = 1
• Path 5 test case:
. Inputs: sortedArray = {2, 4, 6, 8, 10}, searchValue = 10
. Expected results: locationOfSearchValue = 4 45
Kỹ thuật ma trận kiểm thử
ng:
. t
. t cột.
t
46
Ví dụ ma trận kiểm thử
47
Ví dụ ma trận kiểm thử
2 – 1 = 1
2 – 1 = 1
1 – 1 = 0
2 – 1 = 1
1 – 1 = 0
1 – 1 = 0
1 – 1 = 0
V(G) = 3 + 1 = 4
48
Nội dung
Giới thiệu về kiểm thử hộp trắng
Các kỹ thuật kiểm thử hộp trắng:
. Kiểm thử đường dẫn cơ sở
. Kiểm thử điều kiện/kiểm thử nhánh
. Kiểm thử vòng lặp
. Kiểm thử luồng điều khiển
Kiểm thử điền kiện
Kiểm thử điều kiện
. Phương pháp thiết kế test-case để kiểm tra các điều kiện logic
Điều kiện logic
. u kiện đơn nh): X
. u kiện đơn c
nh: , ≥ hay ≠
c
p
nh (┘)
D = X1 & X2 &...Xn Xi bool
Nếu một điều kiện sai, ít nhất một thành phần trong
điều kiện sai
50
u kiện lôgic
Sai biến Bool
Sai toán tử Bool
Sai số hạng trong biểu thức toán tử Bool
Sai toán tử quan hệ
Sai biểu thức số học
51
nh
u kiện nh.
u kiện t hiện
nh liên quan.
nh
nh “true” “false”
n.
52
n
n
cho c
a.
i, song c hiện!
c
nh n (quan hệ)
?
53
BRO
BRO quan hệ
(branch and relational operation)
. ng “
n thư”
n chung.
. :
D=X1&X2&...Xn, Xi bool
a Xi
nh?.
54
– o
ng buộc Xi u kiện D
,
u kiện đơn Xi trong
ng.
: Khi
cho c
i Xi
n để a D
55
– ng buộc
i n Bool B
t (true) hoặc f (false).
c quan hệ (AΘB
quan hệ:
>, <, =, #
c).
56
– ng buộc 1
u kiện C = A ∩ B
n Bool
u ra a f.
ng buộc
a C.
. i C=t
. i C=f
57
– ng buộc
u kiện C=(B=E)
“=“ “”
i f
c cặp (t,t), (t,f) (f,t)
i “=“
i “”
:
(f,=)
quan hệ trong
C
58
– ng buộc
u kiện c
quan hệ (A>B) (E=F)
ng buộc (f,t)
: (>,=); (>,,>);
(=,=) (<,=).
quan hệ trong
C.
59
Nội dung
Giới thiệu về kiểm thử hộp trắng
Kiểm thử đường dẫn cơ sở
Kiểm thử điều kiện/kiểm thử nhánh
Kiểm thử vòng lặp
Kiểm thử luồng điều khiển
Kiểm thử vòng lặp
Định nghĩa:
Tập trung vào hiệu lực của các cấu trúc vòng lặp, đặc biệt là
các biến thể vòng lặp.
Bốn kiểu vòng lặp:
. 1. Simple loop: một vòng lặp đơn
. 2. Nested loops: một vòng lặp trong vòng lặp khác
. 3. Concatenated loops: một vòng lặp sau vòng lặp khác
. 4. Unstructured loops: các vòng lặp được nối vòng và lồng nhau
phức tạp 61
Kiểm thử vòng lặp
Simple
Loop
Nested
Loops
Concatenated
Loops Unstructured Loops
62
Kiểm thử các vòng lặp đơn
Với n là số vòng lặp tối đa cho
phép, các trường hợp kiểm tra bao
gồm:
1. hoàn toàn bỏ qua vòng lặp
2. qua một vòng lặp
3. qua hai vòng lặp
4. qua m vòng lặp với m < n
5. qua (n-1), n, và (n+1) vòng lặp
63
Kiểm thử vòng lặp lồng nhau
1. Bắt đầu vòng lặp trong cùng. Đặt tất
cả các vòng ngoài với các giá trị tham
số tối thiểu cho sự lặp lại của chúng.
2. Kiểm tra các giá trị tối thiểu, điển hình,
tối đa cho vòng lặp trong cùng, trong
khi giữ các vòng lặp ngoài tại các giá
Nested trị tối thiểu của chúng.
Loops 3. Di chuyển ra khỏi một vòng lặp và
thiết lập nó như trong bước 2, giữ tất
cả các vòng lặp bên trong những giá
trị tiêu biểu. Tiếp tục bước này cho
đến khi vòng lặp ngoài cùng đã được64
thử nghiệm.
Kiểm thử vòng lặp ghép nối
Nếu mỗi vòng lặp là độc lập với
các vòng lặp khác thì kiểm tra
chúng như các vòng lặp đơn
giản.
Nếu hai vòng được nối tiếp,
vòng lặp 1 được dùng như là giá
Concaten
ated trị ban đầu cho vòng lặp 2 thì
Loops kiểm tra chúng như các vòng lặp
lồng nhau.
65
Nội dung
Giới thiệu về kiểm thử hộp trắng
Kiểm thử đường dẫn cơ sở
Kiểm thử điều kiện/kiểm thử nhánh
Kiểm thử vòng lặp
Kiểm thử luồng điều khiển
Tiêu chuẩn bao phủ
Đôi khi còn được gọi là tiêu chuẩn kiểm thử phần mềm
hoặc tiêu chuẩn kiểm thử dữ liệu đầy đủ có thể được sử
dụng như:
. Quy tắc dừng để xác định tính đầy đủ.
. Kiểm tra đo chất lượng khi mức độ an toàn có liên quan với
mỗi tập kiểm tra.
. Lựa chọn dữ liệu kiểm thử. Bộ kiểm tra được coi là tương
đương nếu đáp ứng các tiêu chí tương tự.
Tiêu chuẩn kiểm thử hộp trắng
• Tiêu chuẩn có xem xét đến cấu trúc bên trong của chương trình
có thể được chia thành.
1. Tiêu chuẩn luồng điều khiển.
2. Tiêu chuẩn luồng dữ liệu.
67
Tiêu chuẩn luồng điều khiển
Tiêu chuẩn luồng điều khiển
. Kiểm tra các biểu thức logic trong đó xác định các
nhánh và cấu trúc vòng lặp của chương trình.
. Được sử dụng chủ yếu trong các ngành công
nghiệp.
. Các tiêu chí phổ biến nhất bao gồm:
• 1. Bao phủ câu lệnh
• 2. Bao phủ quyết định
• 3. Bao phủ điều kiện
• 4. Bao phủ quyết định / điều kiện
• 5. Bao phủ đa điều kiện
68
Thứ tự tiêu chuẩn luồng điều khiển
Định nghĩa
. Nếu tất cả các tập kiểm tra thỏa mãn A cũng đáp ứng
B thì ta nói tiêu chuẩn A mạnh hơn tiêu chuẩn B
Thứ tự các tiêu chuẩn
. Phạm vi tiêu chuẩn bao phủ là yếu nhất.
. Điều kiện tiêu chuẩn bao phủ là mạnh nhất.
. Trình tự giữa cả hai là quyết định phạm vi bao phủ,
điều kiện bao phủ và quyết định phạm vi / điều khiện
bao phủ.
69
Bao phủ câu lệnh
Code1: . Định Nghĩa:
if ((A > 1) && (B == 0)) • Mỗi câu lệnh trong chương
X = X/A; trình được thực hiện ít nhất
if ((A == 2) || (X > 1)) một lần.
X=X+1;
. Ví dụ:
• Để thoả mãn bao phủ câu
Code2: lệnh đáp ứng đoạn Code 1, một
if ((A > 1) || (B == 0)) trường hợp kiểm thử có thể:
X = X/A; A = 2 B= 0 X = 3
if ((A == 2) || (X > 1))
X=X+1; • Như đã thấy, tất cả các câu
lệnh đều được thực thi.
• Nhưng điều gì sẽ xảy ra nếu
code sai như trong Code 2?
70
Bao phủ điều kiện (1)
. Định Nghĩa:
Code1:
if ((A > 1) && (B == 0)) • Mỗi câu lệnh trong chương
X = X/A; trình được thực hiện ít nhất
if ((A == 2) || (X > 1)) một lần và mỗi điều kiện có
X=X+1; thể xảy ra ít nhất một lần.
• Một quyết định là một biểu
thức Boolean bao gồm một
hoặc nhiều điều kiện kết hợp
bởi các từ nối hợp lí, chẳng
hạn như “AND”, “OR” và
“NOT”.
71
Bao phủ điều kiện (2)
. Ví dụ:
• Để thoả mãn bao phủ điều
Code1: kiện đáp ứng đoạn code 1,
if ((A > 1) && (B == 0)) một trường hợp kiểm thử có
X = X/A; thể:
if ((A == 2) || (X > 1)) A = 2 B= 0 X = 2
X=X+1;
A = 1 B= 0 X = 1
Code2: • Như đã thấy, tất cả các
if ((A > 1) && (B >= 0)) câu lệnh đều được thực thi.
X = X/A;
if ((A == 2) || (X > 1)) • Nhưng điều gì sẽ xảy ra
X=X+1; nếu code sai trong ví dụ 2?
72
Áp dụng kỹ thuật kiểm thử hộp trắng
Dưới đây là một phương thức của một lớp nào đó, hãy áp
dụng kiểm thử hộp trắng để lấy được trường hợp kiểm thử
của nó
73
Trả lời
Để áp dụng kiểm thử hộp trắng để lấy được
các trường hợp kiểm thử của nó, có thể làm
như sau:
. Bước 1: Rút ra các trường hợp kiểm thử từ kiểm thử
đường dẫn cơ sở.
. Bước 2: Rút ra các trường hợp kiểm thử từ các kiểm
thử rẽ nhánh.
. Bước 3: Rút ra các trường hợp kiểm thử từ kiểm thử
vòng lặp.
. Bước 4: Cuối cùng nên thiết lập kiểm thử kết hợp tất
cả các bước trên.
. Bước 5: Bổ xung các trường hợp kiểm thử đặc biệt
theo tính năng của chương trình.
74
Tóm tắt
Kĩ thuật kiểm thử hộp trắng có thể kiểm tra logic
của chương trình dựa trên cấu trúc của nó.
Kĩ thuật kiểm thử hộp trắng bao gồm thử nghiệm
đường dẫn cơ sở, kiểm tra rẽ nhánh và kiểm thử
vòng lặp.
Tiêu chuẩn bao phủ có thể được sử dụng như quy
tắc dừng và kiểm tra dữ liệu.
Tiêu chuẩn luồng điểu khiển được áp dụng trong
các ngành công nghiệp bao gồm bao phủ câu
lệnh, bao phủ điều kiện, bao phủ quyết định /
điều kiện và bao phủ đa điều kiện.
75
THE END
76File đính kèm:
bai_giang_kiem_thu_phan_mem_chuong_3_kiem_thu_hop_trang_nguy.pdf

