테스트 주도 개발이 무엇인가요?

백엔드와 관련된 질문이에요.

테스트 주도 개발(Test Driven Development) 은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스입니다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성합니다. 그 이후에는 테스트 케이스를 통과하기 위한 최소한의 코드를 생성하고, 작성한 코드를 리팩토링하는 과정을 반복합니다.

테스트 주도 개발 사이클에는 다음과 같이 몇 가지 의식할 부분들이 존재하는데요.

  • 일단 간단하고, 해보기 쉬운 것을 먼저 시도합니다.
  • 실패하는 테스트를 통과하기 위해서는 최소한의 코드를 작성해야 합니다.
  • 테스트를 점점 구체화할수록 프로덕션 코드는 점점 범용적으로 됩니다. (커버 가능한 케이스가 점점 많아집니다.)
  • 실패하는 테스트가 있을 때만 프로덕션 코드를 작성합니다.
  • 실패를 나타내는 데 충분한 정도의 테스트만 작성합니다.

위와 같은 부분들을 의식하면서, 테스트 주도 개발 사이클을 반복하다 보면, 작성한 코드가 가지는 불안정성을 개선하여 생산성을 높일 수 있습니다. 또한, 테스트 가능하며 결합이 느슨한 시스템을 점진적으로 만들어 나갈 수 있습니다. 하지만, 테스트 주도 개발이 오히려 비효율적인 경우도 존재하기 때문에 다른 모든 기술과 마찬가지로 비판적으로 사고하는 것도 중요하다고 생각합니다.

추가 학습 자료를 공유합니다.