Bài giảng Kiểm thử phần mềm - Chương 3: Kiểm thử hộp trắng - Nguyễn Thanh Hùng
Giới thiệu về kiểm thử hộp trắng
Các kỹ thuật kiểm thử hộp trắng:
Kiểm thử đường dẫn cơ sở
Kiểm thử điều kiện/kiểm thử nhánh
Kiểm thử vòng lặp
Kiểm thử luồng điều khiểnNhắc lại: Kiểm thử hộp đen
Kiểm thử hộp đen là kiểm thử bỏ qua
cấu trúc bên trong, chỉ quan tâm tới
Output từ Input cho trước có chính xác
không.
Phân loại:
Kiểm thử biên
Kiểm thử lớp tương tương
Bảng quyết định
Kiểm thử đoán lỗi
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiểm thử phần mềm - Chương 3: Kiểm thử hộp trắng - Nguyễn Thanh Hùng", để 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 Kiểm thử phần mềm - Chương 3: Kiểm thử hộp trắng - Nguyễn Thanh Hùng
iều khiển Lưu ý Không thể có được tất cả các test case mong muốn bằng việc áp dụng 1 kỹ thuật kiểm thử duy nhất. Trước khi áp dụng các kỹ thuật kiểm thử hộp trắng, hãy xem lại code. Nội dung Giới thiệu về kiểm thử hộp trắng Các kỹ thuật kiểm thử hộp trắng: . Kiểm thử đường dẫn cơ sở . Kiểm thử điều kiện/kiểm thử nhánh . Kiểm thử vòng lặp . Kiểm thử luồng điều khiển Kiểm thử đường cơ sở (Basis Path) Định nghĩa: Thu được các trường hợp thử nghiệm từ đường cơ sở, được xác định theo biểu đồ dòng chảy của chương trình Các bước: . 1. Xây dựng một đồ thị dòng chảy dựa trên logic của chương trình . 2. Tính toán độ phức tạp Cyclomatic của đồ thì dòng chảy . 3. Xác định đường cơ sở. . 4. Kiểm tra nếu số đường cơ sở không nhiều hơn độ phức tạp Cyclomatic. . 5. Thiết kế trường hợp thử nghiệm để kiểm tra các đường cơ sở ng ng . nh. . nh. . ch: • • 19 ng m: . n. . n, ng: . n. . c cung. 20 ng ng: Các cấu trúc điều khiển 21 nh u a một nh 22 ng 23 m: . : . ) . 11 cung . n 24 Ví dụ 2 25 nh t một lệnh). nh n hơn). 26 nh ch sau: . V(G) = E - N + 2 (= 11-9+2 = 4) . ng (= 4) . V(G) = P – 1 (= 5-1 =4) . : V(G) = 4 . 27 Quy trình xác định các đường tuyến tính độc lập c : t. i. i. a. C). 28 c nh c ca m thư 29 Ví dụ 30 Độ phức tạp Cyclomatic C nh p C = 5+1 = 6. : 11 ﰂ10 ﰂ 2 ﰂ 1 .1 11 ﰂ10 ﰂ3 ﰂ 2 ﰂ1 .2 12 ﰂ10 ﰂ 2 ﰂ1 .3 9 ﰂ8 ﰂ5 ﰂ4 ﰂ3 ﰂ 2 ﰂ1 .4 9 ﰂ8 ﰂ6 ﰂ5 ﰂ4 ﰂ3 ﰂ 2 ﰂ1 .5 9 ﰂ8 ﰂ7 ﰂ6 ﰂ5 ﰂ4 ﰂ3 ﰂ 2 ﰂ1 .6 31 Thiết kế các test-cases ng 1: - - a k ng 4 hay 5 hay 6. ng 2: ﰂ i - p lệ. (2) tcnt = 100. (3) vcnt = 100 ng 3: - ng : (1) average = -999. (2) tcnt = 0 (3) vcnt = 0 32 Thiết kế các test-cases ng 4: i -999 i k < i p lệ) ng 5: i <= 100 ﰂ i - i k <= i p lệ) ng 6: ﰂ i - i<=100 33 p lệ. (2) tcnt3 )= vcnt 100 .= ( 100 Ví dụ Xét ví dụ về tam giác: 1. program triangle (input, output); 2. VAR a,b,c: integer; 3. IsATriangle: boolean; 4. BEGIN 5. writeln(“Enter integers: “); 6. readln(a,b,c); 7. Writeln(“Side A is: “, a, “Side B is: “, b, “Side C is: “, c); 8. IF(a <b+c) AND (b < a+c) AND (c<a+b) THEN 9. IsATriangle = True; 10. ELSE IsATriangle = False; 11. IF IsATriangle) 12. THEN 13. BEGIN 14. IF (a=b) XOR (a=c) XOR (b=c) AND NOT((a=b) AND (a=c) 15. THEN writeln(“Equilateral”); 16. IF (a=b) AND (b=c) 17. THEN writeln(“Equilateral”); 18. IF(a b) AND (a c) AND (ac) 19. THEN writeln(“Scalene”); 20. END 21. ELSE Writeln(“Not a Triangle”); 22. END Ví dụ Thiết kế trường hợp kiểm thử cho kiểm thử đường cơ sở 35 Ví dụ 36 Đồ thị dòng chảy 37 Độ phức tạp “Cyclomatic” Số vùng khép kín bao gồm cả các hình tứ giác = 4 +1 Số lượng nhị phân +1 = 4+1=5 Số cạnh – số nút + 2 = 15-12+2=5 Đường cơ sở và các trường hợp kiểm thử (1) 1. 12-15->16->17->21->22->24->26-27->30 Trường hợp kiểm thử: Input = (68,68,56) Kết quả dự kiến: tam giác cân 2. 12-15->16->17->21->22->24->25->30 Trường hợp kiểm thử: Input = (68,60,56) Kết quả dự kiến: tam giác không cân Đường cơ sở và các trường hợp kiểm thử (2) 3. 12-15->16->17->21->22->23->30 Trường hợp kiểm thử: Input = (68,68,68) Kết quả dự kiến: tam giác đều 4. 12-15->16->18->20->21->28-29->30 Trường hợp kiểm thử: Input = (68,8,56) Kết quả dự kiến: không phải là tam giác binarySearch() Example Bài tập - BinarySearch public int binarySearch(int sortedArray[ ], int searchValue) { int bottom = 0; int top = sortedArray.length - 1; int middle, locationOfsearchValue; 2 boolean found = flase; 1 locationOfsearchValue = -1; /* the location of searchValue in the sortedArray */ /* location = -1 means that searchValue is not found */ while ( bottom <= top && !found) { 3 middle = (top + bottom)/2; 4 if (searchValue == sortedArray[ middle ]) { 5 found = true; locationOfsearchValue = middle; } 6 else if (searchValue < sortedArray[ middle ]) top = middle - 1; else 7 8 bottom = middle + 1; } // end while 9 10 return locationOfsearchValue; } 41 25 The CFG of Function binarySearch() 1 2 3 4 6 5 8 7 9 10 26 13 binarySearch() Example public int binarySearch(int sortedArray[ ], int searchValue) { int bottom = 0; int top = sortedArray.length - 1; int middle, locationOfsearchValue; 2 boolean found = flase; 1 locationOfsearchValue = -1; /* the location of searchValue in the sortedArray */ /* location = -1 means that searchValue is not found */ while ( bottom <= top && !found) { 3 middle = (top + bottom)/2; 4 if (searchValue == sortedArray[ middle ]) { 5 found = true; locationOfsearchValue = middle; } 6 else if (searchValue < sortedArray[ middle ]) top = middle - 1; else 7 8 bottom = middle + 1; } // end while 9 10 return locationOfsearchValue; } 25 Bài tập – BinarySearch - CFG The CFG of Function binarySearch() 1 2 3 4 6 5 8 7 9 10 26 42 13 Cyclomatic Complexity • Three ways to compute cyclomatic complexity: – The number of regions of the flow graph correspond to the cyclomatic complexity. – Cyclomatic complexity, V(G), for a flow graph G is defined as V(G) = E - N + 2 (13-10+2=5) where E is the number of flow graph edges and N is the number of flow graph nodes. – Cyclomatic complexity, V(G) = P + 1 where P is the number of predicate nodes contained in the flow graph G. 29 CyclomatBàiic tậpCo –mBinarySearchplexity o f– FĐộu nphứccti otạpn binarySearch() 1 predicate nodes 2 3 R3 4 R1 regions 6 R2 5 8 R5 R4 7 9 V(G) = 5 regions 10 V(G) = 13(edges) – 10(nodes) +2 = 5 V(G) = 4(predicate nodes)30 + 1 = 5 43 15 Cyclomatic Complexity • Three ways to compute cyclomatic complexity: – The number of regions of the flow graph correspond to the cyclomatic complexity. – Cyclomatic complexity, V(G), for a flow graph G is defined as V(G) = E - N + 2 (13-10+2=5) where E is the number of flow graph edges and N is the number of flow graph nodes. – Cyclomatic complexity, V(G) = P + 1 where P is the number of predicate nodes contained in the flow graph G. 29 CyclomatBàiic tậpCo –mBinarySearchplexity o f– FĐườngunct icơo nsở binarySearch() 1 predicate nodes 2 3 R3 4 R1 regions 6 R2 5 8 R5 R4 7 9 Path 1: 1-2-10 Path 2: 1-2-3-10 10 Path 3: 1-2-3-4-5-9-2- ... Path 4: 1-2-3-4-6-7-9-230-... Path 5: 1-2-3-4-6-8-9-2-... 44 15 Bài tập – BinarySearch – Test-cases Path 1 test case: . Inputs: sortedArray = { }, searchValue = 2 . Expected results: locationOfSearchValue = -1 Path 2 test case: cannot be tested stand-alone! . Inputs: sortedArray = {2, 4, 6}, searchValue = 8 . Expected results: locationOfSearchValue = -1 Path 3 test case: . Inputs: sortedArray={2,4,6,8,10},searchValue = 6 . Expected results: locationOfSearchValue = 2 • Path 4 test case: . Inputs: sortedArray = {2, 4, 6, 8, 10}, searchValue = 4 . Expected results: locationOfSearchValue = 1 • Path 5 test case: . Inputs: sortedArray = {2, 4, 6, 8, 10}, searchValue = 10 . Expected results: locationOfSearchValue = 4 45 Kỹ thuật ma trận kiểm thử ng: . t . t cột. t 46 Ví dụ ma trận kiểm thử 47 Ví dụ ma trận kiểm thử 2 – 1 = 1 2 – 1 = 1 1 – 1 = 0 2 – 1 = 1 1 – 1 = 0 1 – 1 = 0 1 – 1 = 0 V(G) = 3 + 1 = 4 48 Nội dung Giới thiệu về kiểm thử hộp trắng Các kỹ thuật kiểm thử hộp trắng: . Kiểm thử đường dẫn cơ sở . Kiểm thử điều kiện/kiểm thử nhánh . Kiểm thử vòng lặp . Kiểm thử luồng điều khiển Kiểm thử điền kiện Kiểm thử điều kiện . Phương pháp thiết kế test-case để kiểm tra các điều kiện logic Điều kiện logic . u kiện đơn nh): X . u kiện đơn c nh: , ≥ hay ≠ c p nh (┘) D = X1 & X2 &...Xn Xi bool Nếu một điều kiện sai, ít nhất một thành phần trong điều kiện sai 50 u kiện lôgic Sai biến Bool Sai toán tử Bool Sai số hạng trong biểu thức toán tử Bool Sai toán tử quan hệ Sai biểu thức số học 51 nh u kiện nh. u kiện t hiện nh liên quan. nh nh “true” “false” n. 52 n n cho c a. i, song c hiện! c nh n (quan hệ) ? 53 BRO BRO quan hệ (branch and relational operation) . ng “ n thư” n chung. . : D=X1&X2&...Xn, Xi bool a Xi nh?. 54 – o ng buộc Xi u kiện D , u kiện đơn Xi trong ng. : Khi cho c i Xi n để a D 55 – ng buộc i n Bool B t (true) hoặc f (false). c quan hệ (AΘB quan hệ: >, <, =, # c). 56 – ng buộc 1 u kiện C = A ∩ B n Bool u ra a f. ng buộc a C. . i C=t . i C=f 57 – ng buộc u kiện C=(B=E) “=“ “” i f c cặp (t,t), (t,f) (f,t) i “=“ i “” : (f,=) quan hệ trong C 58 – ng buộc u kiện c quan hệ (A>B) (E=F) ng buộc (f,t) : (>,=); (>,,>); (=,=) (<,=). quan hệ trong C. 59 Nội dung Giới thiệu về kiểm thử hộp trắng Kiểm thử đường dẫn cơ sở Kiểm thử điều kiện/kiểm thử nhánh Kiểm thử vòng lặp Kiểm thử luồng điều khiển Kiểm thử vòng lặp Định nghĩa: Tập trung vào hiệu lực của các cấu trúc vòng lặp, đặc biệt là các biến thể vòng lặp. Bốn kiểu vòng lặp: . 1. Simple loop: một vòng lặp đơn . 2. Nested loops: một vòng lặp trong vòng lặp khác . 3. Concatenated loops: một vòng lặp sau vòng lặp khác . 4. Unstructured loops: các vòng lặp được nối vòng và lồng nhau phức tạp 61 Kiểm thử vòng lặp Simple Loop Nested Loops Concatenated Loops Unstructured Loops 62 Kiểm thử các vòng lặp đơn Với n là số vòng lặp tối đa cho phép, các trường hợp kiểm tra bao gồm: 1. hoàn toàn bỏ qua vòng lặp 2. qua một vòng lặp 3. qua hai vòng lặp 4. qua m vòng lặp với m < n 5. qua (n-1), n, và (n+1) vòng lặp 63 Kiểm thử vòng lặp lồng nhau 1. Bắt đầu vòng lặp trong cùng. Đặt tất cả các vòng ngoài với các giá trị tham số tối thiểu cho sự lặp lại của chúng. 2. Kiểm tra các giá trị tối thiểu, điển hình, tối đa cho vòng lặp trong cùng, trong khi giữ các vòng lặp ngoài tại các giá Nested trị tối thiểu của chúng. Loops 3. Di chuyển ra khỏi một vòng lặp và thiết lập nó như trong bước 2, giữ tất cả các vòng lặp bên trong những giá trị tiêu biểu. Tiếp tục bước này cho đến khi vòng lặp ngoài cùng đã được64 thử nghiệm. Kiểm thử vòng lặp ghép nối Nếu mỗi vòng lặp là độc lập với các vòng lặp khác thì kiểm tra chúng như các vòng lặp đơn giản. Nếu hai vòng được nối tiếp, vòng lặp 1 được dùng như là giá Concaten ated trị ban đầu cho vòng lặp 2 thì Loops kiểm tra chúng như các vòng lặp lồng nhau. 65 Nội dung Giới thiệu về kiểm thử hộp trắng Kiểm thử đường dẫn cơ sở Kiểm thử điều kiện/kiểm thử nhánh Kiểm thử vòng lặp Kiểm thử luồng điều khiển Tiêu chuẩn bao phủ Đôi khi còn được gọi là tiêu chuẩn kiểm thử phần mềm hoặc tiêu chuẩn kiểm thử dữ liệu đầy đủ có thể được sử dụng như: . Quy tắc dừng để xác định tính đầy đủ. . Kiểm tra đo chất lượng khi mức độ an toàn có liên quan với mỗi tập kiểm tra. . Lựa chọn dữ liệu kiểm thử. Bộ kiểm tra được coi là tương đương nếu đáp ứng các tiêu chí tương tự. Tiêu chuẩn kiểm thử hộp trắng • Tiêu chuẩn có xem xét đến cấu trúc bên trong của chương trình có thể được chia thành. 1. Tiêu chuẩn luồng điều khiển. 2. Tiêu chuẩn luồng dữ liệu. 67 Tiêu chuẩn luồng điều khiển Tiêu chuẩn luồng điều khiển . Kiểm tra các biểu thức logic trong đó xác định các nhánh và cấu trúc vòng lặp của chương trình. . Được sử dụng chủ yếu trong các ngành công nghiệp. . Các tiêu chí phổ biến nhất bao gồm: • 1. Bao phủ câu lệnh • 2. Bao phủ quyết định • 3. Bao phủ điều kiện • 4. Bao phủ quyết định / điều kiện • 5. Bao phủ đa điều kiện 68 Thứ tự tiêu chuẩn luồng điều khiển Định nghĩa . Nếu tất cả các tập kiểm tra thỏa mãn A cũng đáp ứng B thì ta nói tiêu chuẩn A mạnh hơn tiêu chuẩn B Thứ tự các tiêu chuẩn . Phạm vi tiêu chuẩn bao phủ là yếu nhất. . Điều kiện tiêu chuẩn bao phủ là mạnh nhất. . Trình tự giữa cả hai là quyết định phạm vi bao phủ, điều kiện bao phủ và quyết định phạm vi / điều khiện bao phủ. 69 Bao phủ câu lệnh Code1: . Định Nghĩa: if ((A > 1) && (B == 0)) • Mỗi câu lệnh trong chương X = X/A; trình được thực hiện ít nhất if ((A == 2) || (X > 1)) một lần. X=X+1; . Ví dụ: • Để thoả mãn bao phủ câu Code2: lệnh đáp ứng đoạn Code 1, một if ((A > 1) || (B == 0)) trường hợp kiểm thử có thể: X = X/A; A = 2 B= 0 X = 3 if ((A == 2) || (X > 1)) X=X+1; • Như đã thấy, tất cả các câu lệnh đều được thực thi. • Nhưng điều gì sẽ xảy ra nếu code sai như trong Code 2? 70 Bao phủ điều kiện (1) . Định Nghĩa: Code1: if ((A > 1) && (B == 0)) • Mỗi câu lệnh trong chương X = X/A; trình được thực hiện ít nhất if ((A == 2) || (X > 1)) một lần và mỗi điều kiện có X=X+1; thể xảy ra ít nhất một lần. • Một quyết định là một biểu thức Boolean bao gồm một hoặc nhiều điều kiện kết hợp bởi các từ nối hợp lí, chẳng hạn như “AND”, “OR” và “NOT”. 71 Bao phủ điều kiện (2) . Ví dụ: • Để thoả mãn bao phủ điều Code1: kiện đáp ứng đoạn code 1, if ((A > 1) && (B == 0)) một trường hợp kiểm thử có X = X/A; thể: if ((A == 2) || (X > 1)) A = 2 B= 0 X = 2 X=X+1; A = 1 B= 0 X = 1 Code2: • Như đã thấy, tất cả các if ((A > 1) && (B >= 0)) câu lệnh đều được thực thi. X = X/A; if ((A == 2) || (X > 1)) • Nhưng điều gì sẽ xảy ra X=X+1; nếu code sai trong ví dụ 2? 72 Áp dụng kỹ thuật kiểm thử hộp trắng Dưới đây là một phương thức của một lớp nào đó, hãy áp dụng kiểm thử hộp trắng để lấy được trường hợp kiểm thử của nó 73 Trả lời Để áp dụng kiểm thử hộp trắng để lấy được các trường hợp kiểm thử của nó, có thể làm như sau: . Bước 1: Rút ra các trường hợp kiểm thử từ kiểm thử đường dẫn cơ sở. . Bước 2: Rút ra các trường hợp kiểm thử từ các kiểm thử rẽ nhánh. . Bước 3: Rút ra các trường hợp kiểm thử từ kiểm thử vòng lặp. . Bước 4: Cuối cùng nên thiết lập kiểm thử kết hợp tất cả các bước trên. . Bước 5: Bổ xung các trường hợp kiểm thử đặc biệt theo tính năng của chương trình. 74 Tóm tắt Kĩ thuật kiểm thử hộp trắng có thể kiểm tra logic của chương trình dựa trên cấu trúc của nó. Kĩ thuật kiểm thử hộp trắng bao gồm thử nghiệm đường dẫn cơ sở, kiểm tra rẽ nhánh và kiểm thử vòng lặp. Tiêu chuẩn bao phủ có thể được sử dụng như quy tắc dừng và kiểm tra dữ liệu. Tiêu chuẩn luồng điểu khiển được áp dụng trong các ngành công nghiệp bao gồm bao phủ câu lệnh, bao phủ điều kiện, bao phủ quyết định / điều kiện và bao phủ đa điều kiện. 75 THE END 76
File đính kèm:
- bai_giang_kiem_thu_phan_mem_chuong_3_kiem_thu_hop_trang_nguy.pdf