피드로 돌아가기
An eval is just a test that returns a value
Dev.toDev.to
Backend

Unified Test-Eval Engine으로 httpx 테스트 속도 1.6배 향상

An eval is just a test that returns a value

Renaud Cepre2026년 6월 25일5intermediate

Context

pytest의 Name-based Fixture 시스템으로 인한 타입 추론 불가 및 IDE 내비게이션 제약 발생. LLM Eval 도입 시 테스트 프레임워크와 별개의 CLI 및 설정 체계 운영으로 인한 중복 인프라 셋업 비용 증대.

Technical Solution

  • Annotated 기반의 Explicit Dependency Injection을 통한 Fixture 타입 정의 및 컴파일 타임 에러 검출 구조 설계
  • Unit Test와 LLM Eval을 동일한 엔진과 Fixture로 처리하는 Unified Framework 아키텍처 구현
  • pytest-asyncio의 Loop-per-test 방식 대신 단일 Event Loop 내 Coroutine 실행 방식으로 Async 처리 최적화
  • Fixture-Suite-Test로 이어지는 Scoped Fixture 계층 구조를 통한 자원 재사용 효율 극대화
  • Tag Propagation 메커니즘을 적용하여 Fixture의 특성을 사용하는 모든 테스트에 자동으로 상속시키는 설계
  • EvalCase와 Evaluator를 통한 정량적 Score 기록 및 .jsonl 기반의 Run-to-Run 비교 분석 체계 구축

- Fixture 의존성을 이름이 아닌 타입 기반(Annotated)으로 명시하여 IDE 지원 및 안정성 확보 검토 - I/O Bound 테스트 비중이 높을 경우 Loop-per-test 방식보다 단일 Event Loop 기반의 Async Runner 도입 고려 - LLM 평가 지표를 단순 Boolean이 아닌 정량적 Score와 Artifact로 관리하는 EvalSuite 구조 적용

원문 읽기