소프트웨어 QA를 공부하다 보면 Regression Test(회귀 테스트)라는 용어를 자주 접하게 됩니다.
처음에는 “버그를 수정했으면 다시 확인하면 되는 것 아닌가?”라고 생각하기 쉬운데요. 실제 QA 업무에서는 단순히 수정된 부분만 확인하는 것으로 끝나지 않습니다.
하나의 기능을 수정했을 뿐인데 전혀 상관없어 보였던 기존 기능에서 새로운 버그가 발생하는 경우가 있기 때문입니다.
오늘은 QA 입문자가 꼭 알아야 할 Regression Test란 무엇인지, 회귀 테스트가 왜 중요한지, 실제로 어떻게 진행하는지 쉽게 알아보겠습니다.
Regression Test란 무엇일까?
Regression Test, 한국어로 회귀 테스트는 소프트웨어의 새로운 기능을 추가하거나 기존 기능을 수정한 이후 기존에 정상적으로 작동하던 기능에 문제가 생기지 않았는지 다시 확인하는 테스트입니다.
쉽게 말하면,
“이번에 수정한 내용 때문에 기존 기능까지 망가진 것은 없는가?”
를 확인하는 테스트라고 생각하면 됩니다.
예를 들어 쇼핑몰에서 결제 기능의 오류를 수정했다고 가정해 보겠습니다.
개발자는 결제 관련 코드만 수정했다고 생각할 수 있지만 실제로는 주문 내역이나 장바구니, 쿠폰 기능 등에 영향을 줄 수도 있습니다.
따라서 수정된 결제 기능만 테스트하는 것이 아니라 관련된 기존 기능도 다시 확인하는 과정이 필요합니다.
왜 회귀 테스트가 필요할까?
소프트웨어는 여러 기능이 서로 연결되어 있기 때문입니다.
하나의 기능을 수정하면 예상하지 못한 다른 기능에 영향을 줄 수 있습니다.
특히 프로젝트 규모가 커질수록 소스 코드와 기능 간의 연결 관계가 복잡해집니다.
예를 들어 회원정보 수정 기능을 변경했는데 로그인이나 결제 정보에 문제가 생길 수도 있습니다.
이처럼 기존에 정상적으로 작동하던 기능이 새로운 변경으로 인해 문제가 발생하는 것을 방지하기 위해 회귀 테스트가 필요합니다.
회귀 테스트는 언제 진행할까?
회귀 테스트는 다양한 상황에서 진행할 수 있습니다.
대표적으로 다음과 같은 경우입니다.
- 새로운 기능이 추가됐을 때
- 기존 기능이 수정됐을 때
- 버그가 수정됐을 때
- 소프트웨어 버전이 업데이트됐을 때
- 시스템 환경이 변경됐을 때
특히 버그 수정 후에는 수정된 기능만 확인하고 끝내기보다는 수정으로 인해 다른 기능에 영향을 주지 않았는지 확인하는 것이 중요합니다.
재테스트와 회귀 테스트는 다르다
QA를 처음 공부할 때 Re-test(재테스트)와 Regression Test를 헷갈리는 경우가 많습니다.
두 테스트는 비슷해 보이지만 목적이 다릅니다.
재테스트는 수정된 버그가 제대로 해결됐는지 확인하는 것입니다.
반면 회귀 테스트는 수정된 내용 때문에 기존 기능에 문제가 생기지 않았는지 확인하는 것입니다.
예를 들어 로그인 오류가 수정됐다고 해보겠습니다.
수정된 로그인 오류가 더 이상 발생하지 않는지 확인하는 것은 재테스트입니다.
그 이후 회원가입, 로그아웃, 계정 정보 등 기존 기능에 문제가 없는지 확인한다면 회귀 테스트가 될 수 있습니다.
회귀 테스트는 모든 기능을 다시 테스트해야 할까?
이론적으로는 모든 기능을 다시 확인하면 가장 안전할 것 같지만 현실적으로는 쉽지 않습니다.
서비스 규모가 커지면 테스트해야 할 기능도 수백, 수천 개가 될 수 있기 때문입니다.
테스트 시간과 인력이 제한되어 있기 때문에 실제 QA에서는 변경된 기능과 영향을 받을 가능성이 높은 기능을 중심으로 회귀 테스트 범위를 결정하는 경우가 많습니다.
서비스에서 중요한 기능인지, 변경 범위가 얼마나 큰지, 과거에 문제가 자주 발생했던 영역인지 등을 고려할 수 있습니다.
회귀 테스트 자동화가 중요한 이유
반복적으로 같은 테스트를 수행해야 하기 때문에 회귀 테스트는 자동화와 잘 어울리는 영역이기도 합니다.
예를 들어 로그인, 회원가입, 결제 등 반복적으로 확인해야 하는 기능을 자동화하면 새로운 버전이 배포될 때마다 빠르게 테스트할 수 있습니다.
물론 모든 테스트를 자동화할 수 있는 것은 아니기 때문에 프로젝트의 특성과 테스트 목적에 따라 자동화와 수동 테스트를 적절하게 조합하는 것이 중요합니다.
Regression Test 핵심 정리
회귀 테스트를 한 문장으로 정리하면 다음과 같습니다.
“변경된 소프트웨어 때문에 기존에 정상적으로 작동하던 기능이 영향을 받지 않았는지 확인하는 테스트”
그리고 재테스트와의 차이도 함께 기억해 두면 좋습니다.
재테스트 → 수정된 문제가 해결됐는가?
회귀 테스트 → 수정 때문에 다른 문제가 발생하지 않았는가?
이 두 가지를 구분할 수 있다면 QA 테스트의 기본 개념을 이해하는 데 큰 도움이 됩니다.
마무리
소프트웨어 개발에서는 새로운 기능을 추가하거나 버그를 수정하는 일이 계속 발생합니다.
문제는 작은 수정 하나가 다른 기능에 예상하지 못한 영향을 줄 수 있다는 것입니다.
그래서 QA에서는 Regression Test(회귀 테스트)를 통해 기존 기능이 계속 정상적으로 작동하는지 확인합니다.
QA를 공부하고 있다면 회귀 테스트의 개념뿐만 아니라 테스트 범위를 어떻게 결정하는지, 어떤 기능을 우선적으로 확인해야 하는지까지 함께 생각해 보는 것을 추천합니다.
다음 글에서는 배포된 소프트웨어를 본격적으로 테스트하기 전에 가장 먼저 확인하는 BVT 테스트란 무엇인지 알아보겠습니다.