Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình

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)

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 1

Trang 1

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 2

Trang 2

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 3

Trang 3

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 4

Trang 4

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 5

Trang 5

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 6

Trang 6

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 7

Trang 7

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 8

Trang 8

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 9

Trang 9

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 29 trang xuanhieu 3120
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình

Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình
 ra r ng s n ph m ñáp ng ñưc yêu c u ng ưi 
 s dng
 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 ?”
12
 6
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  hp ñen (black-box testing)
 • k thu t ki m th  ch c n ăng (functional testing)
 • ki m th  hp tr ng (white-box testing)
 • k thu t ki m th  cu trúc (structural testing)
 Các ho t ñng ki m th /chi n l ưc ki m th 
  ki m th ñơnv (unit testing)
  ki m th  tích h p (integration testing)
  ki m th  hp th c hóa (validation testing)
  ki m th  hi quy (regression testing)
13
Ki m th  trong ti n trình 
phát tri n
 Ki m th ñơnv (unit testing)
  ki m th  mi ñơ n v  ph n m m (mô-ñun)
  s dng k  thu t ki m th  hp ñen
  d li u th ñươcto ra d a trên tài li u thi t 
 k
  có th  s dng c  ki m th  hp 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
14
 7
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 ñơnv
  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 dng k  thu t ki m th  hp ñen
  môt s trưng h p, s  dng k  thu t ki m 
 th  hp tr ng
 • chi phí cao, khókhăn
  d li u th ñưc t o ra d a trên thi t k 
 tng th 
15
Ki m th  trong ti n trình 
phát tri n
 Ki m th  tích h p (2)
  cn 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 ñiu khi n (driver): các thành ph n 
 to 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 
16
 8
Ki m th  trong ti n trình 
phát tri n
 Ki m th  tích h p (3)
17
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  dng 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 tdư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  dng các nút trám
 • nh ưng l i xác ñnh l i tr hơn
18
 9
Ki m th  trong ti n trình 
phát tri n
 Ki m th  hp 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  dng
  da vào yêu c u ng ưi s  dng
  ch  s dng k  thu t ki m th  hp ñen
  nên th c hi n trong môi tr ưng mà ph n 
 mm s ñưc s  dng
19
Ki m th  trong ti n trình 
phát tri n
 Ki m th  hi quy (regression testing)
  ph n m m sau khi ñư a vào s  dng, có th 
 có các ch nh s a
 • có th  phát sinh l i m i
  cn ki m th  li: ki m th  hi quy
  th ưng tái s  dng các b  d li u th ñãs
 dng trong các giai ñon tr ưc
20
 10
 Ki m th  trong mô hình V
ðc t  yêu c u Ki m th  hp th c hóa
 Thi t k  ki n trúc Ki m th  tích h p
 Thi t k  chi ti t Ki m th ñơnv
 Mã hóa
 21
 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  hp ñen (black-box testing)
 • k thu t ki m th  ch c n ăng (functional 
 testing)
 • ki m th  hp tr ng (white-box testing)
 • k thu t ki m th  cu trúc (structural testing)
 22
 11
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
23
Ki m th  hp ñen
 Inputs causing
 anomalous
 Input test data I behaviour
 e
 System
 Outputs which reveal
 the presence of
 Output test results Oe defects
24
 12
Ki m th  hp ñen
 Ch  cn d a vào ñc t chươngtr ì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
25
Ki m th  hp ñen
 Ki m th  giá tr  biên (boundary value 
 analysis)
 Ki m th  lp 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
26
 13
Ki m th  giá tr  biên
 Cơ s 
  li th ưng xu t hi n g n các giá tr  biên c a mi n d ũ
 li u
 Tp 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  gn k  ln h ơn giá tr  nh  nh t
  giá tr  bình th ưng
  giá tr  gn k  nh hơngi á tr  ln nh t
  giá tr  ln nh t
27
Ki m th  giá tr  biên
28
 14
Ki m th  giá tr  biên
 Nguyên t c ch n d  li u th 
  Nu 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
  Nu 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
  Nu d  li u vào là ñiu ki n ràng bu c s  giá tr , ch n
 • s giá tr  ti thi u, s  giá tr  ti ña và mt s  các s  giá tr 
 không h p l 
  T vn d ng kh năngv à th c t ñ ch n các giá tr  biên 
 cn ki m th 
29
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ù.
30
 15
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  mt ñim
 4, 0, 3 Mt c nh b ng không
 1, 2, 3.00001 Gn là mt 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 Bn giá tr 
 3 Ch  mt giá tr 
 D li u vào r ng
 -3, -3, 5 Giá tr  âm
31
Ki m th  lp 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 
 vi nhau
  mi l p dùng ñ
 ki m th  mt 
 ch c n ăng, g i là
 lp t ươ ng ñươ ng
32
 16
Ki m th  lp 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
  kt h p các d  li u th  bi tích ð-các ñ
 ti ra b  d li u ki m th 
33
Ki m th  lp t ươ ng ñươ ng
 Nguyên t c phân ho ch các l p t ươ ng ñươ ng
  Nu d li u vào thu c m t kho ng , xây d ng
 • 1 l p các giá tr  ln h ơn
 • 1 l p các giá tr  nh hơn
 • n l p các giá tr  hp l 
  Nu d li u là tp 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 
  Nu d  li u vào là ñiu 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
34
 17
Ki m th  lp 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
35
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àñim c a sinh viên trong m t n ăm h c. 
 Tp 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àñim 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 ñim trung bình chung (theo gi i tính et theo môn 
 hc)
 • tính s  sinh viên lên l p (ñim trung bình trên 5)
  Xây d ng d  li u th chochươngtr ình trên b i ki m 
 th  giá tr  biên
36
 18
Bài t p
 Ki m th  lp 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: “Lnh FOR ch  ch p 
 nh n mt tham s  duy nh t là bi n ñm. Tên bi n 
 không ñưc s  dng quá hai ký t  khác r ng. Sau ký 
 hi u = là cn d ưi và cn trên c a bi n ñm. Các c n 
 trên và cn d ưi là các s nguyêndươngv àñư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  lp t ươ ng ñươ ng
37
Ki m th  hp tr ng
 Da 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
38
 19
Các k  thu t ki m th  hp 
tr ng
 Ki m th  da trên ñ th  lu ng ñiu khi n
 Ki m th  da trên ñ th  lu ng d  li u
 Ki m th ñt bi n (mutation testing)
39
ð th  lu ng ñiu khi n
 ð th  lu ng ñiu 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
  mt ñnh vào và mt ñnh ra ñưc thêm vào ñ bi u 
 di n ñim 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àcungtrong
 ñ th  và kt thúc t i ñnh ra
40
 20
ð th  lu ng ñiu 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);
41
ð th  lu ng ñiu 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]
42
 21
ð th  lu ng ñiu 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
43
ð th  lu ng ñiu khi n
 Bi u di n các c u trúc
 Cu trúc tu n t : ab
 Cu trúc r  nhánh: b(a + d)c
 Cu trúc l p: ab(cb)*d
44
 22
ð th  lu ng ñiu 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
45
ð th  lu ng ñiu khi n
 Bài t p 1
  Vñ th  lu ng ñiu 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);
46
 23
ð th  lu ng ñiu khi n
 Bài t p 2
  Vñ th  lu ng ñiu 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
47
Ki m th  da trên ðTL ðK
 Các tiêu chu n bao ph 
  Ph  tt c  các ñnh/l nh
  Ph  tt c  các cung
  Ph  tt c  các quy t ñnh
  Ph  tt c  các ñưng ñi
48
 24
 Ki m th  da trên ðTL ðK
 Ph  tt c  các ñnh/l nh
  Cho phép ph  tt c  các ñnh/l nh
  mi 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
 49
 Ki m th  da trên ðTL ðK
 Ph  tt c  các ñnh/l nh
  Hn ch  ca tiêu chu n
 read(x);
 if (x 0) then x := 1;
 y := 1/x;
 Ph  tt c  các ñnh không phát hi n ñưc phát hi n l i
 50
 25
Ki m th  da trên ðTL ðK
Ph  tt c  các cung
 Ph  tt c  các cung ít nh t m t l n
  ph  tt các giá tr ñ úng sai c a m t bi u th c lô-gíc
  ph  tt c  các cung kéo theo ph  tt 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 
 tt c  các cung, nhưngkhôngph tt c  các quy t ñnh, 
51 ch ng h n DT3 = {a=3, b=2}
Ki m th  da trên ðTL ðK
Ph  tt c  các quy t ñnh
 Ph  tt c  các quy t ñnh ñưc th a mãn khi:
  tiêu chu n ph  tt c  các cung ñưc th a mãn và
  mi bi u th c con c a bi u th c ñiu ki n ñưc th 
 vi t t c  các giá tr  có th 
 Nu (a AND b)
  a = b = true
  a = b = false
  a = true, b = false
  a = false, b = true
52
 26
 Ki m th  da trên ðTL ðK
 Ph  tt 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}
 53
 Ki m th  da trên ðTL ðK
 Ph  tt c  các quy t ñnh
  Hn 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 
 54 tt c  các cung/quy t ñnh, nhưng không phát hi n l i
 27
Ki m th  da trên ðTL ðK
Ph  tt c  các l  trình
 Mi l  trình ph i ñưc th c thi ít nh t m t 
 ln
 Gp khókhănkhis ln l p vô h n
  Ch  th c hi n m t s  ln 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  lp n l n (ch ng h n n = 1)
55
Ki m th  da trên ðTL ðK
Ph  tt 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}
56
 28
Ki m th  da 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  tt c  các ñnh
  ph  tt c  các cung
  ph  tt 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);
57
Ki m th  da 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 
 tt 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;
58 end;
 29

File đính kèm:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_chuong_9_kiem_thu_nguy.pdf