Toán tử đột biến

Một phần của tài liệu Kỹ thuật kiểm thử đột biến và ứng dụng để kiểm thử các chương trình Java (Trang 27)

Phần lớn các nghiên cứu về kiểm thử đột biến chủ yếu dựa trên các chương trình Fortran do tính sẵn có và dễ sử dụng của hệ thống đột biến Mothra [18]. Mothra (hệ thống đột biến cho Fortran) sử dụng 22 toán tử đột biến để tạo ra các

đột biến cho 77 chương trình Fortran [11], được biểu diễn bảng 2.1. Các toán tử này đã được phát triển và chọn lọc cách đây hơn 20 năm, ngày nay vẫn còn nhiều toán tử được sử dụng dưới một số hình thức chẳng hạn như sử dụng toán tử thay thế toán tử logic và một số toán tử tương tự như các toán tử LCR và SDL của Mothra, MuJava (hệ thống đột biến cho Java) vẫn sử dụng các toán tử ABS, AOR, LCR, ROR và UOI [15].

Toán tử đột biến Mô Tả

AAR Thay thế tham chiếu mảng cho tham chiếu mảng ABS Thêm giá trị tuyệt đối

ACR Thay thế tham chiếu mảng cho hằng số AOR Thay thế toán tử số học

ASR Thay thế tham chiếu mảng cho biến vô hướng CAR Thay thế hằng số cho tham chiếu mảng

CNR Thay thế tên mảng tương đương CRP Thay thế hằng số

CSR Thay thế hằng cho biến vô hướng DER Thay thế kết thúc câu lệnh DO DSA Thay đổi câu lệnh DATA

GLR Thay thế nhãn GOTO

LCR Thay thế kết nối logic ROR Thay thế toán tử logic

RSR Thay thế câu lệnh RETURN SAN Phân tích câu lệnh

SAR Thay thế biến vô hướng cho tham chiếu mảng SCR Thay thế vô hướng cho hằng

SDL Xóa câu lệnh

SRC Thay thế hằng số nguồn SVR Thay thế biến vô hướng UOI Thêm toán tử nhị nguyên

Các toán tử đột biến được thiết kế để làm lộ ra các lỗi trong PUT khi thực hiện. Ví dụ, toán tử thay thế toán tử quan hệ ROR. Đột biến tạo ra từ toán tử này sẽ giống với PUT ngoại trừ một toán tử quan hệ đơn được thay thế bằng một toán tử quan hệ khác, chẳng hạn như câu lệnh x < y sẽ được thay thế bằng x <= y với mục đích để kiểm tra xem trong trường hợp < này, toán tử quan hệ có sử dụng đúng hay không.

Nếu PUT thực sự là đúng thì nó có thể tìm thấy các dữ liệu thử tạo ra các kết quả đầu ra không đúng cho tất cả các phiên bản toán tử quan hệ không tương đương, do đó loại bỏ những đột biến đó để được phiên bản đúng của chương trình. Tuy nhiên, trước khi kiểm thử, chúng ta không biết được liệu PUT là đúng hay không. Thay vào đó, PUT phải được giả sử là đúng, trừ khi một dữ liệu thử có thể chứng minh khác. Trong tình huống đó, tỷ lệ các đột biến không tương đương bị diệt bởi bộ dữ liệu thử là thước đo cho chất lượng của bộ dữ liệu thử và thước đo của sự tin tưởng vào tính đúng đắn của PUT.

Gần đây, nghiên cứu về kiểm thử đột biến đã tập trung phát triển các toán tử đột biến mới, đặc biệt cho các môi trường hướng đối tượng, cụ thể tập trung vào Java [5, 14, 15, 16]. Các ngôn ngữ lập trình hướng đối tượng khác với các chương trình truyền thống rất nhiều, đặc biệt trong cấu trúc và trong mô hình như tính kế thừa và tính đa hình. Các khác biệt này gây ra nhiều tiềm năng xuất hiện các lỗi mới, mà cần phải được biểu diễn trong các hệ thống kiểm thử đột biến hướng đối tượng để có hiệu quả. Tuy nhiên, nghiên cứu này tập trung kiểm thử các chương trình đơn giản, nhưng hầu hết các toán tử đột biến truyền thống vẫn còn hiệu quả.

Một phần của tài liệu Kỹ thuật kiểm thử đột biến và ứng dụng để kiểm thử các chương trình Java (Trang 27)

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

(76 trang)