Regression Test
from Claude Opus 4.6
회귀(Regression)의 의미
소프트웨어에서 regression은 "이전의 버그 상태로 되돌아감", 즉 퇴행/후퇴를 뜻한다. 코드를 수정·추가한 후 이전에 정상 동작하던 기능이 다시 망가지는 현상을 가리킨다.
예를 들어 회원가입 코드를 수정했는데 로그인 기능이 깨졌다면, 이것이 regression이다. 이런 현상을 방지하기 위해 기존 기능들을 다시 검증하는 것이 회귀 테스트다.
일반 테스트와의 차이
실제 수행하는 행위(기존 테스트를 다시 돌리는 것)는 거의 같지만, 의도와 맥락이 다르기 때문에 별도 용어로 구분한다.
| 구분 | 일반 단위/기능 테스트 | 회귀 테스트 |
|---|---|---|
| 목적 | 이 기능이 스펙대로 동작하는가? | 변경 이후에도 기존 기능이 여전히 동작하는가? |
| 범위 | 해당 기능에 집중 | 변경과 관련 없어 보이는 기능까지 포함 |
| 시점 | 개발 중 작성·실행 | 배포 전, PR 머지 전 등 변경 이후 시점 |
| 구성 | 기능별 테스트 | 핵심 경로를 추려 별도 스위트로 관리하기도 함 |
회귀 테스트 스위트
실무에서는 전체 테스트를 매번 돌리기엔 시간이 너무 오래 걸리기 때문에, 핵심 경로(critical path)만 추려서 회귀 테스트 스위트로 별도 관리하는 경우가 많다. 로그인, 결제, 핵심 비즈니스 플로우 등 깨지면 치명적인 시나리오 위주로 구성하여 빠르게 검증할 수 있도록 한다.
CI와 회귀 테스트
CI에서 PR마다 전체 테스트를 돌리는 것도 회귀 테스트의 자동화라고 볼 수 있다. 변경이 기존 기능을 깨뜨리지 않는지 자동으로 검증하는 것이 핵심 목적이기 때문이다.