TIL/Claude Code

[TIL][E2E] 백엔드가 무응답이 아니었다, 재현을 반복할수록 응답이 사라진 이유

아람2 2026. 10. 24. 22:00
반응형

채팅 시나리오가 연달아 실패하고, 메시지는 전송되는데 응답도 모달도 오지 않는다 

여기서 나오기 쉬운 결론은 "채팅 백엔드가 조용히 무응답이다"이고, 재현하겠다며 같은 스위트를 반복 실행하게 된다 

그런데 이 상황엔 함정이 있다 — 재현하려고 돌리는 그 실행이, 응답을 만들어내던 조건을 스스로 태워 없앤다 

메시지는 전송됐는데 응답이 오지 않았다 

흐름은 단순했다 — 입력을 보내면 사용자 버블은 뜨는데, 에이전트 응답이 끝내 오지 않았다 

러너 로그에는 "무응답 / 타임아웃"만 남았고, 그 로그만 읽으면 원인은 자연스럽게 서버로 향한다 

실패 스냅샷(스크린샷 / error-context)을 열자 화면엔 다른 게 떠 있었다 

"크레딧이 모두 소진되었습니다"

메시지는 전송되지만(사용자 버블은 뜸), 계정 크레딧이 없어 에이전트가 돌지 않아 응답이 오지 않은 것이다

백엔드는 정상이었고, 죽어 있던 건 검증 계정이었다

재현하려 반복할수록 응답이 사라졌다

여기서 진짜 지독한 부분은 "간헐적 실패"처럼 보였다는 점이다

초반 런에서는 응답이 오다가, 뒤로 갈수록 전부 무응답으로 바뀌었다

간헐성의 정체는 제품 쪽 불안정이 아니라, 반복 실행이 검증 계정 크레딧을 회차마다 더 깎아낸 것이었다

관측하려던 대상(응답 여부)을, 관측 행위 자체가 바꾸고 있었다

# ❌ 무응답 → 같은 스위트를 반복 실행해 "재현"한다
run_suite   # 회차마다 크레딧을 더 태운다 → 후반 런일수록 무응답
run_suite   # 초반 응답 / 후반 무응답 = 가짜 intermittent 생성
run_suite

# ✅ 무응답 → 단발 control probe 로 계정 상태부터 관측한다
send_once   # 응답이 오나? 안 오면 화면부터 캡처 → 크레딧 소진 모달 확인
            # → 여유 있는 계정으로 전환해 다시 관측

반복 실행은 관측이 아니라 개입이다 — 측정하려는 대상을 스스로 바꾼다

왜 하니스를 먼저 의심하나

FAIL 하나는 두 축의 함수다 — 제품 상태와 검증 하니스 상태(계정·세션·타이밍·로케이터)

이 중 하니스 축은 내가 매 실행마다 직접 건드리고 소유하는 변수이고, 제품 축은 여러 관측자가 공유하며 대체로 안정적이다

그래서 원인을 좁힐 땐 내가 바꾼 쪽(control)을 먼저 배제해야, 남은 변화량이 제품으로 수렴한다

control 을 배제하지 않은 채 나온 "백엔드 무응답"은, 크기만 컸지 근거가 없는 결론이었다

제품을 원인으로 지목하기는 쉽고, 대체로 틀린다

"자동화로는 로그인 불가"라는 단정도 같은 함정이었다

같은 주, MCP 세션이 만료됐을 때 또 다른 미검증 단정이 나왔다

"DEV 로그인은 2FA(OTP)가 필요한데 시드가 없으니 자동화 단독으론 불가"

문제는 그 경로를 한 번도 밟아보지 않고 내린 결론이라는 점이다

실제로 밟아보면 DEV signin 페이지에서 이메일·비번을 넣고 랩스페이스 OTP 칸에 DEV 전용 바이패스 코드를 넣으면 통과한다, 막힌 게 아니었다

게다가 같은 날 자동 로그인 setup 이 성공했다는 반증이 코앞에 있었다

"불가/ 막힘"을 보고하기 전에 그 경로를 실제로 한 번 실행한다, control-first 는 무응답 진단이든 로그인 단정이든 같은 규칙으로 작동한다

control-first 체크리스트

제품 이상을 결론 내기 전에 반드시 거친다

  • 무응답이면 먼저 화면을 캡처해 크레딧 소진 / 에러 모달부터 확인한다 — 러너 로그만으로 "백엔드/ 제품" 단정하지 않는다
  • 단발 control probe 로 관측한다 — 1회만 전송해 응답이 오는지 본다, 풀 스위트 반복은 금지한다(계정 상태만 더 악화된다)
  • 검증 계정 크레딧은 유한하다 — 소진되면 여유 있는 계정으로 전환해 관측한다
  • "불가/ 막힘"을 보고하기 전에 그 경로를 실제로 한 번 실행한다 -> 자동화가 이미 하는 일이면 같은 방식으로 되는지부터 확인한다
  • "통과/ 실패 = 재현"으로 보고하기 전에, 그 런이 실제로 제품을 굴렸는지(응답 수신 여부)부터 확인한다

핵심 정리

증상 흔한 오진 먼저 배제할 control
메시지 전송되나 응답 없음 백엔드 무응답 계정 크레딧 소진/ 에러 모달
초반 응답 · 후반 무응답 제품 intermittent 반복 실행이 태운 계정 상태
세션 만료 후 진입 실패 자동화 단독 로그인 불가 미검증 경로 — 실제로 한 번 실행
  • FAIL 은 제품과 하니스의 합이다, 내가 매 런 건드리는 하니스(계정·세션·타이밍·로케이터)를 가장 먼저 배제한다
  • 반복 실행은 상태를 바꾼다 — 재현이 아니라 증상을 왜곡할 수 있으니 관측은 단발 probe 로 한다
  • "불가 / 막힘"은 그 경로를 한 번 실행해 본 뒤에만 말한다, 반증이 코앞에 있는 경우가 많다
  • 화면을 보지 않고 로그만 읽으면 같은 함정에 반복해서 빠진다
반응형