유지 보수 활동에 소요되는 시간뿐만 아니라 개발 시간에 개발 중에 단위 테스트를 작성하면 어떤 효과가 있습니까?


24

컨설턴트이며 클라이언트 사이트의 모든 개발자에게 단위 테스트를 소개하려고합니다. 저의 목표는 모든 새로운 응용 프로그램이 생성 된 모든 클래스에 대한 단위 테스트를 갖도록하는 것입니다.

클라이언트는 기존 응용 프로그램의 버그를 수정하여 유지 관리 비용이 많이 드는 문제가 있습니다. 응용 프로그램의 수명은 5-15 년이며 지속적으로 새로운 기능을 추가합니다. 나는 그들이 단위 테스트로 시작함으로써 큰 ​​혜택을 얻을 것이라고 확신합니다.

개발 시간과 비용에 대한 단위 테스트의 효과에 관심이 있습니다.

  • 개발 프로세스의 일부로 단위 테스트를 작성하는 데 시간이 얼마나 걸립니까?
  • 좋은 단위 테스트를 통해 유지 보수 활동 (테스트 및 디버깅)에 얼마나 많은 시간을 절약 할 수 있습니까?

답변:


25

개발 중 단위 테스트를 작성할 때 코딩하는 것보다 애플리케이션을 개발하는 데 걸리는 시간에 대한 통계가 있습니까?

이것에 대한 매우 흥미로운 연구가 있습니다. 다음 백서를 읽으십시오.

테스트 중심 개발을 통한 품질 향상 실현 : 4 개의 산업 팀의 결과 및 경험

백서 및 기타 저자 인 Nachi Nagappan 의 연구는 여기 ( http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx)에서 논의됩니다.

이 연구와 그 결과는 테스트 중심 개발을 통한 품질 향상 실현이라는 제목의 논문에 발표되었습니다. IBM Almaden Research Center의 Nagappan과 연구 동료 E. Michael Maximilien의 4 개 산업 팀의 결과 및 경험; Thirumalesh Bhat, Microsoft의 주요 소프트웨어 개발 책임자; 노스 캐롤라이나 주립 대학의 Laurie Williams. 연구팀은 TDD 팀이 비 TDD 팀보다 결함 밀도 측면에서 60 ~ 90 % 더 나은 코드를 생성한다는 사실을 발견했습니다. 또한 TDD 팀이 프로젝트를 완료하는 데 15 ~ 35 % 더 오래 걸렸다는 사실도 발견했습니다.

Nagappan은“12 개월의 개발주기 동안 35 %는 또 다른 4 개월이며 이는 엄청납니다. 그러나 코드 품질이 훨씬 우수하기 때문에 릴리스 후 유지 관리 비용을 대폭 절감한다는 단점이 있습니다. 다시 말하지만, 이는 관리자가 내려야 할 결정입니다. 그러나 이제는 실제로 그러한 결정을 내리기 위해 데이터를 정량화했습니다.”

또한 Jason Gorman 은 올해 Software Craftsmanship 컨퍼런스에서 이러한 실험제안 했습니다. 그는 TDD와 비 TDD 접근 방식을 사용하여 동일한 응용 프로그램을 만드는 실험을 시도하고 있으며 최근에 자신의 결과에 대해 블로그를 작성했습니다 .

3 회 이상 반복하여 TDD없이 카타를 완료하는 데 걸리는 평균 시간은 28m 40 초입니다. TDD의 평균 시간은 25 분 27 초입니다. TDD가 없으면 평균 5.7 패스를 합격했습니다 (수락 테스트 제공). TDD를 사용하여 평균적으로 1.3 패스를 만들었습니다.

물론 이것은 아기 실험이었습니다. 정확히 실험실 조건이 아닙니다. 그러나 나는 똑같은 몇 가지 흥미로운 것을 주목합니다.

더 많은 사람들이 실험 할 때이 실험의 전체 결과를 보는 것이 흥미로울 것입니다.

(좋은) 단위 테스트를 수행 할 때 유지 보수 시간이 몇 시간이나 단축되는지 보여주는 통계가 있습니까?

위의 백서에서 :

사례 연구의 결과는 4 가지 제품의 시험판 결함 밀도가 TDD 사례를 사용하지 않은 유사한 프로젝트에 비해 40 %에서 90 % 사이로 감소했음을 나타냅니다.


나는이 답변을 좋아한다. 언어 및 테스트 도구도 TDD 시간에 큰 영향을 줄 수 있다고 덧붙입니다. NCRUNCH 이전의 C #과 같은 언어의 경우 TDD의 이점에 대해 그리 흥분하지 않았습니다. NCRUNCH를보고 사용한 후 필자가보기에 병렬 테스트를 수행하는 추세는 이러한 도구의 효과에있어 중요한 변화입니다. 2008 년 연구에 따르면 현재 도구와 그 효과가 반영되지 않을 수 있습니다.
phil soady
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.