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?
Trả lời
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
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
Đâ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ụ.
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.
Tổng quan về PIT tại đây: http://dev.theladders.com/2013/02/mutation-testing-with-pit-a-step-beyond-normal-code-coverage/ –
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.
Đâ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 !
"Ứ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.
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
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:
- Tạo và nhúng tất cả các đột biến trong biên soạn
- Tạo đột biến và xuất khẩu đột biến file nguồn
- 1. Làm thế nào để thực hiện chương trình một bộ thử nghiệm bằng cách sử dụng JUnit4 theo chương trình?
- 2. Tích hợp thử nghiệm đột biến Java với Maven
- 3. Thực hiện kiểm tra đơn vị không nhanh chóng để thử nghiệm đột biến
- 4. Thử nghiệm thực hiện printf
- 5. Làm cách nào để thử nghiệm theo chương trình nếu đường dẫn/tệp là lối tắt?
- 6. Làm cách nào để tạo chương trình Java thực thi?
- 7. Có thể thực hiện điều gì đó khi chương trình Java thoát đột ngột không?
- 8. Làm cách nào để thêm gem 'minitest' vào trình trợ giúp thử nghiệm của tôi?
- 9. Làm cách nào để thực hiện một thử nghiệm đơn lẻ bằng thử nghiệm/đơn vị Ruby?
- 10. Làm cách nào để nhập các lọ vào chương trình java của tôi?
- 11. Làm cách nào để tăng tốc độ thực hiện bộ thử nghiệm PHPUnit + DBUnit?
- 12. Tôi làm cách nào để thử nghiệm phát triển GWT?
- 13. Làm thế nào để nhanh chóng thử nghiệm mã Java?
- 14. Java - Cách thực hiện Thử của Python Trừ Ngoại lệ
- 15. Làm cách nào để cài đặt chương trình Java?
- 16. Làm cách nào để thực hiện các thử nghiệm phù hợp với cụm từ thông dụng?
- 17. Làm thế nào để phân tích các vấn đề OSGi cấp thấp trong quá trình thực hiện thử nghiệm tycho?
- 18. Python CLI đơn vị chương trình thử nghiệm
- 19. Làm thế nào để thực hiện Play Framework với thử nghiệm AngularJS e2e hoặc với thử nghiệm Play
- 20. Tại sao valgrind không phát hiện rò rỉ bộ nhớ trong chương trình "thử nghiệm" của tôi?
- 21. Làm cách nào để lấy MSTest để tìm các tệp dữ liệu thử nghiệm của tôi?
- 22. Làm thế nào để chạy các thử nghiệm Java Selen với TestNG theo lập trình?
- 23. Làm thế nào để thực hiện kế thừa trong JS Hiển thị mẫu thử nghiệm?
- 24. Thực hiện các chương trình Java thông qua Python
- 25. Làm thế nào tôi nên viết lại cơ sở dữ liệu của tôi thực hiện/cam kết để làm cho nó tuân theo thử nghiệm đơn vị?
- 26. Làm cách nào để chạy chương trình tất cả các bài kiểm tra JUnit trong ứng dụng Java của tôi?
- 27. Làm thế nào để thời gian thực hiện chương trình Java tốc độ
- 28. Tôi làm cách nào để điều tra quá trình hội đồng của thử nghiệm từ chối tải NUnit?
- 29. printf làm chậm chương trình của tôi
- 30. Viết thử nghiệm JUnit để thực hiện mùa xuân Validator
này có rất ít ứng dụng trong thế giới thực – Bohemian
Đơ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). –
"Đ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ế. –