CS

TDD란?

Timha 2023. 2. 3. 13:44

TDD란?

테스트가 주도하는 개발을 의미하는데, 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.

TDD는 짧은 개발 주기(보통 몇 분에서 몇 시간)의 반복에 의존하는 개발 프로세스로서, Extreme Programming(XP)의 “Test-First” 개념에 기반을 둔 단순한 설계를 중요시합니다. TDD를 가장 쉽게 표현한 것이 “Red-Green-Refactor” 개발 주기인데, 이는 [그림1]과 같습니다.

1. RED - 실패하는 테스트를 추가한다.

2. GREEN 성공하는 테스트를 추가한다.

3. YELLOW 테스트 성공을 유지하면서 구현된 설계를 개선한다. ( 중복코드 제거 및 일반화)

사용하기 좋은 상황

 

  1. “피드백”과 “협력”이 필요한 상황 (협업) → 다른 사람이 보기 쉽고 직접 테스트를 사용 할 수 있음
  2. 처음 진행하는 프로그램 주제 → 테스트를 통해서 불확실성을 줄임
  3. 고객의 요구 조건이 바뀔 수 있는 프로젝트 → 변화에 쉽게 적응 할 수 있음
  4. 개발하는 중에 코드를 많이 바꿔야 된다고 생각하는 경우 → 3번과 비슷한 이유
  5. 여러 명이 코드를 공유하여 유지 보수해야 하는 경우 → 리팩토링을 통해 test를 쉽게 진행하여 수정자가 어떤 코드인지 알아보기 쉽다.

장점

  • 디버깅 시간을 줄여준다.
  • 동작하는 문서 역할을 한다.
  • 변화에 대한 두려움을 줄여준다.
  • 구체적인 구현 내용이나 세부적인 사항보다는 그것이 무엇을 하는지 확인하는 용도
  • TDD를 하다보면 객체의 역할을 확인할 수 있게 됨.
  • 안정감 있는 코드 작성 가능

단점

  • 노력과 시간이 많이 든다. 하지만 시간이 지나면서 기존과 크게 달라지지 않음

TDD란?

테스트가 주도하는 개발을 의미하는데, 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.

TDD는 짧은 개발 주기(보통 몇 분에서 몇 시간)의 반복에 의존하는 개발 프로세스로서, Extreme Programming(XP)의 “Test-First” 개념에 기반을 둔 단순한 설계를 중요시합니다. TDD를 가장 쉽게 표현한 것이 “Red-Green-Refactor” 개발 주기인데, 이는 [그림1]과 같습니다.

1. RED - 실패하는 테스트를 추가한다.

2. GREEN 성공하는 테스트를 추가한다.

3. YELLOW 테스트 성공을 유지하면서 구현된 설계를 개선한다. ( 중복코드 제거 및 일반화)

사용하기 좋은 상황

  1. “피드백”과 “협력”이 필요한 상황 (협업) → 다른 사람이 보기 쉽고 직접 테스트를 사용 할 수 있음
  2. 처음 진행하는 프로그램 주제 → 테스트를 통해서 불확실성을 줄임
  3. 고객의 요구 조건이 바뀔 수 있는 프로젝트 → 변화에 쉽게 적응 할 수 있음
  4. 개발하는 중에 코드를 많이 바꿔야 된다고 생각하는 경우 → 3번과 비슷한 이유
  5. 여러 명이 코드를 공유하여 유지 보수해야 하는 경우 → 리팩토링을 통해 test를 쉽게 진행하여 수정자가 어떤 코드인지 알아보기 쉽다.

장점

  • 디버깅 시간을 줄여준다.
  • 동작하는 문서 역할을 한다.
  • 변화에 대한 두려움을 줄여준다.
  • 구체적인 구현 내용이나 세부적인 사항보다는 그것이 무엇을 하는지 확인하는 용도
  • TDD를 하다보면 객체의 역할을 확인할 수 있게 됨.
  • 안정감 있는 코드 작성 가능

단점

  • 노력과 시간이 많이 든다. 하지만 시간이 지나면서 기존과 크게 달라지지 않음