Spring & Spring boot

[Springboot] 테스트 코드 - 2 - TDD 테스트 주도 개발이란?

jh4dev 2024. 8. 5. 12:17

최근, TDD를 지향하는 프로젝트가 꽤 많이 보이는 것 같다.

분명한 장점이 존재하는 개발 방법론이지만, 프로세스 변경에 따른 비용 증가 등의 문제를 해결해야 한다.


<목차>
1. TDD?
2. TDD 개발 주기

3. TDD 의 효과

 

[TDD]

최근, TDD를 지향하는 프로젝트가 꽤 많이 보이는 것 같다.

분명한 장점이 존재하는 개발 방법론이지만, 프로세스 변경에 따른 비용 증가 및 생산성 저하 등의 문제를 해결해야 한다.

 

TDD 는 Test - Driven - Developement 의 약자로 '테스트 주도 개발' 이라는 의미를 가지고 있다.

TDD 는 반복 테스트를 이용한 소프트웨어 개발 방법론

테스트 코드를 먼저 작성하고, 테스트를 통과하는 코드를 작성하는 과정을 반복하는 소프트웨어 개발 방식

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

 

** Agile **
애자일은 기민한, 신속한 의 의미를 갖는 단어로, 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하는 개발 방식이다.신속한 개발 프로세스를 통해, 수시로 변하는 고객의 요구사항에 대응하여, 제공하는 서비스의 가치를 극대화 하는 것이 핵심

[TDD 개발 주기]

테스트 주도 개발은 아래와 같이 총 3단계의 개발 주기로 표현된다.

  • 실패 테스트 작성 (Write a failing test) : 실패하는 경우의 테스트 코드를 먼저 작성한다.
  • 테스트를 통과하는 코드 작성 (Make a test pass) : 테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
  • 리팩토링 (Refactor) : 중복 코드를 제거하거나 일반화하는 리팩토링을 수행한다.

TDD 개발 주기

 

일반적인 개발 방법은, 설계를 진행한 후 그에 맞는 애플리케이션 코드를 작성하고 '마지막'으로 테스트 코드를 작성하는 흐름이 일반적이다.

반면에, 테스트 주도 개발은 설계 이후 바로 테스트 코드를 작성하고 애플리케이션 코드를 작성한다는 차이가 있다.


[TDD의 효과]

이러한 TDD (테스트 주도 개발) 에 따라 개발을 진행하면, 다음과 같은 이점을 얻을 수 있다.

  • 디버깅 시간 단축
    • 테스트 코드 기반으로 개발이 진행되기에, 문제가 발생한 경우 확인하기 쉽다.
  • 생산성 향상
    • 테스트 코드를 통해 지속적으로 애플리케이션 코드의 불안정성에 대한 피드백을 받기 때문에, 리팩토링 횟수가 줄고 생산성이 높아진다.
  • 재설계 시간 단축
    • 작성된 테스트 코드를 기반으로 애플리케이션 코드를 작성하기 때문에, 재설계가 필요할 경우 테스트 코드를 조정하는 것으로 시간을 단축할 수 있다.
  • 기능 추가에 용이
    • 테스트 코드를 통해 의도한 기능을 미리 설계하고 코드를 장성하기에, 목적에 맞는 코드를 작성하는데 비교적 용이하다.


[참고 도서]

 

<스프링 부트 핵심 가이드>
저자 : 장정우

출판사 : 위키북스