1. Question

TDD(Test Driven Development)의 장점과 단점은?

2. Answer

A. TDD란

TDD(Test Driven Development)는 소프트웨어 개발의 한 방법론으로, 매우 짧은 개발 사이클의 반복에 초점을 맞추고 있다. 기본적인 아이디어는 개발자가 실제 코드를 작성하기 전에 자동화된 테스트를 먼저 작성하도록 하는 것이다. 이 접근 방식은 클린 코드와 버그가 적은 소프트웨어 개발을 촉진한다.

TDD의 기본적인 순서는 다음과 같다.

  1. 실패하는 테스트 작성
  2. 테스트를 통과하는 코드 작성
  3. 리팩토링

B. 장점

프로덕션->테스트 테스트->프로덕션(TDD)
큰 틀을 먼저 정하고 세부적인 사항을 구현하려다보니, 그 틀에 끼워맞추려는 식으로 기능이 강제로 제한됨 세부적인 사항이 정해진 후, 큰 틀이 만들어져서 구현에 제한이 생기지 않음
내가 이 메서드를 사용하겠지라는 애매한 추측으로 메서드가 만들어짐 메서드를 만들 근거가 명확하게 정의된 후, 메서드가 만들어짐
코드를 구현하고 잘 구현되었는지 모르는 애매한 마음가짐인 상태에서 다른 작업을 하게 됨 프로덕션 코드를 구현하고 바로 테스트 코드를 돌려 즉시 해당 코드에 대한 성취감을 얻을 수 있음

C. 단점

  • 어떤 기능에 대한 테스트를 만들고 해당 기능의 프로덕션 코드를 작성하던 도중, 해당 기능을 구현하기 위해 요구사항 분석 단계에서 미처 생각하지 못한 더 세부적인 기능이 필요해지는 경우에 문제점 발생
  • TDD를 위해 방금 떠오른 세부 기능의 테스트 코드를 작성하기에는, 지금 구현하고 있는 메서드의 구현 흐름이 망가진다. 그렇지만 지금 구현하고 있는 메서드를 완료하기 위해서는 세부 기능 메서드의 프로덕션 코드의 구현이 반드시 선행되어야 한다. 이는 TDD의 원칙에 어긋난다.

물론 처음부터 모든 요구사항을 완벽하게 작성했다면 이런 일이 발생할 일이 없지만, 요구사항을 놓칠 가능성은 언제든지 존재하고 항상 완벽할 수는 없기 때문에 위와 같은 상황이 발생한다.

3. Detail

None

4. Reference

None

태그:

카테고리:

업데이트:

댓글남기기