Smoke Test vs Sanity Test
2026년 7월 7일
1. 개요 및 핵심 요약
- 한 줄 요약 정의: 스모크 테스트는 빌드 직후 시스템 전체가 ‘숨이 붙어 있는지’ 넓고 얕게 확인하는 생존 신고이며, 새니티 테스트는 버그 수정 후 해당 기능이 ‘제정신(Sanity)으로 작동하는지’ 좁고 깊게 확인하는 집중 검사입니다.
2. 스모크 테스트 (Smoke Test)
-
개념 및 유래 설명
-
유래: 하드웨어 수리 과정에서 유래한 용어입니다. 새 회로 기판을 조립한 뒤 전원을 넣었을 때 “연기(Smoke)가 나는가?”를 가장 먼저 확인하는 것에서 출발했습니다. 연기가 난다면 더 이상의 정밀 검사는 무의미하기 때문입니다.
-
개념: 소프트웨어에서도 마찬가지로, 새로운 빌드가 나왔을 때 본격적인 QA 테스트 환경에 올리기 전 수행합니다. 시스템의 가장 핵심적이고 기본적인 기능들이 죽지 않고 제대로 동작하는지 ‘넓고 얕게(Broad and Shallow)’ 점검하는 빌드 검증(Build Verification) 과정입니다.
-
비유하자면: 중고차를 살 때 에어컨이나 내비게이션이 잘 되는지 확인하기 전에, 일단 시동부터 걸어보고 엔진이 켜지는지 확인하는 과정과 같습니다.
-
실무 적용 예시 시나리오
-
상황: 배달 앱의 대규모 V2.0 업데이트 빌드가 막 배포되었습니다.
-
시나리오: 세세한 기능 테스트에 들어가기 전, 다음과 같은 크리티컬 패스(Critical Path)만 빠르게 훑어봅니다.
- 앱 아이콘을 눌렀을 때 크래시 없이 정상적으로 앱이 켜지는가?
- 기존 계정으로 로그인이 되는가?
- 메인 화면에 음식점 리스트가 정상적으로 노출되는가?
- 결과: 만약 앱을 켜자마자 튕긴다면(연기가 난다면), QA팀은 즉각 테스트를 중단하고 개발팀에 빌드를 돌려보냅니다.
3. 새니티 테스트 (Sanity Test)
-
개념 및 목적 설명
-
개념: Sanity(제정신, 온전함)라는 단어 뜻 그대로, 시스템의 특정 부분이 ‘제정신을 차렸는지’ 확인하는 테스트입니다. 주로 자잘한 버그 수정이나 마이너 업데이트 직후에 수행됩니다.
-
목적: 수정한 코드가 의도한 대로 잘 고쳐졌는지, 그리고 그 수정으로 인해 해당 기능 주변에 다른 문제가 발생하지는 않았는지 ‘좁고 깊게(Narrow and Deep)’ 파고들어 검증합니다. 스크립트에 얽매이기보다는 테스터의 직관과 경험에 의존하여 유연하게 진행되는 경우가 많습니다.
-
비유하자면: 중고차의 ‘브레이크 패드’를 수리하고 난 뒤의 상황과 같습니다. 시동이 걸리는지(스모크)는 이미 예전에 확인했으니, 차를 끌고 나가 브레이크만 수십 번 밟아보며 해당 부품이 완벽하게 고쳐졌는지 집중적으로 확인하는 과정입니다.
-
실무 적용 예시 시나리오
-
상황: 배달 앱 결제 단계에서 특정 ‘10% 할인 쿠폰’이 적용되지 않는 버그가 리포트되어, 개발팀이 핫픽스(Hotfix)를 진행했습니다.
-
시나리오: 전체 앱을 테스트할 필요 없이, 문제가 되었던 ‘쿠폰 결제 기능’만 집중적으로 파고듭니다.
- 수정한 10% 쿠폰이 정상적으로 잘 먹히는지 확인합니다.
- 중복 할인이 불가능한 쿠폰과 함께 썼을 때 에러를 잘 뱉어내는지 확인합니다.
- 만료된 쿠폰을 적용했을 때 예외 처리가 잘 되는지 확인합니다.
- 결과: 쿠폰 기능이 완벽하게 동작한다면 새니티 테스트를 통과한 것입니다.
4. 한눈에 보는 핵심 차이점 (비교표)
| 구분 | 스모크 테스트 (Smoke Test) | 새니티 테스트 (Sanity Test) |
|---|---|---|
| 핵심 목적 | 빌드의 안정성(생존) 확인 | 특정 기능의 합리성(정상 작동) 확인 |
| 수행 시점 | 최초 빌드 직후 (본격적인 QA 이전) | 버그 수정 / 마이너 업데이트 직후 |
| 테스트 범위 | 시스템 전체 기능을 넓게 | 수정된 특정 기능을 좁게 |
| 테스트 깊이 | 기능의 동작 여부만 보는 얕은 깊이 | 예외 상황까지 파고드는 깊은 깊이 |
| 스크립트 유무 | 주로 문서화된 스크립트나 자동화 도구 기반 | 테스터의 직관에 의존하는 비스크립트(Unscripted) 기반 |
| 실무 비유 | ”앱 켜자마자 안 튕기고 잘 켜지나요?" | "아까 고친 쿠폰 기능 확실히 잘 고쳐졌나요?“ |
5. 오늘의 회고 / Takeaway
- 실무 혼동 방지 팁: 새로운 환경(New Build)이 주어졌을 때 가장 먼저 해야 하는 것은 스모크(연기 확인)이고, 코드를 고치고 났을 때(Bug Fix) 해당 코드가 멀쩡한지 확인하는 것은 새니티(제정신 확인)라고 기억하자.
- QA팀으로 빌드를 넘기기 전, 프론트엔드 개발자로서 로컬에서 내가 짠 코드가 전체 앱을 터뜨리진 않는지(스모크), 방금 수정한 버그가 엣지 케이스에서도 완벽히 동작하는지(새니티) 스스로 검증하는 습관을 들여야겠다.