Phủ kiểm thử
Do đó, ta nên kiểm thử số test case tối thiểu mà
kết quả độ tin cậy tối đa. Nhưng làm sao xác định
được số test case tối thiểu nào có thể đem lại kết
quả có độ tin cậy tối đa?
Phủ kiểm thử (Coverage) : là tỉ lệ các thành phần
thực sự được kiểm thử so với tổng thể sau khi đã
kiểm thử các test case được chọn. Phủ càng lớn
thì độ tin cậy càng cao.
Thành phần liên quan có thể là lệnh, điểm quyết
định, điều kiện con, đường thi hành hay là sự kết
hợp của chúng.
76 trang |
Chia sẻ: thanhle95 | Lượt xem: 717 | Lượt tải: 0
Bạn đang xem trước 20 trang 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Kiểm thử phần mềm
TS. Nguyễn Thanh Hùng
Bộ Môn Công Nghệ Phần Mềm
Email: hungnt@soict.hust.edu.vn
Website:
Kiểm thử hộp trắng
Trường Đại Học Bách Khoa Hà Nội
Viện Công Nghệ Thông Tin &Truyền Thông
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Nhắ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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kiểm thử hộp trắng
ng
n
kiểm thử:
• n)
• n)
• liệu).
4
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Nội dung cần kiểm thử hộp trắng
?
)
nh)
i)
liẹ ̂u)
u -> kết thúc (từng luồng
điều khiển)
ng?
5
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kiểm thử hộp trắng
ngai: n
Thí dụ đoạn code sau :
for (i=1; i<=1000; i++)
for (j=1; j<=1000; j++)
for (k=1; k<=1000; k++)
doSomethingWith(i,j,k);
có 1 đường thi hành dài 1000*1000*1000 = 1 tỉ lệnh gọi
doSomethingWith(i,j,k) khác nhau.
Thí dụ đoạn code gồm 32 lệnh if else sau :
if (c1) s11 else s12;
if (c2) s21 else s22;
if (c3) s31 else s32;
...
if (c32) s321 else s322;
có 2^32 = 4 tỉ đường thi hành khác nhau.
6
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kiểm thử hộp trắng
Kiểm thử hộp trắng cũng không phủ được
hết trường hợp
if (a>0)
doIsGreater();
if (a==0)
dolsEqual();
p a < 0 - if (a<0) dolsLess();
int phanso (int a, int b) {
return a/b;
}
i.
7
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phủ kiểm thử
Do đó, ta nên kiểm thử số test case tối thiểu mà
kết quả độ tin cậy tối đa. Nhưng làm sao xác định
được số test case tối thiểu nào có thể đem lại kết
quả có độ tin cậy tối đa?
Phủ kiểm thử (Coverage) : là tỉ lệ các thành phần
thực sự được kiểm thử so với tổng thể sau khi đã
kiểm thử các test case được chọn. Phủ càng lớn
thì độ tin cậy càng cao.
Thành phần liên quan có thể là lệnh, điểm quyết
định, điều kiện con, đường thi hành hay là sự kết
hợp của chúng.
8
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phủ cấp 0 & 1
Phủ cấp 0 : kiểm thử những gì có thể kiểm thử
được, phần còn lại để người dùng phát hiện và
báo lại sau. Đây là mức độ kiểm thử không thực
sự có trách nhiệm.
Phủ cấp 1 : kiểm thử sao cho mỗi lệnh được thực
thi ít nhất 1 lần.
9
Với hàm foo bên cạnh, ta chỉ
cần 2 test case sau đây là đạt
100% phủ cấp 1 :
1. foo(0,0,0,0), trả về 0
2. foo(1,1,1,1), trả về 1
nhưng không phát hiện lỗi chia 0
ở hàng lệnh 8
1 float foo(int a, int b, int c, int d) {
2 float e;
3 if (a==0)
4 return 0;
5 int x = 0;
6 if ((a==b) || ((c==d) && bug(a)))
7 x = 1;
8 e = 1/x;
9 return e;
10 }CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phủ cấp 2
Phủ cấp 2 : kiểm thử sao cho mỗi điểm quyết định đều được
thực hiện ít nhất 1 lần cho trường hợp TRUE lẫn FALSE. Ta gọi
mức kiểm thử này là phủ các nhánh (Branch coverage). Phủ
các nhánh đảm bảo phủ các lệnh.
10
c
u thêm test case 3 :
nh.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phủ cấp 3
nh.
11
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phủ cấp 4
u kiện con (branch &
subcondition coverage).
12
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng
u đặt ra:
n.
a sai (false).
c hiên.
13
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng
ng?
nh.
nh
m tra.
14
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kiểm thử hộp trắng
Là kỹ thuật kiểm thử xâm nhập vào nội
bộ, cấu trúc bên trong của chương
trình
Các kỹ thuật kiểm thử hộp trắng phổ
biến:
Kiểm thử đường dẫn cơ sở
Kiểm thử rẽ nhánh
Kiểm thử vòng lặp
Kiểm tra luồng điều khiển
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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ở
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng
ng
nh.
nh.
ch:
•
•
19
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng
m:
n.
n,
ng:
n.
c cung.
20
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng
ng:
21
Các cấu trúc điều khiển
CuuDuongThanCong.com https://fb.com/tailieudientucntt
nh
22
u
a một
nh
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng
23
CuuDuongThanCong.com https://fb.com/tailieudientucntt
m:
:
)
11 cung
n
24
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ 2
25
CuuDuongThanCong.com https://fb.com/tailieudientucntt
nh
t một lệnh).
nh
n hơn).
26
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Quy trình xác định các đường tuyến tính độc lập
c :
t.
i.
i.
a.
C).
28
CuuDuongThanCong.com https://fb.com/tailieudientucntt
c nh c ca m thư
29
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ
30
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Độ phức tạp Cyclomatic C
31
nh
p C = 5+1 = 6.
:
1. 1 2 10 11
2. 1 2 3 10 11
3. 1 2 10 12
4. 1 2 3 4 5 8 9
5. 1 2 3 4 5 6 8 9
6. 1 2 3 4 5 6 7 8 9
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Thiết kế các test-cases
32
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Thiết kế các test-cases
ng 4:
value(i) -999 i <= 100
i k < i
p lệ)
ng 5:
- i i <= 100
i k <= i
p lệ)
ng 6:
- i
i<=100
p lệ. (2) tcnt = 100. (3) vcnt = 100
33
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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ụ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
35
Thiết kế trường hợp kiểm thử cho kiểm thử đường cơ sở
Ví dụ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
36
Ví dụ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
37
Đồ thị dòng chảy
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Độ phức tạp “Cyclomatic”
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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ử (1)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Đường cơ sở và các trường hợp kiểm thử (2)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài tập - BinarySearch
41
13
25
binarySearch() Example
public int binarySearch(int sortedArray[ ], int searchValue)
{
int bottom = 0;
int top = sortedArray.length - 1;
int middle, locationOfsearchValue;
boolean found = flase;
locationOfsearchValue = -1; /* the location of searchValue in the sortedArray */
/* location = -1 means that searchValue is not found */
while ( bottom <= top && !found)
{
middle = (top + bottom)/2;
if (searchValue == sortedArray[ middle ])
{
found = true;
locationOfsearchValue = middle;
}
else if (searchValue < sortedArray[ middle ])
top = middle - 1;
else
bottom = middle + 1;
} // end while
return locationOfsearchValue;
}
1
2
4
5
6
7
8
9
10
3
26
The CFG of Function binarySearch()
1
2
3
4
56
7
8
9
10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài tập – BinarySearch - CFG
42
13
25
binarySearch() Example
public int binarySearch(int sortedArray[ ], int searchValue)
{
int bottom = 0;
int top = sortedArray.length - 1;
int middle, locationOfsearchValue;
boolean found = flase;
locationOfsearchValue = -1; /* the location of searchValue in the sortedArray */
/* location = -1 means that searchValue is not found */
while ( bottom <= top && !found)
{
middle = (top + bottom)/2;
if (searchValue == sortedArray[ middle ])
{
found = true;
locationOfsearchValue = middle;
}
else if (searchValue < sortedArray[ middle ])
top = middle - 1;
else
bottom = middle + 1;
} // end while
return locationOfsearchValue;
}
1
2
4
5
6
7
8
9
10
3
26
The CFG of Function binarySearch()
1
2
3
4
56
7
8
9
10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài tập – BinarySearch – Độ phức tạp
43
15
29
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.
30
Cyclomatic Complexity of Function
binarySearch()
1
5
7
8
9
10
2
3
4
6
predicate nodes
R1
R2
R3
R4 R5
regions
V(G) = 5 regions
V(G) = 13(edges) – 10(nodes) +2 = 5
V(G) = 4(predicate nodes) + 1 = 5
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài tập – BinarySearch – Đường cơ sở
44
15
29
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.
30
Cyclomatic Complexity of Function
binarySearch()
1
5
7
8
9
10
2
3
4
6
predicate nodes
R1
R2
R3
R4 R5
regions
Path 1: 1-2-10
Path 2: 1-2-3-10
Path 3: 1-2-3-4-5-9-2- ...
Path 4: 1-2-3-4-6-7-9-2-...
Path 5: 1-2-3-4-6-8-9-2-...
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kỹ thuật ma trận kiểm thử
ng:
t
t cột.
t
46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ ma trận kiểm thử
47
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ ma trận kiểm thử
48
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Nội dung
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
u kiẹ ̂n lo ̂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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
nh
u kiẹ ̂n nh.
u kiẹ ̂n t hiện
nh lie ̂n quan.
nh
nh “true” “false”
n.
52
CuuDuongThanCong.com https://fb.com/tailieudientucntt
n n
cho c
a.
i, song c hiện!
c
nh n (quan hệ)
?
53
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BRO
BRO quan hệ
(branch and relational operation)
ng “
n thư”
n chung.
:
D=X1&X2&...Xn, Xi bool
a Xi
nh?.
54
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ng buộc Xi u kiẹ ̂n D
,
u kiẹ ̂n đơn Xi trong
ng.
: Khi
cho c
i Xi
n để a D
55
– o
CuuDuongThanCong.com https://fb.com/tailieudientucntt
– ng buọ ̂c
i n Bool B
t (true) hoặc f (false).
c quan hệ (AΘB
quan hệ:
>, <, =, #
c).
56
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
u kiện c
quan hệ (A>B) (E=F)
ng buộc (f,t)
: (>,=); (>,,>);
(=,=) (<,=).
quan hệ trong
C.
59
– ng buọ ̂c
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Nội dung
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
62
Simple
Loop
Nested
Loops
Concatenated
Loops Unstructured Loops
Kiểm thử vòng lặp
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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á
trị tối thiểu của chúng.
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 đã được
thử nghiệm.
64
Nested
Loops
Kiểm thử vòng lặp lồng nhau
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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á
trị ban đầu cho vòng lặp 2 thì
kiểm tra chúng như các vòng lặp
lồng nhau.
65
Concaten
ated
Loops
Kiểm thử vòng lặp ghép nối
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Nội dung
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đô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 bao phủ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Tiêu chuẩn luồng điều khiển
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đị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
Thứ tự tiêu chuẩn luồng điều khiển
CuuDuongThanCong.com https://fb.com/tailieudientucntt
70
Định Nghĩa:
• Mỗi câu lệnh trong chương
trình được thực hiện ít nhất
một lần.
Ví dụ:
• Để thoả mãn bao phủ câu
lệnh đáp ứng đoạn Code 1, một
trường hợp kiểm thử có thể:
A = 2 B= 0 X = 3
• 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?
Code1:
if ((A > 1) && (B == 0))
X = X/A;
if ((A == 2) || (X > 1))
X=X+1;
Code2:
if ((A > 1) || (B == 0))
X = X/A;
if ((A == 2) || (X > 1))
X=X+1;
Bao phủ câu lệnh
CuuDuongThanCong.com https://fb.com/tailieudientucntt
71
Định Nghĩa:
• Mỗi câu lệnh trong chương
trình được thực hiện ít nhất
một lần và mỗi điều kiện có
thể xảy r