N đột biến lựa chọn

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Kỹ thuật kiểm thử đột biến và ứng dụng để kiểm thử các chương trình Java (Trang 37 - 39)

3.1. Giảm chi phí tính tốn

3.1.1.3. N đột biến lựa chọn

Offutt và đồng nghiệp [22, 25] mở rộng nghiên cứu đột biến ràng buộc của Mathur bằng cách sử dụng tất cả các toán tử đột biến trừ đi hai toán tử tạo ra hầu hết các đột biến (được gọi là phương pháp 2 - đột biến lựa chọn).

Offutt và đồng nghiệp đưa ra giả thuyết phương pháp N – đột biến lựa chọn, trong đó N là số tốn tử đột biến tạo ra nhiều đột biến nhất được loại bỏ. Ban đầu, 28 chương trình đã được kiểm tra để xác định tỷ lệ đột biến được tạo ra bởi mỗi toán tử đột biến, như thể hiện trong hình 3.2. Dựa trên đó, họ đề xuất loại bỏ hai tốn tử SVR và ASR cho 2 - đột biến lựa chọn, cùng với SCR và CSR cho 4 - đột biến lựa chọn, kết hợp với ACR và SRC cho 6 - đột biến lựa chọn.

Đối với mỗi phương pháp lựa chọn, bộ tạo dữ liệu thử tự động Godzilla [28] được dùng để tạo ra dữ liệu thử chất lượng dựa trên đột biến lựa chọn. Sau đó, các tập dữ liệu thử này được thực hiện với tất cả các đột biến để xác định hiệu quả của chúng đối với tất cả các đột biến - tức là tỷ lệ đột biến của chúng. Các kết quả mang lại nhiều hứa hẹn. Phương pháp 2 - đột biến lựa chọn cho kết quả tỷ lệ đột biến 99,99% và tiết kiệm 23,98% số lượng đột biến không phải kiểm tra. Đối với 4 - đột biến lựa chọn thu được những số liệu tương ứng này là 99,84% và 41,36%, và 6 - đột biến lựa chọn là 99,71% và 60,56%. Toán tử đột biến T ỷ lệ đ ột b iế n ti ết ki ệm đư ợc

Như vậy, các tỷ lệ đột biến cao thu được từ các tập dữ liệu thử chất lượng dựa trên lựa chọn cho thấy rằng các dữ liệu thử được thiết kế để diệt đột biến từ các toán tử đột biến tạo ra ít đột biến cũng có khả năng diệt các đột biến từ các toán tử đột biến tạo ra nhiều đột biến.

Offutt và đồng nghiệp tiếp tục nghiên cứu để loại bỏ thêm các đột biến nhằm tiết kiệm thêm chi phí mà khơng ảnh hưởng nhiều đến hiệu quả của các tập dữ liệu thử được tạo ra [22]. 22 toán tử đột biến chuẩn được sử dụng trong Mothra được chia thành ba nhóm:

 Các toán tử thay thế toán hạng - thay thế từng tốn hạng của chương

trình bằng tốn hạng hợp lý khác.

 Các toán tử thay đổi biểu thức của chương trình - thay thế các tốn tử của chương trình và thêm các tốn tử mới.

 Các toán tử thay đổi câu lệnh - thay đổi các câu lệnh hoàn toàn.

Offutt và đồng nghiệp thực hiện ba thí nghiệm để tạo ra dữ liệu thử chất lượng, loại trừ một nhóm các tốn tử đột biến trong từng thí nghiệm. Khi so sánh với tất cả các đột biến, kết quả thu được 5 toán tử biểu thức (ABS, AOR, LCR, ROR, UOI) là hữu ích nhất. Các thí nghiệm đã chứng minh rằng các tập dữ liệu thử chất lượng tạo ra từ 5 toán tử này đạt tỷ lệ đột biến trung bình là 99,51% và tiết kiệm 77,56% số lượng các đột biến phải kiểm tra. Các kết quả này tương tự như các tỷ lệ đột biến trung bình thu được bằng cách sử dụng lấy mẫu đột biến với tỷ lệ lấy mẫu 25% (tiết kiệm 75%): từ 98,27% đến 99,01%.

Tuy nhiên, không giống như lấy mẫu đột biến, phương pháp này đã tập trung vào lớp đột biến phải kiểm tra, cung cấp độ tin cậy vào các toán tử đột biến giúp tạo ra dữ liệu thử mạnh hơn (tức là chúng có thể diệt nhiều đột biến hơn).

3.1.2. Làm nhanh hơn

Các kỹ thuật làm nhanh hơn nhằm mục đích tạo ra và chạy các chương trình đột biến nhanh hơn các hệ thống chuẩn. Hầu hết các hệ thống đột biến truyền thống thông dịch các đột biến của chúng, nó thì thuận tiện nhưng chậm hơn so với thực hiện biên dịch chương trình.

Proteum (hệ thống đột biến cho C) [6] tạo ra và biên dịch từng đột biến trước khi thực hiện, gọi là kỹ thuật biên dịch riêng rẽ. Điều này sẽ làm tăng tốc

ra, kết quả là trong khi xây dựng các chương trình được biên dịch, sự thực thi vẫn đang diễn ra [18].

Để tránh tắc nghẽn, Krauser đã sử dụng một cơ chế đột biến tích hợp trình

biên dịch [12], sử dụng một trình biên dịch mới để biên dịch đồng thời PUT và

phát triển các đoạn chương trình biểu diễn cho các đột biến. Trước khi thực thi, các đoạn chương trình cần thiết được áp dụng để PUT được biên dịch cung cấp một chương trình đột biến thực hiện với tốc độ biên dịch. Do đó, PUT chỉ cần được biên dịch một lần. Các kết quả của Krauser chứng minh rằng phương pháp tích hợp trình biên dịch làm tăng tốc độ đáng kể (tính bằng tỷ lệ giữa các kỹ thuật thời gian thực hiện trung bình trên mỗi đột biến để tạo ra và thực hiện tất cả các đột biến đối với một trường hợp kiểm thử) so với biên dịch riêng rẽ khi thời gian thực hiện PUT thấp. Ví dụ, sử dụng phương pháp tích hợp trình biên dịch cho chương trình TRANSPOSE nhanh hơn 7,58 lần so với sử dụng kỹ thuật biên dịch riêng rẽ và làm cho chương trình TRITYP nhanh hơn 27,33 lần.

Nói chung, thời gian thực hiện chương trình ảnh hưởng đến sự gia tăng tốc độ của phương pháp tích hợp trình biên dịch. Với thời gian thực hiện thấp (tức là thời gian thực hiện < thời gian biên dịch), phương pháp biên dịch riêng rẽ thực hiện các đột biến nhanh hơn. Sự chậm trễ lúc biên dịch xảy ra trong toàn bộ thời gian thực hiện tất cả các đột biến tăng và vì vậy làm tăng thời gian thực hiện đột biến trung bình. Tuy nhiên, với số lần thực hiện cao hơn (tức là thời gian thực hiện > thời gian biên dịch), thời gian biên dịch sẽ trở nên ít quan trọng. Các đột biến có thể dễ dàng được biên dịch trước khi thực hiện có nghĩa là thời gian trung bình để thực hiện từng đột biến bằng phương pháp biên dịch riêng rẽ chỉ phụ thuộc vào thời gian thực hiện - giống như kỹ thuật tích hợp trình biên dịch, có nghĩa là tỷ lệ gia tăng tốc độ các phương pháp là 1/1.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Kỹ thuật kiểm thử đột biến và ứng dụng để kiểm thử các chương trình Java (Trang 37 - 39)

Tải bản đầy đủ (PDF)

(76 trang)