2011-06-27 34 views
6

Có ai có thể đưa ra các gợi ý về các công cụ có thể được sử dụng để tạo đột biến trong một chương trình Java ở cấp mã nguồn (không phải mã byte) không? Tôi cần phải hạt giống mã nguồn của tôi với lỗi. Tôi muốn một ứng dụng có GUI, nếu có.Tôi làm cách nào để thực hiện thử nghiệm đột biến của chương trình Java?

+0

này có rất ít ứng dụng trong thế giới thực – Bohemian

+0

Đơn giản chỉ cần thay thế một số ký tự ngẫu nhiên bởi người khác có thể làm, nhưng trong hầu hết các trường hợp này sẽ là letal (tức là chương trình kết quả sẽ không được compilable, nếu bạn did't nhấn một chuỗi hoặc bình luận hoặc thay thế thực sự may mắn). –

+5

"Điều này có rất ít ứng dụng trong thế giới thực" là một cái cớ tội nghiệp. Khi tensor, topo hoặc toán học toán học được phát triển, họ đã "rất ít sử dụng thế giới thực". Đây là một câu hỏi thú vị. Mã đột biến có các ứng dụng thế giới rất thực tế. –

Trả lời

3

Khi tôi tham gia lớp kỹ thuật phần mềm về thử nghiệm tại GMU, we used Mu Java, đối với một trong các chương. HTH

+0

Cảm ơn! Tôi cũng đã thử nó, nhưng nó không hiệu quả với tôi. Chú thích @Override đang gây ra ngoại lệ .. – damluar

3

Đây là kỹ thuật được sử dụng bởi công cụ kiểm tra nguồn mở thử nghiệm Jester. Xem xét nguồn của nó có thể hữu ích nếu bạn không thể tìm thấy một công cụ phù hợp và muốn tự xây dựng một công cụ.

4

Tôi đã tìm thấy công cụ Kiểm tra đột biến PIT mà tôi rất thích. Với MuJava tôi có ngoại lệ do các chú thích @Override gây ra. Dường như nó không hỗ trợ Java 5/6.

+3

Tổng quan về PIT tại đây: http://dev.theladders.com/2013/02/mutation-testing-with-pit-a-step-beyond-normal-code-coverage/ –

3

Nếu yêu cầu của bạn thực sự là dành cho mã nguồn đột biến thì các tùy chọn Tôi nhận thức được là

Jester - Cung cấp một số lượng hạn chế của các nhà khai thác đột biến đó là khá ổn định. Jeff Offutt mô tả nó như là một cách rất tốn kém để áp dụng thử nghiệm chi nhánh. Tôi tin rằng nó có thể xác định các nhà khai thác của riêng bạn tuy nhiên, vì vậy điều này có lẽ không hoàn toàn công bằng.

Mu Java - Không hỗ trợ Java 5

Judy - Không biết nhiều về khác này hơn thế nó tồn tại

Lava - Âm thanh khá cơ bản và tôi không nghĩ rằng nó hỗ trợ java 5

Từ câu trả lời tiếp theo, tôi thấy bạn đang sử dụng PIT. Tôi nghĩ rằng đó là một sự lựa chọn thực sự tuyệt vời (tôi đã viết nó để có thể có một thiên vị nhất định), nhưng đó là một hệ thống đột biến mã byte.

1

Đây là điểm chuẩn:

MμClipse chỉ hỗ trợ JUnit 3 và không còn được duy trì. Jester cho nó, là mất thời gian và đòi hỏi một cấu hình phức tạp; cộng không được duy trì nữa. Công cụ tốt nhất tôi có thể tìm thấy là Javalanche I had wrote a entire article about this !

2

"Ứng dụng này có rất ít trong thế giới thực". Không đồng ý mạnh mẽ, tôi ký hợp đồng với một công ty truyền thông rất lớn ở Anh và PIT (http://pitest.org/) là cực kỳ hữu ích cho việc thử nghiệm đột biến. Hầu hết các CI xây dựng được thiết lập thất bại mà không có thử nghiệm đột biến PIT bao phủ 85%. Re: "thay thế một số ký tự ngẫu nhiên ..." Đột biến không có nghĩa là. Các đột biến PIT bị hạn chế đối với các thay đổi có thể kết hợp.

+0

Làm thế nào để bạn đối phó với các đột biến tương đương nếu bạn yêu cầu bảo hiểm đột biến 100%? – henry

1

Khuôn khổ đột biến chính (Major's website) cung cấp trình biến đổi tích hợp trình biên dịch và trình phân tích đột biến cho các kiểm tra JUnit.

Trình biến đổi chính được tích hợp trong trình biên dịch Java 7.Nó cung cấp một số nhà khai thác đột biến và hỗ trợ hai tùy chọn cho biến đổi mã nguồn:

  1. Tạo và nhúng tất cả các đột biến trong biên soạn
  2. Tạo đột biến và xuất khẩu đột biến file nguồn
Các vấn đề liên quan