피드로 돌아가기
Dev.toBackend
원문 읽기
Unified Test-Eval Engine으로 httpx 테스트 속도 1.6배 향상
An eval is just a test that returns a value
AI 요약
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 구조 적용