정의
회귀 테스트(Regression Testing)는 소프트웨어에 수정·보완·업그레이드가 이루어진 후, 기존에 정상적으로 동작하던 기능이 여전히 올바르게 작동하는지를 확인하기 위해 수행하는 테스트 절차를 말한다.
개요
소프트웨어 개발 과정에서 버그 수정, 기능 추가, 성능 개선 등 다양한 변경이 이루어지면, 이러한 변경이 기존 코드에 미치는 영향을 평가할 필요가 있다. 회귀 테스트는 이러한 변경이 기존 기능에 부정적인 영향을 미치지 않았는지 검증함으로써, 소프트웨어 품질을 유지·향상시키는 데 중요한 역할을 한다. 일반적으로 자동화된 테스트 스크립트를 활용해 반복적으로 실행되며, 지속적 통합(CI)·지속적 배포(CD) 파이프라인에 포함되는 경우가 많다.
어원/유래
‘회귀’는 영어 ‘regression’을 번역한 것으로, ‘후퇴·퇴보’를 의미한다. 소프트웨어 공학에서는 ‘수정이 이전 상태(기능)의 정상 동작을 퇴보시키는 경우’를 의미한다. 따라서 ‘회귀 테스트’는 영어 표현 regression testing을 그대로 번역·수용한 용어이며, 1990년대 초반부터 국제적인 소프트웨어 테스트 표준 및 문헌에 등장하기 시작했다.
특징
| 구분 | 내용 |
|---|---|
| 목적 | 변경 사항이 기존 기능에 미치는 영향을 확인하고, 새로운 버그 발생을 방지 |
| 시점 | 코드 변경 직후, 빌드가 완료된 시점에 수행 |
| 실행 방식 | 수동 테스트와 자동화 테스트 두 방식이 존재하나, 규모가 큰 프로젝트에서는 자동화가 주류 |
| 범위 | 전체 테스트 스위트(모든 테스트) 혹은 위험도·변경 범위에 따라 선택된 서브셋 |
| 주요 도구 | Selenium, JUnit, TestNG, Selenium WebDriver, Cypress 등 자동화 프레임워크 |
| 주요 장점 | - 기존 기능 손상 조기 발견 - 배포 전 안정성 확보 - 테스트 반복성 확보 |
| 한계·과제 | - 테스트 케이스 유지보수 비용 증가 - 테스트 실행 시간이 길어질 수 있음 - 모든 회귀 시나리오를 포괄하기 어려움 |
관련 항목
- 소프트웨어 테스트(Software Testing)
- 단위 테스트(Unit Testing)
- 통합 테스트(Integration Testing)
- 시스템 테스트(System Testing)
- 자동화 테스트(Automated Testing)
- 지속적 통합(Continuous Integration, CI)
- 테스트 주도 개발(Test‑Driven Development, TDD)
※ 본 항목은 소프트웨어 공학 분야에서 널리 사용되는 표준 용어이며, 관련 문헌 및 산업 표준에 근거한다.