AI 코딩 시대에 기능을 어떻게 테스트하시나요?
How do you test your features in AI coding era
핵심 요약
AI 에이전트가 작성한 복잡한 시스템의 변경 사항을 안정적으로 검증하는 실무적인 테스트 전략을 논의합니다.
- 테스트 전략 — E2E 테스트, 로그 분석, DB 검증 등 다양한 검증 방식의 조합 필요
- 환경 관리 — 에이전트가 접근 가능한 스테이징 환경과 ephemeral 환경 구축
- 검증 자동화 — QA 런북 문서화 및 에이전트가 이를 읽고 실행하도록 유도
- 인프라 접근 — 시크릿 관리와 권한 설정을 통한 에이전트의 실무 인프라 활용
다들 안녕,
요즘 AI 코딩 에이전트가 짠 코드를 어떻게 제대로 테스트하고 검증할지 고민이 많아. 특히 간단한 신규 프로젝트가 아니라, 이미 돌아가고 있는 복잡한 프로젝트를 건드릴 때는 더 골치 아프더라고.
다들 실무에서 이 문제를 어떻게 해결하는지 궁금해. 특히 변경 사항을 프리뷰나 스테이징 환경에 배포해야만 제대로 작동하는지 확인할 수 있는 상황 말이야.
단순히 유닛 테스트나 통합 테스트 돌리는 거, 아니면 에이전트한테 Playwright 테스트 몇 개 짜라고 시키는 수준을 말하는 게 아니야.
실제 프로젝트에서는 변경 사항을 검증하려면 훨씬 더 많은 게 필요하잖아.
예를 들면 이런 것들:
- 외부 API: 가끔은 시크릿 값을 가져와서 외부 서비스에 인증하고, API를 호출한 뒤에 응답이나 사이드 이펙트를 확인해야 할 때가 있어. 이건 UI에서 바로 확인이 안 되거든(사용자가 직접 해야 하는 걸 우리가 시뮬레이션해야 하니까).
- 관측 가능성(Observability): Loki 로그나 트레이스, 메트릭을 뒤져서 예상한 이벤트가 실제로 발생했는지 확인해야만 제대로 돌아가는지 알 수 있는 경우도 있지.
- 데이터베이스: PostgreSQL이나 다른 DB를 직접 쿼리해서 레코드가 제대로 생성, 수정, 삭제됐는지 확인해야 할 수도 있고.
- 메시징: 이벤트 기반 아키텍처에서는 Kafka나 RabbitMQ 메시지가 제대로 발행되고, 소비되고, 처리됐는지 확인해야 해.
- UI: 물론 Playwright 같은 브라우저 자동화 툴로 사용자가 보는 화면을 검증해야 할 때도 있지.
이 모든 게 하나의 비즈니스 시나리오에 다 엮여 있을 수도 있어.
예를 들어, 사용자가 우리 UI에서 IBAN을 복사해서 직접 계좌 이체를 하고, 그 결과로 우리 API에 웹훅이 들어오는 결제 기능을 에이전트가 구현한다고 쳐봐.
그다음엔 로그 수집기에 찍힌 로그를 확인해야만 검증 가능한 소프트 검증 절차도 거쳐야 하고.
너희는 어떻게 해?
-
에이전트가 API, DB, 로그, 기타 시스템까지 다 건드리는 E2E 테스트(예: Playwright)를 직접 짜고 실행하게 둬?
-
Kubernetes, Loki, DB 같은 툴이나 MCP를 에이전트한테 쥐여주고, 알아서 동적으로 조사하고 검증하게 해? 근데 내가 저번에 올린 글에서 말했듯이 Claude Code는 이런 식으로 작업할 때 문제가 좀 있더라고. 아마 동적 MCP를 엄청나게 많이 만들어야 할 것 같아.
-
배포 후에 에이전트가 실행할 결정론적(deterministic) 검증 시나리오나 스크립트를 미리 정의해 둬?
-
아니면 아예 다른 방법이 있어?
에이전트가 실제 인프라나 외부 시스템에 접근해야 할 때(샌드박스용 시크릿이라 해도) 자격 증명, 권한, 테스트 데이터, 그리고 뒷정리는 어떻게 처리하는지도 궁금해.
그리고 제일 중요한 질문인데, LLM이 자기 구현이 맞는지 즉석에서 판단하게 두지 않고, 어떻게 이걸 반복 가능하고 신뢰할 수 있게 만들어?
다들 실무에서 어떻게 해결하고 있는지, 어떤 툴을 쓰는지, 그리고 검증 과정에서 결정론적인 부분과 에이전트가 알아서 하는 부분의 비중은 어느 정도인지 공유 좀 해줘.
