(+84) 236.3827111 ex. 402

Tỷ lệ đột biến


Cho trước một chương trình gốc , một đột biến được xây dựng bằng cách tạo ra một sửa đổi nhỏ trong cú pháp của chương trình . Ví dụ như trong bảng 1, là chương trình gốc, và là các đột biến của p khi thay đổi cú pháp trong những toán tử quan hệ: thay thế (x < y) bởi (x > y) cho ; thay thế (x < y) bởi (x <= y) cho . Những dòng lệnh bị đột biến đã được gạch chân.

Bảng 1. Ví dụ về đột biến.

Chương trình gốc P

Đột biến P’

Đột biến P’’

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 sẽ cùng được thực thi dưới một dữ liệu thử duy nhất, nếu kết quả đầu ra của đột biến khác với của chương trình gốc, đột biến này sẽ được gọi là bị diệt (killed). Nếu không có dữ liệu thử nào có thể diệt được đột biến, đột biến sẽ được gọi là đột biến tương đương (equivalent), tức là đột biến đó tương đương về mặt ngữ nghĩa so với chương trình gốc. Xét ví dụ phía trên, p'' là một đột biến tương đương vì p và p'' luôn cho ra kết quả giống nhau với mọi bộ dữ liệu thử. Sau khi chạy tất cả các đột biến và chương trình gốc trên bộ dữ liệu thử, một [NTB-KC1] tỉ lệ đột biến sẽ được tính toán bằng cách lấy phần trăm của số đột biến bị diệt chia cho tổng số đột biến không tương đương. Tỉ lệ đột biến (Mutation Score - MS) được tính bằng công thức sau:

Trong đó,

  • : tỷ lệ đột biến;
  • : là số lượng độ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.

[NTB-KC1]Bỏ