Dick Lipton là người đầu tiên đề xuất kỹ thuật kiểm thử đột biến [1], sau đó lĩnh vực này được đánh dấu sự ra đời và phổ biến bởi DeMillo [2] và Sayward [3]. Kiểm thử đột biến là kỹ thuật kiểm thử dựa trên lỗi nhằm cung cấp một tiêu chuẩn kiểm thử được gọi là tỷ lệ đột biến. Tỷ lệ đột biến được sử dụng để đánh giá khả năng phát hiện lỗi của tập dữ liệu thử.
Nguyên lý chung của kiểm thử đột biến là tạo ra các phiên bản của chương trình có chứa các lỗi đơn giản, các lỗi được sử dụng bởi kiểm thử đột biến đại diện cho các lỗi sơ suất do lập trình viên thường tạo ra. Các lỗi như thế được gieo một cách thận trọng vào chương trình gốc, bằng cách thay đổi cú pháp đơn giản, để tạo một tập các chương trình lỗi. Mỗi chương trình lỗi được gọi là đột biến, mỗi đột biến mang một thay đổi cú pháp khác nhau. Cụ thể, cho P là một chương trình gốc, P’ là một đột biến của P bằng cách thực hiện một thay đổi nhỏ về cú pháp trong chương trình. Chẳng hạn, trong Bảng 1, là chương trình gốc, và là các đột biến của bằng cách thay đổi cú pháp trong phép toán quan hệ, thay thế bởi đối với ; thay bởi đối với . Các câu lệnh bị đột biến được đánh dấu bởi ký hiệu gạch chân.
Bảng 1. Ví dụ minh họa các đột biến
Chương trình gốc P |
Đột biến P’ |
Đột biếnP’’ |
int max(int x,int y) { int mx=x; if (x < y) mx=y return mx; } |
int max(int x,int y) { int mx=x; if (x > y) mx=y return mx; } |
int max(int x,int y) { int mx=x; if (x <= y) mx=y return mx; } |
Sau khi tạo ra các đột biến, mỗi đột biến và chương trình gốc được thực thi trên cùng một bộ dữ liệu thử, nếu kết quả của đột biến và chương trình gốc khác nhau, thì đột biến đó được gọi là đột biến bị diệt. Nếu không thể tìm thấy dữ liệu thử sao cho khi thực thi đột biến và chương trình gốc cho kết quả khác nhau, thì đột biến đó được gọi là đột biến tương đương. Chẳng hạn, trong ví dụ trên, P'' là đột biến tương đương. Vì P và P" luôn cho cùng kết quả với mọi dữ liệu thử. Sau khi thực thi trên tất cả các dữ liệu thử, tỷ lệ đột biến (Mutation Score - MS) được tính toán bằng tỷ lệ phần trăm của số các đột biến bị diệt chia cho số đột biến không tương đương. Mục tiêu của kiểm thử viên là tạo ra bộ dữ liệu thử có tỷ lệ đột biến bằng 1, nghĩa là tất cả các đột biến đều bị diệt. Khi đó, bộ dữ liệu thử phát hiện được tất cả các lỗi chèn vào trong chương trình.
Tỷ số được gọi là tỷ lệ đột biến.
Trong đó, : tỷ lệ đột biến; : là đột biến đã bị diệt; : là tổng số các đột biến; : là tổng số đột biến tương đương. Tỷ lệ đột biến cho phép đánh giá chất lượng bộ dữ liệu thử.
» Tin mới nhất:
» Các tin khác: