노트  /  a-skipped-step-is-not-a-pass2026-08-03

건너뛴 단계는 합격이 아니다

실행되지 않은 단계가 있는 시험 런은 왜 실패여야 하는가 — 미지수를 합격으로 조용히 보고하는 것이야말로 시험 도구가 막아야 할 바로 그 실패다.

모든 테스트 이그제큐티브는 한 가지 불편한 질문에 답해야 합니다: 실행되지 않은 단계의 판정은 무엇인가? 20단계짜리 시퀀스가 7단계에서 중단됐습니다. 8~20단계는 아무것도 측정하지 않았고, 어떤 한계도 판정하지 않았습니다. 리포트에는 뭐라고 적힙니까?

유혹적인 답은 그 칸들을 비워두거나, 회색으로 두거나, '건너뜀'이라 적고 — 실행된 단계만으로 런을 요약하는 것입니다. 6개 합격, 1개 불합격, 나머지는 없었던 일. 바쁜 벤치에서 3주가 지나면 모두가 읽는 것은 그 요약 한 줄뿐입니다. 그리고 '실행된 7개 중 6개 합격'이라는 요약은 슬라이드에서 '대체로 합격'이 되고, 의사결정에서는 '합격'이 되는 습성이 있습니다.

NOKTRA Sequencer는 엄격한 입장을 취합니다: 단계가 실행되지 않았다면, 그 런은 실패입니다. 시험 대상이 뭔가 잘못해서가 아니라 — 잘못했는지 여부를 그 런이 모르기 때문입니다. 시험 리포트는 '무엇이 검증되었는가'에 대한 주장입니다. 건너뛴 단계는 정확히 검증의 부재이고, 부재를 성공 비슷한 무엇으로 보고하는 것이야말로 불량 유닛이 깨끗한 서류와 함께 출하되는 경로입니다.

글로 적으면 당연해 보입니다. 실무에서 기본값이 아닌 이유는, 엄격함이 성가시기 때문입니다. 케이블을 고치려고 런을 중단한 운용자는 '진짜 실패도 아닌 것' 때문에 빨간 FAIL이 찍히는 걸 원치 않습니다. 판정을 부드럽게 하자는 압력은 상시적이고 그럴듯하게 들리며 — 그리고 매번 져야 합니다. 리포트는 맥락보다 오래 살아남기 때문입니다. 종이는 그 중단이 무해했다는 사정을 기억하지 않습니다.

두 번째 설계 귀결이 있습니다. 미실행이 곧 실패라면, teardown은 실패한 런에서도 반드시 돌아야 합니다 — 전원 차단, 방전, 분리 — 그리고 리포트는 그것이 돌았음을 보여줘야 합니다. 실패 처리는 예외 케이스가 아니라 시퀀스 계약의 일부가 됩니다: 무엇이 중단시키고, 무엇이 건너뛰어지고, 무엇이 언제나 실행되는가.

판정 로직 자체는 의도적으로 단순하게 남습니다: 합격과 불합격은 규칙과 측정값의 순수 함수에서 나옵니다. 시계도, I/O도, 상태도 없습니다. 같은 판독값을 두 번 판정해 다른 결론이 나올 수 없습니다. 판단의 전부는 리뷰어가 읽을 수 있는 한 곳에 살고, 그 무엇도 '피곤해서 런을 빨리 끝내고 싶은 순간'에 살지 않습니다.