Cơ sở toán học cho các kỹ thuật kiểm thử phần mềm

  • Số trang: 49 |
  • Loại file: PDF |
  • Lượt xem: 65 |
  • Lượt tải: 0
tailieuonline

Đã đăng 27670 tài liệu

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN DƢƠNG THỊ PHƢỢNG CƠ SỞ TOÁN HỌC CHO CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội - Năm 2012 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN DƢƠNG THỊ PHƢỢNG CƠ SỞ TOÁN HỌC CHO CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM Chuyên ngành: BẢO ĐẢM TOÁN CHO MÁY TÍNH VÀ HỆ THỐNG TÍNH TOÁN Mã số: 60.46.35 LUẬN VĂN THẠC SĨ KHOA HỌC NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. PHẠM NGỌC HÙNG Hà Nội - Năm 2012 Luận văn cao học Dương Thị Phượng MỤC LỤC MỞ ĐẦU ....................................................................................................................5 1.1. Đặt vấn đề ............................................................................................................3 1.2. Nội dung nghiên cứu ............................................................................................4 1.3. Cấu trúc luận văn .................................................................................................5 Chƣơng 1: Tổng quan về kiểm thử phần mềm.......................................................6 1.1. Các khái niệm cơ bản về kiểm thử phần mềm .....................................................6 1.1.1. Kiểm thử phần mềm là gì? .......................................................................6 1.1.2. Lý do kiểm thử phần mềm .......................................................................7 1.1.3. Vai trò của kiểm thử phần mềm ...............................................................8 1.1.4. Mục đích của kiểm thử phần mềm ...........................................................9 1.2. Tiến trình kiểm thử phần mềm ...........................................................................10 Chƣơng 2: Phƣơng pháp phân hoạch (quy hoạch) toán học trong kiểm thử hộp đen .............................................................................................................................12 2.1. Phƣơng pháp kiểm thử dựa trên phân hoạch tƣơng đƣơng ................................12 2.1.1. Phân lớp tƣơng đƣơng mạnh ..................................................................17 2.1.2. Phân lớp tƣơng đƣơng yếu .....................................................................18 2.1.3. Phân lớp tƣơng đƣơng truyền thống .......................................................19 2.2 Ứng dụng ............................................................................................................21 2.2.1 Kiểm thử chƣơng trình nhập điểm thi cao học ........................................21 2.2.2 Kiểm thử chƣơng trình sau khi lập trình viên đã sửa lỗi .........................26 Chƣơng 3: Cơ sở toán học trong kiểm thử hộp trắng .........................................27 3.1. Ứng dụng đồ thị lƣu trình trong lý thuyết đồ thị vào kiểm thử luồng điều khiển (Basic Path Testing). .................................................................................................27 3.2 Áp dụng vào kiểm thử đoạn mã chƣơng trình trong ví dụ "Nhập điểm thi cao học" ...........................................................................................................................33 3.2.1 Trƣờng hợp 1: Đoạn mã chƣơng trình A.................................................34 3.2.2 Trƣờng hợp 2: Đoạn mã chƣơng trình B (đã chỉnh sửa). ........................39 Chƣơng 4: Kết luận .................................................................................................44 -1- Luận văn cao học Dương Thị Phượng DANH MỤC CÁC BẢNG VÀ HÌNH VẼ Hình 1.1 - Giai đoạn kiểm thử trong xử lý phần mềm ...............................................9 Hình 1.2 - Tiến trình kiểm thử phần mềm ................................................................10 Bảng 2.1 - Mẫu bảng liệt kê các lớp tƣơng đƣơng ...................................................13 Hình 2.1 - Nguyên tắc phân hoạch tập hợp. ..............................................................14 Hình 2.2 - Phân lớp tƣơng đƣơng cho bài toán điểm thi cao học .............................16 Bảng 2.2. Bảng liệt kê các lớp tƣơng đƣơng cho bài toán điểm thi cao học ...........16 Hình 2.3 - Chọn giá trị tại mỗi lớp tƣơng đƣơng cho bài toán điểm thi cao học ......16 Bảng 2.3 - Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng mạnh........ Bảng 2.4 - Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng yếu .......18 Bảng 2.5 - Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng truyền thống. .........................................................................................................................19 Hình 2.4 - Giao diện màn hình nhập điểm thi cao học .............................................21 Bảng 2.6. Kết quả kiểm thử với trƣờng hợp phân lớp tƣơng đƣơng mạnh..............22 Bảng 2.7. Kết quả kiểm thử qua với trƣờng hợp phân hoạch tƣơng đƣơng yếu.......24 Bảng 2.8. Kết quả kiểm thử với trƣờng hợp phân lớp tƣơng đƣơng truyền thống ...24 Bảng 2.9. Bảng kết quả chạy thực tế với đoạn mã chƣơng trình A ..........................26 Hình 3.1 - Ký hiệu đồ thị lƣu trình...........................................................................29 Hình 3.2 - Điều kiện phức .........................................................................................30 Hình 3.3 - Đồ thị lƣu trình .......................................................................................30 Hình 3.4 - Đồ thị lƣu trình trên đoạn mã chƣơng trình A ........................................35 Bảng 3.1: Kết quả kiểm thử theo phƣơng pháp kiểm thử luồng điều khiển trên đoạn mã chƣơng trình A............................................................................................................38 Hình 3.4 - Đồ thị lƣu trình trên đoạn mã chƣơng trình B .........................................40 Bảng 3.2: Kết quả kiểm thử theo phƣơng pháp kiểm thử luồng điều khiển trên đoạn mã chƣơng trình B .....................................................................................................43 -2- Luận văn cao học Dương Thị Phượng MỞ ĐẦU 1.1. Đặt vấn đề Việc phát triển phần mềm ngày càng đƣợc hỗ trợ bởi nhiều công cụ tiên tiến giúp cho việc xây dựng phần mềm hiệu quả hơn, với chất lƣợng tốt hơn. Tuy nhiên, vì độ phức tạp của phần mềm và những giới hạn về thời gian và chi phí, cho dù các hoạt động đảm bảo chất lƣợng phần mềm nói chung và kiểm thử phần mềm nói riêng ngày càng chặt chẽ và khoa học, chung ta vẫn rất khó khăn trong việc đảm bảo tính đúng đắn của các sản phẩm phần mềm. Lỗi vẫn luôn tiềm ẩn trong mọi sản phẩm phần mềm và cũng có thể gây những thiệt hại khôn lƣờng khi triển khai chúng trong thực tế [13]. Để xây dựng đƣợc một phần mềm đáp ứng yêu cầu ngƣời sử dụng và có chất lƣợng cao, các dự án phát triển phần mềm cần phải trải qua một quy trình gồm các khâu sau: Phân tích yêu cầu, phân tích hệ thống, thiết kế phần mềm, lập trình, kiểm thử phần mềm, triển khai phần mềm và bảo trì phần mềm [2, 6, 13]. Trong quy trình này, kiểm thử phần mềm đóng vai trò hết sức quan trọng nhằm đảm bảo chất lƣợng của sản phẩm. Nó giúp cho ngƣời xây dựng hệ thống và khách hàng thấy đƣợc hệ thống mới đã đáp ứng yêu cầu đặt ra hay chƣa. Tuy nhiên, kiểm thử phần mềm đang đƣợc xem là một khâu yếu nhất trong quy trình phát triển phần mềm. Mỗi dự án gia công phần mềm cho Công ty nƣớc ngoài, trên thực tế 50% dùng để chi phí cho lập trình, còn lại 50% dùng chi phí cho việc kiểm thử [13]. Hiện tại các Công ty phần mềm làm công tác kiểm thử chƣa tốt và là công việc khó khăn trong Công ty phần mềm, nên công tác đào tạo về kiểm thử cần đƣợc coi trọng. Quy trình kiểm thử phần mềm gồm bai giai đoạn chính: sinh các ca kiểm thử và chạy các ca kiểm thử này nhằm phát hiện các lỗi/khiếm khuyết của hệ thống [5]. Nếu sản phẩm chạy qua tất cả các ca kiểm thử với kết quả thu đƣợc -3- Luận văn cao học Dương Thị Phượng giống với kết quả mong muốn thì ta có thể tin tƣởng vào chất lƣợn của sản phẩm. Ngƣợc lại, một kết quả không đúng giúp ta tìm và sửa các lỗi và kết quả là ta phải chạy lại toàn bộ các ca kiểm thử. Trong hai giai đoạn này, việc sinh các ca kiểm thử có vai trò quyết định đến khả năng phát hiện lỗi/khiếm khuyết của quá trình kiểm thử. Làm thế nào để sinh đƣợc bộ kiểm thử tốt (gồm các ca kiểm thử) là bài toán khó trong kiểm thử phần mềm. Việc sinh bộ kiểm thử tốt phụ thuộc vào phƣơng pháp chúng ta sử dụng. Có nhiều phƣơng pháp sinh ra bộ kiểm thử [10], mỗi phƣơng pháp đều có ƣu và nhƣợc điểm riêng. Vì vậy, ngƣời sinh ra bộ kiểm thử phải bơi trong biển các phƣơng pháp kiểm thử. Trong nhiều trƣờng hợp, có thể họ sử dụng một phƣơng pháp kiểm thử nào đó nhƣng không nắm đƣợc bản chất toán học của phƣơng pháp này nên sinh ra các ca kiểm thử không tốt. Điều này giống nhƣ việc khi mua m ột chiếc máy tính mới cấu hình mạnh, tính năng sử dụng nhiều nhƣng ngƣời sử dụng lại không biết khai thác điểm mạnh của nó mà chỉ sử dụng thƣờng xuyên nhƣ chiếc máy tính cũ. Theo khảo sát của chúng tôi, hầu hết những ngƣời làm kiểm thử đều ít để ý đến bản chất toán học của các phƣơng pháp sinh bộ kiểm thử. Trong thực tế, mỗi phƣơng pháp kiểm thử đều dựa trên một cơ sở toán học. Việc nắm rõ bản chất toán học của các phƣơng pháp kiểm thử giúp cho chúng ta khai thác tối đa khả năng phát hiện lỗi/khiếm khuyết của các phƣơng pháp này. Hơn nữa, công việc này cũng là cơ sở quan trọng để đào tạo nguồn nhân lực về kiểm thử phần mềm trong môi trƣờng thƣờng xuyên biến động và ngày càng có nhiều phƣơng pháp kiểm thử mới ra đời. 1.2. Nội dung nghiên cứu Nhằm tìm hiểu cơ sở toán học của các phƣơng pháp kiểm thử, luận văn tập trung nghiên cứu các nội dung chính nhƣ sau. Tìm hiểu các kỹ thuật kiểm thử nhằm đảm bảo chất lƣợng phần mềm. -4- Luận văn cao học Dương Thị Phượng Tập trung nghiên cứu cơ sở toán học của phƣơng pháp phân hoạch tƣơng đƣơng (một kỹ thuật kiểm thử hộp đen) và phƣơng pháp kiểm thử luồng điều khiển (một kỹ thuật kiểm thử hộp trắng). Áp dụng các kỹ thuật trên nhằm kiểm thử một số chƣơng trình đơn giản. 1.3. Cấu trúc luận văn Phần còn lại của luận văn đƣợc cấu trúc nhƣ sau. Chƣơng 1 giới thiệu tổng quan về kiểm trử phần mềm gồm khái niệm về phần mềm, lý do kiểm thử phần mềm, vai trò của kiểm thử phần mềm và mục đích của kiểm thử phần mềm. Phƣơng pháp phân hoạch (quy hoạch) toán học và ứng dụng của phân hoạch tƣơng đƣơng vào kiểm thử hộp đen (kiểm thử dựa theo đặc tả không quan tâm tới mã nguồn) cùng ví dụ áp dụng đƣợc trình bày trong Chƣơng 2. Chƣơng 3 mô tả về đồ thị lƣu trình trong lý thuyết đồ thị và ứng dụng vào kiểm thử luồng điều khiển chƣơng trình trong kiểm thử hộp trắng cùng ví dụ áp dụng. Cuối cùng, Chƣơng 4 trình bày kết luận của luận văn và hƣớng nghiên cứu tiếp theo. -5- Luận văn cao học Dương Thị Phượng CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1. Các khái niệm cơ bản về kiểm thử phần mềm Kiểm thử phần mềm Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay thành phần dƣới những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh nào đó của hệ thống hay thành phần đó [5]. Kiểm thử phần mềm thƣờng đồng nghĩa với việc tìm ra lỗi chƣa đƣợc phát hiện. Tuy nhiên, có nhiều bối cảnh kiểm thử không bộc lộ ra lỗi. Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm để xác định xem phần mềm đó có đúng với đặc tả không và thực hiện trong môi trƣờng nhƣ mong đợi hay không. Trên thực tế, hệ thống đang thực hiện khác biệt với việc duyệt lại mã nguồn. Thông thƣờng, ngƣời phát triển thực hiện việc đọc lại và phân tích mã nguồn. Nói cách khác, kiểm thử đòi hỏi một hệ thống chạy đƣợc. Đặc tả là căn cứ chủ yếu hỗ trợ cho việc kiểm thử. Nó xác định những hành vi đúng và làm cho dễ dàng hơn trong việc xác định những hành vi không đúng. Mỗi hành vi không đúng chính là một lỗi phần mềm. Nói chung, ngƣời phát triển phải tự chẩn đoán nguyên nhân sinh lỗi trong mã nguồn. Mục đích của kiểm thử phần mềm là tìm ra lỗi chƣa đƣợc phát hiện, tìm một cách sớm nhất có thể và đảm bảo rằng lỗi đã đƣợc sửa, mà kiểm thử phần mềm không làm công việc chẩn đoán nguyên nhân gây ra lỗi đã đƣợc phát hiện và sửa lỗi. Chúng ta sẽ nghiên cứu kĩ hơn vấn đề này ở những phần tiếp theo. -6- Luận văn cao học Dương Thị Phượng Mục tiêu của kiểm thử phần mềm là thiết kế tài liệu kiểm thử một cách có hệ thống và thực hiện nó sao cho có hiệu quả, nhƣng tiết kiệm đƣợc thời gian, công sức và chi phí. Kiểm thử phần mềm là một tiến trình hay một tập hợp các tiến trình đƣợc thiết kế để đảm bảo mã hóa máy tính thực hiện theo cái mà chúng đã đƣợc thiết kế để làm, và không thực hiện bất cứ thứ gì không mong muốn. Đây là một pha quan trọng trong quá trình phát triển hệ thống, giúp cho ngƣời xây dựng hệ thống và khách hàng thấy đƣợc hệ thống mới đã đáp ứng yêu cầu đặt ra hay chƣa. 1.1.1. Lý do kiểm thử phần mềm Mặc dù kiểm thử phần mềm là một quy trình bắt buộc trong vòng đời phát triển phần mềm nhƣng hầu hết các phần mềm hiện tại vẫn còn lỗi lọt đến khách hàng hoặc đƣợc chính ngƣời sử dụng tìm ra trong quá trình kiểm thử chấp nhận sản phẩm (acceptance test). Nguyên nhân một phần lớn là do kiểm thử viên chƣa làm đúng quy trình trong quá trình xây dựng các ca kiểm thử. Vì vậy chúng ta cần hiểu rõ lý do của việc kiểm thử để từ đó thấy đƣợc ý nghĩa của việc xây dựng ca kiểm thử hiệu quả. Có một số lý do chính của hoạt động kiểm thử phần mềm nhƣ sau. Lý do thứ nhất, về khía cạnh xem xét sản phẩm, ngƣời phát triển muốn kiểm tra phần mềm nhƣ một phần tử của hệ thống hoạt động thì cần phải thực hiện thông qua hoạt động kiểm thử phẩn mềm. Lý do quan trọng thứ hai là khi thực hiện tốt hoạt động kiểm thử, chúng ta sẽ hạn chế đƣợc chi phí cho các thất bại do lỗi gây ra sau này. Đây chính là hiệu quả của hoạt động kiểm thử mang lại và cũng chính là mục tiêu của ngƣời phát triển hệ thống khi thực hiện hoạt động kiểm thử phần mềm. Ngoài ra còn có một lý do liên quan đến giải pháp phát triển, khi thực hiện hoạt động kiểm thử, đội phát triển sẽ có kế hoạch tốt nâng cao chất lƣợng suốt quá trình phát triển phần mềm [4]. -7- Luận văn cao học Dương Thị Phượng Chất lƣợng phần mềm là một khái niệm đa chiều, không dễ định nghĩa đơn giản theo cách chung cho các sản phẩm là: “Sản phẩm đƣợc phát triển phù hợp với đặc tả của nó.” (Ian Somerville [6] trích dẫn định nghĩa của Crosby). Có một số vấn đề khó trong hệ thống phần mềm, đó là: Đặc tả phải định hƣớng theo những đòi hỏi về chất lƣợng của khách hàng (nhƣ tính hiệu quả, độ tin cậy, tính dễ hiểu, tính bảo mật,…) và những yêu cầu của chính tổ chức phát triển phần mềm vốn không có trong đặc tả (nhƣ các yêu cầu về khả năng bảo trì, tính sử dụng lại,..) Một số yêu cầu về chất lƣợng cũng rất khó chỉ ra một cách rõ ràng (nhƣ tính bảo trì). Những đặc tả phần mềm thƣờng không đầy đủ và hay mâu thuẫn. Vì thế phải có sự thỏa hiệp về chất lƣợng: Chúng ta không thể đợi các đặc tả hoàn thiện trƣớc khi chú ý đến quản lý chất lƣợng, chúng ta phải sắp xếp các thủ tục để hoàn thiện chất lƣợng mặc dù đặc tả chƣa hoàn thiện. Quản lý chất lƣợng không chỉ quan tâm đến việc làm hạn chế tối thiểu những khiếm khuyết của sản phẩm và đảm bảo tuân theo đặc tả, mà còn phải quan tâm đến những thuộc tính chất lƣợng khác của sản phẩm. Trên quan điểm qui trình, kiểm thử phần mềm là một phần của xác minh và thẩm định phần mềm. Nếu phần mềm là thành phần của hệ thống lớn hơn thì kiểm thử phần mềm cũng đƣợc xem nhƣ là một phần của quản lý và đảm bảo chất lƣợng. Và để đạt phần mềm chất lƣợng cao, thì kiểm thử có thể coi là một thành phần chủ yếu của hoạt động đảm bảo chất lƣợng phần mềm. 1.1.2. Vai trò của kiểm thử phần mềm Thực tế đã chứng minh hoạt động kiểm thử có vai trò vô cùng quan trọng trong tiến trình phát triển phần mềm. Vai trò đó đƣợc thể hiện qua chi phí và hiệu quả của hoạt động kiểm thử mang lại. Về mặt chi phí, hoạt động kiểm thử chiếm khoảng 40% tổng công sức phát triển phần mềm và chiếm tới hơn -8- Luận văn cao học Dương Thị Phượng 30% tổng thời gian phát triển. Ngoài ra với các phần mềm có ảnh hƣởng tới sinh mạng thì chi phí kiểm thử có thể gấp từ 3 đến 5 lần tổng các chi phí khác cộng lại [4]. Vai trò của hoạt động kiểm thử phần mềm còn thể hiện ở hiệu quả mà nó mang lại, khi việc kiểm thử phần mềm đạt kết quả tốt sẽ có hiệu quả rất lớn trong việc giảm chi phí phát triển và làm tăng độ tin cậy của sản phẩm phần mềm. 1.1.3. Mục đích của kiểm thử phần mềm Là thiết kế đƣợc những trƣờng hợp kiểm thử để có thể phát hiện một cách có hệ thống những loại lỗi khác nhau và thực hiện công việc đó với lƣợng thời gian và tài nguyên tối ƣu nhất. Tuy nhiên kiểm thử phần mềm không thể khẳng định rằng phần mềm không còn khiếm khuyết. Nhƣ vậy ta có thể kết luận, mục tiêu đầu tiên và trƣớc mắt của hoạt động kiểm thử phần mềm là tạo ra các ca kiểm thử để tìm ra lỗi của phần mềm. Mục tiêu cuối cùng và cũng là mục tiêu mà ngƣời phát triển hƣớng tới là kiểm thử phần mềm sẽ giúp cho ngƣời phát triển có một chƣơng trình tốt, chi phí thấp nhƣng vẫn đảm bảo đƣợc chất lƣợng phần mềm trƣớc khi bàn giao sản phẩm. Hình 1.1 mô tả vị trí của kiểm thử phần mềm trong quy trình phát triển phần mềm. Trong quy trình này, kiểm thử phần mềm đƣợc tiến hành sau khi cài đặt xong các đơn vị (unit) hoặc tiến hành tích hợp hệ thống và kiểm thử chấp nhận. Phân tích Thiết kế Mã hóa KIỂM THỬ Kế hoạch kiểm thử Các trƣờng hợp kiểm thử Dữ liệu kiểm thử Bàn giao SP Các báo cáo kiểm thử Hình 1.1. Giai đoạn kiểm thử trong quy trình phát triển phần mềm -9- Luận văn cao học Dương Thị Phượng 1.2. Quy trình kiểm thử phần mềm Yêu cầu, mã nguồn Lập kế hoạch kiểm thử Nhật ký Thiết kế các ca kiểm thử Kế hoạch kiểm thử Chuẩn bị dữ liệu kiểm thử Các ca kiểm thử Chạy chƣơng trình với dữ liệu kiểm thử Dữ liệu kiểm thử So sánh các kết quả với các trƣờng hợp kiểm thử Kết quả kiểm thử Báo cáo kiểm thử Hình 1.2. Quy trình kiểm thử phần mềm Qui trình kiểm thử phần mềm chứa các bƣớc cơ bản nhƣ mô tả trong hình 1.2. Dƣới đây là mô tả chi tiết nội dung của các bƣớc trên. - Lập kế hoạch kiểm thử. Bƣớc đầu tiên là lập kế hoạch cho tất cả các hoạt động sẽ đƣợc thực hiện và các phƣơng pháp đƣợc sử dụng. Các chuẩn IEEE 1012-1986 bao gồm các thông tin về tác giả chuẩn bị kế hoạch, danh sách liệt kê của kế hoạch kiểm thử. - Thiết kế các ca kiểm thử. Các ca kiểm thử là các đặc tả đầu vào cho kiểm thử và đầu ra mong đợi của hệ thống cùng với các câu lệnh đƣợc kiểm thử. Có một vài phƣơng pháp thiết kế ca kiểm thử và các qui tắc từ các nhà thiết kế kiểm thử có kinh nghiệm. Tuy nhiên, có hai chiến lƣợc kiểm thử cơ bản; + Phƣơng pháp kiểm thử hộp đen để kiểm thử dựa trên chức năng. Phƣơng pháp này có khả năng phát hiện ra các lỗi/khiếm khuyết do thiếu sót các chức năng của hệ thống. - 10 - Luận văn cao học Dương Thị Phượng + Phƣơng pháp kiểm thử hộp trắng để kiểm thử cấu trúc bên trong của chƣơng trình. Phƣơng pháp này cho phép phát hiện các lỗi tiềm năng mà rất khó phát hiện bởi phƣơng pháp kiểm thử hộp đen. + Giống nhƣ nguyên lý tảng băng trôi, phƣơng pháp kiểm thử hộp đen chỉ phát hiện ra đƣợc các lỗi ứng với phần nổi của tảng băng trong khi phƣơng pháp kiểm thử hộp trắng cho phép phát hiện các lỗi ứng với phần chìm của nó. - Xử lý đo lƣờng kiểm thử bằng cách thu thập dữ liệu. Ở đây, ngƣời kiểm thử không thể trực tiếp cải tiến chƣơng trình mà họ chỉ có thể đánh giá nó. - Đánh giá sản phẩm phần mềm để xác nhận sản phẩm có thể sẵn sàng phát hành đƣợc chƣa? Đƣa ra báo cáo kiểm thử để hoàn thành quá trình kiểm thử. - 11 - Luận văn cao học Dương Thị Phượng CHƯƠNG 2 PHƯƠNG PHÁP PHÂN HOẠCH TRONG KIỂM THỬ HỘP ĐEN 2.1. Phƣơng pháp kiểm thử dựa trên phân hoạch tƣơng đƣơng Theo lý thuyết tập hợp và logic của tác giả Hoàng Xuân Sính - NXB Giáo dục – 1999, phƣơng pháp phân hoạch tƣơng đƣơng đƣợc định nghĩa nhƣ sau: Quan hệ  trên hai tập A và B là một tập con của tích đề các A  B, nghĩa là a b trong đó a A và b  B. Quan hệ có thể đƣợc định nghĩa trên chính tập A, tức là khi B = A. Quan hệ trên tập A gọi là phản xạ nếu a a với aA Quan hệ trên tập A gọi là đối xứng nếu a b  b a với a, bA Quan hệ trên tập A gọi là bắc cầu nếu a b và b c  a c với a,b,c  A Một quan hệ có tính phản xạ, đối xứng và bắc cầu gọi là quan hệ tƣơng đƣơng. Chẳng hạn quan hệ “=” trên tập N (số nguyên) là quan hệ tƣơng đƣơng nhƣng quan hệ “>” trên tập N thì không phải. Một quan hệ tƣơng đƣơng phân hoạch tập hợp thành các lớp tƣơng đƣơng rời rạc. Chẳng hạn quan hệ =(a,b): a, b  N, a+b là số chẵn có hai phân hoạch {0, 2, 4, …} và {1, 3, 5, …}. Nhƣ vậy dựa vào bản chất của toán học nói trên, trong kiểm thử phần mềm ngƣời ta đã áp dụng để đƣa ra phƣơng pháp "Phân hoạch tƣơng đƣơng". Phƣơng pháp phân hoạch tƣơng đƣơng trong kiểm thử phần mềm đƣợc thực hiện nhƣ sau: Các lớp tƣơng đƣơng đƣợc nhận dạng bằng cách lấy mỗi điều kiện đầu vào (thông thƣờng là một câu lệnh hoặc một cụm từ trong đặc tả) và - 12 - Luận văn cao học Dương Thị Phượng phân hoạch nó thành hai hoặc nhiều nhóm. Các lớp tƣơng đƣơng biểu diễn một tập các trạng thái hợp lệ hoặc không hợp lệ cho điều kiện đầu vào. Điều kiện đầu vào là giá trị số xác định, hoặc miền giá trị, tập giá trị có liên quan, hoặc điều kiện logic. Để làm điều này, chúng ta sử dụng bảng liệt kê các lớp tƣơng đƣơng. Bảng 2.1 - Mẫu bảng liệt kê các lớp tƣơng đƣơng Điều kiện vào/ra Các lớp tƣơng đƣơng hợp lệ Các lớp tƣơng đƣơng không hợp lệ Các lớp tƣơng đƣơng có thể đƣợc định nghĩa theo các nguyên tắc: 1. Nếu điều kiện đầu vào xác định một khoảng giá trị, thì phân hoạch thành một lớp tƣơng đƣơng hợp lệ và một lớp tƣơng đƣơng không hợp lệ. Chẳng hạn, nếu đầu vào x nằm trong khoảng [0,100], lớp hợp lệ là (0 <= x <= 100), các lớp không hợp lệ là (x < 0) và (x > 100). 2. Nếu điều kiện đầu vào yêu cầu một giá trị xác định, phân hoạch thành một lớp tƣơng đƣơng hợp lệ và hai lớp tƣơng đƣơng không hợp lệ. Chẳng hạn, nếu đầu vào x=5, thì lớp hợp lệ là (x= 5), các lớp không hợp lệ là (x <5) và (x >5). 3. Nếu điều kiện đầu vào xác định một phần tử của tập hợp, thì phân hoạch thành một lớp tƣơng đƣơng hợp lệ và một lớp tƣơng đƣơng không hợp lệ. Chẳng hạn, nếu đầu vào x thuộc tập các giá trị tháng trong năm, Months = {“Jan”, …, “Dec”}, thì lớp tƣơng đƣơng hợp lệ là (x  Months) và lớp tƣơng đƣơng không hợp lệ là (x  Months). 4. Nếu điều kiện đầu vào là Boolean, thì phân hoạch thành một lớp tƣơng đƣơng hợp lệ và một lớp tƣơng đƣơng không hợp lệ tƣơng ứng với hai trạng thái True và False. - 13 - Luận văn cao học Dương Thị Phượng Ngoài ra, một nguyên tắc thứ năm đƣợc bổ sung là sử dụng khả năng phán đoán, kinh nghiệm và trực giác của ngƣời kiểm thử. Cơ sở của việc phân chia miền dữ liệu đầu vào thành các lớp tƣơng đƣơng là vì dữ liệu trong một lớp tƣơng đƣơng tác động nhƣ nhau lên chƣơng trình, tạo ra cùng một trạng thái đúng hay sai của chƣơng trình, tức là các phần tử trong cùng một lớp tƣơng đƣơng sẽ có cùng tính chất và thuộc tính [4]. Giả sử các tập con A1, A2, A3 … của tập X tạo nên một phân hoạch của X, nếu: n ( Ai  X ) i 1 và ( Ai  A j ) =  và (Ai  ) Hình 2.1 - Nguyên tắc phân hoạch tập hợp. Công thức mô tả trong hình 2.1 cho chúng ta thấy rằng, để tránh việc đƣa ra các lớp tƣơng đƣơng không hợp lệ tức là thực hiện phân hoạch tƣơng đƣơng không chính xác, cần chú ý một số nguyên tắc sau: Các lớp phân hoạch con là những lớp hoàn toàn độc lập tức là hai lớp tƣơng đƣơng bất kì không đƣợc có phần tử chung giao nhau. Khi chúng ta thực hiện phân lớp tƣơng đƣơng thì không để tồn tại một lớp con là tập rỗng. Hợp của các lớp con phải chứa toàn bộ các phần tử của tập ban đầu để đảm bảo tính đầy đủ của dữ liệu sau khi phân lớp tƣơng đƣơng. Việc thiết kế ca kiểm thử cho phân lớp tƣơng đƣơng dựa trên sự đánh giá về các lớp tƣơng đƣơng với một điều kiện vào. Xác định các trường hợp kiểm thử Bƣớc thứ hai trong phƣơng pháp phân hoạch tƣơng đƣơng là thiết kế các ca kiểm thử (sinh test cases) dựa trên sự ƣớc lƣợng của các lớp tƣơng đƣơng cho miền đầu vào. Tiến trình này đƣợc thực hiện nhƣ sau: 1. Gán một giá trị duy nhất cho mỗi lớp tƣơng đƣơng. - 14 - Luận văn cao học Dương Thị Phượng 2. Đến khi tất cả các lớp tƣơng đƣơng hợp lệ đƣợc phủ bởi các trƣờng hợp kiểm thử thì viết một trƣờng hợp kiểm thử mới phủ nhiều nhất có thể các lớp tƣơng đƣơng hợp lệ chƣa đƣợc phủ. 3. Đến khi tất cả các lớp tƣơng đƣơng không hợp lệ đƣợc phủ bởi các trƣờng hợp kiểm thử thì hãy viết các trƣờng hợp kiểm thử mới sao cho mỗi trƣờng hợp kiểm thử mới chỉ phủ duy nhất một lớp tƣơng đƣơng không hợp lệ chƣa đƣợc phủ. Các trƣờng hợp không hợp lệ đƣợc phủ bởi các trƣờng hợp kiểm thử riêng biệt do việc kiểm tra đầu vào có lỗi này sẽ bị che hoặc bỏ sót việc kiểm tra đầu vào có lỗi khác. Ví dụ 1: Sinh các ca kiểm thử cho một chƣơng trình thống kê danh sách kết quả các thí sinh thi cao học gồm: - Dữ liệu đầu vào là 3 đầu điểm: + D1 - điểm môn 1; + D2 - điểm môn 2; + D3 - điểm môn 3. - Kết quả trả về chia thành 3 dạng: "Dữ liệu sai"; "Đỗ"; "Trƣợt". Trong đó: D1, D2  [0, 10]; D3  [0, 100] - Kết quả trả về mong muốn:  "Dữ liệu sai" nếu: D1, D2  [0, 10]; D3  [0, 100]  "Đỗ" nếu:  "Trƣợt" nếu: D1, D2  [5, 10]; D3  [50, 100] D1, D2  [0, 5); D3  [0, 50) Áp dụng “Phân hoạch tƣơng đƣơng” theo lý thuyết tập hợp trong toán học ta chia điểm của mỗi môn thành từng phân hoạch nhƣ hình 2.2: - 15 - Luận văn cao học Dương Thị Phượng 0 5 10 00 0 D1 0 5 4 phân hoạch 10 4 phân hoạch D2 0 100 50 4 phân hoạch D3 Hình 2.2 - Phân lớp tƣơng đƣơng cho bài toán điểm thi cao học Bảng 2.2. Bảng liệt kê các lớp tƣơng đƣơng cho bài toán điểm thi cao học Điều kiện vào/ra Các lớp tƣơng đƣơng hợp lệ Các lớp tƣơng đƣơng không hợp lệ Điểm môn 1 (D1) 0 ≤ D1< 5 ; 5≤ D1≤ 10 D1 < 0 ; D1 >10 Điểm môn 2 (D2) 0 ≤ D2< 5 ; 5≤ D2≤ 10 D1 < 0 ; D1 >10 Điểm môn 3 (D3) 0 ≤ D1< 50 ; 50≤ D1≤ 100 D1 < 0 ; D1 >100 Giả sử mỗi phân hoạch (lớp tƣơng đƣơng hợp lệ và không hợp lệ) ta lấy 01 giá trị bất kỳ theo hình 2.3. -10 0 3 5 -11 0 4 5 -7 0 20 7 10 12 D1 8 10 15 D2 50 85 100 140 D3 Hình 2.3 - Chọn giá trị tại mỗi lớp tƣơng đƣơng cho bài toán điểm thi cao học - 16 - Luận văn cao học Dương Thị Phượng 2.1.1 Phân lớp tƣơng đƣơng mạnh Với phƣơng pháp này, sau khi phân hoạch miền giá trị của các biến đầu vào thành các lớp tƣơng đƣơng thì việc sinh các trƣờng hợp kiểm thử thực hiện theo nguyên tắc mỗi ca kiểm thử là một phần tử của tích đề các của các phân hoạch con đó. Do đó số lƣợng ca kiểm thử sinh ra chính là số phần tử của tích đề các này vậy số ca kiểm thử đƣợc sinh ra trong ví dụ là: 4 x 4 x 4 = 64 ca kiểm thử Bảng 2.3. Danh sách ca kiểm thử đƣợc sinh theo phân lớp tƣơng đƣơng mạnh TC_ID TC_01 TC_02 TC_03 TC_04 TC_05 TC_06 TC_07 TC_17 TC_18 TC_19 TC_20 TC_21 TC_22 TC_23 … TC_43 … TC_59 TC_60 TC_62 TC_63 TC_64 D1 -10 -10 -10 -10 -10 -10 -10 3 3 3 3 3 3 3 … 7 … 12 12 12 12 12 Đầu vào D2 -11 -11 -11 -11 4 4 4 -11 -11 -11 -11 4 4 4 … 8 … 8 8 15 15 15 D3 -7 20 85 140 -7 20 85 -7 20 85 140 -7 20 85 … 85 … 85 140 20 85 140 - 17 - Đầu ra mong muốn Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Trƣợt Trƣợt … Đỗ … Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Dữ liệu sai Luận văn cao học Dương Thị Phượng Ở trƣờng hợp phân lớp tƣơng đƣơng mạnh sẽ gần nhƣ bắt lỗi đƣợc tất cả các trƣờng hợp và đầu ra thực tế đúng nhƣ đầu ra mong muốn, tuy nhiên số lƣợt các ca kiểm thử tƣơng đối nhiều. 2.1.2 Phân lớp tƣơng đƣơng yếu Phân lớp tƣơng đƣơng yếu là một phƣơng pháp hay đƣợc sử dụng khi lựa chọn phân lớp tƣơng đƣơng. Phƣơng pháp này vẫn dựa trên nguyên tắc chung của phân lớp tƣơng đƣơng, tức là chúng ta cũng chia miền dữ liệu của các biến đầu vào thành các lớp con tƣơng đƣơng. Việc sinh các trƣờng hợp kiểm thử trong phân lớp tƣơng đƣơng yếu phải đảm bảo mỗi lớp con đƣợc kiểm tra ít nhất một lần. Điều này có nghĩa là trong tập ca kiểm thử sinh ra thì giá trị của phần tử đại diện cho mỗi lớp con phải đƣợc kiểm thử ít nhất một lần. Nhƣ vậy, số trƣờng hợp kiểm thử trong phân lớp tƣơng đƣơng yếu bằng giá trị lớn nhất của số phân hoạch biến đầu vào hay chính là lực lƣợng lớn nhất của phân hoạch. Theo nguyên tắc của phân lớp tƣơng đƣơng yếu, ở ví dụ 1 chúng ta xây dựng đƣợc 04 ca kiểm thử đƣợc biểu diễn trong bảng 2.4 dƣới đây. Bảng 2.4. Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng yếu TC_ID TC_01 Đầu vào (Input) D1 D2 D3 -10 -11 -7 Đầu ra mong muốn Dữ liệu sai TC_02 3 4 20 Trƣợt TC_03 7 8 85 Đỗ TC_04 12 15 140 Dữ liệu sai Ở trƣờng hợp phân lớp tƣơng đƣơng yếu bắt đƣợc các lỗi của chƣơng trình và trả về đầu ra đúng nhƣ đầu ra mong muốn, số lƣợt các ca kiểm thử ít, tuy nhiên chúng ta không thể khẳng định rằng đã bắt hầu hết các lỗi chƣa. Chính vì vậy phƣơng pháp này gần nhƣ không dùng. - 18 -
- Xem thêm -