4.4.5. Tạo và phân tích đột biến cho chương trình SXQSort.java bằng
4.4.5.1. Tạo các đột biến
MuJava tạo ra hai loại đột biến: đột biến truyền thống và đột biến lớp tương ứng với hai loại toán tử đột biến. Nếu chúng ta chọn tất cả các toán tử đột biến mức phương thức và mức lớp, MuJava tạo ra 262 đột biến cho chương trình SXQSort.Java, trong đó có 258 đột biến truyền thống và 4 đột biến lớp. Nếu MuJava thực thi tất cả những đột biến này với 22 trường hợp kiểm thử được xây dựng trong SXQSortTest.java sẽ tốn rất nhiều thời gian, đồng thời số lượng các đột biến tương đương cũng tăng. Do đó, sẽ làm tăng chi phí kiểm thử cho chương trình SXQSort.Java.
Để giảm chi phí kiểm thử cho chương trình SXQSort.Java, chúng ta sẽ sử dụng phương pháp đột biến ràng buộc bằng cách chỉ chọn một số toán tử đột
biến mức phương thức và mức lớp trong MuJava để tạo đột biến. Trong chương trình SXQSort.Java xuất hiện các toán tử: { +, -}, {++, --}, {<=, >=, <, >, = =,!=}, {&&}. Đây là các tốn tử có thể bị “viết nhầm” bởi các lập trình viên, lỗi có thể xảy ra ở những tốn tử này. Ngoài ra, việc khai báo và sử dụng các biến {L, R, n, i, j, k}, {a[1], a[2], …, a[n]} có thể là khơng chính xác. Vì vậy, một số tốn tử đột biến mức phương thức và mức lớp trong MuJava được chọn để tạo các đột biến cho chương trình SXQSort.java như sau:
Tốn tử đột biến mức phƣơng thức
Tốn tử Mơ tả Ví dụ
AORB Thay thế các toán tử số học nhị nguyên a = b + c a = b − c AORS Thay thế các toán tử số học short – cut a ++ a −−
ROR Thay thế các toán tử quan hệ if(a < b) if(a > b) COR Thay thế các toán tử điều kiện
while(a < b) && (c > d) while(a < b) || (c > d)
Toán tử đột biến mức lớp
Tốn tử Mơ tả Ví dụ
JTI Thêm từ khóa this n this.n
JSI Thêm từ bổ nghĩa static
public int n; public static int n; JID Xóa khởi tạo biến thành phần
public int[] a = new int[n];
public int[] a
Bảng 4.6 – Các toán tử đột biến mức phương thức và mức lớp được chọn để tạo đột biến cho SXQSort.java
Trong thành phần Mutants Genertor của MuJava, chúng ta sẽ đánh dấu
chọn các toán tử đột biến mức phương thức: AORB, AORS, ROR, COR, chọn các toán tử đột biến mức lớp: JTI, JSI, JDI, và chọn file SXQSort.java. Sau đó, bấm nút “Generate” để tạo các đột biến cho chương trình SXQSort.java, được biểu diễn ở hình 4.10.
Hình 4.10 – Giao diện tạo đột biến cho SXQSort.java
MuJava tạo ra 43 đột biến truyền thống cho chương trình SXQSort.java, được biểu diễn ở Tab Traditional Mutants Viewer trong thành phần Mutants
Hình 4.11 –Hiển thị đột biến truyền thống của SXQSort.java
MuJava tạo ra 4 đột biến lớp cho chương trình SXQSort.java, được biểu diễn ở Tab Class Mutants Viewer trong thành phần Mutants Genertor của
MuJava.
Như vậy, MuJava đã tạo ra 47 đột biến cho chương trình SXQSort.java, trong đó có 43 đột biến truyền thống và 4 đột biến lớp, chỉ áp dụng các toán tử đột biến mức phương thức: AORB, AORS, ROR, COR và các toán tử đột biến mức lớp: JTI, JSI, JID.