테스트 주도 개발(TDD)

휘Bin·2023년 6월 23일
0
post-thumbnail

테스트 주도 개발(TDD : Test-Driven Development)은 반복 테스트를 이용한 소프트웨어 개발 방법론으로, 테스트 코드를 먼저 작성한 후 테스트를 통과하는 코드를 작성하는 과정을 반복하는 소프트웨어 개발 방식이다.

애자일 방법론 중 하나인 '익스트림 프로그래밍'의 Teset-First 개념에 기반을 둔, 개발 주기가 짧은 개발 프로세스로 단순한 설계를 중시한다.

테스트 주도 개발의 개발 주기

테스트 주도 개발은 위와 같이 3단계로 개발 주기를 표현한다.

  • 실패 테스트 작성 : 실패하는 경우의 테스트 코드를 먼저 작성한다.

  • 테스트 통과하는 코드 작성 : 테스트 코드를 성공시키기 위한 실제 코드를 작성

  • 리팩토링 : 중복 코드를 제거하거나 일반화하는 리팩토링 수행

테스트 주도 개발의 효과

왜 TDD는 갑자기 뜨고 있을까? 이에 여러 이점 중 몇 가지를 적어보았다.

  • 디버깅 시간 단축

테스트 코드 기반으로 개발이 진행되기 때문에 문제가 발생했을 때 어디서 잘못됐는지 확인하기 쉽다.

  • 생산성 향상

테스트 코드를 통해 지속적으로 애플리케이션 코드의 불안정성에 대한 피드백을 받기 때문에 리팩토링 횟수가 줄고 생산성이 높아진다.

  • 재설계 시간 단축

작성되어 있는 테스트 코드를 기반으로 코드를 작성하기 때문에 재설계가 필요할 경우 테스트 코드를 조정하는 것으로 재설계 시간을 단축할 수 있다.

  • 기능 추가와 같은 추가 구현 용이

테스트 코드를 통해 의도한 기능을 미리 설계하고 코드를 작성하기 때문에 목적에 맞는 코드를 작성하는 데 비교적 용이하다.

이처럼 여러 장점도 가지고 있다. 하지만 아직 현업에서 이를 적용하는 직업은 많지 않다. 기존 개발에 익숙하기도 하고, 자칫 오히려 생산성이 저하될 수 있고 쉽게 도전할만한 것은 아니기 때문일 수도 있다. 나는 무조건 추천할 정도의 방법은 아닌듯 하다. 좋은 것도 맞지만, 시기, 상황에 따라 다를 수 있다고 본다. 처음부터 개발을 해야하고 빠르게 시장에 내놓아야하는 스타트업의 경우에는 안 맞을 것 같고, 대기업이나 조금 여유가 있는 상태라면 충분히 시도해볼만한 방법이라고 생각한다.

profile
One-step, one-step, steadily growing developer

0개의 댓글