DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT
2.3. Kỹ thuật phân tích mã nguồn tìm lỗi tiềm ẩn cho các phương thức của lớp Java
2.3.7. Phân loại và lựa chọn các bộ dữ liệu kiểm thử
Thừa kế từ kết quả nghiên cứu của Carlos Pacheco và đồng sự [88,27] về sinh và phân loại tự động các bộ dữ liệu kiểm thử cho quá trình kiểm thử đơn vị đối với ngôn ngữ hướng đối tượng và tiếp tục phát triển, ứng dụng vào kiểm thử từng phương thức trong lớp. Thuật toán phân loại và lựa chọn các bộ dữ liệu kiểm thử được mơ tả trong Hình 2.8.
Kỹ thuật này chỉ ra cho kỹ sư kiểm thử biết phương thức sẽ bộc lộ những những điều kiện trước hay điều kiện sau nào không thỏa mãn với những bộ dữ liệu gì, đồng thời cũng chỉ ra phương thức chưa xử lý chặt các điều kiện nào tương ứng với những bộ dữ liệu kiểm thử khiến nó kém khả năng chịu lỗi. Dựa vào những thông tin này, kỹ sư kiểm thử hay lập trình viên sẽ biết phải sửa mã nguồn của phương thức vừa kiểm thử để nó khơng bộc lộ ra các lỗi hay tăng khả năng chịu lỗi.
Hình 2.8 Mơ hình kỹ thuật phân loại, lựa chọn các bộ dữ liệu kiểm thử
Bảng 2.6 [82] liệt kê tất cả các khả năng về kết quả kiểm tra các điều kiện trước và điều kiện sau cũng như phân loại một bộ dữ liệu kiểm thử dựa vào kết quả kiểm tra trong mơ hình điều kiện.
Bảng 2.6: Bảng quyết định phân loại các bộ dữ liệu kiểm thử dựa vào kết quả kiểm tra các điều kiện trong mơ hình.
Tất cả các điều kiện trước Tất cả các điều kiện sau Bộ dữ dữ liệu kiểm thử được phân loại với
đều đúng? đều đúng?
nhãn:
True True normal-operation
True False fault-revealing
False True normal-operation
False False less-fault-tolerance
Vậy, có 4 khả năng về kết quả kiểm tra điều kiện trước và điều kiện sau:
o Tất cả các điều kiện trước và điều kiện sau đều đúng: Trường hợp này có nghĩa là thơng qua việc kiểm tra các điều kiện trước và điều kiện sau chúng ta biết
được bộ dữ liệu kiểm thử mà phương thức nhận được hợp lệ và phương thức hoạt động bình thường, trả về kết quả chính xác. Do đó, chúng ta gán cho bộ dữ liệu nhãn normal-operation để thể hiện phương thức hoạt động bình thường với bộ dữ liệu kiểm thử này.
o Tất cả các điều kiện trước đều đúng, một số điều kiện sau sai: Thông qua việc kiểm tra các điều kiện trước và điều kiện sau thì bộ dữ liệu kiểm thử hợp lệ, nhưng phương thức hoạt động khơng chính xác khiến một số điều kiện sau sai.
Khi đó, chúng ta gán cho bộ dữ liệu kiểm thử nhãn fault-revealing (bộc lộ lỗi) để thể hiện phương thức bộc lộ ra một số lỗi (nhưng khơng chỉ ra được chính xác vị trí của lỗi) với bộ bộ dữ liệu kiểm thử này.
o Một số điều kiện trước sai, tất cả các điều kiện sau đều đúng: Phương thức hoạt động chính xác đối với bộ dữ liệu kiểm thử không hợp lệ. Khi phương thức hoạt động chính xác ta gán nhãn normal-operation. Khi phương thức thỏa mãn
được tất cả các điều kiện sau đồng nghĩa với việc nó đáp ứng được nhiệm vụ mà người lập trình mong muốn và phương thức cũng đã xử lý chặt được các điều kiện.
o Một số điều kiện trước và điều kiện sau sai: Phương thức hoạt động khơng chính xác đối với bộ dữ liệu kiểm thử không hợp lệ. Chúng ta gán cho bộ dữ liệu kiểm thử nhãn less-fault-tolerance (khả năng chị lỗi kém) trong trường hợp này để chỉ phương thức chưa xử lý chặt chẽ với bộ dữ liệu kiểm thử không hợp lệ. Điều này cũng nói lên rằng phương thức kém chịu lỗi và phương thức cần được sửa lại để có thể tăng khả năng chịu lỗi tốt hơn.
Với những bộ dữ liệu kiểm thử được phân loại với nhãn fault-revealing và less-fault- tolerance chúng ta tiếp tục sử dụng một kỹ thuật lựa chọn nữa để chọn ra một tập con từ một tập rất lớn các bộ dữ liệu kiểm thử đại diện cho các loại trường hợp phương thức bộc lộ lỗi và kém chịu lỗi. Bởi vì số lượng bộ dữ liệu kiểm thử sinh ra trong suốt bước thực hiện quá trình kiểm thử ở Hình 2.8 là rất lớn và có thể số lượng bộ dữ liệu kiểm thử được phân loại với nhãn fault-revealing và less-fault-tolerance cũng rất lớn. Để lựa chọn một tập con các bộ dữ liệu kiểm thử khiến phương thức bộc lộ lỗi (các bộ dữ liệu được phân loại với nhãn fault-revealing) chúng ta tiếp tục phân loại những bộ dữ liệu này thành các nhóm mà mỗi nhóm chứa những bộ dữ liệu có cùng các điều kiện sau khơng thỏa mãn. Sau đó, chọn ra trong mỗi nhóm một bộ dữ liệu để chuyển cho kỹ sư kiểm thử (sử dụng kỹ thuật phân vùng tương đương). Thực hiện tương tự cho việc lựa chọn bộ dữ liệu cho nhãn less-fault-tolerance.