LLM

Claude Code 시대에도 개발자가 테스트 코드를 작성해야 할까?

ksc-dev 2026. 6. 15. 20:21

Claude Code 마스터를 읽으면서 가장 혼란스러웠던 부분 중 하나는 테스트 코드였다.

처음에는 단순하게 생각했다.

AI가 기능 구현도 하고 테스트 코드도 작성하면 되는 것 아닌가?

오히려 개발자는 요구사항만 전달하면 되고,
나머지는 AI가 처리하는 것이 더 효율적이라고 생각했다.


책에서의 관점

책에서는 테스트 코드를 개발자가 직접 작성해야 한다고 설명한다.

이유는 단순하다.

개발의 주도권은 개발자가 가져야 하기 때문

또한 AI에게 기능과 테스트를 모두 맡기면
코드 품질이 떨어질 수 있다고 이야기한다.


핵심은 “테스트 코드”가 아니라 “테스트 기준”

어떤 개발 커뮤니티에서 들은 답변 중 가장 핵심은 이것이었다.

중요한 것은 테스트 코드를 누가 작성하느냐가 아니라
무엇을 검증해야 하는지를 누가 정의하느냐이다


테스트 케이스는 개발자가 먼저 정의한다

예를 들어 복구 코드 기능이라면:

  • 정상 코드 입력 → 성공
  • 잘못된 코드 → 실패
  • 빈 값 → 실패
  • 이미 사용된 코드 → 실패

이처럼 테스트 시나리오(Baseline)를 개발자가 먼저 정의한다.


AI는 테스트 코드 생성 도구로 활용 가능

그 이후에는 AI에게 다음과 같이 요청할 수 있다.

위 테스트 케이스를 기반으로 테스트 코드 작성해줘

즉,

  • 기준 정의 → 개발자
  • 코드 생성 → AI

구조가 된다.


AI가 테스트까지 만들 때 생기는 문제

AI가 기능과 테스트를 동시에 만들면 다음 문제가 생길 수 있다.

  • 구현 기준과 테스트 기준이 동일해짐
  • 잘못된 구현도 테스트 통과
  • 예외 케이스 누락

즉, 같은 사고방식 안에서 검증이 이루어지는 문제가 발생한다.


가드레일은 개발자 + AI가 함께 만든다

현실적인 방식은 다음과 같다.

개발자 역할

  • 핵심 예외 케이스 정의
  • 비즈니스 규칙 정의

AI 역할

  • 추가 예외 케이스 제안
  • 테스트 코드 생성 보조

예외 케이스 예:

  • 빈 문자열
  • 중복 입력
  • 대소문자 차이
  • 길이 초과
  • 특수문자 입력

민감한 데이터는 더 엄격하게 테스트

결제, 포인트, 재고 같은 데이터는 단순 성공 여부가 아니라 결과값까지 검증한다.

예:

  • 1000원 결제 → 포인트 10 적립
  • 재고 100 → 5 구매 → 95

테스트는 리팩토링의 안전장치

테스트는 단순히 버그 검출 도구가 아니라:

  • 기능 변경 시 안정성 확보
  • 리팩토링 보호 장치
  • 회귀 방지 도구

역할도 한다.


결론

처음에는 AI가 테스트까지 모두 작성하는 것이 가장 효율적이라고 생각했다.

하지만 현재 생각은 다르다.

테스트 코드 작성 여부보다 중요한 것은
무엇을 검증할지 결정하는 주체이다

 

개발자는 기준과 방향을 책임지고,
AI는 구현과 보조를 담당하는 구조가 가장 현실적인 협업 방식이라고 느꼈다.