소프트웨어 QA를 공부하다 보면 Smoke Test(스모크 테스트)와 Sanity Test(세니티 테스트)라는 용어를 자주 접하게 됩니다. 이름도 비슷하고 둘 다 빠르게 테스트한다는 느낌이 있어서 처음에는 상당히 헷갈립니다.
저도 처음 QA를 공부할 때는 “둘 다 간단하게 확인하는 테스트 아닌가?”라고 생각했는데요. 실제로는 테스트를 진행하는 목적과 범위에서 차이가 있습니다.
오늘은 QA 입문자가 알아두면 좋은 Smoke Test와 Sanity Test의 차이점, 각각 언제 사용하는지 쉽게 정리해 보겠습니다.
Smoke Test란 무엇일까?
Smoke Test는 새로운 소프트웨어 버전이나 빌드가 기본적인 테스트를 진행할 수 있는 상태인지 빠르게 확인하는 테스트입니다.
쉽게 말하면 “일단 이 버전으로 테스트를 시작해도 괜찮은가?”를 확인하는 과정입니다.
예를 들어 쇼핑몰 앱의 새로운 버전이 QA팀에 전달됐다고 가정해 보겠습니다.
QA가 처음부터 회원가입, 상품 검색, 주문, 결제 등 모든 기능을 자세하게 테스트했는데 앱 자체가 실행되지 않는다면 상당히 비효율적일 것입니다.
그래서 먼저 앱이 정상적으로 실행되는지, 로그인이 가능한지, 주요 화면이 열리는지 등 핵심적인 기능을 빠르게 확인합니다.
이 과정에서 심각한 문제가 발견되면 전체 테스트를 진행하지 않고 개발팀에 다시 전달할 수도 있습니다.
Smoke Test는 왜 필요할까?
Smoke Test의 가장 큰 목적은 테스트 시간과 자원을 낭비하지 않는 것입니다.
예를 들어 로그인 자체가 되지 않는 버전이라면 로그인 이후에 사용할 수 있는 주문이나 결제 기능을 테스트하는 것이 의미가 없을 수 있습니다.
따라서 본격적인 테스트를 시작하기 전에 핵심 기능을 빠르게 확인하고, 테스트할 가치가 있는 빌드인지 판단하는 것입니다.
Sanity Test란 무엇일까?
Sanity Test는 특정 기능이나 변경된 부분이 정상적으로 동작하는지 빠르게 확인하는 테스트입니다.
Smoke Test가 새로운 빌드 전체의 기본적인 상태를 확인하는 데 초점을 둔다면, Sanity Test는 특정 변경 사항이나 수정된 기능에 좀 더 집중하는 경우가 많습니다.
예를 들어 개발자가 로그인 기능의 오류를 수정했다고 가정해 보겠습니다.
QA는 수정된 로그인 기능을 다시 확인하면서 정상적으로 로그인되는지, 잘못된 비밀번호 입력 시 오류가 정상적으로 표시되는지 등을 빠르게 확인할 수 있습니다.
이처럼 변경된 부분이 의도한 대로 제대로 수정됐는지 확인하는 것이 Sanity Test의 대표적인 활용 방법입니다.
Smoke Test와 Sanity Test의 차이
두 테스트를 가장 쉽게 구분하면 다음과 같습니다.
Smoke Test → 전체적으로 테스트를 시작할 수 있는가?
Sanity Test → 특정 변경 사항이 정상적으로 작동하는가?
예를 들어 새로운 쇼핑몰 앱 버전이 전달됐다고 생각해 보겠습니다.
Smoke Test에서는 앱 실행, 로그인, 상품 조회, 장바구니 등 주요 기능이 전반적으로 작동하는지 빠르게 확인합니다.
이후 결제 기능에 수정사항이 있었다면 Sanity Test를 통해 결제 기능과 관련된 변경 부분을 집중적으로 확인할 수 있습니다.
Smoke Test와 Sanity Test 비교
| 구분 | Smoke Test | Sanity Test |
|---|---|---|
| 주요 목적 | 테스트 진행 가능 여부 확인 | 특정 변경 기능 확인 |
| 범위 | 비교적 넓음 | 비교적 좁음 |
| 테스트 대상 | 주요 핵심 기능 | 수정·변경된 기능 |
| 진행 시점 | 새로운 빌드가 전달된 후 | 수정이나 변경 이후 |
| 특징 | 빠르게 전체 상태 확인 | 특정 영역 집중 확인 |
다만 여기서 주의할 점이 있습니다.
Smoke Test와 Sanity Test의 정의와 사용 방식은 회사마다 조금씩 다를 수 있습니다.
어떤 조직에서는 두 용어를 비슷한 의미로 사용하기도 하고, 테스트 프로세스에 따라 범위를 다르게 정의하기도 합니다.
따라서 실제 QA 업무에서는 회사의 테스트 정책이나 프로젝트에서 정의한 기준을 확인하는 것이 가장 정확합니다.
QA에서 Smoke Test와 Sanity Test를 함께 사용하는 이유
두 테스트는 서로 경쟁하는 개념이 아니라 서로 다른 목적을 가진 테스트라고 생각하면 쉽습니다.
새로운 빌드가 들어오면 먼저 Smoke Test로 전체적인 상태를 확인하고, 특정 기능이 수정된 경우에는 Sanity Test를 통해 해당 기능을 집중적으로 확인할 수 있습니다.
이렇게 하면 제한된 시간 안에서 테스트 효율을 높일 수 있습니다.
특히 개발과 배포가 빠르게 반복되는 프로젝트에서는 모든 기능을 매번 처음부터 자세하게 테스트하기 어렵기 때문에 이런 테스트 방법이 더욱 중요합니다.
마무리
Smoke Test와 Sanity Test는 QA 실무에서 자주 등장하는 테스트 방법입니다.
핵심만 기억한다면 어렵지 않습니다.
Smoke Test는 “이 빌드를 전체적으로 테스트해도 되는가?”를 확인하는 테스트이고,
Sanity Test는 “변경된 특정 기능이 제대로 수정됐는가?”를 빠르게 확인하는 테스트라고 이해하면 됩니다.
QA를 처음 공부한다면 용어 자체를 무작정 외우기보다 각 테스트가 왜 필요한지와 어떤 상황에서 사용하는지를 이해하는 것이 좋습니다.
다음 글에서는 소프트웨어 QA에서 매우 중요한 개념인 Regression Test(회귀 테스트)란 무엇인지, 왜 반복적인 테스트가 필요한지 알아보겠습니다.