본문 바로가기
용어와 개념들

TDD 란? 테스트 주도 개발의 의미

by 행운가득 케이티 2023. 7. 11.
반응형

TDD 개념에 대한 이해

 

TDD
TDD

 

 

 

TDD(Test Driven Development)에 대해서 이야기해봅시다.

 

 

 

TDD는 테스트를 고려해서 개발을 진행하는 개발의 방법론 중 하나입니다. 애자일 프로젝트 방법론과 접목할 수 있고 테스트 코드를 사전에 준비하는 것이 중요한 특징입니다. TDD는 테스트를 중요시하는 사상이며 개발단계에서부터 오류를 원천적으로 막기 위해서 테스트 단계를 앞으로 땡긴 것입니다.

 

 

 

 

 

 

 

TDD는 테스트 주도 개발이라고 해요. 테스트가 중요한 개발이라는 것입니다.

 

개발 주기가 짧고 반복적이며 개발하기 전에 테스트 시나리오를 검증하면서 자동화된 테스트 케이스를 만드는 것이 중요한 포인트입니다. 일반적인 프로젝트는 요구사항 분석과 설계 단계 이후 개발, 테스트, 배포, 오픈 순서로 진행되는데 TDD 방법에서는 요구사항 분석 설계, 테스트, 개발, 배포, 오픈 순서로 진행됩니다.

 

TDD는 소스 코드의 품질에 대해서 향상 시킬 수 있고 오히려 빠른 개발 속도를 보일 수 있습니다. 그리고 다른 영역과 협업이 쉽고 피드백 받기도 좋습니다. 하지만 TDD는 초기에 투자시간이 많이 들어갈 수 밖에 없습니다. 초기에서 부터 테스트 시나리오에 대해서 만들고 검증하는 것이기 때문입니다. 안정성과 신뢰성을 보장 받는 것도 어려울 수 있는 것이죠.

 

TDD는 반복적인 테스트를 위한 개발 방법론이라도 할 수 있습니다. 테스트 퍼스트 개념이 들어갑니다.

 

소스코드 보다 테스트 코드 부터 작성하기 시작하는 것이 중요한 포인트에요.

 

 

https://www.ktpdigitallife.com/tdd-%eb%9c%bb%ea%b3%bc-%ea%b0%9c%eb%85%90/#more-3470

 

TDD 뜻, 테스트를 1순위로 테스트 주도 개발 - 빅스타의 디지털 라이프

TDD 뜻과 개념에 대해서 알아봅시다.

www.ktpdigitallife.com

 

 

 

TDD
TDD

 

 

 

TDD 뜻과 개념 설명

TDD(Test Driven Development)는 실제 소스 코드를 작성하기 전에 자동화된 테스트 작성을 강조하는 소프트웨어 개발 접근 방식입니다. 최소한의 오류와 결함으로 고품질 소프트웨어의 개발을 보장하기 위해 "빨간색-녹색-리팩토링"의 특정 반복 주기를 따릅니다.

 

TDD 프로세스는 다음 단계로 나눌 수 있습니다.

 

테스트 작성(적색 단계): TDD에서 개발 프로세스는 소스 코드 개발을 통해서 구현해야 하는 특정 기능에 대한 테스트 케이스를 작성하는 것으로 시작해요. 이러한 테스트는 일반적으로 Java용 JUnit 또는 .NET용 NUnit과 같은 단위 테스트 프레임워크를 사용하여 작성됩니다. 처음에는 기능을 구현하는 코드가 아직 존재하지 않기 때문에 테스트가 실패할 것으로 예상하게 됩니다. 이렇게 실패한 테스트를 "빨간색" 상태라고 합니다.

 

테스트 통과를 위한 최소 코드 작성(녹색 단계): 테스트 케이스가 작성되면 그 다음 단계는 테스트 통과에 필요한 최소한의 소스 코드를 작성하는 것입니다. 소스 코드가 불완전하거나 초기에 하드 코딩된 값을 포함할 수 있지만 중요한 포인트는 테스트 통과입니다. 해당 단계를 "녹색" 상태라고 합니다.

 

코드 리팩터링(리팩터링 단계): 테스트를 통과하게 되면 소스 코드를 리팩토링하여 구조, 가독성 및 효율성을 개선할 수 있습니다. 리팩토링은 소스 코드가 깨끗하게 유지 관리가 되도록 합니다. 궁극적인 목표는 소스 코드를 최적화하는 것입니다.

 

사이클 반복: 리팩토링 후 다음 기능개발이나 테스트 케이스에 대해서 작성하고 해당 주기를 반복합니다.

 

 

 

 

 

 

빨강-녹색-리팩터링의 이 반복적인 주기는 개발 프로세스 전반에 걸쳐 지속적으로 수행되어 새로운 기능을 계속 탑재하고 프로젝트를 중단하지 않도록 하는 것이 중요합니다. 소프트웨어 개발 프로젝트에서 TDD를 사용하면 좋은 중요한 장점은 다음과 같습니다.

 

1. 테스트 범위: TDD는 개발자가 코드의 모든 부분에 대한 테스트를 작성하도록 권장하므로 테스트 범위가 높아집니다. 이는 오류를 식별하는 데 도움이 되며 향후 변경 사항이 발생하더라도 기존 기능과 체계를 무너뜨리지 않도록 합니다.

 

2. 설계 개선: 테스트는 코드보다 먼저 작성되기 때문에 개발자는 다양한 구성 요소의 인터페이스와 상호 작용에 대해 생각해야 합니다. 이러한 과정은 더 깨끗하게 코드가 유지 관리하기 쉬운 상태로 이어집니다.

 

3. 더 빠른 디버깅: TDD를 사용하면 테스트가 실패할 때 실패를 일으키는 특정 소스 코드 부분을 식별하기가 더 쉽습니다. 실패한 테스트는 문제가 있는 위치를 정확하게 나타내는 지표 역할을 하게 되므로 개발자는 문제를 신속하게 찾아 수정할 수 있습니다.

 

4. 회귀 방지: 기존 테스트를 정기적으로 실행함으로써 TDD는 개발 주기 초기에 회귀(즉, 다시 발생하는 오류)를 포착하는 데 도움이 됩니다. 이렇게 하면 소스 코드 베이스로 한 부분에 대한 수정과 변경으로 인해 다른 부분이 실수로 손상되지 않게 할 수 있습니다.

 

5. 더 나은 협업: TDD는 개발자와 이해 관계자 간의 협업을 촉진합니다. 테스트는 실행 가능한 문서로 제공되어 예상되는 동작에 대한 이해를 공유할 수 있습니다. 또한 개발자는 여러 팀 구성원이 동시에 테스트 케이스를 작성하고 코드를 구현하면서 병렬로 작업할 수 있습니다.

 

TDD가 모든 상황에 적합하지 않을 수 있다는 점에 유의하는 것이 중요합니다. 복잡한 시스템, 중요한 구성 요소 및 요구 사항을 잘 이해하는 경우에 가장 효과적입니다. TDD는 빈번한 반복과 지속적인 피드백이 필수적인 Agile 소프트웨어 개발 방법론에서 특히 유용할 수 있습니다.

 

 

 

TDD
TDD

반응형