개발자가 새로운 버전을 테스트 서버에 막 배포하고 나서 QA에게 이렇게 말합니다. “새 빌드 올렸어요. QA 시작 전에 스모크 테스트 한번 돌려주세요!”
며칠 뒤, 버그 하나를 급하게 수정하고 나서는 이렇게 말할지도 모릅니다. “버그 수정했는데, 다른 거 문제없는지 새니티 체크 좀 부탁드려요.”
스모크? 새니티? 둘 다 뭔가 빠르고 간단한 테스트 같기는 한데, 정확히 뭐가 다른 걸까요? 이 두 가지 ‘게이트키퍼’ 테스트의 차이점을 명확히 이해하면 팀의 소통과 업무 효율을 크게 높일 수 있습니다.

Q. 스모크 테스트(Smoke Test), 정확히 무엇인가요?
새로운 소프트웨어 빌드가 상세한 테스트를 시작할 수 있을 정도로 ‘최소한의 안정성을 갖추었는지’를 검증하는, 빠르고 넓은 범위의 테스트입니다.
- 비유: 새로 조립한 컴퓨터의 전원 버튼을 처음 눌러보는 것과 같습니다. 모니터에 화면이 들어오고, 운영체제가 부팅되는지 등 ‘연기(smoke)가 나지 않는’ 기본적인 상태만 확인하는 것입니다. 이때 키보드의 모든 키가 잘 작동하는지, 스피커 소리가 잘 나오는지는 아직 관심사가 아닙니다.
- 언제 하나요?
- 새로운 기능이 많이 포함된 ‘새 빌드’가 테스트 환경에 처음 배포되었을 때 수행합니다.
- 무엇을 확인하나요?
- “이 빌드는 다음 단계의 상세한 테스트를 진행할 가치가 있는가?”를 판단합니다.
- 주요 목표는 빌드가 치명적인 오류 없이 설치되고, 실행되며, 핵심 기능(로그인, 메인 페이지 접근 등)이 동작하는지를 확인하는 것입니다.
- 만약 스모크 테스트에서 실패하면, QA팀은 더 이상의 테스트를 진행하지 않고 즉시 빌드를 개발팀에 반려(reject)합니다.
Q. 새니티 테스트(Sanity Test), 그럼 이건 뭔가요?
하나의 버그를 수정했거나 아주 작은 기능을 변경했을 때, ‘해당 수정 사항이 의도대로 잘 작동하고, 주변 기능에 명백한 부작용을 일으키지 않았는지’를 검증하는, 좁고 깊은 범위의 테스트입니다.
- 비유: 자동차의 타이어 하나를 교체한 후, 그 타이어의 볼트가 잘 조여졌는지, 그리고 차를 살짝만 움직여서 삐걱거리는 소리가 나지 않는지만 확인하는 것과 같습니다. 이때 엔진오일이나 와이퍼, 에어컨까지 전부 점검하지는 않습니다.
- 언제 하나요?
- 버그를 수정한 빌드 또는 매우 작은 변경이 적용된 빌드를 받았을 때 수행합니다.
- 무엇을 확인하나요?
- “이번 수정이 제정신으로(sane), 이치에 맞게 잘 이루어졌는가?”를 판단합니다.
- 주요 목표는 수정된 기능이 올바르게 동작하는지, 그리고 그 수정으로 인해 다른 부분이 명백하게 깨지지는 않았는지만 빠르게 확인하는 것입니다.
Q. 두 테스트의 가장 큰 차이점은 무엇인가요?
‘범위(Scope)’와 ‘목적(Purpose)’이 가장 명확한 차이점입니다.
| 구분 | 스모크 테스트 (Smoke Test) | 새니티 테스트 (Sanity Test) |
| 목적 | 빌드의 전반적인 안정성 확인 | 특정 수정 사항의 건전성 확인 |
| 범위 | 넓고 얕음 (핵심 기능 전반) | 좁고 깊음 (변경된 기능 위주) |
| 시점 | 새 빌드 배포 직후 | 버그 수정 또는 작은 변경 후 |
| 비유 | 컴퓨터 전원 켜보기 | 타이어 교체 후 주변 확인하기 |
간단히 말해, 스모크 테스트는 ‘숲 전체에 불이 나지 않았는지’ 멀리서 넓게 보는 것이고, 새니티 테스트는 ‘내가 방금 심은 나무 한 그루와 그 주변 땅이 괜찮은지’ 가까이서 깊게 보는 것입니다.
결론: 효율적인 문지기 역할
스모크 테스트와 새니티 테스트는 모든 기능을 완벽하게 확인하는 테스트가 아닙니다. 하지만 이 두 테스트는 개발 과정의 중요한 ‘문지기’ 역할을 합니다.
치명적인 문제가 있는 빌드를 초기에 걸러내어 팀 전체의 시간 낭비를 막아주고, 작은 수정이 일으킬 수 있는 명백한 문제를 빠르게 확인하여 안정성을 높여줍니다. 이 두 가지 테스트의 개념을 명확히 이해하고 적시에 활용하는 것은, 효율적인 QA 프로세스를 만드는 데 큰 도움이 됩니다.