“제정신인가?”를 확인하는 간단한 검사
— 복잡한 디버깅 전에 필수로 거쳐야 할 sanity check 개념과 활용 예시를 정리해봤습니다.
Sanity check는 소프트웨어 개발, 공학, 과학, 비즈니스 등 다양한 분야에서 사용하는 용어로, 결과나 시스템이 전반적으로 논리적으로 말이 되는지 빠르게 확인하는 기초적인 검증 절차를 뜻합니다.
쉽게 말해, “이게 상식적으로 맞는 값인가?”를 가장 먼저 점검하는 단계입니다.
int a = -1;
assert(a >= 0); // 음수면 비정상! 간단한 sanity check
배열 인덱스나 입력값이 유효한지, 함수가 예상치 못한 값을 받지 않는지 빠르게 걸러냅니다.
assert not torch.isnan(loss), "Loss is NaN!" # NaN이면 중단!
데이터 shape, 클래스 수, loss 값 등이 정상인지 학습 전에 반드시 sanity check로 확인해 버그를 방지합니다.
print(df.describe()) # 기초 통계로 이상치 감지!
평균값이 말도 안 되게 큰지 작은지, 샘플 수가 적절한지 sanity check로 빠르게 파악합니다.
컴퓨터 부팅 시 메모리나 기본 장치가 최소한으로라도 정상 동작하는지 기본 점검하는 것 역시 대표적인 sanity check입니다.
| 검증 종류 | 목적 | 복잡도 |
|---|---|---|
| Sanity Check | 말이 되는지 간단히 점검 | 낮음 |
| Unit Test | 함수 단위의 로직 정확성 검증 | 중간 |
| Integration Test | 여러 모듈이 정상 연동되는지 점검 | 중간~높음 |
| Validation | 데이터/모델이 기준에 맞는지 정량적으로 평가 | 중간 |
작은 sanity check 하나로 예상치 못한 에러를 초기에 막을 수 있다면, 큰 디버깅 비용을 절약할 수 있습니다.
개발뿐만 아니라 데이터 분석, AI 모델 학습 등에서도 꼭 습관화 하시는게 좋습니다.