전환에 대한 나의 경험
몇 년 동안 나는 코드에 대한 단위 테스트를 작성하기에 충분한 시간이 없다는 오해를 받고 있었다. 테스트를했을 때, 그들은 부풀어 오르고 무거운 것들이 필요하다는 것을 알았을 때 단위 테스트를 작성해야한다고 생각하게 만들었 습니다 .
최근에 저는 테스트 주도 개발 을 사용하도록 권장 받았으며 완전한 계시라고 생각했습니다. 나는 이제 단위 테스트를 쓰지 않을 시간이 없다고 확신합니다 .
내 경험상 테스트를 염두에두고 개발하면 더 깨끗한 인터페이스, 더 집중된 클래스 및 모듈 및 일반적으로 더 많은 테스트 가능한 SOLID 코드가 생깁니다.
단위 테스트가없고 수동으로 무언가를 테스트해야하는 레거시 코드로 작업 할 때마다 "이 코드에 이미 단위 테스트가있는 경우 훨씬 빠를 것"이라고 계속 생각합니다. 높은 커플 링으로 코드에 단위 테스트 기능을 추가하려고 할 때마다 "이것이 분리 된 방식으로 작성된 경우 훨씬 쉬울 것"이라고 계속 생각합니다.
내가 지원하는 두 개의 실험 스테이션을 비교하고 대조합니다. 하나는 잠시 동안 있었고 많은 레거시 코드를 가지고 있지만 다른 하나는 비교적 새롭습니다.
이전 랩에 기능을 추가 할 때 랩으로 내려 가서 필요한 기능의 의미와 다른 기능에 영향을주지 않고 해당 기능을 추가하는 방법을 통해 많은 시간을 소비하는 경우가 종종 있습니다. 코드는 단순히 오프라인 테스트를 허용하도록 설정되지 않았으므로 거의 모든 것이 온라인으로 개발되어야합니다. 오프라인으로 개발하려고한다면 합리적인 것보다 더 많은 모의 객체 가 생길 것입니다.
최신 랩에서는 일반적으로 책상에서 오프라인으로 개발하여 즉시 필요한 항목 만 조롱 한 다음 실험실에서 짧은 시간 만 보내서 해결되지 않은 나머지 문제를 해결함으로써 기능을 추가 할 수 있습니다. -선.
나의 충고
개발 워크 플로를 크게 변경할 때마다 모든 사람 이 의사 결정에 참여하고 이상적으로는 대부분의 사람들이 구매 한 것으로 확인해야합니다. 당신의 질문에서, 당신이 이것을 가지고있는 것처럼 보입니다. 사람들이 아이디어에 대한 열정이 없다면 실패하거나 나쁜 의지를 만들어내는 것이 운명입니다.
매력적인 비즈니스 사례를 제시 할 수 없다면 전체 시스템에 대한 단위 테스트 및 사양의 기본 구현을 권장 하지 않습니다 . 위에서 언급했듯이 시스템이 테스트를 염두에두고 설계 되지 않은 경우 자동화 된 테스트를 작성하기가 매우 어려울 수 있습니다.
대신 소규모로 시작하고 보이 스카우트 규칙을 사용하는 것이 좋습니다 .
항상 캠프장을 찾은 것보다 깨끗하게 두십시오.
이 코드베이스에서 무언가를 구현하는 동안 기존 동작을 테스트하고 이전 동작에서 새로운 동작으로 전환하는 데 필요한 특정 테스트를 식별 할 수있는 경우 사양 변경을 문서화하고에 대한 단위 테스트 구현을 시작했습니다. 당신의 시스템.
손대지 않는 모듈은 단위 테스트를받지 않지만, 손대지 않으면 모듈은 이미 철저히 테스트 중이며 변경이 필요하지 않거나 사용되지 않았기 때문일 수 있습니다.
피하고 싶은 것은 결코 필요하지 않은 테스트를 작성하는 데 많은 개발자 노력을 낭비하는 것입니다 ( YAGNI 는 생산 코드 * 8 '와 마찬가지로 테스트 코드에서도 작동합니다). 테스트는 결국 쓸모 없다고 생각했습니다.
요약
소규모로 시작하여 점진적으로 테스트에 대한 신뢰를 구축하고 팀에 가장 유리한시기와 장소에서 테스트를 개발하여 비즈니스 가치를 얻으십시오.