[TDD] 테스트 주도 개발

DevHwan·2023년 7월 16일
0

TDD란?

  • TDD는 "Test-driven development"의 약어로, 테스트 주도 개발을 의미한다. TDD는 소프트웨어 개발 방법론 중 하나로, 소프트웨어를 개발할 때 테스트를 중심으로 코드를 작성하는 방식이다.

TDD는 크게 3가지 작업에 대한 반복을 지속적으로 하는 개발 방법론이고 3가지 작업은 아래와 같다.

  1. 테스트 작성 단계: 먼저 개발자가 작성하려는 기능 또는 모듈에 대한 테스트를 작성한다. 이 때, 해당 테스트는 어떠한 기능도 작성된 상태가 아니기 때문에 실패하는 테스트가 될 것이다. 이 테스트는 해당 기능이나 모듈의 기대 동작을 정의하는 코드이다. 따라서 이 단계에서 테스트가 실패하는 것이 정상적이다. 이후 해당 테스트가 실패하는 것을 확인하고 다음 단계로 진행한다.
  2. 코드 작성 단계: 이제 개발자는 정의된 모듈과 기능에 맞춰 코드를 작성한다. 이 코드는 테스트가 통과하도록 만들어야 한다. 기능이나 모듈을 완전히 구현하지 않고도 테스트를 통과할 수 있는 가장 간단한 방법을 사용하는 것이 좋다. 즉, 완벽한 코드를 작성하는 것 보다 빠르게 테스트를 통과할 수 있는 코드를 우선적으로 작성한다.
  3. 테스트 실행 및 검증 단계: 작성한 코드를 실행하여 테스트를 실행하고, 테스트가 통과하는지 확인한다. 이 단계에서 테스트가 실패하면 코드를 수정하여 테스트를 통과하도록 한다.

TDD의 핵심 아이디어는 테스트를 개발 초기에 작성하고, 이를 통과하는 코드를 작성하는 것이다. 이를 통해 개발자는 테스트 가능한 코드를 작성하고, 코드 변경으로 인한 예기치 않은 부작용이 발생할 경우 빠르게 감지하고 수정할 수 있다. TDD는 코드의 품질 향상과 유지보수 용이성을 도모하는 데 도움을 줄 수 있는 개발 방법론 중 하나이다. 위의 단계들을 반복적으로 수행하고 통과한 테스트에 대한 코드를 지속적으로 리팩토링하여 개선해나갈 수 있다.

테스트의 종류

테스트 주도 개발에서 사용할 수 있는 테스트 기법의 종류는 다양하다. 테스트 기법들은 소프트웨어 개발에 다양한 측면을 검증하고 문제를 발견하여, 코드의 신뢰성을 높이기 위한 작업에 도움이 된다.

  • 단위 테스트
    • 최소 단위의 함수, 메서드, 클래스 등의 Unit에 대한 테스트를 진행한다. 개별 유닛의 동작을 검증하고 입력에 대한 출력을 확인한다. 단위 테스트는 작은 부분을 격리하여 테스트하고 코드 변경으로 인한 부작용을 최소화하는 장점을 갖는다.
  • 통합 테스트
    • 단위 테스트에 사용되었던 Unit들이 상호작용하는 동작 테스트에 사용된다. 상호작용들을 검증하고 올바르게 통합되었는 지 확인한다. 더 큰 범위를 다루며 컴포넌트 간의 인터페이스와 상호작용을 검증한다.

여기까지 학습할 예정이지만 아래와 같은 테스트도 존재한다.


  • 시스템 테스트
  • 성능 테스트
  • 인수 테스트
    • 클라이언트가 프로그램을 직접 사용하면서 요구사항에 맞는 지 확인하는 테스트이다. 실제로 사용 가능한 지에 대한 최종 테스트이다. QA 팀이 실시하는 테스트가 해당 테스트와 비슷한 레벨이다.

참고 및 이미지 출처
TDD 이미지 출처

profile
달리기 시작한 치타

4개의 댓글

comment-user-thumbnail
2023년 7월 16일

잘봤습니다.

1개의 답글
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

1개의 답글