2009-03-27 3 views
8

.NET 또는 Java 프로젝트에서 제공하는 유닛 테스트 케이스를 생성하는 데 유용한 도구가 있는지, 거의 100 % 코드 커버리지를 포괄하는 단위 테스트 케이스를 생성합니다. 테스트 케이스의 수는 코드의 순환 복잡도에 직접적으로 비례 할 수 있습니다 (사이클의 복잡성이 높을수록 루프 및 조건의 중첩이 높을수록) 순환 적 복잡성이 높을수록 테스트 사례 집합이 많이 생성됩니다. 나는 그것이 완전히 기능 할 것이라고 기대하지는 않는다. (단위 테스트를 빌드하고 생성 된 후에 실행한다고 가정한다.)하지만 테스트 케이스에서 수정해야 할 템플릿 스타일을 가질 수 있다고 말하고 싶다. 귀하의 의도 된 필요에 맞는 케이스. 그러나 적절한 설정과 해체 방법을 가져야하며 의존성이있을 경우 유닛 테스팅을위한 모의 객체를 사용해야하는지 탐지하기에 충분합니다. 그래서 존재하는 도구가 있습니까?.NET 및 Java 용 Unit 테스트 케이스 자동 생성

답변

14

.NET의 경우 Microsoft는 Code Contracts과 함께 .NET 4.0의 주류가되기를 희망하는 Pex을 가지고 있습니다. 채널 9 비디오를 보는 것이 좋습니다.

이런 종류의 일은 매우 데이터 중심 클래스 (파서 등)에 매우 유용하다는 것을 알게됩니다. 나는 종종 매우 편리하다는 것을 알 수 없습니다. 으로 시작하지만 유용한 도구가 있습니다. 그럼에도 불구하고 병기.

+0

12 초 안에! –

+1

내가 뭐라고 할 수 있니, 마크? 당신이 가지고 있거나 가지고 있지 않거나 ...;) –

+0

"시작하기": Pex 테스트는 실행 가능한 사양과 비슷합니다. 예제 입력을 생각하는 것은 소프트웨어로 더 잘 처리되는 지루한 작업입니다 ... devloper가 무시하려고하는 모든 모서리의 경우를 알고 있습니다.) –

5

C# (또는 일반적으로 .NET)의 경우 PEX이 해당 도구 일 수 있습니다. IL 수준에서 작동하고 모든 지점에 강제로 시도합니다. BCL 등의 다양한 버그를 성공적으로 발견했습니다.

5

비록 카운터와 비슷하지만 무작위 테스트 생성 프레임 워크에 관심이있을 수 있습니다. 연구 결과에 따르면 시스템 범위 접근법보다 버그를 찾는 것이 효과적 일 수 있음이 입증되었습니다.

.NET 및 Java 모두 Randoop을 확인하십시오. 이것은 다소 불규칙한 메서드 호출 시퀀스를 생성하고 계약서, 충돌 등을 검사하여 작동합니다. 완전 자동입니다.

또한 QuickCheck에 기반한 다른 무작위 테스트 도구를 확인해 볼 수 있습니다. 자바, 스칼라, F #. 이는 Pex와 더 유사합니다. 즉, 스펙 또는 매개 변수화 된 단위 테스트를 제공하고 도구는 생성 된 입력 인수의 수를 확인합니다.

이 "매개 변수화 된"단위 테스트 작성 방법은 실제로 사례의 60 % 이상에서 훨씬 자연스럽고 많은 버그를 발견했습니다.

+1

Randoop 프로젝트 웹 페이지가 http://mernst.github.io/randoop/으로 옮겨졌습니다. – mernst

0

Java의 경우 오픈 소스이고 현재 활성 상태 인 EvoSuite을 확인할 수 있습니다 (면책 조항, 나는 해당 기여자 중 한명입니다). 더 많은 도구 목록을 보려면 관련 question도 참조하십시오.

0

Java의 경우 JUnit-Tools을 사용해보십시오. 그것은 좋은 문서와 함께 자신의 이클립스 플러그인이 있습니다.

관련 문제