AI 코딩 에이전트가 작성한 테스트, 그대로 믿어도 될까?
- AI 에이전트가 기능과 테스트를 함께 작성하면 요구사항 오해가 코드·테스트에 동시에 들어갈 수 있음
- 다중 워크스페이스 CSV 내보내기 예시에서 권한 검증 누락 사례를 구체적으로 제시
- OWASP 인가 가이드는 모든 요청에서 권한 확인을 요구하지만 에이전트 테스트는 이를 놓치기 쉬움
AI 코딩 에이전트에게 기능 구현과 테스트 작성을 동시에 맡기는 경우가 늘고 있습니다. 그런데 에이전트가 스스로 작성한 테스트가 모두 통과했다고 보고해도, 그 테스트가 실제로 요구된 동작을 검증했는지는 별개의 문제입니다. 개발 블로그 dev.to에 올라온 글은 다중 워크스페이스 제품의 CSV 내보내기 기능을 예로 들어 이 문제를 구체적으로 짚었습니다.
에이전트가 만든 코드와 테스트가 같은 오해를 공유하는 문제
핵심: 에이전트가 요구사항을 잘못 이해하면 그 오해가 코드와 테스트 양쪽에 똑같이 반영되어, 테스트가 통과해도 문제를 잡아내지 못합니다.
글쓴이는 AI 에이전트가 기능을 만들고 테스트를 작성한 뒤 모두 통과했다고 알려주는 상황을 문제의 출발점으로 삼았습니다. 테스트가 실제로 우리가 요청한 내용을 체크했는지가 핵심 질문이라는 것입니다. 에이전트가 요구사항을 오해하면 그 오해가 코드와 테스트 모두에 들어가고, 둘은 서로 일치하지만 여전히 문제가 남는다고 설명합니다.
이를 설명하기 위해 다중 워크스페이스를 지원하는 제품에 CSV 내보내기 기능을 추가하는 예시를 사용합니다. 요구사항은 멤버가 자신이 속한 워크스페이스의 리포트만 내보낼 수 있어야 한다는 것입니다. 에이전트는 엔드포인트를 만들고 멤버와 리포트를 생성한 뒤 CSV 응답을 확인하는 테스트를 추가해 통과시켰지만, 멤버가 다른 워크스페이스의 리포트를 요청했을 때 어떤 일이 벌어지는지는 확인하지 않았습니다.
내보내기 대상이 커져 백그라운드 작업이 필요해지면 요청용 엔드포인트, 상태 확인 엔드포인트, 파일 다운로드 경로가 각각 추가됩니다. 글쓴이는 에이전트가 이 전체 흐름을 따라가며 테스트해야 한다고 강조합니다. 요청 시점의 권한만 확인하는 것으로는 다른 사용자가 결과물을 다운로드할 수 있는지까지는 알 수 없기 때문입니다. 웹 애플리케이션 보안 표준을 정리하는 비영리 단체 OWASP의 인가(authorization) 가이드는 모든 요청에서 권한을 확인하도록 요구하는데, 이 사례에서는 내보낸 데이터에 접근하는 모든 경로를 살펴야 한다는 뜻이 됩니다. CSV 파일에 정확한 열이 담겨 있어도 잘못된 사람이 접근할 수 있다면 문제라는 것입니다.
| 필요한 동작 | 확인된 내용 | 여전히 빠진 부분 |
|---|---|---|
| 멤버가 자신의 워크스페이스에서 리포트를 내보낼 수 있어야 함 | 통합 테스트가 내보내기를 요청하고 CSV를 확인함 | 대용량 내보내기는 시도하지 않음 |
| 멤버가 다른 워크스페이스의 내보내기를 요청할 수 없어야 함 | 다른 워크스페이스 멤버로 요청을 시도하는 테스트가 있음 | 작업 상태나 다운로드 접근은 확인하지 않음 |
| 멤버를 제거하면 이후 다운로드가 차단되어야 함 | 아직 확인된 내용 없음 | 이미 발급된 다운로드 링크를 어떻게 처리할지 결정하지 않음 |
글쓴이는 멤버를 워크스페이스에서 제거했을 때 그 멤버가 이미 받은 다운로드 링크를 계속 쓸 수 있게 둘지, 얼마나 오래 유효하게 둘지는 구현에 들어가기 전에 정해야 할 제품 결정이라고 설명합니다. 통과한 테스트 하나로는 아직 내리지 않은 이런 제품 결정을 대신할 수 없다는 것입니다. 단일 "검증 완료" 표시는 이런 세부 사항을 대부분 가려버린다고도 지적합니다.
다른 에이전트에게 리뷰를 맡기는 방법에 대해서는, 리뷰를 맡은 에이전트가 원래 요구사항을 직접 읽고 작업 결과와 대조해야 한다고 설명합니다. 첫 번째 에이전트가 작성한 요약만 주고 리뷰를 시키면, 그 요약이 이미 빠뜨린 문제를 찾아내라고 요구하는 셈이 되기 때문입니다. CI(지속적 통합, 코드를 자동으로 빌드·테스트하는 체계)에서 테스트를 돌리는 것도 유용하지만, 애초에 테스트하지 않은 권한 케이스는 CI를 거쳐도 여전히 빠진 채로 남는다고 덧붙입니다.
이게 나에게 의미하는 것
AI 코딩 에이전트를 업무에 도입한 개발자나 팀이라면, 에이전트가 제시하는 "테스트 통과" 보고를 요구사항 검증의 끝이 아니라 시작점으로 받아들이는 게 안전합니다. 이번 사례에서 보듯 권한 체크처럼 한 요청이 아니라 여러 엔드포인트를 거치는 흐름은 에이전트가 스스로 만든 테스트에서 누락되기 쉽기 때문에, 요구사항을 표로 정리해 무엇을 확인했고 무엇이 비어 있는지 사람이 따로 점검하는 절차가 필요합니다.