Một vấn đề quan trọng đối với kiểm thử đột biến và kiểm thử nói chung là xác định liệu đầu ra từ việc thực hiện PUT với một dữ liệu thử cụ thể là chính xác hay không. Thường thì công việc này được làm thủ công, đòi hỏi rất nhiều nỗ lực của kiểm thử viên. Tình trạng này trở nên xấu hơn khi các bộ sản sinh dữ liệu thử tự động có liên quan, có thể tạo ra các dữ liệu thử mơ hồ, nghĩa là đầu ra của chúng rất khó để xác định. Lý tưởng nhất là kiểm thử viên yêu cầu một quy trình tự động mà có thể quyết định tính đúng đắn của dữ liệu thử dựa trên các đặc tả của chương trình. Chúng được gọi là các Oracle. Thật không may, không phải là khi nào cũng có thể xác định các quy trình như vậy, đây là vấn đề Oracle
[18]. Ví dụ, có thể có trường hợp, các đầu ra đó không được xác định cho toàn bộ miền đầu vào. Nghiên cứu này giả sử rằng tồn tại một Oracle thích hợp cho chương trình đang được kiểm thử, do đó tránh được vấn đề Oracle.
3.3. Kết luận
Kiểm thử đột biến được được xem là một kỹ thuật kiểm thử đơn vị mạnh để tìm ra tập dữ liệu thử hiệu quả giúp phát hiện các lỗi trong chương trình. Tuy nhiên, kiểm thử đột biến còn có một số hạn chế về chi phí tính toán và tự động hóa, được phân tích ở chương 2.
Nhằm nâng cao hiệu quả của kiểm thử đột biến, các nghiên cứu đã tập trung vào ba phương pháp để giảm chi phí tính toán: làm ít hơn, làm nhanh hơn và làm thông minh hơn. Tăng tự động hóa trong kiểm thử đột biến mắc phải ba trở ngại chính: tạo ra các dữ liệu thử, xác định các đột biến tương đương, và xác định tính đúng đắn đầu ra của chương trình. Những vấn đề này cần phải được khắc phục, ở một mức độ nhất định, cho ngành công nghiệp chấp nhận kiểm thử đột biến như một công cụ hữu hiệu.
Offutt đã phát triển phương pháp kiểm thử dựa trên ràng buộc (CBT) [80] để sản sinh dữ liệu thử tự động, các kết quả thực nghiệm là khá triển vọng, với CBT diệt được trung bình 97% các đột biến. Các kỹ thuật dựa trên tối ưu hoá trình biên dịch đã được áp dụng để phát hiện đột biến tương đương, các kết quả trong [83] khi thực hiện kiểm tra trên 15 chương trình, cho thấy các phương pháp này phát hiện tỷ lệ trung bình 10% các đột biến tương đương. Kiểm thử phần mềm đòi hỏi tính chính xác của dữ liệu thử thực hiện trên PUT được xác định. Nghiên cứu này giả sử rằng tồn tại một quy trình tự động thích hợp cho mỗi PUT mà có thể quyết định tính đúng đắn của dữ liệu thử dựa trên các đặc tả của chương trình.
CHƢƠNG 4 - ỨNG DỤNG KỸ THUẬT KIỂM THỬ ĐỘT BIẾN ĐỂ KIỂM THỬ CÁC CHƢƠNG TRÌNH JAVA
Ngày nay, Java được sử dụng rất rộng rãi, chủ yếu là các ứng dụng được viết trên Internet nhằm khai thác tối đa khả năng của nó trong lĩnh vực viễn thông, truyền hình, mạng, và các máy tính đơn lẻ. Để góp phần đảm bảo các ứng dụng được phát triển bởi ngôn ngữ Java hoạt động được ổn định, chất lượng và hiệu quả. Chương này giới thiệu một quy trình kiểm thử các chương trình Java ứng dụng kỹ thuật kiểm thử đột biến sử dụng hai công cụ mã nguồn mở miễn phí MuJava và JUnit.