[r]
Trang 1Ki ể m th ử (9)
Nguyễn Thanh Bình
Khoa Công nghệ Thông tin
Trường ðại học Bách khoa
ðại học ðà Nẵng
2
Giới thiệu về kiểm thử
Kiểm thử trong tiến trình phát triển
Kiểm thử hộp ñen
Kiểm thử hộp trắng
Trang 2IEEE: Kiểm thử là tiến trình vận hành
hệ thống hoặc thành phần dưới
những ñiều kiện xác ñịnh, quan sát
hoặc ghi nhận kết quả và ñưa ra ñánh
giá về hệ thống hoặc thành phần ñó
Myers: Kiểm thử là tiến trình thực thi
chương trình với mục ñích tìm thấy lỗi
(The art of software testing)
Kiểm thử ≠ Gở rối (debug)
Kiểm thử
• nh ằ m phát hi ệ n l ỗ i
Gởrối
• xác ñị nh b ả n ch ấ t l ỗ i và ñị nh v ị l ỗ i trong
ch ươ ng trình
• ti ế n hành s ử a l ỗ i
Trang 3M ột sai sót (error) là mộ t s ự nh ầ m l ẫ n hay m ộ t s ự
hi ể u sai trong quá trình phát tri ể n ph ầ n m ề m c ủ a
ng ườ i phát tri ể n
M ột lỗi (fault, defect) xuấ t hi ệ n trong ph ầ n m ề m
nh ư là k ế t qu ả c ủ a m ộ t sai sót
M ột hỏng hóc (failure) là kế t qu ả c ủ a m ộ t l ỗ i xu ấ t
hi ệ n làm cho ch ươ ng trình không ho ạ t ñộ ng ñượ c
hay ho ạ t ñộ ng nh ư ng cho k ế t qu ả không như mong
ñợ i
6
D ữ li ệ u th ử (test data)
d ữ li ệ u vào c ầ n cung c ấ p cho ph ầ n m ề m
trong khi th ự c thi
K ị ch b ả n ki ể m th ử (test scenario)
các b ướ c th ự c hi ệ n khi khi ki ể m th ử
Phán xét ki ể m th ử (test oracle)
ñ ánh giá k ế t qu ả c ủ a ki ể m th ử
• t ự ñộ ng: ch ươ ng trình
• th ủ công : con ng ườ i
Trang 4Ki ể m th ử viên (tester)
ng ườ i th ự c hi ệ n ki ể m th ử
Ca ki ể m th ử (test case)
t ậ p d ữ li ệ u th ử
ñ i ề u ki ệ n th ự c thi
k ế t qu ả mong ñợ i
Trang 5Ki ể m th ử thườ ng bao g ồ m các b ướ c
thi ế t k ế các ca ki ể m th ử
b ướ c t ạ o d ữ li ệ u th ử
• ki ể m th ử v ớ i t ấ t c ả các d ữ li ệ u vào là c ầ n thi ế t
• không th ể ki ể m th ử “vét c ạ n”
• ch ọ n t ậ p các d ữ li ệ u th ử ñạ i di ệ n t ừ mi ề n d ữ li ệ u vào
• d ự a trên các tiêu chu ẩ n ch ọ n d ữ li ệ u th ử
b ướ c th ự c thi ch ươ ng trình trên d ữ li ệ u th ử
• cung c ấ p d ữ li ệ u th ử
• th ự c thi
• ghi nh ậ n k ế t qu ả
b ướ c quan sát k ế t qu ả ki ể m th ử
• th ự c hi ệ n trong khi ho ặ c sau khi th ự c thi
• so sánh k ế t qu ả nh ậ n ñượ c và k ế t qu ả mong ñợ i
10
Trang 6Phủ tất cả các lộ trình
M ỗ i l ộ trình ph ả i ñượ c th ự c thi ít nh ấ t m ộ t
l ầ n
G ặ p khó khăn khi số l ầ n l ặ p vô h ạ n
Ch ỉ th ự c hi ệ n m ộ t s ố l ầ n l ặ p nh ấ t ñị nh
Ho ặ c ch ỉ th ự c hi ệ n hai lo ạ i l ộ trình
• các l ộ trình v ượ t qua vòng l ặ p nh ư ng không l ặ p
• các l ộ trình ch ỉ l ặ p n l ầ n (ch ẳ ng h ạ n n = 1)
Phủ tất cả các lộ trình
D ữ li ệ u th ử
DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3}
DT2 = {a[1]=50, a[2]=60, a[3]=80, inf=3, sup=2}
Trang 7Bài tập
Xây d ự ng d ữ li ệ u th ử th ỏ a mãn các tiêu chu ẩ n
ph ủ t ấ t c ả các ñỉ nh
ph ủ t ấ t c ả các cung
ph ủ t ấ t c ả các l ộ trình
if n ≤0 then
n := 1-n end;
if (n mod 2) = 0 then
n := n / 2 else
n := 3*n + 1 end ;
write(n);
58
Bài tập
Xây d ự ng d ữ li ệ u th ử th ỏ a mãn các tiêu chu ẩ n ph ủ
t ấ t c ả các l ộ trình
function goodstring(var count : integer) : boolean;
var ch : char;
begin
goodstring := false;
count := 0;
read(ch);
if ch = ‘a’ then
begin
read(ch) while(ch = ‘b’) or (ch = ‘c’) do begin count := count + 1;
read(ch);
end;
if ch = ‘x’ then goodstring = true;
end;
end;