ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
1
Ki m th
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
N i dung
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
2
3
Ki m th là gì ?
IEEE: 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)
4
Ki m th là gì ?
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
3
5
Cá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
sai sót l i h ng hóc
6
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
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
4
7
Các khái ni m
Ki 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
8
Các khái ni m
5
9
Ti n trình ki m th
Ki 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
Ti n trình ki m th
6
11
Khó khăn c a ki m th
Liê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
• m t mát thông tin
V m t con ngư i
thi u ñào t o
ít chú tr ng vai trò ki m th
V m t k thu t
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
nào
12
T i sao ki m th
H p th c hóa (validation)
ch ra r ng s n ph m ñáp ng ñư c yêu c u ngư i
s d ng
Xác minh (verification)
ch ra r ng s n ph m th a mãn ñ c t yêu c u
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 ?â€
7
13
Ki 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)
14
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)
s d ng k thu t ki m th h p ñen
d li u th ñươc t o ra d a trên tài li u thi t
k
có th s d ng c ki m th h p tr ng và
ki m th tĩnh
• 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
8
15
Ki m th trong ti n trình
phát tri n
Ki m th tích h p (integration testing)
sau khi ñã th c hi n ki m th ñơn v
ghép n i các ñơn v /thành ph n ph n m m
ki m th s ghép n i, trao ñ i d li u gi a
các ñơn v /thành ph n
s d ng k thu t ki m th h p ñen
môt s trư ng h p, s d ng k thu t ki m
th h p tr ng
• chi phí cao, khó khăn
d li u th ñư c t o ra d a trên thi t k
t ng th
16
Ki m th trong ti n trình
phát tri n
Ki m th tích h p (2)
c n xây d ng thêm
• nút trám (stub): các thành ph n khác mô
ph ng các thành ph n ph n m m chưa
ñư c tích h p
• trình ñi u khi n (driver): các thành ph n
t o ra các d li u vào cho m t vài các
thành ph n ph n m m trong t p h p
ñang ñư c ki m th
9
17
Ki m th trong ti n trình
phát tri n
Ki m th tích h p (3)
18
Ki m th trong ti n trình
phát tri n
Ki m th tích h p (4)
chi 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
vào các thành ph n ñư c g i tr c ti p b i các thành ph n v a
ki m th
• cho phép xác ñ nh s m các l i v ki n trúc
• các b d li u th có th ñư c tái s d ng cho các bư c ti p
theo
• 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
10
19
Ki m th trong ti n trình
phát tri n
Ki m th h p th c hóa (validation testing)
còn g i là ki m th h th ng (system
testing)
th c hi n sau khi ki m th tích h p k t thúc
ch ng minh ph n m m th c hi n ñúng
mong ñ i c a ngư i s d ng
d a vào yêu c u ngư i s d ng
ch s d ng k thu t ki m th h p ñen
nên th c hi n trong môi trư ng mà ph n
m m s ñư c s d ng
20
Ki m th trong ti n trình
phát tri n
Ki m th h i quy (regression testing)
ph n m m sau khi ñưa vào s d ng, có th
có các ch nh s a
• có th phát sinh l i m i
c n ki m th l i: ki m th h i quy
thư ng tái s d ng các b d li u th ñã s
d ng trong các giai ño n trư c
11
21
Ki m th trong mô hình V
ð c t yêu c u
Thi t k ki n trúc
Thi t k chi ti t
Mã hóa
Ki m th h p th c hóa
Ki m th tích h p
Ki m th ñơn v
22
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)
12
23
Ki m th tĩnh
Thanh tra mã ngu n (code inspection)
Ch ng minh hình th c
Th c thi hình th c (symbolic execution)
ðánh giá ñ ph c t p
McCabe
Nejmeh
24
Ki m th h p ñen
I
e
Input test data
OeOutput test results
System
Inputs causing
anomalous
behaviour
Outputs which reveal
the presence of
defects
13
25
Ki m th h p ñen
Ch c n d a vào ñ c t chương trình
Xây d ng d li u th trư c khi mã hóa/l p
trình
Thư ng phát hi n các l i ñ c t yêu c u,
thi t k
D dàng th c hi n
Chi phí th p
26
Ki m th h p ñen
Ki m th giá tr biên (boundary value
analysis)
Ki m th l p tương ñương (equivalence
class testing)
Ki m th ng u nhiên (random testing)
ð th nhân-qu (cause-efect graph)
Ki m th cú pháp
14
27
Ki m th giá tr biên
CÆ¡ s
l i thư ng xu t hi n g n các giá tr biên c a mi n dũ
li u
T 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
giá tr nh nh t
giá tr g n k l n hơn giá tr nh nh t
giá tr bình thư ng
giá tr g n k nh hơn giá tr l n nh t
giá tr l n nh t
28
Ki m th giá tr biên
15
29
Ki m th giá tr biên
Nguyên t c ch n d li u th
N u d li u vào thu c m t kho ng, ch n
• 2 giá tr biên
• 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
• ph n t th nh t, ph n t th hai, ph n t k cu i và ph n t
cu i
N u d li u vào là ñi u ki n ràng bu c s giá tr , ch n
• s giá tr t i thi u, s giá tr t i ña và m t s các s giá tr
không h p l
T v n d ng kh năng và th c t ñ ch n các giá tr biên
c n ki m th
30
Ki m th giá tr biên
Ví d (1)
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ù.
16
31
Ki m th giá tr biên
Ví d (2)
D li u th
1, 1, 2 Không là tam giác
0, 0, 0 Ch m t ñi m
4, 0, 3 M t c nh b ng không
1, 2, 3.00001 G n là m t tam giác
0.001, 0.001, 0.001 Tam giác r t nh
99999, 99999, 99999 Tam giác r t l n
3.00001, 3, 3 Tam giác g n ñ u
2.99999, 3, 4 Tam giác g n cân
3, 4, 5.00001 Tam giác giác g n vuông
3, 4, 5, 6 B n giá tr
3 Ch m t giá tr
D li u vào r ng
-3, -3, 5 Giá tr âm
32
Ki m th l p tương ñương
à tư ng
phân ho ch mi n
d li u vào thành
các l p các d
li u có quan h
v i nhau
m i l p dùng ñ
ki m th m t
ch c năng, g i là
l p tương ñương
17
33
Ki m th l p tương ñương
Ba bư c
ñ i v i m i d li u vào, xác ñ nh các l p
tương ñương t mi n d li u vào
ch n d li u ñ i di n cho m i l p tương
ñương
k t h p các d li u th b i tích ð -các ñ
t i ra b d li u ki m th
34
Ki m th l p tương ñương
Nguyê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
• 1 l p các giá tr l n hơn
• 1 l p các giá tr nh hơn
• n l p các giá tr h p l
N u d li u là t p h p các giá tr , xây d ng
• 1 l p v i t p r ng
• 1 l p quá nhi u các giá tr
• n l p h p l
N u d li u vào là ñi u ki n ràng bu c, xây d ng
• 1 l p v i ràng bu c ñư c th a mãn
• 1 l p v i ràng bu c không ñư c th a mãn
18
35
Ki m th l p tương ñương
Ví d
Bài toán tam giác
Nh n Vuông Tù
Thư ng 6,5,3 5,6,10 3,4,5
Cân 6,1,6 7,4,4 √2,2,√2
ð u 4,4,4 không th không th
Không là tam giác -1,2,8
36
Bài t p
Ki 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
19
37
Bà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
38
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
20
39
Các k thu t ki m th h p
tr ng
Ki m th d a trên ñ th lu ng ñi u khi n
Ki m th d a trên ñ th lu ng d li u
Ki m th ñ t bi n (mutation testing)
40
ð th lu ng ñi u khi n
ð th lu ng ñi u khi n (Control Flow Graph -
ðTLðK) là ñ th có hư ng, bi u di n m t chương
trình
ñ nh: bi u di n l nh tu n t hay kh i l nh
cung: bi u di n các r nhánh
m t ñ nh vào và m t ñ nh ra ñư c thêm vào ñ bi u
di n ñi m vào và ra c a chương trình
L trình (path) trong ðTLðK
xu t phát t ñ nh vào ñi qua các ñ nh và cung trong
ñ th và k t thúc t i ñ nh ra
21
41
ð th lu ng ñi u khi n
Ví d 1
if x <= 0 then
x := -x
else
x := 1 -x;
if x = -1 then
x=1
else
x := x+1;
writeln(x);
42
ð th lu ng ñi u khi n
Ví d 1 (2)
Có 4 l trình
• [a, b, d, f, g]
• [a, b, d, e, g]
• [a, c, d, f, g]
• [a, c, d, e, g]
22
43
ð th lu ng ñi u khi n
Ví d 1 (3)
ð th G1 có th bi u di n d ng bi u th c
chính quy:
G1 = abdfg + abdeg + acdfg + acdeg
Hay ñơn gi n:
G1 = a(bdf + bde + bdf + bde)g
G1 = a(b + c)d(e + f)g
44
ð th lu ng ñi u khi n
Bi u di n các c u trúc
C u trúc tu n t : ab
C u trúc r nhánh: b(a + d)c
C u trúc l p: ab(cb)*d
23
45
ð th lu ng ñi u khi n
Ví d 2
i := 1;
found:= false;
while (not found) do
begin
if (a[i] = E) then
begin
found:= true;
s := i;
end;
i := i + 1;
end;
G2 = ab(c(εεεε + d)eb)*f
46
ð th lu ng ñi u khi n
Bài t p 1
V ñ th lu ng ñi u khi n
Xây d ng bi u th c chính quy bi u di n ñ th
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);
24
47
ð th lu ng ñi u khi n
Bài t p 2
V ñ th lu ng ñi u khi n
Xây d ng bi u th c chính quy bi u di n ñ th
read(i);
s := 0;
while(i <= 3) do
begin
if a[i] > 0 thens := s + a[i];
i := i + 1;
end
48
Ki m th d a trên ðTLðK
Các tiêu chu n bao ph
Ph t t c các ñ nh/l nh
Ph t t c các cung
Ph t t c các quy t ñ nh
Ph t t c các ñư ng ñi
25
49
Ki m th d a trên ðTLðK
Ph t t c các ñ nh/l nh
Cho phép ph t t c các ñ nh/l nh
m i l nh ñư c th c thi ít nh t m t l n
tiêu chu n t i thi u
functionsum(x,y : integer) : integer;
begin
if (x = 0) then
sum := x
else
sum := x + y
end;
Khi th c thi l trình acd s phát hi n l i
50
Ki m th d a trên ðTLðK
Ph t t c các ñ nh/l nh
H n ch c a tiêu chu n
read(x);
…
if (x <> 0) then x := 1;
…
y := 1/x;
Ph t t c các ñ nh không phát hi n ñư c phát hi n l i
26
51
Ki 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))
then
x := 2 -a
else
x := a -2
D li u th DT1 = {a=b=1} và DT2 = {a=b=3} th a mãn ph
t t c các cung, nhưng không ph t t c các quy t ñ nh,
ch ng h n DT3 = {a=3, b=2}
52
Ki m th d a trên ðTLðK
Ph t t c các quy t ñ nh
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à
m i bi u th c con c a bi u th c ñi u ki n ñư c th
v i t t c các giá tr có th
N u (a AND b)
a = b = true
a = b = false
a = true, b = false
a = false, b = true
27
53
Ki m th d a trên ðTLðK
Ph t t c các quy t ñ nh
D li u th
DT1 = {a = b = 1}
DT2 = {a = 1, b = 0}
DT3 = {a = 3, b = 2}
DT4 = {a = b = 3}
54
Ki m th d a trên ðTLðK
Ph t t c các quy t ñ nh
H n ch
Không phát hi n l i trư ng h p không th c thi
vòng l p
read(inf, sup);
i := inf;
sum:= 0;
while(i <= sup) do
begin
sum:= sum+ a[i];
i := i + 1;
end;
writeln(1/sum);
D li u th DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3} ph
t t c các cung/quy t ñ nh, nhưng không phát hi n l i
28
55
Ki m th d a trên ðTLðK
Ph 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)
56
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}
29
57
Ki m th d a trên ðTLðK
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 ñ 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
Ki m th d a trên ðTLðK
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;
===H T===

More Related Content

Similar to ºÝºÝߣ bai giang_kiem_thu (20)

PDF
Ky thuat lap_trinh
yenthanhlll
Ìý
PDF
Ky thuat lap trinh
ptquang160492
Ìý
PDF
Ki thuat lap_trinh
Hien Nguyen
Ìý
PDF
Ki thuat lap_trinh
Vũ Anh Tuấn
Ìý
PDF
Luận án: Nghiên cứu kỹ thuật phân hạng trong tra cứu ảnh, HAY - Gửi miễn phí ...
Dịch vụ viết bài trá»n gói ZALO: 0909232620
Ìý
PDF
Chuong4-Ly thuyet mau
GIALANG
Ìý
PDF
Co so-do-luong-dien-tu
Vo Van Phuc
Ìý
PDF
Digital Image Processing with Matlab
Phong Vo
Ìý
PDF
Lấy ý kiến phản hồi từ sinh viên tá»›i giảng dạy tại ÄH Văn Lang - Gá»­i miá»…n phí...
Dịch vụ viết bài trá»n gói ZALO: 0909232620
Ìý
PDF
Bc data mining_chung
Luyl Äa Quách
Ìý
PDF
Luận án: Hoàn thiện tổ chức kiểm toán nội bộ trong doanh nghiệp xây dựng Việt...
Viết thuê trá»n gói ZALO 0934573149
Ìý
PDF
Bai tap thuc hanh nghe hay
Lịch Trần
Ìý
PPT
Bai giang spss
Nhat Nguyen
Ìý
PDF
Chuong 01 database
Hung Pham Thai
Ìý
PDF
He thong tim_kiem_thong_tin_tieng_viet
Viet Nam
Ìý
PDF
He thong tim_kiem_thong_tin_tieng_viet
Duy Vá»ng
Ìý
PDF
Luận văn: Má»™t số phương pháp rút gá»n thuá»™c tính trong bảng quyết định
Dịch Vụ Viết Thuê Khóa Luận Zalo/Telegram 0917193864
Ìý
PDF
Bai giang he thong vien thong 1
Huynh MVT
Ìý
PPT
Bài giảng thống kê (chương iii)
Há»c Huỳnh Bá
Ìý
Ky thuat lap_trinh
yenthanhlll
Ìý
Ky thuat lap trinh
ptquang160492
Ìý
Ki thuat lap_trinh
Hien Nguyen
Ìý
Ki thuat lap_trinh
Vũ Anh Tuấn
Ìý
Luận án: Nghiên cứu kỹ thuật phân hạng trong tra cứu ảnh, HAY - Gửi miễn phí ...
Dịch vụ viết bài trá»n gói ZALO: 0909232620
Ìý
Chuong4-Ly thuyet mau
GIALANG
Ìý
Co so-do-luong-dien-tu
Vo Van Phuc
Ìý
Digital Image Processing with Matlab
Phong Vo
Ìý
Lấy ý kiến phản hồi từ sinh viên tá»›i giảng dạy tại ÄH Văn Lang - Gá»­i miá»…n phí...
Dịch vụ viết bài trá»n gói ZALO: 0909232620
Ìý
Bc data mining_chung
Luyl Äa Quách
Ìý
Luận án: Hoàn thiện tổ chức kiểm toán nội bộ trong doanh nghiệp xây dựng Việt...
Viết thuê trá»n gói ZALO 0934573149
Ìý
Bai tap thuc hanh nghe hay
Lịch Trần
Ìý
Bai giang spss
Nhat Nguyen
Ìý
Chuong 01 database
Hung Pham Thai
Ìý
He thong tim_kiem_thong_tin_tieng_viet
Viet Nam
Ìý
He thong tim_kiem_thong_tin_tieng_viet
Duy Vá»ng
Ìý
Luận văn: Má»™t số phương pháp rút gá»n thuá»™c tính trong bảng quyết định
Dịch Vụ Viết Thuê Khóa Luận Zalo/Telegram 0917193864
Ìý
Bai giang he thong vien thong 1
Huynh MVT
Ìý
Bài giảng thống kê (chương iii)
Há»c Huỳnh Bá
Ìý

ºÝºÝߣ bai giang_kiem_thu

  • 1. 1 Ki m th 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 N i dung 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
  • 2. 2 3 Ki m th là gì ? IEEE: 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) 4 Ki m th là gì ? 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
  • 3. 3 5 Cá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 sai sót l i h ng hóc 6 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 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
  • 4. 4 7 Các khái ni m Ki 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 8 Các khái ni m
  • 5. 5 9 Ti n trình ki m th Ki 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 Ti n trình ki m th
  • 6. 6 11 Khó khăn c a ki m th Liê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 • m t mát thông tin V m t con ngư i thi u ñào t o ít chú tr ng vai trò ki m th V m t k thu t 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 nào 12 T i sao ki m th H p th c hóa (validation) ch ra r ng s n ph m ñáp ng ñư c yêu c u ngư i s d ng Xác minh (verification) ch ra r ng s n ph m th a mãn ñ c t yêu c u 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 ?â€
  • 7. 7 13 Ki 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) 14 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) s d ng k thu t ki m th h p ñen d li u th ñươc t o ra d a trên tài li u thi t k có th s d ng c ki m th h p tr ng và ki m th tÄ©nh • 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
  • 8. 8 15 Ki m th trong ti n trình phát tri n Ki m th tích h p (integration testing) sau khi ñã th c hi n ki m th ñơn v ghép n i các ñơn v /thành ph n ph n m m ki m th s ghép n i, trao ñ i d li u gi a các ñơn v /thành ph n s d ng k thu t ki m th h p ñen môt s trư ng h p, s d ng k thu t ki m th h p tr ng • chi phí cao, khó khăn d li u th ñư c t o ra d a trên thi t k t ng th 16 Ki m th trong ti n trình phát tri n Ki m th tích h p (2) c n xây d ng thêm • nút trám (stub): các thành ph n khác mô ph ng các thành ph n ph n m m chưa ñư c tích h p • trình ñi u khi n (driver): các thành ph n t o ra các d li u vào cho m t vài các thành ph n ph n m m trong t p h p ñang ñư c ki m th
  • 9. 9 17 Ki m th trong ti n trình phát tri n Ki m th tích h p (3) 18 Ki m th trong ti n trình phát tri n Ki m th tích h p (4) chi 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 vào các thành ph n ñư c g i tr c ti p b i các thành ph n v a ki m th • cho phép xác ñ nh s m các l i v ki n trúc • các b d li u th có th ñư c tái s d ng cho các bư c ti p theo • 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
  • 10. 10 19 Ki m th trong ti n trình phát tri n Ki m th h p th c hóa (validation testing) còn g i là ki m th h th ng (system testing) th c hi n sau khi ki m th tích h p k t thúc ch ng minh ph n m m th c hi n ñúng mong ñ i c a ngư i s d ng d a vào yêu c u ngư i s d ng ch s d ng k thu t ki m th h p ñen nên th c hi n trong môi trư ng mà ph n m m s ñư c s d ng 20 Ki m th trong ti n trình phát tri n Ki m th h i quy (regression testing) ph n m m sau khi ñưa vào s d ng, có th có các ch nh s a • có th phát sinh l i m i c n ki m th l i: ki m th h i quy thư ng tái s d ng các b d li u th ñã s d ng trong các giai ño n trư c
  • 11. 11 21 Ki m th trong mô hình V ð c t yêu c u Thi t k ki n trúc Thi t k chi ti t Mã hóa Ki m th h p th c hóa Ki m th tích h p Ki m th ñơn v 22 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)
  • 12. 12 23 Ki m th tÄ©nh Thanh tra mã ngu n (code inspection) Ch ng minh hình th c Th c thi hình th c (symbolic execution) ðánh giá ñ ph c t p McCabe Nejmeh 24 Ki m th h p ñen I e Input test data OeOutput test results System Inputs causing anomalous behaviour Outputs which reveal the presence of defects
  • 13. 13 25 Ki m th h p ñen Ch c n d a vào ñ c t chương trình Xây d ng d li u th trư c khi mã hóa/l p trình Thư ng phát hi n các l i ñ c t yêu c u, thi t k D dàng th c hi n Chi phí th p 26 Ki m th h p ñen Ki m th giá tr biên (boundary value analysis) Ki m th l p tương ñương (equivalence class testing) Ki m th ng u nhiên (random testing) ð th nhân-qu (cause-efect graph) Ki m th cú pháp
  • 14. 14 27 Ki m th giá tr biên CÆ¡ s l i thư ng xu t hi n g n các giá tr biên c a mi n dÅ© li u T 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 giá tr nh nh t giá tr g n k l n hÆ¡n giá tr nh nh t giá tr bình thư ng giá tr g n k nh hÆ¡n giá tr l n nh t giá tr l n nh t 28 Ki m th giá tr biên
  • 15. 15 29 Ki m th giá tr biên Nguyên t c ch n d li u th N u d li u vào thu c m t kho ng, ch n • 2 giá tr biên • 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 • ph n t th nh t, ph n t th hai, ph n t k cu i và ph n t cu i N u d li u vào là ñi u ki n ràng bu c s giá tr , ch n • s giá tr t i thi u, s giá tr t i ña và m t s các s giá tr không h p l T v n d ng kh năng và th c t ñ ch n các giá tr biên c n ki m th 30 Ki m th giá tr biên Ví d (1) 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ù.
  • 16. 16 31 Ki m th giá tr biên Ví d (2) D li u th 1, 1, 2 Không là tam giác 0, 0, 0 Ch m t ñi m 4, 0, 3 M t c nh b ng không 1, 2, 3.00001 G n là m t tam giác 0.001, 0.001, 0.001 Tam giác r t nh 99999, 99999, 99999 Tam giác r t l n 3.00001, 3, 3 Tam giác g n ñ u 2.99999, 3, 4 Tam giác g n cân 3, 4, 5.00001 Tam giác giác g n vuông 3, 4, 5, 6 B n giá tr 3 Ch m t giá tr D li u vào r ng -3, -3, 5 Giá tr âm 32 Ki m th l p tương ñương à tư ng phân ho ch mi n d li u vào thành các l p các d li u có quan h v i nhau m i l p dùng ñ ki m th m t ch c năng, g i là l p tương ñương
  • 17. 17 33 Ki m th l p tương ñương Ba bư c ñ i v i m i d li u vào, xác ñ nh các l p tương ñương t mi n d li u vào ch n d li u ñ i di n cho m i l p tương ñương k t h p các d li u th b i tích ð -các ñ t i ra b d li u ki m th 34 Ki m th l p tương ñương Nguyê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 • 1 l p các giá tr l n hÆ¡n • 1 l p các giá tr nh hÆ¡n • n l p các giá tr h p l N u d li u là t p h p các giá tr , xây d ng • 1 l p v i t p r ng • 1 l p quá nhi u các giá tr • n l p h p l N u d li u vào là ñi u ki n ràng bu c, xây d ng • 1 l p v i ràng bu c ñư c th a mãn • 1 l p v i ràng bu c không ñư c th a mãn
  • 18. 18 35 Ki m th l p tương ñương Ví d Bài toán tam giác Nh n Vuông Tù Thư ng 6,5,3 5,6,10 3,4,5 Cân 6,1,6 7,4,4 √2,2,√2 ð u 4,4,4 không th không th Không là tam giác -1,2,8 36 Bài t p Ki 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
  • 19. 19 37 Bà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 38 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
  • 20. 20 39 Các k thu t ki m th h p tr ng Ki m th d a trên ñ th lu ng ñi u khi n Ki m th d a trên ñ th lu ng d li u Ki m th ñ t bi n (mutation testing) 40 ð th lu ng ñi u khi n ð th lu ng ñi u khi n (Control Flow Graph - ðTLðK) là ñ th có hư ng, bi u di n m t chương trình ñ nh: bi u di n l nh tu n t hay kh i l nh cung: bi u di n các r nhánh m t ñ nh vào và m t ñ nh ra ñư c thêm vào ñ bi u di n ñi m vào và ra c a chương trình L trình (path) trong ðTLðK xu t phát t ñ nh vào ñi qua các ñ nh và cung trong ñ th và k t thúc t i ñ nh ra
  • 21. 21 41 ð th lu ng ñi u khi n Ví d 1 if x <= 0 then x := -x else x := 1 -x; if x = -1 then x=1 else x := x+1; writeln(x); 42 ð th lu ng ñi u khi n Ví d 1 (2) Có 4 l trình • [a, b, d, f, g] • [a, b, d, e, g] • [a, c, d, f, g] • [a, c, d, e, g]
  • 22. 22 43 ð th lu ng ñi u khi n Ví d 1 (3) ð th G1 có th bi u di n d ng bi u th c chính quy: G1 = abdfg + abdeg + acdfg + acdeg Hay ñơn gi n: G1 = a(bdf + bde + bdf + bde)g G1 = a(b + c)d(e + f)g 44 ð th lu ng ñi u khi n Bi u di n các c u trúc C u trúc tu n t : ab C u trúc r nhánh: b(a + d)c C u trúc l p: ab(cb)*d
  • 23. 23 45 ð th lu ng ñi u khi n Ví d 2 i := 1; found:= false; while (not found) do begin if (a[i] = E) then begin found:= true; s := i; end; i := i + 1; end; G2 = ab(c(εεεε + d)eb)*f 46 ð th lu ng ñi u khi n Bài t p 1 V ñ th lu ng ñi u khi n Xây d ng bi u th c chính quy bi u di n ñ th 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);
  • 24. 24 47 ð th lu ng ñi u khi n Bài t p 2 V ñ th lu ng ñi u khi n Xây d ng bi u th c chính quy bi u di n ñ th read(i); s := 0; while(i <= 3) do begin if a[i] > 0 thens := s + a[i]; i := i + 1; end 48 Ki m th d a trên ðTLðK Các tiêu chu n bao ph Ph t t c các ñ nh/l nh Ph t t c các cung Ph t t c các quy t ñ nh Ph t t c các ñư ng ñi
  • 25. 25 49 Ki m th d a trên ðTLðK Ph t t c các ñ nh/l nh Cho phép ph t t c các ñ nh/l nh m i l nh ñư c th c thi ít nh t m t l n tiêu chu n t i thi u functionsum(x,y : integer) : integer; begin if (x = 0) then sum := x else sum := x + y end; Khi th c thi l trình acd s phát hi n l i 50 Ki m th d a trên ðTLðK Ph t t c các ñ nh/l nh H n ch c a tiêu chu n read(x); … if (x <> 0) then x := 1; … y := 1/x; Ph t t c các ñ nh không phát hi n ñư c phát hi n l i
  • 26. 26 51 Ki 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)) then x := 2 -a else x := a -2 D li u th DT1 = {a=b=1} và DT2 = {a=b=3} th a mãn ph t t c các cung, nhưng không ph t t c các quy t ñ nh, ch ng h n DT3 = {a=3, b=2} 52 Ki m th d a trên ðTLðK Ph t t c các quy t ñ nh 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à m i bi u th c con c a bi u th c ñi u ki n ñư c th v i t t c các giá tr có th N u (a AND b) a = b = true a = b = false a = true, b = false a = false, b = true
  • 27. 27 53 Ki m th d a trên ðTLðK Ph t t c các quy t ñ nh D li u th DT1 = {a = b = 1} DT2 = {a = 1, b = 0} DT3 = {a = 3, b = 2} DT4 = {a = b = 3} 54 Ki m th d a trên ðTLðK Ph t t c các quy t ñ nh H n ch Không phát hi n l i trư ng h p không th c thi vòng l p read(inf, sup); i := inf; sum:= 0; while(i <= sup) do begin sum:= sum+ a[i]; i := i + 1; end; writeln(1/sum); D li u th DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3} ph t t c các cung/quy t ñ nh, nhưng không phát hi n l i
  • 28. 28 55 Ki m th d a trên ðTLðK Ph 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) 56 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}
  • 29. 29 57 Ki m th d a trên ðTLðK 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 ñ 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 Ki m th d a trên ðTLðK 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; ===H T===