Lớp:D10CNPM2
Nhóm 1
•
Trần Việt Anh
•
Đỗ Tất Đạt
•
Trần Quốc Đông
•
Dương Thị Hoan
•
Phạm Đức Thắng
•
Dựa vào mã nguồn/ cấu trúc chương trình.
•
Đối tượng là các thành phần phần mềm (1 hàm chức năng, 1 module chức năng… ).
•
Thường tốn rất nhiều thời gian và công sức.
•
Có 2 hoạt động kiểm thử hộp trắng:
•
Kiểm thử luồng điều khiển.
•
Kiểm thử luồng dữ liệu.
•
!"# $%
•
&'()!*+,-
•
.%
• ,%
.
.
•
Thực hiện bằng cách phân tích các mã nguồn, không thực thi các mã.
•
Phương pháp kiểm thử dòng dữ liệu tĩnh thường được sử dụng để phát hiện những khiếm khuyết tiềm ẩn trong chương trình.
.
Có ba loại tình huống bất thường với việc sử dụng biến.
•
Loại 1: Gán giá trị cho biến sau đó lại gán giá trị một lần nữa.
•
Loại 2: Chưa gán giá trị biến nhưng vẫn được sử dụng.
•
Loại 3: Đã khai báo và gán giá trị biến nhưng không sử dụng.
.
•
Loại 1 : Gán giá trị sau đó lại gán giá trị một lần nữa.
•
Ví dụ : x = f1(y);
x = f2(z);
•
Các trường hợp lý giải:
•
Nếu dòng lệnh thứ hai thực hiện => dòng lệnh thứ nhất không có ý nghĩa.
•
Dòng lệnh 1 và 2 có thể nhầm lẫn.
•
Thiếu câu lệnh.
.
•
Loại 2: Chưa gán giá trị cho biến nhưng vẫn được sử dụng.
•
Ví dụ : y = f(x1);
int z;
x= y+z;
•
Các trường hợp lý giải:
•
Người lập trình quên chưa gán giá trị cho z.
•
Nhầm biến z với một biến đã khai báo.
.
•
Loại 3: Đã khai báo và gán giá trị cho biến nhưng không sử dụng.
•
Các trường hợp lý giải:
•
Nhầm lẫn giữa biến này và một số biến khác được sử dụng trong chương trình.
•
Biến này thực sự không được sử dụng trong chương trình.
.
•
Sơ đồ chuyển trạng của biến
•
Trạng thái:
U: Undefined
D: Defined but not referenced
R: Defined and referenced
A: Abnormal
•
Hành động:
d : Define
r : Reference
u : Undefine
,
,
•
/012-
•
314456,'(#,7# $897!+:#,$,'(,';,<!56=,
54,1>?,'(,$.!,6,56,?,'(@%
•
A!B:#,7# $56C## $,'( !'!4,DE#E#F#5
9,"!G56,'(@!H%
,
•
3#5'I-
•
JKB,$2<!'> CL,>$'> C%
•
3MFE2%
•
J#,$#,';N'> C+O(+IE,DM%
•
/*B !#59,"=P+#,';,8:#59,",?,'(## $,1
#!'>9I#,';,BE## $,1 !,(<!Q!%
&$
•
&$.!-&$2<!'> CL,>$'> C,$?'IRS
TAUVW8I-
•
AP+#,X'>9I#KYFZ<!#56,'(@ ,>$'> C%
&$R?!,X,F5,X54,1G'>9IY<!#56!H,X67,>$
'> C%
•
VP+#['>9I#K+Z<!#56%
&$
•
\#-
•
]Y-K## $56%
•
^Y-!5#5''!*+# $?%
•
^-K@56GE#F !#,"H%
•
3Z-K@56,E## $<!56#%
•
_Z-K@56 #59,"GK `#8F+8%%%H%
,
&$
•
aE@-E 5C
b%5!G!cd8!88!He
f%888U
g%5!U
h%SSSSiU
j%kGT!ll!cdmSZnnnHe
o%SpbU
q%YG!cdWSll!cdTS!He
r%SpbU
n%pS!cdUs
bi%ppUsLLk
bb%YGWiH
bf%!SG5HLU
bg%!SG5HZnnnU
bh% !Us
P"
•
Global c-use:
a@56[,X,'(MR5!Z6,D,'(,$.!)#,X 'I,?%
•
aE@-oR5!Z<!56C56,D,'(,$.![h%
•
Def -clear path:
,'(,$.![,X,'(@[,Xt%\,';,=,6t0GZbZ%%%Z
ZtHIui,'(M]YZ! +!9I56656v,'(,$.![#,X=b,6%
•
_!hZjZoYZ! +!<!56C-
•
6,'(,$.![h%
•
6v,'(,$.!)j%
P"
•
Global def: \,X,'(MR5!Y<!566,XB,$.!56GYH?
]YZ! +!<!=,XI,X9!R5!ZF[9!+Z<!56
B%
•
aE@-hR5!Y<!56C
•
h,$.!56%
•
]YZ! +!hZjZo<!56?oR5!Z<!56%
P"
•
Simple path: \,';, ,$2,'(Mw++!6#,XX
*,71 =,X,1,X%
•
aE@-bZfZgZhZjZo8jZoZqZbiZj%
•
Loop-free path :\,';, ,$2,'(M/+ZY +!6#,X
X*,71%
•
aE@-bZfZgZhZjZo%
P"
•
Complete-path :\,';,,'(M3++!6??,54,1,6
7E,54,1,67<!,$2%
•
aE@-bZfZgZhZjZbbZbfZbh%