피드로 돌아가기
The Spec That Doesn't Lie
Dev.toDev.to
Backend

Silent Delegation 제거를 통한 API Contract 무결성 확보 전략

The Spec That Doesn't Lie

Diya Burman2026년 6월 10일10intermediate

Context

AI Agent 기반 코드 생성 시 Gherkin 문법의 정확성만으로는 구현체의 일관성을 보장하지 못하는 한계 존재. 모호한 Spec이 AI의 자의적 판단(Reasonable Decision)을 유도하여 런타임에 API Contract 불일치 문제를 야기하는 구조적 결함 분석.

Technical Solution

  • Internal Implementation Leakage 방지를 위해 DB 필드명(db_status) 대신 외부 노출용 도메인 용어(status) 정의
  • Underspecified Given 절의 모호성을 제거하여 404, 422 등 HTTP Response Code의 명확한 규정
  • ISO 8601 등 데이터 포맷의 강제 명시를 통한 필드 값의 일관성 확보
  • Spec 작성 단계에서 '남겨진 결정 사항(Open Decisions)'을 전수 조사하여 AI의 자의적 해석 가능성 차단
  • 구현체와 Spec 간의 일치 여부를 단순 Test Pass 여부가 아닌 Contract 준수 여부로 재정의

- API Response의 모든 필드명과 데이터 타입, 포맷(예: ISO 8601)이 Spec에 명시되었는가? - Given/When/Then 절에 내부 구현 상세(DB 컬럼명, 내부 상태값)가 포함되어 Leakage를 유발하지 않는가? - 'Order not found'와 같이 모호한 표현 대신 구체적인 HTTP 상태 코드와 Error Body 형식을 정의했는가? - 동일한 Spec을 서로 다른 AI Agent에게 주었을 때 서로 다른 구현 결과가 나올 가능성이 없는가?

원문 읽기