AI 코딩 에이전트에게는 프롬프트보다 테스트가 더 필요합니다
저는 25년 동안 소프트웨어를 개발해 왔습니다. 지난 8개월 동안의 워크플로우 변화는 제 전체 경력을 통틀어 가장 큽니다.
이전의 AI 코딩 도구는 리팩터링이나 에러 설명 같은 작은 작업들을 위한 것이었습니다. AI로 대규모 기능을 구축하는 것은 고통스러운 일이었습니다.
이제 상황이 달라졌습니다. 현대의 에이전트들은 다음과 같은 특정 루프를 따릅니다:
- 코드 읽기.
- 코드 수정.
- 명령 실행.
- 실패 원인 확인.
- 수정.
- 반복.
이 루프는 강력하지만, 에이전트들은 시각적 인터페이스(UI)를 다루는 데 어려움을 겪습니다. 버튼이 제대로 작동하는지 확인하기 위해 UI를 일일이 클릭하는 작업을 신뢰성 있게 수행하지 못합니다.
저는 접근 방식을 바꿨습니다. 새로운 기능을 만들 때 먼저 커맨드 라인(CLI)에서 작동하도록 만듭니다.
에이전트에게 "이 화면을 봐줘"라고 요청하는 대신, 다음과 같은 명령을 내립니다:
npm run test:feature-xnode scripts/run-new-feature-client.js
에이전트들은 명령어를 좋아합니다. 명령어는 에이전트에게 실행 가능한 피드백 루프를 제공하기 때문입니다.
현재 저의 워크플로우는 다음과 같습니다:
- 마크다운 파일에 기능 계획하기.
- 테스트 클라이언트 또는 유닛 테스트 생성하기.
- 명확한 테스트 케이스 정의하기.
- 에이전트가 기능을 구현하도록 하기.
- 에이전트가 테스트를 반복해서 실행하도록 하기.
- 결과 검토하기.
주의할 점이 있습니다. 에이전트에게 "모든 테스트를 통과시켜"라고 말하면, 에이전트는 어떻게든 해냅니다. 그 과정에서 소프트웨어 공학적 범죄를 저지를 수도 있습니다. 실패 메시지를 멈추기 위해 부실한 테스트를 작성하거나, 에러를 숨기기 위해 try/catch 블록을 사용할 수도 있습니다.
이것이 바로 테스트 정의가 저에게 가장 중요한 수동 작업인 이유입니다. 여러분은 스스로에게 다음과 같이 물어야 합니다:
- 이 테스트가 실제 사용 사례를 나타내는가?
- 실제 회귀(regression)를 잡아낼 수 있는가?
- 테스트 범위가 너무 좁지는 않은가?
AI 시대에 테스트 주도 개발(TDD)은 단순한 안전망이 아닙니다. 그것은 조향 핸들입니다. 테스트가 없다면 에이전트는 그럴싸해 보이는 코드를 생성할 뿐입니다. 좋은 테스트가 있다면 에이전트는 측정 가능한 목표를 갖게 됩니다.
또 다른 팁: 테스트 출력물로 구조화된 파일을 사용하세요. 방대한 로그를 채팅창에 쏟아붓는 대신, 스크립트가 특정 폴더에 JSON이나 마크다운 파일로 기록하도록 만드세요.
이것이 도움이 되는 이유는 다음과 같습니다:
- 에이전트가 관련 데이터로 즉시 이동할 수 있습니다.
- 컨텍스트(문맥)가 작게 유지됩니다.
- 토큰 사용량이 줄어듭니다.
- 비용이 절감됩니다.
AI 에이전트는 개발자를 대체하지 않습니다. 대신 우리의 초점을 변화시킵니다. 우리는 코드를 타이핑하는 데 쓰는 시간을 줄이는 대신, 다음과 같은 일에 더 많은 시간을 할애하게 됩니다:
- 문제를 명확하게 설명하기.
- 피드백 루프 만들기.
- 품질 높은 테스트 정의하기.
- 아키텍처 검토하기.
AI 개발의 미래는 최고의 프롬프트를 작성하는 사람의 것이 아닙니다. 최고의 피드백 루프를 구축하는 사람의 것입니다.
Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm
Optional learning community: https://t.me/GyaanSetuAi
