본문 바로가기
CODING STUDY/개발 지식 창고📚

[Test] TDD와 회귀 테스트에 대한 비교 및 정리

by 놀고 쉬고 싶은 개발자 2026. 2. 5.

개발 프로젝트를 열어보면 src/main 옆에 매번 보이는 src/test 폴더, 다들 보신 적 있으시죠?

막상 채우려면 막막하기도 하고 중요성을 잊기도 쉬운 공간인데요.

오늘은 이 폴더를 채우기 위해 꼭 알아야 할 TDD회귀 테스트에 대해 정리해 보려고 합니다.


☑️ TDD

: 반복 테스트를 이용한 소프트웨어 방법론

  실패하는 테스트를 먼저 작성하고 통과하는 코드를 짜는 방식

 

개발 주기
TDD Cycle 설명
🔴 Red 실패하는 테스트 코드를 먼저 작성
🟢 Green 테스트 코드를 성공시키기 위한 최소한의 실제 코드 작성
🔵 Refactor 중복 코드 제거, 일반화 등의 리펙토링을 수행

 

TDD가 적합한 / 부적합한 상황
 적합  ▶︎ 신규 기능 개발
 ▶︎ 명확한 요구사항이 있는 로직
 ▶︎ 비즈니스 규칙, 계산, 핵심 도메인 로직
 부적합  ▶︎  요구사항이 자주 바뀌는 초기 기획 단계
 ▶︎ UI 위주의 코드
 ▶︎ 외부 API 연동 중심 로직

 

장단점
 장점  ▶︎ 결함 감소
 ▶︎ 오버엔지니어링 방지
 ▶︎ 디버깅 시간 절약

 단점  ▶︎ 초기 비용 발생
 ▶︎ 학습 곡선
 ▶︎ 테스트 코드 유지보수

 


☑️ 회귀 테스트

: 수정하거나 새로운 기능을 추가한 뒤, 기존 기능들이 여전히 정상적으로 동작하는지 확인하기 위한 테스트

 

회귀 테스트가 필요한 상황
  • 기존 로직 리팩토링
  • 성능 개선
  • 외부 연동
  • 버그 수정 후 재발 방지 목적
  • 운영 이슈 재현 후 수정

 

주요 구성 요소
구성요소 설명
테스트 케이스 ▶︎ 코드 변경으로 영향을 받을 가능성이 있는 기능에 대한 테스트 케이스 정의
▶︎ 각 테스트 케이스는 입력값, 실행 절차 및 예상 결과를 명확히 작성
테스트 데이터 ▶︎ 테스트에 필요한 입력값과 데이터를 실제 사용 환경과 유사하게 준비
▶︎ 성공 데이터와 실패 데이터가 필요
테스트 환경 ▶︎ 실제 운영 환경과 유사한 테스트 환경 구성
테스트 보고서 ▶︎ 테스트 실행 결과, 발견된 결함에 대한 부분 문서화

 

유형
테스트 종류 설명
단위 회귀 테스트 ▶︎ 개별 모듈 또는 컴포넌트 수준에서 변경으로 인한 오류가 없는지 확인
선택적 회귀 테스트 ▶︎ 변경된 부분의 영향도를 분석해서, 영향을 받는 영역만 골라서 테스트
점진적 회귀 테스트 ▶︎ 신규 기능 추가나 리팩토링 후에 수행, 기존 기능과 새 기능이 서로 어우러지는지 검증
교정 회귀 테스트 ▶︎ 기능 변경 없이 코드난 수정했을 때(리팩토링, 버그 수정, 환경 설정 등) 수행
전체 회귀 테스트 ▶︎ 시스템 전반의 안전성을 검증하기 위해 전체 테스트 스위트를 모두 돌려보는 방식

🧐 테스트 스위트: 테스트 케이스들을 실행 목적에 따라 하나의 그룹으로 묶어 한 번에 실행하는 기능


 

☑️ TDD vs 회귀 테스트

비교 항목 🛠️ TDD (테스트 주도 개발) 🔐 회귀 테스트 (Regression Test)
한 줄 정의 테스트를 먼저 작성하여 코드를 설계하는 방법론 변경 후 기존 기능의 안전성을 확인하는 테스트
주요 목적 ▶︎ 설계 품질 향상
▶︎ 결함 예방 및 오버 엔지니어링 방지
▶︎ 사이드 이펙트 방지
▶︎ 수정으로 인한 기존 기능 오류 검출
수행 시점 기능 구현 전 ~ 구현 중
(Red-Green-Refactor 사이클)
기능 구현 후 ~ 유지보수 단계
(배포 전, 리팩토링 후 등)
관점 이 기능이 요구사항대로 동작하는가? 수정으로 인하여 다른 기능에 오류가 있는가?
테스트 범위 보통 작은 단위의 테스트 케이스 단위부터 전체 시스템(전체 스위트)까지 다양함