2009-03-27 23 views
8

Có một công cụ tốt để tạo ra các trường hợp thử nghiệm đơn vị được cho là một dự án .NET hay Java, nó tạo ra các trường hợp kiểm tra đơn vị có thể bao phủ phạm vi mã gần như 100%. Số lượng các trường hợp thử nghiệm có thể tỷ lệ thuận với độ phức tạp chu kỳ của mã (cao hơn việc lồng các vòng và điều kiện độ phức tạp chu trình càng cao) khi độ phức tạp chu trình càng cao thì tập hợp các trường hợp thử nghiệm càng lớn. Tôi không mong đợi nó có đầy đủ chức năng (nói rằng tôi sẽ xây dựng các bài kiểm tra đơn vị và chạy nó sau khi nó được tạo ra), nhưng tôi sẽ nói rằng nó có thể có một kiểu mẫu trong trường hợp kiểm tra nơi bạn đang sửa đổi trường hợp phù hợp với nhu cầu của bạn. Nhưng nó cũng nên có một phương pháp thiết lập và teardown thích hợp và là đủ tốt để phát hiện nếu các đối tượng giả cho thử nghiệm đơn vị nên được sử dụng nên có bất kỳ phụ thuộc. Vậy, có một công cụ như vậy tồn tại?Tự động tạo các trường hợp kiểm tra đơn vị cho .NET và Java

Trả lời

14

Đối với .NET, Microsoft có Pex, hy vọng sẽ trở thành chủ đạo cho .NET 4.0, cùng với Code Contracts. Tôi khuyên bạn nên xem video của Kênh 9. Nó gây ấn tượng với tôi rằng loại điều này rất tốt cho các lớp học theo hướng dữ liệu - phân tích cú pháp, v.v. Tôi không thể thấy rằng tôi rất thường xuyên bắt đầu tắt với nó, nhưng một công cụ hữu ích để có armory của bạn dù sao đi nữa.

+0

Darn, 12 giây trong đó! –

+1

Tôi có thể nói gì, Marc? Hoặc bạn đã có nó hoặc bạn đã không ...;) –

+0

Ngày "bắt đầu" với nó: Pex kiểm tra là giống như thông số kỹ thuật thực thi. Nghĩ về đầu vào ví dụ thực sự là một công việc nhàm chán được xử lý tốt hơn bởi phần mềm ... nó biết về tất cả các trường hợp góc mà kẻ phá hủy đang cố gắng bỏ qua;) –

5

Đối với C# (hoặc .NET nói chung), PEX có thể là công cụ đó. Nó hoạt động ở cấp độ IL, và cố gắng để buộc nó vào mọi chi nhánh. Nó đã phát hiện thành công một loạt các lỗi (trong BCL vv).

5

Mặc dù có vẻ như ngược lại, bạn cũng có thể quan tâm đến các khung tạo thử nghiệm ngẫu nhiên. Nghiên cứu đã chứng minh rằng nó có thể cũng hiệu quả trong việc tìm kiếm lỗi hơn là các phương pháp tiếp cận có hệ thống dựa trên mức độ phù hợp, như bạn đề xuất.

Kiểm tra Randoop cả cho .NET và Java. Nó hoạt động bằng cách tạo ra một chuỗi các cuộc gọi phương thức nhiều hơn hoặc ít hơn ngẫu nhiên, và kiểm tra các hợp đồng, sự cố, vv Nó hoàn toàn tự động.

Ngoài ra, bạn có thể muốn kiểm tra một số công cụ kiểm tra ngẫu nhiên khác dựa trên QuickCheck, ví dụ: cho Java, Scala, F #. tương tự như Pex, tức là bạn đưa ra một đặc điểm kỹ thuật, hoặc thử nghiệm đơn vị tham số, và công cụ kiểm tra nó cho một số đối số đầu vào được tạo ra.

Tôi đã nhận thấy rằng cách kiểm tra đơn vị "parametrized" này thực sự tự nhiên hơn trong ít nhất 60% các trường hợp và tìm thấy nhiều lỗi hơn.

+1

Trang web dự án Randoop đã chuyển đến http://mernst.github.io/randoop/. – mernst

0

Đối với Java, bạn có thể kiểm tra EvoSuite, là nguồn mở và hiện đang hoạt động (tuyên bố từ chối trách nhiệm, tôi là một trong những người đóng góp của nó). Xem thêm liên quan question để biết danh sách các công cụ khác.

Các vấn đề liên quan