소프트웨어 테스트와 코드는 함께 진화합니다. 코드 변경이 발생하면 새로운 소프트웨어 동작을 기록하는 새로운 테스트 또는 업데이트된 테스트가 뒤따라야 합니다. 그러나 기존의 테스트 생성 및 업데이트 벤치마크는 종종 코드 변경으로부터 테스트를 격리하며, 테스트가 실행 가능한지 또는 코드 변경과 의미론적으로 연결되어 있는지 확인하지 못하는 정적 메타데이터에 의존합니다. 이로 인해 테스트 자동화 에이전트가 코드 변경이 테스트 스위트(test suite)로 어떻게 전파되어야 하는지를 이해하고 있는지 평가하기가 어렵습니다.
우리는 소프트웨어 저장소(repository)에서 추출한 테스트 및 코드 공동 진화(co-evolution) 작업의 벤치마크인 TestEvo-Bench를 소개합니다. 이 벤치마크는 두 가지 트랙을 가집니다. 테스트 생성(test generation) 트랙에서는 에이전트가 새로운 소프트웨어 동작을 포착하기 위해 새로운 테스트를 작성해야 하며, 테스트 업데이트(test update) 트랙에서는 에이전트가 실패하는 기존 테스트를 변경된 소프트웨어 동작에 맞게 조정해야 합니다. 각 작업은 실제 커밋 히스토리(commit history)에 고정되어 있으며, 통과율(pass rate), 커버리지(coverage), 변이 점수(mutation score)와 같은 실행 기반 지표를 지원하기 위해 환경 설정과 함께 패키징되어 있습니다.
TestEvo-Bench는 또한 라이브 벤치마크입니다. 각 작업은 테스트 및 코드 변경의 타임스탬프를 기록하며, 우리의 자동화된 파이프라인에 의해 새로운 작업이 주기적으로 추출되므로, 데이터 누수(data leakage) 위험을 줄이기 위해 모델의 학습 중단 시점(training cutoff) 이후의 작업으로 평가를 제한할 수 있습니다. 현재 스냅샷에는 152개의 오픈 소스 Java 프로젝트에 걸친 59,950개의 공동 진화 후보 기록에서 선별된 746개의 테스트 생성 및 509개의 테스트 업데이트 작업이 포함되어 있습니다. 우리는 강력한 하네스(harness)를 결합한 네 가지 최첨단 에이전트(Claude Code, Gemini CLI, SWE-Agent)와 강력한 파운데이션 모델(Claude Opus 4.7, Gemini 3.1 Pro)을 사용하여 실험을 진행했습니다. 결과에 따르면, 이들은 테스트 생성에서 최대 77.5%, 테스트 업데이트에서 74.6%의 성공률을 달성했습니다. 그러나 가장 최근의 벤치마크 작업에서는 성공률이 실질적으로 더 낮으며, 작업당 비용이 제한될 경우 성공률이 크게 떨어집니다.