피드로 돌아가기
Tests Pass, Design Breaks: Why TDD Can't Hold the Line on Design Intent
Dev.toDev.to
Backend

TDD와 AI 자동화가 가린 Design Intent 괴리 해결 전략

Tests Pass, Design Breaks: Why TDD Can't Hold the Line on Design Intent

Sho Naka2026년 6월 27일10intermediate

Context

TDD의 테스트 통과가 설계의 정답성을 보장한다는 오해와 AI 기반 테스트 생성으로 인한 Design Intent 소실 문제 분석. 특히 AI가 구현체 기반으로 테스트를 역설계함에 따라 실제 설계 의도와 테스트 케이스 간의 Gulf of Specification 발생.

Technical Solution

  • Machine-verifiable 영역과 Human-verifiable 영역의 엄격한 분리를 통한 검증 체계 재정립
  • 구현체 기반 테스트 작성을 지양하고 Design Intent를 명시적으로 반영하는 테스트 전략 채택
  • 테스트 함수명에 'What'과 'Why'를 포함하는 구체적 명명 규칙 적용으로 의도 가독성 확보
  • ADR(Architecture Decision Records) 도입을 통해 설계 결정 배경과 제약 사항을 문서화하여 외부화
  • PR 코멘트와 이슈 스레드를 활용하여 변경 이력에 설계 의도를 추적 가능한 형태로 기록
  • Type Checker와 Automated Test를 통한 기술적 일관성 검증의 자동화 영역 극대화

- AI가 생성한 테스트 코드가 구현체의 동작을 단순히 복제한 것인지, 설계 의도를 검증하는 것인지 확인 - test_function_name에 동작 결과뿐 아니라 전제 조건과 이유를 포함하여 작성 - 인터페이스 변경 시 ADR 또는 PR 기록을 통해 변경 이유를 명시하고 관련 테스트의 의도 재검토 - 'All Green' 상태보다 '테스트가 설계 의도를 정확히 표현하고 있는가'를 리뷰의 핵심 지표로 설정

원문 읽기