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

pdf 29 trang hoanguyen 4230
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng 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 bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_9_kiem_thu_nguyen_thanh.pdf

Nội dung text: Bài giảng Công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình

  1. Ki m th (9) Nguy n Thanh Bình Khoa Cơng ngh Thơngtin Tr ưng ði h c Bách khoa ði h c ðà Nng Ni dung  Gi i thi u v ki m th  Ki m th trong ti n trình phát tri n  Ki m th hp đen  Ki m th hp tr ng 2 1
  2. 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 điu ki n xác đnh, quan sát ho c ghi nh n k t qu vàđưarađ á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) 3 Ki m th là gì ?  Ki m th ≠ G ri (debug)  Ki m th • nh m phát hi n l i  G ri • xác đnh b n ch t l i vàđnh v li trong ch ươ ng trình • ti n hành s a l i 4 2
  3. Các khái ni m  Mt sai sĩt (error) là mt 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  Mt li (fault, defect) xu t hi n trong ph n m m nh ư là kt qu ca m t sai sĩt  Mt hng hĩc (failure) là kt qu ca 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ơngnhưmong đi sai sĩt li hng hĩc 5 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  Kch 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á kt qu ca ki m th • tđng: chươ ng trình • th cơng : con ng ưi 6 3
  4. 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)  tp d li u th  điu ki n th c thi  kt qu mongđi 7 Các khái ni m 8 4
  5. 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 vi t t c các d li u vào là cn 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 • da 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à kt qu mongđi 9 Ti n trình ki m th 10 5
  6. Khĩkhănca ki m th  Liên quan đn ti n trình phát tri n  gm nhi u giai đon phát tri n • cái ra c a m t giai đon là cái vào c a giai đon khác • mt mát thơng tin  V mt con ng ưi  thi u đào t o  ít chú tr ng vai trị ki m th  V mt k thu t  khơng t n t i thu t tốn t ng quát cĩ th ch ng minh sđ úng đn hồn tồn c a b t k ỳ mt ch ươ ng trình nào 11 Ti sao ki m th  Hp th c hĩa (validation)  ch 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. Ki m th lp t ươ ng đươ ng  Ví d  Bài tố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
  19. 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
  20. 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
  21. ð 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
  22. ð 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
  23. ð 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
  24. ð 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 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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