본문 바로가기

CS/Spring

TDD 방법론 알아보기

반응형
TDD 방법론 알아보기

 

 

TDD란?

TDD는 Test-Driven-Develpoment란 말을 줄인 말로 테스트 주도 개발이란 뜻이다.

 

TDD의 기본 방법을 간단히 설명하자면 테스트가 실패한 것을 확인한 후에는 해당 메서드에 코딩을 시작하여 테스트가 기능하도록 만드는 것이다. 한마디로 일부로 실패하여 코드를 계속해서 다듬어 나가는 것이라고 생각한다.

 

  1. Test Fail - Red :
    • 구현할 기능에 대한 테스트를 먼저 작성합니다.
    • 이때, 테스트는 아직 통과하지 못합니다(코드가 없기 때문).
    • "Red"는 실패 상태를 나타냅니다.
  2. Green (코드 작성 및 테스트 통과):
    • 테스트가 통과하도록 최소한의 코드를 작성합니다.
    • 목표는 테스트를 통과시키는 것이며, 코드의 품질보다는 동작에 집중합니다.
  3. Refactor (코드 개선):
    • 테스트가 통과한 코드를 리팩토링 하여 품질을 개선합니다.
    • 리팩터링 후에도 테스트는 계속 통과해야 합니다.

 

TDD의 장점

  • 단기적인 목표와 장기적인 목표를 뚜렷하게 제시해 주고 올바르게 잡아준다.
  • 반복되는 짧은 개발 패턴을 통해 개발 리듬을 만듦으로써 개발 집중력을 높여준다.
  • 테스트 코드는 사용설명서 혹은 API 문서로서 의사소통의 도구로 활용할 수 있다.
  • TDD를 행함으로써 개발하고 있는 코드의 문제점을 빠르게 잡아낼 수 있다.
  • 성취감은 개발자의 개발 능률을 크게 향상시킨다.
내가 생각하는 TTD

TDD 방법론을 사용하게 되면 초기에 테스트 코드를 작성하는 부담으로 인해 비용이 더 들고 개발 속도를 저하시킨다고 생각하는 사람들이 있다. 하지만, 실제 코드를 테스트코드를 먼저 작성하게 되면서 요구사항 분석을 더 쉽게 하여 결론적으로는 개발해야 하는 것에 대한 기능과 목적을 좀 더 명확하게 파악할 수 있어 코드를 작성할 때 중간중간 검증하는 시간을 줄일 수 있었다. 내가 생각하는 TDD를 현업에서 사용할 때의 가장 큰 장점은 기능 개발, 수정 요건 발생 시 코드 수정에 대한 이런 불안감을 떨쳐버리고 즉각적으로 확신을 얻을 수 있게 해주는 엄청난 강점이라고 생각한다. 또한 테스트 코드를 먼저 만들면서 테스트코드를 작성하기 어렵다는 것은 설계가 잘못되었다는 것을 암시해 주기 하여 이런 테스트코드를 이렇게까지 만든다? 는 잘못된 구현이다로 파악하여 문제점을 스스로 돌아볼 수 있게 해 주었다.

 

정리
TDD를 통한 선테스트 후 기능 구현을 통해 복잡도가 낮은 즉 유연하며 유지보수가 쉬운 코드로 기능을 구현할 수 있고 쉽게 발견하기 어려운 엣지 케이스를 놓치지 않게 해 준다. 쉬운 구현으로 팀원으로부터 빠른 피드백을 받을 수 있고 받은 피드백을 기반으로 과감한 리팩토링이 가능해진다.

 

 

참고

https://medium.com/trendyol-tech/test-driven-development-101-a0038f257bd2

 

Test Driven Development — 101

Merhabalar bugün sizlere temel anlamda Test Driven Development (TDD) hakkında bir yazı hazırladım.

medium.com

http://cloudrain21.com/test-driven-development

 

TDD 이야기(TDD에 대한 오해와 진실) - Rain.i

All about IT tech, especially database, cloud, linux, clustering.

cloudrain21.com

https://www.scalablepath.com/qa/getting-started-test-driven-development

 

Getting Started with Test-Driven Development [and Key Benefits]

Test-Driven Development: should you try it? Learn the benefits of using this process and how to implement it on your next project.

www.scalablepath.com

 

반응형

'CS > Spring' 카테고리의 다른 글

Kafka 알아보기  (0) 2025.02.20
동시성 제어 방식 알아보기  (0) 2025.02.02
Spring Bean 알아보기  (0) 2024.05.31
DataSource 알아보기  (0) 2024.03.31
Connection Pool 이해하기  (3) 2024.03.23