관측 기반 테스트는 Agitar의 제품 사용 기간입니다. 몇 년 전에 Agitar의 제품을 평가했습니다. 그것은 일반적인 단위 테스트를 대체하지는 않지만 함께 작동합니다. 모든 것을 할 수 있기 때문에 TDD 나 CI 또는 CD 수준의 프로세스로 간주하지는 않습니다. 테스트와 마찬가지로 정적 분석 도구를 사용하는 것과 같습니다. 그럼에도 불구하고 그것은 매우 강력하고 흥미 롭습니다.
핵심 기능은 불변의 탐지이며, Agitar는 교반을 호출합니다. 코드의 모든 메소드를 찾아서 자동으로 결정된 매개 변수 값 세트로 각각을 실행합니다. 매개 변수 값을 선택하는 방법은 정교합니다 : int에 MIN_VALUE, -1, 0, 1 및 MAX_VALUE를 사용하는 것과 같은 비교적 뚜렷한 작업을 수행하지만, 기존 테스트 코드를보고 교반 할 때 사용할 재미있는 값을 얻을 수도 있습니다. JDBC 연결과 같은 외부 종속성이있는 객체를 명시 적으로 지원합니다.
선택한 매개 변수 값을 사용하여 모든 클래스의 메서드를 실행 한 후 Agitar는 매개 변수 값, 메서드 반환 값 및 필드 값에 대한 관찰 (후보 불변 식)을 만듭니다. 그것은 사용자에게 보여 주며, 사용자에게 불변량으로 승격시킬 수 있으며, 미래의 교반 실행시 테스트되거나 관찰이 불가능 해 지도록 코드를 변경할 수 있습니다. 예를 들어 Agitar는 하나의 매개 변수가 null 인 메서드를 호출하면 메서드가 NullPointerException
을 throw합니다. null을 처리하도록 코드를 변경하면 이후 실행시 해당 관찰이 제거됩니다.
Agitar는 관찰 결과에서 JUnit 테스트를 생성 할 수 있습니다. Agitar의 도구에서 불변량을 유지하는 것 이상의 이점을 알지 못합니다.
나는 Agitar의 제품을 구입하지 않았지만 나는 여전히 내가 봤던 것을 크게 존중하고 올바른 환경 (Java, 방탄 코드에 대한 강력한 비즈니스 요구)에서 다시 고려할 것입니다. TDD로 개발 한 코드에서 거의 100 %의 라인 및 분기 적용 범위를 가진 버그를 발견했습니다. 더 나은 점은, 그것이 단위 테스트에 대해 어떻게 생각 하는지를 향상시키는 것을 보았습니다!
함정과 관련하여 다음과 같은 내용이 있습니다. 이는 Java에 고유하며 독점적이며 비쌉니다. 또한 철저한 도구이기 때문에 관측 내용이 구현 세부 사항과 결합되기 때문에 Agitar가 적극적으로 개발 한 프로그램에 대한 견해를 유지하는 데 많은 노력이 필요합니다 (수용/통합/유닛 테스트 스위트 유지 이상의 것) .
이것은 제가 발견 한 가장 빠른 소개입니다 : http://www.agitar.com/downloads/demos/agi_demo/agiDemo.html. 전신 및 관련 시스템에 대한 흥미로운 내용은 여기 http://plse.cs.washington.edu/daikon/pubs/입니다. 또한 ScalaCheck은 훨씬 간단한 프로세스로 비슷하게 구현됩니다.
링크가 작동하지 않았습니다 ... – Benjamin
@Benjamin 고마워 지금 고치다 –
뭔가 분명히 분실 될 수도 있습니다 - w.r.t. 백서의 예는 키보드를 누르기 전에 한 번 테스트를 검토하지 않고 특정 결함을 빨리 잡을 수있는 방법입니다. 문제는 req를 번역하는 데있었습니다. 텍스트를 자동화 된 테스트 .. TDD는 당신이 당신의 스펙을 잘못 이해한다면 당신을 도울 수 없습니다. 아이디어는 당신의 코드에서 불변량 *을 찾는 것에 더 가깝게 보인다. 그리고 invariant가 ... 실제적인 IMHO 좋은 생각을 가지고 있음을 증명한다. 대부분의 팀에서 뿌리를 내릴 지 확실치 않다. – Gishu