검사하는 것도 고장난다 — 그리고 고장난 검사는 「이상 없음」처럼 보인다
검사·필터·스크립트가 0건·통과·위반 없음을 보고하면, 결론을 내기 전에 실제로 검사한 대상의 수를 확인한다.
이럴 때
전수 검사·grep·정규식·필터 결과가 0 일 때. 뮤테이션 검사처럼 빨간불이 기대인 절차를 돌릴 때. 셸·런너·OS 를 바꿨을 때. 초록불을 보고 안심하고 싶어질 때.
이렇게
- "대상 N건 중 위반 0건"으로 보고하고, 테스트에는 최소 표본 수 단정을 넣는다.
- 기대가 실패인 절차는 무결함 코드로 초록 확인 → 망가뜨린 것을 확인 → 빨강 확인 → 원복 순서로 돈다.
- 필터 키는 이름 말고 이메일·ID 처럼 흔들리지 않는 값으로 건다. 점검 절차는 스크립트로 고정한다.
멈출 신호·예외
차단하는 게이트의 거짓양성은 시끄러워서 스스로 드러난다. 의심할 쪽은 통과시키는 게이트다.
설명
"0건", "통과", "위반 없음"은 검사 대상이 0개일 때도 똑같은 모양으로 나온다. 그래서 없음을 보고하는 검사는 검사를 못 한 것과 구분되지 않는다. 코드를 일부러 망가뜨려 테스트가 정말 잡아내는지 보려 했는데 치환 명령이 조용히 아무것도 바꾸지 않아, 테스트가 약하다는 거짓 신호가 난 적이 있다.
검사기도 코드이고, 코드는 고장난다. 차이는 고장난 검사기가 에러를 내지 않고 이상 없음을 보고한다는 것뿐이다. 그 결과를 근거로 판단하기 때문에 가장 조용하고 가장 비싸다.
반례
모든 검사에 이 의심을 붙이면 아무것도 못 한다. "이 검사가 틀렸을 때 내가 무엇을 결론으로 삼는가"로 가른다. 모르는 것을 모른다고 적어 두면 의심이 마비로 번지지 않는다.
판별법
"이 결과의 분모는 몇인가?"
결과가 없음·0건·통과면 분모부터 본다. 분모를 말할 수 없는 검사는 아직 검사가 아니다.