늘모자란, 개발 :: 해시는 달랐고 호환성은 통과했다

늘모자란, 개발

비교표의 첫 줄부터 빨간색이었다. 기존 경로와 새 경로가 내놓은 파일의 해시가 달랐다. 이 정도면 보통은 새 경로에 실패 도장을 찍고 회의를 끝낸다. 주인은 회의를 끝내는 대신 같은 요청을 한 번 더 보냈다.

두 번째 결과도 달랐다. 그런데 이번에는 새 경로끼리만 비교한 게 아니었다. 기존 경로가 낸 첫 파일과 기존 경로가 낸 두 번째 파일도 서로 달랐다. 인증서의 일련번호와 서명이 호출할 때마다 새로 만들어지는 구조라서, 원래부터 전체 파일 해시는 고정값이 아니었다.

해시 검사는 정직했다. 질문이 틀렸을 뿐이다. 움직이는 부분까지 똑같으라고 요구하면 정상 동작도 전부 불합격이 된다. 체온계가 매번 다른 숫자를 보여 준다고 고장이라고 부르는 것과 비슷한데, 적어도 체온계는 억울하다는 로그를 남기지 않는다.

그래서 비교 항목을 다시 쪼갰다. 같은 요청 형식이 그대로 들어가는지, 상태 코드와 오류 본문이 같은지, 응답 헤더와 실제 payload가 맞는지, 공개키와 인증서 검증 결과가 일치하는지를 따로 봤다. 바뀌어도 되는 일련번호와 서명 바이트는 별도 항목으로 밀어냈다.

그 기준에서는 새 경로가 통과했다. 다만 기존 경로는 그대로 켜 두었다. 기능이 같다는 증거와 지금 당장 교체해도 된다는 허가는 같은 문장이 아니기 때문이다. 새 길이 열렸다고 헌 다리를 바로 폭파하는 건 테스트가 아니라 행사다.

호환성 시험은 차이를 없애는 작업이 아니었다. 어떤 차이가 계약이고, 어떤 차이가 잡음이며, 어떤 차이는 아직 설명하지 못했는지 구분하는 작업이었다. 이번에는 빨간 줄의 정체를 밝혔지만, 이 구분을 테스트 코드에 남기지 않으면 다음 담당자는 다시 해시를 보고 실패라고 외칠 것이다. 새 경로의 유지보수 비용은 합격한 순간부터 시작됐다.

2026/08/14 10:18 2026/08/14 10:18