TDD(테스트 주도 개발)

훈이·2022년 10월 22일
0
post-custom-banner

TDD(테스트 주도 개발)이란???

TDD는 Test Driven Development의 약자로서 테스트 주도 개발이라고 부른다.
반복 테스트를 이용하는 소프트웨어 방법론이며, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.

TDD 개발주기

이미지 출처 : https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/

위의 그림은 TDD의 개발주기를 표현한 그림이다.

  • RED 단계는 실패하는 테스트 코드를 먼적 작성한다.
  • GREEN 단계는 테스트 코드를 성공시키기 위해 실제 코드를 작성한다.
  • BLUE 단계는 중복 코드를 제거하거는 등 리팩토링을 한다.

TDD 개발에서 중요한 점은 RED 단계의 실패하는 테스트 코드를 먼저 작성하기 전까지는 실제 코드를 작성하지 않는것이며 최소한의 실제 코드를 작성해야한다.

TDD의 효과

  • 코드가 내 손을 벗어나기 전에 빠르게 피드백 받을 수 있다.
    TDD를 사용하면 기능 단위로 테스트를 하기 때문에 코드가 모두 완성되기 전에 피드백을 받는 것이 가능하다.

  • 작성한 코드가 가지는 불안정성을 개선하여 생산성을 높일 수 있다.
    TDD를 사용하면 코드가 내 손을 떠나서 사용자에게 도달하기 전에 문제가 없는지 먼저 진단 받을 수 있으므로 불안정성과 불확실성을 해소해준다.

  • 프로그래머의 오버 엔지니어링을 방지한다.
    TDD의 원칙 중 하나는 테스트를 통과하기 위한 최소한의 코드만 작성하고 개선하는 것이고 기능 단위로 테스트를 진행하기 때문에 문제가 발견되지 않은 코드에 영향을 줄 수 있는 오버코딩은 하지 않는다.

  • 디버깅 시간을 단축할 수 있다.
    TDD의 경우 자동화된 유닛테스팅을 전재하므로 특정 버그를 쉽게 찾을 수 있다.

  • 재설계 시간을 단축 할 수 있다.
    테스트 시나리오를 작성하면서 다양한 예외사항에 대해 생각해볼 수 있으므로 개발 중 설계가 변경되는 일을 방지할 수 있다.

TDD의 단점

  • 생산성의 저하가 있다.
    테스트코드도 작성해야하고 실제코드도 작성해야하기 때문에 일반적인 개발 방식보다 개발시간이 늘어난다.

TDD 세부 프로세스

이미지 출처 : https://media.fastcampus.co.kr/knowledge/dev/tdd/

단위 테스트 작성 -> 단위 테스트 실행 -> 운영 코드 작성 -> 단위 테스트 실행 -> 설계 개선(리팩토링) -> 단위 테스트
위의 실행을 반복한다.

참고한 사이트 :
https://media.fastcampus.co.kr/knowledge/dev/tdd/
https://inpa.tistory.com/entry/QA-%F0%9F%93%9A-TDD-%EB%B0%A9%EB%B2%95%EB%A1%A0-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C

profile
백엔드 개발자가 되자!
post-custom-banner

0개의 댓글