Professional Documents
Culture Documents
5 Kiểm Thử Hộp Đen
5 Kiểm Thử Hộp Đen
1
Nội dung
• Kiểm thử hộp đen còn gọi kiểm thử chức năng
(functional)
• Có nhiều kỹ thuật, giới thiệu 3 kỹ thuật điển hình
• Kiểm thử giá trị biên
• Kiểm thử lớp tương đương
• Kiểm thử bảng quyết định
• 2
Kiểm thử giá trị biên
3
Tổng quan
4
Kiểm thử giá trị biên (BVA)
• Kiểm thử giá trị biên tập trung vào biên của miền
xác định để xây dựng ca kiểm thử
• Lý do là lỗi thường xảy ra ở gần các giá trị biên
này
• Chương trình viết bằng ngôn ngữ không có kiểm
tra kiểu mạnh càng cần kiểm thử giá trị biên
• JavaScript, php, Visual Basic
5
Đầu vào hợp lệ của chương trình P
6
Miền xác định
7
Chọn giá trị
8
Giả thiết khiếm khuyết đơn
• Kiểm thử giá trị biên dựa trên nguyên lý giả định
sai sót đơn:
• “Hỏng hóc xảy ra hiếm khi do nhiều sai sót cùng xảy
ra”
• Một sai sót trong chương trình là đủ để gây ra lỗi.
• Do đó các ca kiểm thử theo phương pháp này
được tạo bằng việc lấy các giá trị bình thường của
các chiều/biên rồi lần thay mỗi chiều bằng các giá
trị cực trị như trên.
9
Các ca kiểm thử theo phân tích giá
trị biên
..
.. .. ..
.
10
Tổng quát hóa BVA
12
Hạn chế của BVA
• BVA hiệu quả với các chương trình có các đầu vào
độc lập nhau và biểu diễn đại lượng vật lý bị chặn
• BVA lấy các ca kiểm thử mà không tính đến chức
năng của hàm, hay ý nghĩa của các biến
13
Kiểm thử biên mạnh
14
Các ca kiểm thử biên mạnh cho P
..
... .. …
..
15
Kiểm thử trường hợp xấu nhất
16
Các ca kiểm thử trường hợp xấu
nhất cho P
..
.. .. ..
..
.. .. ..
.... . ....
17
Các ca kiểm thử trường hợp xấu
nhất mạnh cho P
...
...
... ... …
…
…
... . …
...
... ... …
…
... …
18
Kiểm thử giá trị đặc biệt
19
Hướng dẫn áp dụng BVA
• Trừ kiểm thử giá trị đặc biệt, kiểm thử giá trị biên
là phương pháp thô sơ nhất
• Cân nhắc các tình huống để chọn phương pháp
phù hợp:
• Các biến có độc lập hay phụ thuộc nhau không
• Có cần các giá trị mạnh hay giá trị thường
• Single fault versus multiple fault assumption
• Có thể áp dụng BVA cho miền giá trị (đầu ra), hay
các biến khác trong chương trình như biến đếm
vòng lặp, biến trung gian, chỉ số mảng, con trỏ,..
20
Bài toán chia hoa hồng
21
Bài toán chia hoa hồng
22
Các ca kiểm thử theo khoảng đầu ra
Nòng 90
72
40
Khóa
22.2 70
60
33.3
60
Báng
80 23
Các ca kiểm thử miền giá trị
1 1 1 1 100 10 min
3 10 9 10 970 97 border-
24
Các ca kiểm thử giá trị đặc biệt
25
Kiểm thử lớp tương đương
26
Tổng quan
27
Kiểm thử lớp tương đương
• Lý do:
• Cảm giác kiểm thử hết
• Tránh dư thừa
• Các lớp tương đương tạo thành một phân hoạch
của miền dữ liệu
• Hợp của tất cả các lớp bằng miền đầu vào
• Cảm giác đã kiểm thử hết
• Hai lớp bất kỳ không giao nhau
• Không dư thừa
28
Các lớp tương đương
29
Chọn phân hoạch
30
Ví dụ
A = A1 U A2 U A3
B = B1 U B2 U B3 U B4
C = C1 U C2
31
Ví dụ (tiếp)
32
ECT yếu
• ECT yếu chỉ lấy tất cả các phần tử đại diện ít nhất một lần
• Số ca kiểm thử tối thiểu sẽ bằng số lớp của phân hoạch có nhiều
tập con nhất
• Trong ví dụ trước là 4
# a b c
WE1 a1 b1 c1
WE2 a2 b2 c2
WE3 a3 b3 c1
WE4 a1 b4 c2
33
ECT mạnh
• ECT mạnh dựa trên tích Đề-các của các lớp con
• Với ví dụ trước ta có:
3 * 4 * 2 = 24 ca kiểm thử
• Cách này xét đến tất cả các tương tác của các giá
trị đại diện
34
# a b c
SE1 a1 b1 c1
SE2 a1 b1 c2
SE3 a1 b2 c1
SE4 a1 b2 c1
SE5 a1 b3 c1
SE6 a1 b3 c2
SE7 a1 b4 c1
SE8 a1 b4 c2
SE9 a2 b1 c1
SE10 a2 b1 c2
SE11 a2 b2 c1
SE12 a2 b2 c2
SE13 a2 b3 c1
SE14 a2 b3 c2
SE15 a2 b4 c1
SE16 a2 b4 c2
SE17 a3 b1 c1
SE18 a3 b1 c2
SE19 a3 b2 c1
SE20 a3 b2 c2
SE21 a3 b3 c1
SE22 a3 b3 c2
SE23 a3 b4 c1 35
SE24 a3 b4 c2
ECT truyền thống
36
Mở rộng cho miền đầu ra
37
Các ca kiểm thử ECT cho đầu ra bài toán
Triangle
• Miền đầu ra có các giá trị:
• Không là tam giác
• Tam giác đều
• Tam giác cân
• Tam giác thường
• Chúng ta sử dụng chúng để xác định lớp tương
đương
R1= {<a, b, c> | ba cạnh a, b, c tạo thành tam giác cân}
R2= {<a, b, c> | ba cạnh a, b, c tạo thành tam giác đều}
R3= {< a, b, c> | ba cạnh a, b, c tạo thành tam giác thường}
R4= {a, b, c> | ba cạnh a, b, c không tạo thành tam giác}
38
Một bộ ca kiểm thử dựa trên đầu ra
Kết quả
TT a b c
mong đợi
OE1 5 5 5 Đều
OE2 2 2 3 Cân
OE3 3 4 5 Thường
Không là
OE4 4 1 2
tam giác
39
Một bộ ca kiểm thử dựa trên đầu vào
• Dựa trên đầu vào sẽ cho tập ca kiểm thử lớn hơn.
• Các lớp tương đương:
D1= {<a,b,c> | a=b=c}
D2= {<a,b,c> | a=b, a≠c}
D3= {<a,b,c> | a=c, a≠b}
D4= {<a,b,c> | b=c, a≠b}
D5= {<a,b,c> | a≠b, a≠c, b≠c}
• Có thể thêm các lớp để loại trừ ba cạnh không tạo thành
tam giác
D6= {<a, b, c> | a ≥ b+c}
D7= {<a, b, c> | b ≥ a+c}
D8= {<a, b, c> | c ≥ a+b}
• D6 có thể tách tiếp thành
D6’= {<a, b, c> | a = b+c} và D6’’= {<a, b, c> | a > b+c}
40
Một bộ ca kiểm thử dựa trên đầu vào cho
NextDate
• NextDate là hàm của ba biên với miền xác định:
1 ≤ month ≤ 12
1 ≤ day ≤ 31
1812 ≤ year ≤ 2012
41
Các ca ECT truyền thống
42
Các ca ECT truyền thống
• Nếu chọn quan hệ tương đương khéo hơn ta có các lớp tương đương
có ích hơn
M1= {month | tháng có 30 ngày }
M2= {month | tháng có 31 ngày}
M3= {month | tháng Hai}
D1= {day | 1 ≤ day ≤ 28}
D2= {day | day = 29}
D3= {day | day = 30}
D4= {day | day=31}
Y1= {year | year = 1900}
Y2= {year | 1812 ≤ year ≤ 2012 AND year ≠ 1900 AND (0 = year mod 4)}
Y3= {year | 1812 ≤ year ≤ 2012 AND (0 ≠ year mod 4)}
44
Các ca ECT mạnh
CASE ID Month Day Year Output
SE1 6 14 1900 6/15/1900
SE2 6 14 1912 6/15/1912
SE3 6 14 1913 6/15/1913
SE4 6 29 1900 6/30/1900
SE5 6 29 1912 6/30/1912
SE6 6 29 1913 6/30/1913
SE7 6 30 1900 7/1/1900
SE8 6 30 1912 7/1/1912
SE9 6 30 1913 7/1/1913
SE10 6 31 1900 ERROR
SE11 6 31 1912 ERROR
SE12 6 31 1913 ERROR
SE13 7 14 1900 7/15/1900
SE14 7 14 1912 7/15/1912
SE15 7 14 1913 7/15/1913
SE16 7 29 1900 7/30/1900
SE17 7 29 1912 7/30/1912
SE18 7 29 1913 7/30/1913
45
Các ca ECT mạnh (tiếp)
46
Hướng dẫn và cân nhắc
• ECT truyền thống khá yếu, kém hơn ETC yếu, bản
thân đã kém hơn ETC mạnh
• Nếu cần kiểm tra dữ liệu không hợp lệ thì cần
thêm các lớp tương đương ngoài khoảng xác định
• ECT phù hợp với dữ liệu đầu vào là khoảng hoặc
tập các giá trị rời rạc
47
Hướng dẫn và cân nhắc (tiếp)
48
Kiểm thử dựa trên bảng quyết định
(DT)
Bảng quyết định
Máy in không in Y Y Y Y N N N N
1. Mỗi điều kiện tương ứng với một biến, một quan hệ, hoặc một
mệnh đề (predicate)
2. Các giá trị của điều kiện
– Chỉ là True/False – Bảng quyết định hạn chế
– Một số giá trị – Bảng quyết định mở rộng
– Giá trị không quan tâm
3. Mỗi hành động là một thủ tục hoặc thao tác phải thực hiện
4. Đánh dấu hành động có/không xảy ra
Ví dụ bảng quyết định tính lương
Case ID a b c Expected
Output
DT1 4 1 2 Not a Triangle
DT2 1 4 2 Not a Triangle
DT3 1 2 4 Not a Triangle
DT4 5 5 5 Equilateral
DT5 ? ? ? Impossible
DT6 ? ? ? Impossible
DT7 2 2 3 Isosceles
DT8 ? ? ? Impossible
DT9 2 3 2 Isosceles
DT10 3 2 2 Isosceles
DT11 3 4 5 Scalene
Bảng quyết định cho NextDate
(thử lần 1)
• Chúng ta có thể chia thành các lớp tương đương
sau:
M1= {month | month has 30 days}
M2= {month | month has 31 days}
M3= {month | month is February}
D1= {day | 1 ≤ day ≤ 28}
D2= {day | day = 29}
D3= {day | day = 30}
D4= {day | day=31}
Y1= {year | year = 1900}
Y2= {year | 1812 ≤ year ≤ 2012 AND year ≠ 1900 AND (0 = year mod 4}
Y3= {year | 1812 ≤ year ≤ 2012 AND 0 ≠ year mod 4}
• Khi đó ta có bảng quyết định như sau
Bảng quyết định cho NextDate (1)
Conditions 1 2 3 4 5 6 7 8
C1: month in M1 M1 M1 M1 M2 M2 M2 M2
C2: day in D1 D2 D3 D4 D1 D2 D3 D4
C3: year in - - - - - - - -
Rule count 3 3 3 3 3 3 3 3
Actions
A1: Impossible X
Conditions 9 10 11 12 13 14 15 16
C1: month in M3 M3 M3 M3 M3 M3 M3 M3
C2: day in D1 D1 D1 D2 D2 D2 D3 D3
C3: year in Y1 Y2 Y3 Y1 Y2 Y3 - -
Rule count 1 1 1 1 1 1 3 3
Actions
A1: Impossible X X X X
Conditions 1 2 3 4 5 6 7 8 9 10
C1: month in M1 M1 M1 M1 M1 M2 M2 M2 M2 M2
C2: day in D1 D2 D3 D4 D5 D1 D2 D3 D4 D5
C3: year in - - - - - - - - - -
Actions
A1: Impossible X
Conditions 11 12 13 14 15 16 17 18 19 20 21 22
C1: month in M3 M3 M3 M3 M3 M4 M4 M4 M4 M4 M4 M4
C2: day in D1 D2 D3 D4 D5 D1 D2 D2 D3 D3 D4 D5
C3: year in - - - - - - Y1 Y2 Y1 Y2 - -
Actions
A1: Impossible X X X
69
Tổng quan
70
Các ca kiểm thử theo BVT
Case # a b c Expected Output
1 100 100 1 Isosceles
2 100 100 2 Isosceles
3 100 100 100 Equilateral
4 100 100 199 Isosceles
5 100 100 200 Not a Trianle
6 100 1 100 Isosceles
7 100 2 100 Isosceles
8 100 100 100 Equilateral
9 100 199 100 Isosceles
10 100 200 100 Not a Triangle
11 1 100 100 Isosceles
12 2 100 100 Isosceles
13 100 100 100 Equilateral
14 199 100 100 Isosceles
71
15 200 100 100 Not a Triangle
Các ca kiểm thử theo ECT
Case # a b c Output
1 5 5 5 Equilateral
2 5 5 3 Isosceles
3 5 3 5 Isosceles
4 3 5 5 Isosceles
5 3 4 5 Scalene
6 8 3 4 Not a triangle
7 7 3 4 Not a triangle
8 3 8 4 Not a triangle
9 3 7 4 Not a triangle
10 3 4 8 Not a triangle
11 3 4 7 Not a triangle
72
Các ca kiểm thử theo DTT
Case ID a b c Expected
Output
DT1 4 1 2 Not a Triangle
DT2 1 4 2 Not a Triangle
DT3 1 2 4 Not a Triangle
DT4 5 5 5 Equilateral
DT5 ? ? ? Impossible
DT6 ? ? ? Impossible
DT7 2 2 3 Isosceles
DT8 ? ? ? Impossible
DT9 2 3 2 Isosceles
DT10 3 2 2 Isosceles
DT11 3 4 5 Scalene 73
Nỗ lực kiểm thử
Số ca kiểm thử
high
low
Phức tạp
boundary equivalence decision
value class table
74
Nỗ lực kiểm thử
high
low
Phức tạp
boundary equivalence decision
value class table
75
Nỗ lực kiểm thử
76
Đồ thị xu hướng ca kiểm thử
77
Hiệu quả kiểm thử
• Đồ thị trên cho thấy hạn chế chính của kiểm thử chức
năng:
• Thiếu ca kiểm thử cho trường hợp cần kiểm thử
• Dư thừa kiểm thử cho cùng trường hợp
• Ví dụ:
• DTT cho NextDate tạo ra 22 ca kiểm thử, khá đầy đủ
• BVT trường hợp xấu nhất tạo ra 125 ca, thừa nhiều 1/1 cho cả
5 năm, nhưng cũng thiếu 28/2, 29/2, và không có ca kiểm thử
cho năm nhuận
• ECT mạnh tạo ra 36 ca kiểm thử, 11 ca kiểm thử là không hợp
lệ
• Tóm lại: BVT và ECT đơn giản nhưng kém hiệu quả so
với kỹ thuật tinh tế nhưng tốn công sức là DTT
78
Hiệu quả kiểm thử
79
Hiệu quả kiểm thử
80
Mức độ hiệu quả
81
Khuyến cáo áp dụng
82
Khuyến cáo áp dụng
1.Chúng ta nên chú ý đến các lời khuyên sau khi áp dụng:
1.Nếu biến là đại lượng vật lý thì dùng kiểm thử miền hoặc
tương đương hoặc cả hai.
2.Nếu các biến độc lập nhau thì dùng bảng quyết định
3.Nêu giả thuyết một khuyết tật đã gây ra hỏng hóc, thì kiểm
thử biên và kiểm thử biên mạnh.
4.Nếu giả thuyết nhiều khuyết tật mới gây ra hỏng hóc thì kiểm
thử trường hợp xấu nhất, kiểm thử xấu nhất mạnh, và bảng
quyết định.
5.Nếu chương trình có nhiều xử lý ngoại lệ, dùng kiểm thử
mạnh và bảng quyết định.
6.Nếu các biến là biến logic, sử dụng kiểm thử tương đương và
bảng quyết định.
83
Bảng quyết định giúp chọn kỹ thuật
kiểm thử
C1: biến vật lý (P) logic (L) P P P P P L L L L L
C2: Các biến độc lập? Y Y Y Y N Y Y Y Y N
C3: Giả thiết sai đơn? Y Y N N - Y Y N N -
C4: Bắt ngoại lệ? Y N Y N - Y N Y N -
A1: BVT X
A2: BVT mạnh X
A3: BVT trường hợp xấu nhất X
A4: BVT mạnh và trường hợp xấu X
nhất
A5: ECT truyền thống X X X X
A6: ECT yếu X X X X
A7: ECT mạnh X X X X X X
A8: Bảng quyết định X X