“이거 빌드, 제대로 된 거 맞아?” 스모크 테스트와 새니티 테스트

개발자가 새로운 버전을 테스트 서버에 막 배포하고 나서 QA에게 이렇게 말합니다. “새 빌드 올렸어요. QA 시작 전에 스모크 테스트 한번 돌려주세요!”

며칠 뒤, 버그 하나를 급하게 수정하고 나서는 이렇게 말할지도 모릅니다. “버그 수정했는데, 다른 거 문제없는지 새니티 체크 좀 부탁드려요.”

스모크? 새니티? 둘 다 뭔가 빠르고 간단한 테스트 같기는 한데, 정확히 뭐가 다른 걸까요? 이 두 가지 ‘게이트키퍼’ 테스트의 차이점을 명확히 이해하면 팀의 소통과 업무 효율을 크게 높일 수 있습니다.

Q. 스모크 테스트(Smoke Test), 정확히 무엇인가요?

새로운 소프트웨어 빌드가 상세한 테스트를 시작할 수 있을 정도로 ‘최소한의 안정성을 갖추었는지’를 검증하는, 빠르고 넓은 범위의 테스트입니다.

  • 비유: 새로 조립한 컴퓨터의 전원 버튼을 처음 눌러보는 것과 같습니다. 모니터에 화면이 들어오고, 운영체제가 부팅되는지 등 ‘연기(smoke)가 나지 않는’ 기본적인 상태만 확인하는 것입니다. 이때 키보드의 모든 키가 잘 작동하는지, 스피커 소리가 잘 나오는지는 아직 관심사가 아닙니다.
  • 언제 하나요?
    • 새로운 기능이 많이 포함된 ‘새 빌드’가 테스트 환경에 처음 배포되었을 때 수행합니다.
  • 무엇을 확인하나요?
    • “이 빌드는 다음 단계의 상세한 테스트를 진행할 가치가 있는가?”를 판단합니다.
    • 주요 목표는 빌드가 치명적인 오류 없이 설치되고, 실행되며, 핵심 기능(로그인, 메인 페이지 접근 등)이 동작하는지를 확인하는 것입니다.
    • 만약 스모크 테스트에서 실패하면, QA팀은 더 이상의 테스트를 진행하지 않고 즉시 빌드를 개발팀에 반려(reject)합니다.

Q. 새니티 테스트(Sanity Test), 그럼 이건 뭔가요?

하나의 버그를 수정했거나 아주 작은 기능을 변경했을 때, ‘해당 수정 사항이 의도대로 잘 작동하고, 주변 기능에 명백한 부작용을 일으키지 않았는지’를 검증하는, 좁고 깊은 범위의 테스트입니다.

  • 비유: 자동차의 타이어 하나를 교체한 후, 그 타이어의 볼트가 잘 조여졌는지, 그리고 차를 살짝만 움직여서 삐걱거리는 소리가 나지 않는지만 확인하는 것과 같습니다. 이때 엔진오일이나 와이퍼, 에어컨까지 전부 점검하지는 않습니다.
  • 언제 하나요?
    • 버그를 수정한 빌드 또는 매우 작은 변경이 적용된 빌드를 받았을 때 수행합니다.
  • 무엇을 확인하나요?
    • “이번 수정이 제정신으로(sane), 이치에 맞게 잘 이루어졌는가?”를 판단합니다.
    • 주요 목표는 수정된 기능이 올바르게 동작하는지, 그리고 그 수정으로 인해 다른 부분이 명백하게 깨지지는 않았는지만 빠르게 확인하는 것입니다.

Q. 두 테스트의 가장 큰 차이점은 무엇인가요?

‘범위(Scope)’와 ‘목적(Purpose)’이 가장 명확한 차이점입니다.

구분스모크 테스트 (Smoke Test)새니티 테스트 (Sanity Test)
목적빌드의 전반적인 안정성 확인특정 수정 사항의 건전성 확인
범위넓고 얕음 (핵심 기능 전반)좁고 깊음 (변경된 기능 위주)
시점새 빌드 배포 직후버그 수정 또는 작은 변경 후
비유컴퓨터 전원 켜보기타이어 교체 후 주변 확인하기

간단히 말해, 스모크 테스트는 ‘숲 전체에 불이 나지 않았는지’ 멀리서 넓게 보는 것이고, 새니티 테스트는 ‘내가 방금 심은 나무 한 그루와 그 주변 땅이 괜찮은지’ 가까이서 깊게 보는 것입니다.

결론: 효율적인 문지기 역할

스모크 테스트와 새니티 테스트는 모든 기능을 완벽하게 확인하는 테스트가 아닙니다. 하지만 이 두 테스트는 개발 과정의 중요한 ‘문지기’ 역할을 합니다.

치명적인 문제가 있는 빌드를 초기에 걸러내어 팀 전체의 시간 낭비를 막아주고, 작은 수정이 일으킬 수 있는 명백한 문제를 빠르게 확인하여 안정성을 높여줍니다. 이 두 가지 테스트의 개념을 명확히 이해하고 적시에 활용하는 것은, 효율적인 QA 프로세스를 만드는 데 큰 도움이 됩니다.

댓글 남기기