Gitsunmin

TIL

Smoke Test vs Sanity Test

2026년 7월 7일

1. 개요 및 핵심 요약

  • 한 줄 요약 정의: 스모크 테스트는 빌드 직후 시스템 전체가 ‘숨이 붙어 있는지’ 넓고 얕게 확인하는 생존 신고이며, 새니티 테스트는 버그 수정 후 해당 기능이 ‘제정신(Sanity)으로 작동하는지’ 좁고 깊게 확인하는 집중 검사입니다.

2. 스모크 테스트 (Smoke Test)

  • 개념 및 유래 설명

  • 유래: 하드웨어 수리 과정에서 유래한 용어입니다. 새 회로 기판을 조립한 뒤 전원을 넣었을 때 “연기(Smoke)가 나는가?”를 가장 먼저 확인하는 것에서 출발했습니다. 연기가 난다면 더 이상의 정밀 검사는 무의미하기 때문입니다.

  • 개념: 소프트웨어에서도 마찬가지로, 새로운 빌드가 나왔을 때 본격적인 QA 테스트 환경에 올리기 전 수행합니다. 시스템의 가장 핵심적이고 기본적인 기능들이 죽지 않고 제대로 동작하는지 ‘넓고 얕게(Broad and Shallow)’ 점검하는 빌드 검증(Build Verification) 과정입니다.

  • 비유하자면: 중고차를 살 때 에어컨이나 내비게이션이 잘 되는지 확인하기 전에, 일단 시동부터 걸어보고 엔진이 켜지는지 확인하는 과정과 같습니다.

  • 실무 적용 예시 시나리오

  • 상황: 배달 앱의 대규모 V2.0 업데이트 빌드가 막 배포되었습니다.

  • 시나리오: 세세한 기능 테스트에 들어가기 전, 다음과 같은 크리티컬 패스(Critical Path)만 빠르게 훑어봅니다.

  1. 앱 아이콘을 눌렀을 때 크래시 없이 정상적으로 앱이 켜지는가?
  2. 기존 계정으로 로그인이 되는가?
  3. 메인 화면에 음식점 리스트가 정상적으로 노출되는가?
  • 결과: 만약 앱을 켜자마자 튕긴다면(연기가 난다면), QA팀은 즉각 테스트를 중단하고 개발팀에 빌드를 돌려보냅니다.

3. 새니티 테스트 (Sanity Test)

  • 개념 및 목적 설명

  • 개념: Sanity(제정신, 온전함)라는 단어 뜻 그대로, 시스템의 특정 부분이 ‘제정신을 차렸는지’ 확인하는 테스트입니다. 주로 자잘한 버그 수정이나 마이너 업데이트 직후에 수행됩니다.

  • 목적: 수정한 코드가 의도한 대로 잘 고쳐졌는지, 그리고 그 수정으로 인해 해당 기능 주변에 다른 문제가 발생하지는 않았는지 ‘좁고 깊게(Narrow and Deep)’ 파고들어 검증합니다. 스크립트에 얽매이기보다는 테스터의 직관과 경험에 의존하여 유연하게 진행되는 경우가 많습니다.

  • 비유하자면: 중고차의 ‘브레이크 패드’를 수리하고 난 뒤의 상황과 같습니다. 시동이 걸리는지(스모크)는 이미 예전에 확인했으니, 차를 끌고 나가 브레이크만 수십 번 밟아보며 해당 부품이 완벽하게 고쳐졌는지 집중적으로 확인하는 과정입니다.

  • 실무 적용 예시 시나리오

  • 상황: 배달 앱 결제 단계에서 특정 ‘10% 할인 쿠폰’이 적용되지 않는 버그가 리포트되어, 개발팀이 핫픽스(Hotfix)를 진행했습니다.

  • 시나리오: 전체 앱을 테스트할 필요 없이, 문제가 되었던 ‘쿠폰 결제 기능’만 집중적으로 파고듭니다.

  1. 수정한 10% 쿠폰이 정상적으로 잘 먹히는지 확인합니다.
  2. 중복 할인이 불가능한 쿠폰과 함께 썼을 때 에러를 잘 뱉어내는지 확인합니다.
  3. 만료된 쿠폰을 적용했을 때 예외 처리가 잘 되는지 확인합니다.
  • 결과: 쿠폰 기능이 완벽하게 동작한다면 새니티 테스트를 통과한 것입니다.

4. 한눈에 보는 핵심 차이점 (비교표)

구분스모크 테스트 (Smoke Test)새니티 테스트 (Sanity Test)
핵심 목적빌드의 안정성(생존) 확인특정 기능의 합리성(정상 작동) 확인
수행 시점최초 빌드 직후 (본격적인 QA 이전)버그 수정 / 마이너 업데이트 직후
테스트 범위시스템 전체 기능을 넓게수정된 특정 기능을 좁게
테스트 깊이기능의 동작 여부만 보는 얕은 깊이예외 상황까지 파고드는 깊은 깊이
스크립트 유무주로 문서화된 스크립트나 자동화 도구 기반테스터의 직관에 의존하는 비스크립트(Unscripted) 기반
실무 비유”앱 켜자마자 안 튕기고 잘 켜지나요?""아까 고친 쿠폰 기능 확실히 잘 고쳐졌나요?“

5. 오늘의 회고 / Takeaway

  • 실무 혼동 방지 팁: 새로운 환경(New Build)이 주어졌을 때 가장 먼저 해야 하는 것은 스모크(연기 확인)이고, 코드를 고치고 났을 때(Bug Fix) 해당 코드가 멀쩡한지 확인하는 것은 새니티(제정신 확인)라고 기억하자.
  • QA팀으로 빌드를 넘기기 전, 프론트엔드 개발자로서 로컬에서 내가 짠 코드가 전체 앱을 터뜨리진 않는지(스모크), 방금 수정한 버그가 엣지 케이스에서도 완벽히 동작하는지(새니티) 스스로 검증하는 습관을 들여야겠다.