Luận văn Kĩ thuật ma trận đồ thị trong phương pháp kiểm thử hộp trắng

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG ––––––––––––––––––––––––– NGUYỄN THỊ HỒNG THUỶ KỸ THUẬT MA TRẬN ĐỒ THỊ TRONG PHƯƠNG PHÁP KIỂM THỬ HỘP TRẮNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái nguyên – 2020 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG ––––––––––––––––––––––––– NGUYỄN THỊ HỒNG THUỶ KỸ THUẬT MA TRẬN ĐỒ THỊ TRONG PHƯƠNG PHÁP KIỂM THỬ HỘP TRẮNG Chuyên ngành: Khoa học máy tính Mã số : 848 01 0

pdf80 trang | Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 241 | Lượt tải: 0download
Tóm tắt tài liệu Luận văn Kĩ thuật ma trận đồ thị trong phương pháp kiểm thử hộp trắng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS. Lê Văn Phùng Thái nguyên – 2020 i LỜI CAM ĐOAN Tôi xin cam đoan toàn bộ nội dung luận văn này là do tôi tự sưu tầm, tra cứu thông tin trên mạng Internet, trong một số sách tham khảo để sắp xếp, hoàn thiện cho phù hợp với nội dung yêu cầu của đề tài. Đến nay, nội dung luận văn của tôi chưa từng được công bố hay xuất bản dưới bất kỳ hình thức nào. Nếu sai tôi xin chịu hoàn toàn trách nhiệm. Ngày ... tháng ... năm 2020 Tác giả Nguyễn Thị Hồng Thuỷ ii LỜI CẢM ƠN Trong suốt quá trình học tập và thực hiện đề tài, em đã nhận được sự giúp đỡ tận tình và những chỉ bảo ân cần của các Thầy cô trong viện Công nghệ thông tin – Viện khoa học và công nghệ Việt nam, các Thầy cô trong trường đại học Công nghệ Thông tin và Truyền thông, cùng các bạn bè đồng nghiệp. Đặc biệt là sự giúp đỡ của TS Lê Văn Phùng, người thầy trực tiếp hướng dẫn, định hướng, chỉnh sửa các kiến thức chuyên môn và tận tình giúp đỡ em trong suốt quá trình nghiên cứu và thực hiện luận văn. Qua đây cho phép em được bày tỏ lời cảm ơn tới tất cả các thầy cô giáo ở Viện Công nghệ thông tin và Trường Đại học Công nghệ Thông tin và Truyền thông, đã giảng dạy và tạo mọi điều kiện thuận lợi giúp đỡ chúng em trong quá trình học tập, nghiên cứu. Cuối cùng, tôi xin cảm ơn đến gia đình, các bạn bè đồng nghiệp đã chia sẻ động viên giúp đỡ tôi về chuyên môn cũng như về mọi mặt trong cuộc sống, đó là nguồn động viên khích lệ giúp tôi có nghị lực hơn để hoàn thành khoá học. Học viên Nguyễn Thị Hồng Thuỷ iii MỤC LỤC Trang LỜI CAM ĐOAN .................................................................................... i LỜI CẢM ƠN ......................................................................................... ii MỤC LỤC .............................................................................................. iii DANH MỤC CÁC KÝ HIỆU/VIẾT TẮT ............................................ vi DANH MỤC CÁC HÌNH ..................................................................... vii DANH MỤC CÁC BẢNG................................................................... viii PHẦN MỞ ĐẦU ..................................................................................... 1 1. Lý do chọn đề tài ................................................................................. 1 2. Đối tượng và phạm vi nghiên cứu ....................................................... 1 3. Mục tiêu và nhiệm vụ nghiên cứu ....................................................... 2 4. Phương pháp nghiên cứu ..................................................................... 2 5. Ý nghĩa khoa học của đề tài ................................................................ 2 6. Bố cục của luận văn: ........................................................................... 2 CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ HỘP TRẮNG .................................................................................. 3 1.1. Kiểm thử phần mềm ......................................................................... 3 1.1.1. Quan niệm về kiểm thử phần mềm ............................................. 3 1.1.2. Chiến lược kiểm thử phần mềm .................................................. 3 1.1.3. Các mức kiểm thử [9].................................................................. 4 1.1.4. Sơ lược về các phương pháp kiểm thử ........................................ 5 iv 1.2.1. Ý tưởng của kiểm thử hộp trắng ................................................. 6 1.2.2. Mô tả một số cấu trúc theo lược đồ ............................................. 7 1.2.3. Một số hướng chính về kiểm thử hộp trắng ................................ 8 CHƯƠNG 2 MỘT SỐ KỸ THUẬT HIỆU QUẢ TRONG PHƯƠNG PHÁP KIỂM THỬ HỘP TRẮNG VÀ CA KIỂM THỬ16 2.1. Một số kỹ thuật chính trong phương pháp kiểm thử hộp trắng ..... 16 Có thể tổng hợp một số kỹ thuật hiệu quả trong phương pháp kiểm thử hộp trắng như sau: ................................................................................. 16 2.1.1. Kỹ thuật kiểm thử dòng điều khiển ............................................. 16 2.1.2. Kỹ thuật kiểm thử dòng dữ liệu .................................................. 18 2.1.3. Kỹ thuật kiểm thử BRO .............................................................. 19 2.1.4. Kỹ thuật kiểm thử đột biến.......................................................... 20 2.2. Ca kiểm thử .................................................................................... 22 2.2.1.Một số quan niệm về ca kiểm thử ................................................ 22 2.2.2.Nội dung thiết kế ca kiểm thử ...................................................... 22 2.2.3. Một số phương pháp chính để thiết kế ca kiểm thử .................... 23 2.3. Kỹ thuật ma trận đồ thị cho thiết kế ca kiểm thử ........................... 27 2.3.1. Ý tưởng và nội dung kỹ thuật ma trận đồ thị [8] ........................ 27 2.3.2. Quy trình kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị ...... 36 CHƯƠNG 3 CHƯƠNG TRÌNH THỬ NGHIỆM KIỂM THỬ PHẦN MỀM BẰNG KỸ THUẬT MA TRẬN ĐỒ THỊ .................. 38 3.1. Chọn mô-đun phần mềm thử nghiệm ............................................ 38 3.2. Thiết kế ca kiểm thử và kiểm thử mô-đun phần mềm .................. 39 v 3.2.1. Quy trình thiết kế ........................................................................ 39 3.2.2. Nội dung thiết kế ......................................................................... 39 3.3 Một số giao diện chính của chương trình ........................................ 49 3.3.1. Giao diện thiết kế ca kiểm thử theo kỹ thuật ma trận đồ thị ....... 49 3.3.2. Quá trình test với Mô-đun 1 ........................................................ 54 3.3.3. Quá trình test với Mô-đun 2 ........................................................ 57 3.3.4. Quá trình test với Mô-đun 3 ........................................................ 60 3.3.5. Quá trình test với Mô-đun 4 ........................................................ 62 3.3.6. Kiểm thử vòng lặp While ............................................................ 63 3.4. Đánh giá và so sánh kỹ thuật ma trận đồ thị với một số kỹ thuật thiết kế ca kiểm thử khác ............................................................................... 64 3.5. Đánh giá kết quả thử nghiệm và hướng mở rộng .......................... 66 KẾT LUẬN VÀ KIẾN NGHỊ............................................................... 67 1.Kết luận .............................................................................................. 67 2. Kiến nghị ........................................................................................... 68 TÀI LIỆU THAM KHẢO ..................................................................... 69 iv vi DANH MỤC CÁC KÝ HIỆU/VIẾT TẮT BRO: Kiểm thử nhánh và toán tử quan hệ CNTT: Công nghệ thông tin CSDL: Cơ sở dữ liệu E: Số cạnh của đồ thị N: Số đỉnh của đồ thị P: Số đỉnh điều kiện có trong đồ thị V(G): Độ phức tạp của chu trình v vii DANH MỤC CÁC HÌNH Hình 1.1. Mô hình chiến lược kiểm thử tổng thể ...................................... 5 Hình 1.2. Một số cấu trúc lập trình ........................................................... 8 Hình 1.3. Sơ đồ điều khiển chương trình .................................................. 9 Hình 1.4. Đồ thị của chương trình .......................................................... 10 Hình 1.5. Minh hoạ về độ phức tạp của câu lệnh.................................... 10 Hình 1.6. Minh hoạ về các bước kiểm tra ............................................... 11 Hình1.7. Lược đồ kiểm thử theo đường dẫn ........................................... 12 Hình1.8. Lược đồ kiểm thử đường dẫn theo biểu thức điều kiện ........... 13 Hình 1.9.Các kiểu vòng lặp ..................................................................... 14 Hình 2.1: Các thành phần cơ bản của đồ thị chương trình. .................... 17 Hình 2.2: Các cấu trúc điều khiển phổ biến của chương trình................ 17 Hình 2.3: Mã nguồn của hàm foo và đồ thị dòng điều khiển của nó. ..... 18 Hình 2.4: Sơ đồ điều khiển của chương trình ......................................... 30 Hình 2.5: Sơ đồ luồng điều khiển .......................................................... 30 Hình 2.6 : Đồ thị dòng dùng để xác định ma trận kiểm thử ................... 31 Hình 2.7: Độ phức tạp chu trình được xác định từ số miền phẳng trong đồ thị dòng ............................................................................................... 32 Hình 2.8 : Đồ thị dòng dùng để xác định ma trận kiểm thử ................... 33 Hình 3.1. Sơ đồ điều khiển của chương trình ......................................... 40 Hình 3.2. Sơ đồ luồng điều khiển ........................................................... 41 Hình 3.3. Đồ thị dòng .............................................................................. 42 Hình 3.4. Độ phức tạp của chu trình ....................................................... 43 Hình 3.5. Đồ thị dòng .............................................................................. 44 Hình 3.6 Giao diện trang chủ .................................................................. 49 Hình 3.7 Giao diện hướng dẫn sử dụng của chương trình ...................... 50 Hình 3.8 Giao diện chính chạy chương trình .......................................... 50 Hình 3.9: Hộp thoại Open để tìm đường dẫn .......................................... 51 Hình 3.10: Form hiển thị mô-đun cần kiểm thử ..................................... 51 Hình 3.11. Giao diện xác định tập đường cơ bản ................................... 52 Hình 3.12: Giao diện thông báo lỗi khi nhập dữ liệu không hợp lệ ....... 53 Hình 3.13: Giao diện test đơn vị chương trình code_1 ........................... 53 Hình 3.14: Form xử lý với đơn vị chương trình code_2 ......................... 59 Hình 3.15: Lỗi tìm thấy trong mô-đun code_2 ....................................... 60 Hình 3.16: Form kiểm thử ứng với code_3 ............................................. 61 Hình 3.17: Form kiểm thử ứng với code_4 ............................................. 63 viiivi DANH MỤC CÁC BẢNG Bảng 2.1. Ví dụ minh họa các đột biến ................................................... 21 Bảng 2.2 : Những chiến lược kết hợp ..................................................... 23 Bảng 2.3. Tập đường cơ bản ................................................................... 32 Bảng 2.4 : Ma trận kiểm thử A và cách tính độ phức tạp V(G) .............. 34 Bảng 2.5 Bảng ma trận kiểm thử A= (aij) với i,j=1,2,3,4,...,9 được xác định như sau: ........................................................................................... 34 Bảng 2.6 : Ví dụ ma trận kiểm thử tích A2= ........................................... 36 Bảng 3.1-Bảng tính độ phức tạp của đồ thị dòng V(G): ......................... 45 Bảng 3.2: Bảng ma trận kiểm thử A= (aij) với i,j=1,2,3,4,...,14............. 45 Bảng 3.3: Các Test path .......................................................................... 48 Bảng 3.4: Bảng các ca kiểm thử vòng lặp while .................................... 49 Bảng 3.5: Bảng TestData1 ...................................................................... 55 Bảng 3.6: Bảng TestData2 ...................................................................... 55 Bảng 3.7: Bảng TestData3 ...................................................................... 55 Bảng 3.8: Bảng TestData4 ...................................................................... 56 Bảng 3.9: Bảng TestData5 ...................................................................... 56 Bảng 3.10: Bảng TestData6 .................................................................... 56 Bảng 3.11: Bảng TestData7 .................................................................... 57 Bảng 3.12: Bảng TestData với code_2 ................................................... 58 Bảng 3.13: Kết quả bảng TestData với code_2 ...................................... 59 Bảng 3.14: Bảng TestData với code_3 ................................................... 61 Bảng 3.15: Bảng TestData với code_4 ................................................... 62 1 PHẦN MỞ ĐẦU 1. Lý do chọn đề tài Quy trình phát triển phần mềm thường trải qua nhiều giai đoạn, trong đó kiểm thử phần mềm là một trong các hoạt động chủ chốt nhằm phát hiện lỗi và đảm bảo chất lượng phần mềm. Trước khi sản phẩm được phát hành, tất cả các chức năng cũng như giao diện, ứng dụng của sản phẩm đó đều cần qua kiểm thử. Kiểm thử hiệu quả sẽ phát hiện ra được các sai sót, tránh các lỗi trước khi phát hành sản phẩm. Để kiểm thử đạt hiệu quả cao, người kiểm thử cần vạch ra chiến lược kiểm thử, đó là sự tích hợp các kỹ thuật thiết kế ca kiểm thử. Một trong các kỹ thuật đó, không thể không nhắc đến đó là kỹ thuật ma trận đồ thị. Kỹ thuật ma trận đồ thị là một trong những kỹ thuật của phương pháp kiểm thử hộp trắng. Ma trận kiểm thử được sử dụng như một dữ liệu có cấu trúc để kiểm tra các con đường cơ bản. Ma trận kiểm thử là một công cụ mạnh trong việc đánh giá cấu trúc điều khiển chương trình. Qua luận văn này, tôi mong muốn mọi người có những kiến thức cơ bản về kiểm thử phần mềm nói chung, kiểm thử hộp trắng nói riêng. Đặc biệt, tôi mong có thể đóng góp vào việc xây dựng quy trình thiết kế ca kiểm thử bằng kỹ thuật ma trận đồ thị. Trên đây là những lí do mà tôi chọn đề tài: “Kỹ thuật ma trận đồ thị trong phương pháp kiểm thử hộp trắng” làm luận văn thạc sĩ của mình. 2. Đối tượng và phạm vi nghiên cứu - Kiểm thử phần mềm nói chung và kiểm thử hộp trắng nói riêng. - Một số kỹ thuật chính về thiết kế ca kiểm thử - Kỹ thuật ma trận đồ thị để thiết kế ca kiểm thử - Xây dựng phần mềm thử nghiệm kiểm thử bằng kỹ thuật ma trận đồ thị 2 - Áp dụng kỹ thuật ma trận đồ thị để kiểm thử phần mềm và so sánh với một số kỹ thuật thiết kế ca kiểm thử khác. 3. Mục tiêu và nhiệm vụ nghiên cứu - Luận văn tập trung nghiên cứu, tìm hiểu về kiểm thử phần mềm, phương pháp kiểm thử hộp trắng, ca kiểm thử, đặc biệt là kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị - Thiết kế chương trình kiểm thử để kiểm thử một số đơn vị chương trình. 4. Phương pháp nghiên cứu - Phương pháp nghiên cứu lý thuyết: Sưu tập tài liệu, tổng hợp các phương pháp kiểm thử phầm mềm, tập trung vào phương pháp kiểm thử hộp trắng, nghiên cứu chi tiết quy trình thực hiện kỹ thuật ma trận đồ thị. - Phương pháp nghiên cứu thực nghiệm: Cài đặt thử nghiệm chương trình kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị - Phương pháp trao đổi khoa học: Trao đổi nội dung nghiên cứu với người hướng dẫn, các đồng nghiệp để đề xuất và giải quyết các nội dung luận văn đề ra. 5. Ý nghĩa khoa học của đề tài Kết quả thử nghiệm của đề tài một mặt thể hiện tính đúng về mặt lý thuyết, một mặt vừa mang tính minh hoạ vừa thể hiện khả năng ứng dụng hiệu quả. 6. Bố cục của luận văn: Toàn bộ nội dung của luận văn được chia thành ba chương như sau: Chương 1: Tổng quan về kiểm thử phần mềm và kiểm thử hộp trắng Chương 2: Một số kỹ thuật hiệu quả trong phương pháp kiểm thử hộp trắng và ca kiểm thử Chương 3: Chương trình thử nghiệm kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị. 3 CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ HỘP TRẮNG 1.1. Kiểm thử phần mềm 1.1.1. Quan niệm về kiểm thử phần mềm Kiểm thử phần mềm (Software Testing) là một yếu tố quan trọng trong vấn đề xác minh và thẩm định. Việc kiểm thử cung cấp một thành luỹ cuối cùng để có thể thẩm định về mặt chất lượng, chứng thực hơn, phát hiện ra lỗi [7]. Theo Glen Myers, 1979, kiểm thử phần mềm là quá trình vận hành chương trình để tìm ra lỗi. Một ca kiểm thử tốt là ca kiểm thử có xác suất cao tìm ra một lỗi chưa được phát hiện. Một ca kiểm thử thắng lợi là ca kiểm thử làm lộ ra được ít nhất một lỗi còn chưa phát hiện. Với cách nhìn này, mục tiêu của chúng ta là thiết kế các ca kiểm thử để có thể phát hiện một cách hệ thống các loại lỗi khác nhau với chi phí thời gian và công sức ít nhất có thể. Phát hiện lỗi là công việc của kiểm thử. Nhưng kiểm thử phần mềm không phải là gỡ lỗi. Kiểm thử phần mềm là một trong những yếu tố góp phần bảo đảm chất lượng phần mềm, là khâu điển hình kiểm soát đặc tả, thiết kế, lập mã. Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm ra lỗi, đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và đúng theo yêu cầu của khách hàng. Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập về phần mềm, điều này cho phép việc đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm. Kiểm thử phần mềm tạo điều kiện tận dụng tối đa tư duy đánh giá và sáng tạo để có thể phát hiện ra những điểm mà người khác chưa nhìn thấy. 1.1.2. Chiến lược kiểm thử phần mềm Chiến lược kiểm thử là sự tích hợp các kỹ thuật thiết kế “ca kiểm thử” tạo thành một dãy các bước nhằm hướng dẫn quá trình kiểm thử phần mềm thành công [9]. 4 Ca kiểm thử (test case) là một tình huống kiểm thử tương ứng với một mạch hoạt động của chương trình. Nó bao gồm một tập các giá trị đầu vào và một danh sách các kết quả đầu ra mong muốn và thực tế. Chiến lược kiểm thử được đặt ra với các mục tiêu nhằm phác thảo lộ trình để: - Nhà phát triển tổ chức việc bảo đảm chất lượng bằng kiểm thử; - Khách hàng hiểu được công sức, thời gian và nguồn lực cần cho kiểm thử Chiến lược kiểm thử cần đạt các yêu cầu sau: - Tích hợp các khâu như lập kế hoạch, thiết kế ca kiểm thử, tiến hành kiểm thử, thu thập và đánh giá các thông tin kết quả; - Đủ mềm dẻo để cổ vũ óc sáng tạo, đáp ứng được yêu cầu khách hàng; - Thích ứng với mức kiểm thử cụ thể; - Đáp ứng các đối tượng quan tâm khác; 1.1.3. Các mức kiểm thử [9] Trong tiến trình kiểm thử, người ta chia ra thành nhiều mức kiểm thử. Về phương diện thực hành người ta thường chia thành 4 mức cơ bản: Mức 1. Kiểm thử đơn vị (Unit testing); Mức 2. Kiểm thử tích hợp (Integration testing); Mức 3. Kiểm thử hệ thống (System testing), bao gồm: - Kiểm thử chức năng (functional test: system and interface) - Kiểm thử phục hồi (recovery test) - Kiểm thử chịu tải (extra: stress and load test) - Kiểm thử thi hành (performance test) - Kiểm thử an ninh (security test) Mức 4. Kiểm thử chấp nhận (acceptance testing)/thẩm định Có 2 tiến trình thực hiện kiểm thử: 5 Tiến trình 1. Tiến trình thực hiện kiểm thử tương ứng với tiến trình phát triển (theo từng mô hình). Tiến trình 2. Tiến trình kiểm thử thường theo mô hình chiến lược kiểm thử tổng thể: Kiểm thử Kiểm thử Kiểm thử Kiểm thử đơn vị tích hợp hệ thống thẩm định Môđun Môđun Cả phần cứng, Hệ thống đơn vị chức năng, phần mềm thực hệ con Hình 1.1. Mô hình chiến lược kiểm thử tổng thể 1.1.4. Sơ lược về các phương pháp kiểm thử Bất kỳ sản phẩm kỹ nghệ nào đều có thể được kiểm thử theo một trong hai cách [1,2,5,6,15]: Cách 1. Kiểm thử chức năng/hộp đen: cho dữ liệu đầu vào đúng/sai, kiểm tra đầu ra đúng/sai, tức là kiểm thử xem từng chức năng có vận hành đúng không, không quan tâm đến cấu trúc bên trong của chức năng đó. Cách 2. Kiểm thử cấu trúc/hộp trắng: không những quan tâm đến mối quan hệ giữa đầu vào và đầu ra của chức năng đó mà còn quan tâm, đến cấu trúc bên trong, quan tâm chi tiết đến từng đầu vào, đầu ra của các thành phần cấu thành trong đó và cả sự ăn khớp giữa chúng nữa, tức là bảo đảm rằng sự vận hành bên trong thực hiện đúng theo đặc tả và tất cả các thành phần bên trong đều được quan tâm và được kiểm tra một cách chi tiết. Đối với phần mềm máy tính, kiểm thử hộp đen biểu thị việc kiểm thử được tiến hành tại giao diện phần mềm. Mặc dù chúng được thiết kế để phát hiện ra lỗi, kiểm thử hộp đen được dùng để thể hiện rằng các chức năng phần mềm đã vận hành, cái vào được chấp nhận đúng, và cái ra được tạo ta đúng, tính toàn vẹn của thông tin ngoài (như tệp dữ liệu) là được duy trì. Phép kiểm 6 thử hộp đen xem xét một số khía cạnh của hệ thống ít để ý tới cấu trúc logic bên trong của phần mềm. 1.2. Kiểm thử hộp trắng 1.2.1. Ý tưởng của kiểm thử hộp trắng Kiểm thử hộp trắng (white-box test) không những quan tâm đến mối quan hệ giữa đầu vào và đầu ra của chức năng đó mà còn quan tâm đến cấu trúc bên trong, quan tâm chi tiết đến từng đầu vào đầu ra của các thành phần cấu thành trong đó và cả sự ăn khớp giữa chúng nữa, tức là bảo đảm rằng sự vận hành bên trong thực hiện đúng theo đặc tả và tất cả các thành phần bên trong đều được quan tâm và được kiểm tra một cách chi tiết [9]. Kiểm thử hộp trắng được hướng tới việc xem xét kỹ về chi tiết thủ tục. Các đường logic đi qua phần mềm được kiểm thử bằng cách đưa ra các trường hợp kiểm thử, vốn thực hiện trên một tập xác định các điều kiện và /hoặc chu trình. “Trạng thái của chương trình” có thể được xem xét tại nhiều điểm khác nhau để xác định liệu trạng thái dự kiến hay khẳng định có tương ứng với trạng thái thực tại không [9]. Bản chất của khiếm khuyết phần mềm chính là lý do đầu tiên phải kiểm thử hộp trắng. Hơn nữa, việc kiểm thử hộp đen, dù làm kỹ lưỡng đến đâu vẫn có thể sót nhiều loại lỗi. Theo Beizer: “Lỗi ẩn nấp trong các ngóc ngách và tập hợp tại biên giới”. Việc kiểm thử hộp trắng có nhiều khả năng phát hiện ra chúng hơn,... Kiểm thử hộp trắng (white box) là việc kiểm tra các đoạn mã chương trình xem nó có vận hành đúng như thiết kế hay không. Kiểm thử hộp trắng dựa trên việc xem xét cấu trúc bên trong của chương trình theo cấu trúc điều khiển và sự hoạt động của chúng. Nó có nhiều tên gọi khác như glass testing, structure testing, open box testing, clear box testing [Beizer 1995]. Đối tượng của kiểm thử hộp trắng là các mã nguồn ở các mô-đun đơn vị [7,8]. 7 Kiểm thử hộp trắng sử dụng các chiến lược cụ thể và sử dụng mã nguồn của chương trình/đơn vị phần mềm cần kiểm thử nhằm kiểm tra xem chương trình/đơn vị phần mềm có thực hiện đúng so với thiết kế và đặc tả hay không. Trong khi các phương pháp kiểm thử hộp đen chỉ cho phép phát hiện các lỗi/khiếm khuyết có thể quan sát được, kiểm thử hộp trắng cho phép phát hiện các lỗi/khiếm khuyết tiềm ẩn bên trong chương trình/đơn vị phần mềm, các lỗi này thường khó phát hiện bởi các phương pháp kiểm thử hộp đen. Kiểm thử hộp đen và kiểm thử hộp trắng không thể thay thế cho nhau mà chúng cần được sử dụng kết hợp với nhau trong một quy trình kiểm thử thống nhất nhằm đảm bảo chất lượng phần mềm. Tuy nhiên, để áp dụng các phương pháp kiểm thử hộp trắng, người kiểm thử không chỉ cần hiểu rõ giải thuật mà còn cần có các kỹ năng và kiến thức tốt về ngôn ngữ lập trình được dùng để phát triển phần mềm, nhằm hiểu rõ mã nguồn của chương trình/đơn vị phần mềm cần kiểm thử. Do vậy, việc áp dụng phương pháp kiểm thử hộp trắng thường tốn thời gian và công sức nhất là khi chương trình/đơn vị phần mềm có kích thước lớn. Vì lý do này, phương pháp kiểm thử hộp trắng chủ yếu được sử dụng cho kiểm thử đơn vị. 1.2.2. Mô tả một số cấu trúc theo lược đồ Trong các phương pháp kiểm tra tính đúng đắn của chương trình, lược đồ được dùng để: - Trừu tượng hóa cú pháp của mã lệnh; - Làm khuôn mẫu cơ bản cho các nguyên tắc kiểm tra theo trường hợp. - Kiểm tra tính đúng đắn trên toàn bộ lược đồ. 8 SEQUENCE UNTIL IF WHILE CASE Hình 1.2. Một số cấu trúc lập trình 1.2.3. Một số hướng chính về kiểm thử hộp trắng 1.2.3.1. Kiểm thử theo câu lệnh (Statement Testing) Thiết kế quá trình kiểm thử sao cho mỗi câu lệnh của chương trình được thực hiện ít nhất một lần. Phương pháp kiểm thử này xuất phát từ ý tưởng [1]: - Trừ phi một câu lệnh được thực hiện, nếu không ta không thể biết được có lỗi xảy ra trong câu lệnh đó hay không. - Việc kiểm thử với một giá trị đầu vào không đảm bảo là sẽ đúng cho mọi trường hợp. Ví dụ: Đoạn chương trình thực hiện tính: result = 0+1+...+|valuel|, nếu result <= maxint, báo lỗi trong trường hợp ngược lại. 1. PROGRAM maxsum ( maxint, value : INT) 2. INT result :=0;i := 0 ; 3. IF value < 0 4. THEN value := - value; 5. WHILE ( i < value ) AND ( result <= maxint) 6. DO BEGIN 7. i:=i+1; result := result + i; 8. END; 9. IF result <= maxint 9 10. THEN OUTPUT ( result ) 11. ELSE OUTPUT (“too large”) 12. END. 1 2 3 4 5 6,7 8 9 11 10 12 Hình 1.3. Sơ đồ điều khiển chương trình 10 Start Yes Value<0 Value:=Value No i:=i+1 result:=result + i (i<value)and (result<=maxint Yes ) No Yes No result< =maxint output (“too large”); output (result); End. Hình 1.4. Đồ thị của chương trình Ví dụ: Với các bộ giá trị đầu vào (input): maxint = 10, value = -1 hay: maxint = 0, value = -1 sẽ kiểm tra được toàn bộ các câu lệnh trong đoạn chương trình trên. Để đánh giá phương pháp này ta xem qua ví dụ sau: A B Hình 1.5. Minh hoạ về độ phức tạp của câu lệnh 11 Với câu hỏi đầu tiên “Lược đồ nào phức tạp hơn”, ta có câu trả lời là B. Với câu hỏi tiếp theo “Lược đồ nào cần các bước kiểm tra nhiều hơn?” Ta cũng trả lời là B. Số kiểm tra: 2 Số kiểm tra: 2 Hình 1.6. Minh hoạ về các bước kiểm tra Tuy nhiên, ta thấy số lần kiểm tra tối thiểu để có thể kiểm tra toàn bộ các câu lệnh như trên cho cả hai hàm đều là 2. Vì vậy, phương pháp này không tương ứng với sự phức tạp của mã lệnh. 1.2.3.2. Kiểm thử theo đường dẫn (Path Testing) Kiểm thử theo đường dẫn là phương pháp kiểm thử bao trùm mọi đường dẫn của chương trình và cần kết hợp với lược đồ tiến trình. 12 Hình dưới đây giải thích đường dẫn của chương trình [1] If (A>B) A>B S1; S2; else S1;S2; S3; S3; A < B While (A<B) True { False S1; S2; S1; S2; } S3; S3; S4 A < B If (A<B && C<D) True False S1; else C < D S2; S3; True False S2; S1; S3; Hình1.7. Lược đồ kiểm thử theo đường dẫn Nhận xét: Phương pháp kiểm thử theo đường dẫn phụ thuộc nhiều vào các biểu thức điều kiện (Xem hình 1.8). Tuy nhiên, có những trường hợp số lượng đường dẫn quá lớn (trường hợp vòng lặp). Vì vậy chương trình này thường không phải là lựa chọn thực tế để tiến hành việc kiểm tra tính đúng đắn của chương trình. 13 Có khoảng 520= 95.367.431.640.625 đường dẫn Loop < 20 Hình1.8. Lược đồ kiểm thử đường dẫn theo biểu thức điều kiện 1.2.3.3. Kiểm thử theo điều kiện (Condition Testing) Kiểm thử theo điều kiện là phương pháp kiểm thử các biểu thức điều kiện trên hai giá trị true và false [1]. Ta xét các ví dụ sau: if (x > 0 &&y>0) x= 1; else x=2; Các bộ kiểm tra { (x>0, y>0), (x 0) } sẽ kiểm thử toàn bộ các điều kiện. Tuy nhiên, không thỏa mãn với mọi giá trị đầu vào, cần kết hợp cả x và y để thực hiện bước kiểm thử. 14 1.2.3.4 Kiểm thử theo vòng lặp (Loop Testing) Kiểm thử theo vòng lặp là phương pháp tập trung vào tính hợp lệ của các cấu trúc vòng lặp. Các loại vòng lặp được thể hiện như sau [1,8]: Vòng lặp đơn giản Vòng lặp lồng Vòng lặp nối tiếp nhau Vòng lặp không cấu trúc nhau Hình 1.9.Các kiểu vòng lặp - Các bước cần kiểm thử cho vòng lặp đơn + Bỏ qua vòng lặp. + Lặp một lần. + Lặp hai lần. + Lặp m lần (men). + Lặp (n-1), n, (n+1) lần. Trong đó n là số lần lặp tối đa của vòng lặp. - Các bước cần kiểm thử cho vòng lặp dạng lồng nhau + Khởi đầu với vòng lặp nằm bên trong nhất. Thiết lập các tham số lặp cho các vòng lặp bên ngoài về giá trị nhỏ nhất. + Kiểm tra với tham số min+1, một giá trị tiêu biểu, max-1 và max cho vòng lặp bên trong nhất trong khi các tham số lặp của các vòng lặp bên ngoài là nhỏ nhất. 15 + Tiếp tục tương tự với các vòng lặp liền ngoài tiếp theo cho đến khi tất cả vòng lặp bên ngoài được kiểm tra. - Các bước cần kiểm thử cho vòng lặp nối tiếp + Nếu các vòng lặp là độc lập với nhau thì kiểm tra như trường hợp các vòng lặp dạng đơn, nếu không thì kiểm thử như trường hợp các vòng lặp lồng nhau. Ví dụ: // LOOP TESTING EXAMPLE PROGRAM import java.io.*; class LoopTestExampleApp { // ---------------------------- FIELDS ------------------------ public static BufferedReader keyboardinput = new BufferedReader(new InputStreamReader(System.in)); private static final int MINIMUM = 1; private static final int MAXIMUM = 10; I I --------------------------- METHODS ----------------------- /* Main method */ public static void main(String[] args) throws lOException { System.out.println("Input an integer value:”); int input = new Integer(keyboardInput.readLine()).intValue(); int numberOflterations = 0; 16 CHƯƠNG 2 MỘT SỐ KỸ THUẬT HIỆU QUẢ TRONG PHƯƠNG PHÁP KIỂM THỬ HỘP TRẮNG VÀ CA KIỂM THỬ 2.1. Một số kỹ thuật chính trong phương pháp kiểm thử hộp trắng Có thể tổng hợp một số kỹ thuật hiệu quả trong phương pháp kiểm thử hộp trắng như sau: 2.1.1. Kỹ thuật kiểm thử dòng điều khiển Kỹ thuật kiểm thử dòng điều khiển dựa trên khái niệm đồ thị dòng điều khiển (control flow graph). Đồ thị này được xây dựng từ mã nguồn của chương trình/đơn vị chương trình. Đồ thị dòng điều khiển là một đồ thị có hướng gồm các đỉnh tương ứng với các câu lệnh/nhóm câu lệnh và các cạnh là các dòng điều khiển giữa các câu lệnh/nhóm câu lệnh. Nếu i và j là các đỉnh của đồ thị dòng điều khiển thì tồn tại một cạnh từ i đến j nếu lệnh tương ứng với j có thể được thực hiện ngay sau lệnh tương ứng với i. Xây dựng một đồ thị dòng điều khiể

Các file đính kèm theo tài liệu này:

  • pdfluan_van_ki_thuat_ma_tran_do_thi_trong_phuong_phap_kiem_thu.pdf
Tài liệu liên quan