본문 바로가기
공부/TIL•기타

TDD(테스트 주도 개발)

by svcbn 2024. 9. 14.

09/12

 

단위 테스트 (Unit Test)

단위 테스트는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트 이다.
반대되는 개념은 통합 테스트(Integration Test) 로,
모듈을 통합하는 과정에서 모듈 간의 호환성을 확인하기 위해 수행되는 테스트이다.

단위 테스트를 작성해야 하는 이유는,

  • 코드를 수정하거나 기능을 추가할 때 수시로 빠르게 검증 가능.
  • 리팩토링 시에 안정성 확보.
  • 개발 및 테스팅에 대한 시간과 비용 절감.

그렇다고 무작정 테스트를 하는 것이 좋지는 않고, 좋은 테스트를 작성해야 장점을 살릴 수 있다.
좋은 테스트의 기준은 FIRST의 규칙을 따르는데,

F ast : 테스트는 빠르게 동작하여 자주 돌릴 수 있어야 한다.
I ndependent : 각각의 테스트는 독립적이며 서로 의존해서는 안된다.
R epeatable : 어느 환경에서도 반복 가능해야 한다.
S elf-Validateing : 테스트는 성공 또는 실패로 결과를 내어 자체적으로 검증되어야 한다.
T imely : 테스트는 적시에, 테스트하려는 실제 코드를 구현하기 직전에 구현해야 한다.

 

 

TDD (Test-Driven Development, 테스트 주도 개발)

TDD 는 프로덕션 코드 보다 테스트 코드를 먼저 작성하는 개발 방법론이다.
궁극적인 목표는, 작동하는 깔끔한 코드를 작성하는 것.

테스트 코드를 먼저 작성해야 하는 이유는,

  • 깔끔한 코드를 작성할 수 있다.
  • 장기적으로 개발 비용을 절감할 수 있다.
  • 개발이 끝나고 나면 테스트 코드를 작성하는 것이 매우 귀찮기 때문에

테스트 코드는 성공 케이스 뿐만 아니라 실패 케이스까지 작성해야 하기 때문에,
작성해야 할 테스트는 해당 함수에서 발생가능한 모든 경우들을 포함한다.
개발 단계에서 리팩토링을 거치는 것과 비슷한 효과를 받기 때문에, 처음 작성할 때에는
귀찮고 개발을 느리게 한다는 느낌을 받을 수 있지만, 장기적으로 보면 반드시 개발 비용을 아껴줄 것.

TDD 를 실행하기 위한 순서는,

  1. 실패하는 작은 단위 테스트 작성. (처음에는 컴파일이 안 될 수도 있음)
  2. 빨리 테스트를 통과하기 위해 프로덕션 코드를 작성. (정답이 아닌 가짜 구현 등을 작성하기도 함)
  3. 그 다음의 테스트 코드 작성. 실패 테스트가 없을 때 성공 테스트를 작성.
  4. 새로운 테스트를 통과하기 윈한 프로덕션 코드를 추가, 수정.
  5. 1~4 단계를 반복하여 실패/성공의 모든 테스트 케이스를 작성.
  6. 개발된 코드들에 대해 중복을 제거하며 리팩토링.

'공부 > TIL•기타' 카테고리의 다른 글

.ini  (0) 2024.10.07
결합도 / 응집도  (0) 2024.10.07
Method Chaining  (0) 2024.09.08
07/29  (0) 2024.08.26
07/24~25  (0) 2024.07.29