AI가 30일 동안 제 테스트 코드를 작성하게 했습니다: 커버리지가 38%에서 71%로 향상된 과정
요약
오픈 소스 AI 에이전트 'the-agent'를 활용해 30일간 테스트 코드를 자동화한 실험 결과, 코드 커버리지가 38%에서 71%로 크게 향상되었습니다. 테스트 작성 및 유지보수 시간을 단축하고 회귀 오류를 발견하는 등 실질적인 효과를 입증했습니다.
핵심 포인트
- 코드 커버리지가 38%에서 71%로 대폭 향상됨
- 신규 기능 테스트 시간이 반나절에서 40분으로 단축됨
- CI를 통해 배포 전 3건의 회귀 오류를 사전에 발견함
- AI 에이전트 사용 시 명확한 프롬프트와 비동기 설정이 필수적임
- AI는 실행을 보장할 뿐 비즈니스 로직의 정답을 보장하지 않음
저를 놀라게 한 숫자는 바로 이것입니다. 30일 동안 수동으로 작성한 테스트는 단 하나도 없었지만, 커버리지는 38%에서 71%까지 올라갔습니다.
저는 오픈 소스 AI 에이전트(GitHub에서 the-agent 검색)에게 테스트 작성을 맡겼고, 이 에이전트가 자연어 설명으로부터 테스트를 생성하고 실행하며 유지보수하도록 했습니다. 이것이 전체 기록입니다 — 워크플로우, 설정, 어려웠던 점들, 그리고 솔직한 트레이드오프까지 모두 담았습니다.
왜 시도했는가
지난달에 저는 함수 시그니처를 하나 변경하는 것만으로 35개의 테스트를 망가뜨렸습니다. 이를 수정하는 데 점심시간까지 걸렸습니다. 고통스러웠던 것은 테스트를 작성하는 것이 아니라, 그것들을 유지보수하는 것이었습니다: 일반적인 입력값, 엣지 케이스(edge cases), 오류 분기(error branches)들, 그리고 최악의 부분은 중요한 경로가 커버되지 않았음에도 불구하고
- 커버리지 (Coverage): 38% → 71%
- 신규 기능 테스트 시간: "반나절"에서 약 40분으로 단축 (리뷰 시간 포함)
- CI(지속적 통합)를 통해 발견된 회귀 (Regressions): 3건 (그대로 배포되었을 사례)
- 삭제된 중복 테스트 케이스: 약 40%
함정 (솔직한 부분)
1. 잘못된 설명 = 잘못된 테스트. 비동기(async) 확인 단계를 언급하는 것을 잊었습니다. 그 결과 AI는 모두 동기(sync) 방식인 케이스를 생성했고, 이는 잘못된 통과(false pass)를 유발했습니다. 해결책: 설명에 비동기임을 명시적으로 기재하십시오.
2. 레거시 호환성 (Legacy compatibility). AI는 기존 포맷에서 실패하는 "베스트 프랙티스 (best-practice)" 테스트를 작성합니다. 해결책: compatibilityNotes에 제약 사항을 선언하십시오.
3. 비동기 간극 (Async gaps). 타이머(Timers), 콜백(callbacks), 외부 호출(external calls) 등에서 가끔 타이밍을 놓칩니다. asyncDetection: true 설정이 도움이 되지만 모든 것을 해결하지는 못합니다. 비동기 케이스는 수동으로 검토하십시오.
4. AI가 당신 대신 생각해주지는 않습니다. AI는 테스트가 "실행"됨을 보장할 뿐, 당신의 비즈니스 로직이 "옳음"을 보장하지 않습니다. 잘못된 설명 → 자신 있게 틀린 테스트를 생성합니다. 저의 규칙은 다음과 같습니다: AI가 생성하고, 저는 의미론(semantics)을 검토합니다.
누가 사용해야 하는가
- 테스트 유지보수와 싸우고 있는 개발자 — 엄청난 시간 절약 가능
- 테스트 엔지니어 — 탐색적 커버리지 (exploratory coverage) 확보에 훌륭하지만, 비즈니스 로직에 대한 책임은 본인에게 있음
- "설치 후 방치 (install and forget)"를 기대하는 사람 — 건너뛰십시오. 튜닝이 필요하며, 보상은 튜닝 후에 옵니다.
다음 단계
엄격한 커버리지 게이트(60% 미만 시 머지 차단), Python/Go 지원, 그리고 제가 수집한 프롬프트 템플릿(prompt templates) 문서화가 예정되어 있습니다. AI 지원 테스트는 주류가 되고 있습니다. 지금 시작하십시오. 그러면 도구가 성숙해졌을 때 바로 사용할 수 있는 워크플로우를 갖추게 될 것입니다.
이 도구는 무료이며 오픈 소스입니다. GitHub에서 "the-agent"를 검색하세요. CI에 연결할 때를 대비해 이 글을 저장해 두십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기