Slide bài giảng KIỂM THỬ của trường Đại học Bách Khoa Đại học Đà Nẵng cung cấp cho sinh viên những kiến thức như: 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 3Các khái ni ệ m
M ộ 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
Các khái ni ệ m
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
Trang 5• 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ử
Trang 6Liên quan ñến tiến trình phát triển
gồm nhiều giai ñoạn phát triển
• cái ra của một giai ñoạn là cái vào của giai ñoạn khác
không tồn tại thuật toán tổng quát có thểchứng minh
sự ñúng ñắn hoàn toàn của bất kỳmột chương trình
Phân biệt hợp thức hóa và xác minh
“Verification: Are we building the product right ?”
“Validation: Are we building the right product ?”
Trang 7Ki ể m th ử trong ti ế n trình
phát tri ể n
Các kỹthuật kiểm thử
kỹthuật kiểm thửtĩnh (static testing)
kỹthuật kiểm thử ñộng (dynamic testing)
• kiểm thửhộp ñen (black-box testing)
• k ỹ thu ậ t ki ể m th ử ch ứ c n ă ng (functional testing)
• kiểm thửhộp trắng (white-box testing)
• k ỹ thu ậ t ki ể m th ử c ấ u trúc (structural testing)
Các hoạt ñộng kiểm thử/chiến lược kiểm thử
kiểm thử ñơn vị(unit testing)
kiểm thửtích hợp (integration testing)
kiểm thửhợp thức hóa (validation testing)
kiểm thửhồi quy (regression testing)
Ki ể m th ử trong ti ế n trình
phát tri ể n
Ki ể m th ử ñơn vị (unit testing)
ki ể m th ử m ỗ i ñơ n v ị ph ầ n m ề m (mô- ñ un)
• phần mềm yêu cầu chất lượng cao
th ườ ng ñượ c th ự c hi ệ n trên ph ầ n c ứ ng phát
tri ể n ph ầ n m ề m
Trang 8• chi phí cao, khó khăn
d ữ li ệ u th ử ñượ c t ạ o ra d ự a trên thi ế t k ế
Trang 9chiến lược từtrên xuống (top-down)
• ki ể m th ử tích h ợ p các thành ph ầ n chính tr ướ c, sau ñ ó thêm
• tuy nhiên chi ế n l ượ c này ñ òi h ỏ i ph ả i xây d ự ng nhi ề u nút trám
chiến lược từ dưới lên (bottom-up)
• ki ể m th ử các thành ph ầ n không g ọ i các thành ph ầ n khác, sau
ñ ó thêm vào các thành ph ầ n g ọ i các thành ph ầ n v ừ a ki ể m th ử
• ít s ử d ụ ng các nút trám
• nh ư ng l ạ i xác ñị nh l ỗ i tr ễ hơn
Trang 10Ki ể m th ử h ồ i quy (regression testing)
ph ầ n m ề m sau khi ñư a vào s ử d ụ ng, có th ể
Trang 11Kiểm thử ñơn vị
Các k ỹ thu ậ t ki ể m th ử
k ỹ thu ậ t ki ể m th ử t ĩ nh (static testing)
• không th ự c thi ch ươ ng trình
k ỹ thu ậ t ki ể m th ử ñộ ng (dynamic
testing)
• ki ể m th ử h ộ p ñ en (black-box testing)
• kỹthuật kiểm thửchức năng (functional testing)
• ki ể m th ử h ộ p tr ắ ng (white-box testing)
• kỹthuật kiểm thửcấu trúc (structural testing)
Trang 12Outputs which reveal the presence of defects
Trang 13Ki ể m th ử ng ẫ u nhiên (random testing)
ðồ th ị nhân-qu ả (cause-efect graph)
Ki ể m th ử cú pháp
Trang 14Tập trung phân tích các giá trịbiên của miền dữliệu
ñểxây dựng dữliệu kiểm thử
Nguyên tắc: kiểm thửcác dữliệu vào gồm
Trang 15• 4 giá tr ị = giá tr ị biên ± sai s ố nh ỏ nh ấ t
Nếu giá trịvào thuộc danh sách các giá trị, chọn
Chương trình nhận vào ba sốthực, kiểm tra ba số
thực có là ñộdài ba cạnh một tam giác Nếu là ñộdài
ba cạnh của một tam giác, thì kiểm tra xem ñó là tam
giác thường, cân, ñều cũng như kiểm tra ñó là tam
giác nhọn, vuông hay tù
Trang 163, 4, 5.00001 Tam giác giác g ầ n vuông
Trang 17Nguyên tắc phân hoạch các lớp tương ñương
Nếu dữliệu vào thuộc một khoảng, xây dựng
Trang 18Kiểm thửgiá trịbiên
Viết một chương trình thống kê phân tích một tệp
chứa tên và ñiểm của sinh viên trong một năm học
Tệp này chứa nhiều nhất 100 trường Mỗi trường
chứa tên của mỗi sinh viên (20 ký tự), giới tính (1 ký
tự) và ñiểm của 5 môn học (từ 0 ñến 10) Mục ñích
chương trình:
• tính diểm trung bình mỗi sinh viên
• tính ñiểm trung bình chung (theo giới tính et theo môn
học)
• tính sốsinh viên lên lớp (ñiểm trung bình trên 5)
Xây dựng dữliệu thử cho chương trình trên bởi kiểm
thửgiá trịbiên
Trang 19Bài t ậ p
Kiểm thửlớp tương ñương
Viết chương trình dịch, trong ñó có câu lệnh FOR,
ñặc tảcâu lệnh FOR như sau: “Lệnh FOR chỉchấp
nhận một tham sốduy nhất là biến ñếm Tên biến
không ñược sửdụng quá hai ký tựkhác rỗng Sau ký
hiệu = là cận dưới và cận trên của biến ñếm Các cận
trên và cận dưới là các số nguyên dương và ñược
ñặt giữa từkhóa TO”
Xây dựng dữliệu thử ñểkiểm thửcâu lệnh FOR theo
kỹthuật kiểm thửlớp tương ñương
Ki ể m th ử h ộ p tr ắ ng
D ự a vào mã ngu ồ n/c ấ u trúc ch ươ ng trình
Xây d ự ng d ữ li ệ u th ử sau khi mã hóa/l ậ p
trình
Th ườ ng phát hi ệ n các l ỗ i l ậ p trình
Khó th ự c hi ệ n
Chi phí cao
Trang 23if (n mod 2) = 0 then
n := n / 2else
n := 3*n + 1end ;
write(n);
Trang 24if a[i] > 0 thens := s + a[i];
Trang 25tiêu chu ẩ n t ố i thi ể u
functionsum(x,y : integer) : integer;
Trang 26Ki ể m th ử d ự a trên ð TL ð K
Ph ủ t ấ t c ả các cung
Ph ủ t ấ t c ả các cung ít nh ấ t m ộ t l ầ n
phủtất các giá trị ñúng sai của một biểu thức lô-gíc
phủtất cảcác cung kéo theo phủtất cảcác ñỉnh
if ((a < 2) and (b = a))
Ph ủ t ấ t c ả các quy ế t ñị nh ñượ c th ỏ a mãn khi:
tiêu chuẩn phủtất cảcác cung ñược thỏa mãn và
Trang 28Hoặ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)
Ki ể m th ử d ự a trên ð TL ð K
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 29if (n mod 2) = 0 then
n := n / 2 else
n := 3*n + 1 end ;
read(ch);
end;