최근 'Testpick'이라는 새로운 명령줄 인터페이스(CLI) 도구가 깃(Git) 변경사항에 따라 영향을 받는 테스트 파일만 선별적으로 실행하는 기능을 선보였습니다. 이 도구는 개발자들이 코드 변경 후 모든 테스트를 실행하느라 낭비하는 시간을 줄여, 수분 걸리던 CI(지속적 통합) 작업을 몇 초 만에 완료할 수 있도록 돕습니다. 특히 기존의 정적 분석 방식으로는 파악하기 어려웠던 런타임 의존성까지 정확하게 감지하는 것이 특징입니다.
Testpick은 자바스크립트/타입스크립트 프로젝트를 위해 설계되었으며, 'npx testpick map' 명령어로 각 테스트가 어떤 코드를 실행하는지 런타임 커버리지 맵을 생성합니다. 이후 'npx testpick run' 명령어를 통해 깃 디프(git diff)로 변경된 파일과 이 맵을 비교하여 실제 영향을 받는 테스트만 실행합니다. 기존의 'vitest --changed'나 'jest --onlyChanged' 같은 도구들이 플러그인 레지스트리, DI 컨테이너처럼 런타임에 동적으로 로드되는 모듈의 의존성을 놓치곤 했던 반면, Testpick은 V8 엔진의 정밀 커버리지 데이터를 활용해 이러한 사각지대까지 포착합니다. 또한, 모노레포(Monorepo) 환경에서도 각 패키지별로 독립적인 테스트 실행을 지원하며, 의심스러운 변경사항에 대해서는 AI(LLM)를 활용해 테스트 범위를 좁히되, 안전을 위해 불확실할 경우 모든 테스트를 실행하는 '안전 우선' 원칙을 고수합니다.
이러한 Testpick의 등장은 현대 소프트웨어 개발의 효율성을 크게 향상시킬 잠재력을 가지고 있습니다. 대규모 프로젝트에서 테스트 실행 시간은 개발 주기를 지연시키는 주요 원인 중 하나인데, Testpick은 이를 획기적으로 줄여 개발자들이 더 빠르게 피드백을 받고 다음 작업으로 넘어갈 수 있게 합니다. 이는 개발자 경험 개선뿐만 아니라, CI/CD 파이프라인의 비용 절감과 전반적인 생산성 향상으로 이어질 수 있습니다. 특히 잦은 코드 변경이 발생하는 애자일(Agile) 개발 환경에서 Testpick은 필수적인 도구가 될 것으로 보입니다.