TDD

union·2022년 11월 3일

TDD란?

Test Driven Development의 약자로, 테스트 중심의 개발이다.

테스트 주도 개발은 애플리케이션의 가장 작은 단위의 테스트 케이스를 설계하고 개발하는 방법이다.
간단히 설명하자면, 각 기능에 대한 실패한 코드를 작성하고 그 후 테스트를 성공시키기 위한 코드를 작성하는 방법을 말한다.

이는 개발자들에게 테스트가 실패한 경우에만 새로운 코드를 쓰도록 지시하므로, 코드의 중복을 피할 수 있도록 도와주며 코드를 작성하는 시간과 코드의 길이를 줄여준다.

TDD는 응용 프로그램의 개발 전 자동 테스트를 개발하고 실행 중인 자동화 테스트를 수행하는 과정이다. 그래서 Test-First Development로 불린다.

짧은 개발 주기의 반복에 의존하는 개발 프로세스이며,
애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다.

단, 다음과 같은 오해는 하지 말자!

TDD 접근법은 '테스트''디자인'에 관한 것이 아니다.
'테스트의 일부를 작성한 다음 테스트를 통과하는 시스템을 구축한다'는 것을 의미하지 않는다.
'테스트를 많이 해라'는 것을 의미하지는 않는다.

TDD Cycle


1. 테스트 케이스를 작성한다.
2, 모든 테스트를 실행하고 실패하는지 확인한다.
3. 코드를 작성한다.
4. 테스트 및 리팩토링을 실행한다.
5. 반복한다.

어떤 상황에 사용할까?

  • 나에 대한 불확실성이 높은 경우
  • 고객의 요구조건이 바뀔 수 있는 경우
  • 개발 중 코드를 많이 바꾸는 경우

단계

  • RED
    실패하는 테스트 코드를 작성한다.
  • Green
    테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
  • Yellow
    중복 코드를 제거, 일반화 등의 리팩토링을 수행한다.

중요한 것은 실패하는 코드를 작성할 때까지 실제 코드를 작성하지 않는 것과, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성해야 하는 것이다.

이를 통해, 실제 코드에 대해 기대되는 바를 명확하게 정의함으로써 불필요한 설계를 피할 수 있고, 정확한 요구 사항에 집중할 수 있다.

요약

  • TDD는 Test-driven development의 약자이다.
  • TDD는 이전에 설계된 테스트를 통과하기 위해 코드를 수정하는 과정이다.
  • 테스트 케이스 디자인보다는 생산 코드에 더 중점을 둔다.
  • TDD는 이미 설계된 테스트를 통과하기 위해 코드를 수정하는 프로세스이다.
  • 소프트웨어 공학에서, "Test-First Development"로 알려져 있다.
  • TDD 테스트는 코드를 리팩터링하는 것이다.
  • 동작에 영향을 주지 않고 기존 코드를 변경 및 추가하는 것을 말한다.
  • TDD를 사용하면 코드가 더 명확해지고 이해하기 쉬워진다.

개발 도구 TOOL

  • Junit 5 | 자바 단위 테스트 프레임 워크

Spring에서의 TDD 방법

  • Repository -> Service -> Controller 순서로 진행한다.

0개의 댓글