김과장
AI 뉴스 목록
2026-03-18AI 코딩코드 검증자동 테스트개발 도구바이브코딩

AI가 짠 코드를 일일이 읽지 말고 자동으로 검증하라 — 해커뉴스 개발자 42명의 뜨거운 논쟁

AI가 짠 코드를 사람이 한 줄씩 검토하는 대신 자동 검증 도구로 확인하자는 제안이 해커뉴스에서 42명의 논쟁을 일으켰습니다. 속성 기반 테스트, 변이 테스트 등 4가지 방법과 반론을 정리했습니다.


AI 코딩 도구가 보편화되면서 하나의 질문이 개발자 커뮤니티를 뜨겁게 달구고 있습니다. "AI가 짠 코드를 꼭 한 줄씩 읽어봐야 할까?" 개발자 생산성 전문가 Peter Lavigne이 발표한 에세이는 명확한 답을 내놓습니다 — 읽지 말고, 기계가 자동으로 검증하게 하라는 것입니다. 이 글은 해커뉴스에서 51표와 42개의 댓글을 받으며 뜨거운 논쟁을 일으켰습니다.

핵심 아이디어: 사람 대신 기계가 코드를 검증한다

Lavigne의 핵심 주장은 간단합니다. AI가 생성한 코드를 사람이 일일이 읽는 대신, 기계가 자동으로 확인할 수 있는 규칙을 미리 세워두자는 것입니다. 마치 공장에서 제품을 사람이 하나씩 눈으로 확인하는 대신 자동 검수 라인을 돌리는 것과 같습니다.

그가 제안하는 검증 방법은 4가지입니다:

1. 속성 기반 테스트 — "수천 가지 경우를 자동으로 시험한다"

보통 테스트는 "입력 15를 넣으면 FizzBuzz가 나와야 한다"처럼 정해진 값 하나만 확인합니다. 속성 기반 테스트는 다릅니다. "3의 배수를 넣으면 반드시 Fizz가 포함되어야 한다"는 규칙을 세우고, 도구가 0부터 극단적으로 큰 수까지 수백 가지 값을 자동으로 시험합니다.

파이썬에서는 Hypothesis라는 무료 도구가 이 역할을 합니다. AI에게 "Hypothesis 테스트를 통과하는 코드를 짜줘"라고 지시하면, AI가 만든 코드가 수백 가지 상황에서 올바른지 자동으로 확인됩니다.

2. 변이 테스트 — "코드를 일부러 망가뜨려서 테스트가 진짜 작동하는지 확인한다"

테스트가 있어도, 그 테스트가 허술하면 의미가 없습니다. 변이 테스트(Mutation Testing)는 코드의 일부를 일부러 바꿔봅니다 — 예를 들어 <<=로, return ''return 'XXXX'로 바꿉니다. 이렇게 망가뜨린 코드에서도 테스트가 통과한다면? 그 테스트는 제대로 검사하지 못하고 있다는 뜻입니다.

mutmut이라는 무료 도구가 이 과정을 자동화합니다. pip install mutmut으로 설치하고 mutmut run 한 줄이면 코드 전체를 자동으로 검사합니다.

mutmut 변이 테스트 도구의 터미널 UI — 코드를 일부러 바꿔보면서 테스트가 제대로 작동하는지 확인하는 화면

mutmut의 실행 화면. 왼쪽에 파일별 변이 결과가, 오른쪽에 구체적으로 어떤 코드가 바뀌었는지 보여줍니다. 노란 이모지는 "이 변이를 테스트가 잡지 못했다"는 뜻입니다.

3. 부작용 차단 — "AI가 몰래 위험한 작업을 하지 못하게 막는다"

AI가 짠 코드가 의도치 않게 파일을 삭제하거나, 외부 서버에 데이터를 보내거나, 시스템 설정을 바꾸는 일이 없도록 사전에 차단합니다.

4. 타입 검사와 코드 스타일 검사 — "기본적인 실수를 기계가 먼저 걸러낸다"

변수 타입이 맞는지, 코드 형식이 일관된지를 자동으로 확인합니다. 사람이 눈으로 보면 놓치기 쉬운 기본적인 실수를 기계가 대신 잡아줍니다.

"AI 코드는 컴파일된 코드처럼 취급하라"

Lavigne의 가장 도발적인 주장은 이것입니다: AI가 짠 코드의 가독성이나 유지보수성은 신경 쓸 필요 없다는 것입니다. 마치 컴퓨터가 만들어낸 기계어를 사람이 읽지 않는 것처럼, AI가 짠 코드도 "규칙을 통과했으면 그만"이라는 관점입니다.

그는 이를 직접 증명하기 위해 fizzbuzz-without-human-review라는 프로젝트를 공개했습니다. 테스트 규칙만 세워두고, AI에게 코드를 짜게 한 뒤, 사람이 한 줄도 읽지 않고 자동 검증만으로 정확성을 확인하는 실험입니다.

해커뉴스 반론: "현실은 FizzBuzz가 아니다"

이 제안은 해커뉴스에서 42개의 댓글을 받으며 치열한 논쟁을 일으켰습니다. 주요 반론을 정리하면:

"FizzBuzz로 증명한 건 의미 없다" — 가장 많은 지지를 받은 비판입니다. 실제 업무에서 다루는 코드는 성능 요구사항, 보안 고려, 기존 시스템과의 호환성 등 단순한 정답/오답으로 나눌 수 없는 문제투성이입니다.

"올바른 테스트를 만드는 것이 올바른 코드를 만드는 것만큼 어렵다" — 테스트 규칙을 정확하게 세우는 것 자체가 코딩만큼 어려운 일이라는 지적입니다. 잘못된 테스트 규칙은 잘못된 코드를 통과시킵니다.

"사람이 읽을 수 있는 코드를 포기하지 마라" — AI가 짠 코드를 블랙박스로 취급하면, 나중에 문제가 생겼을 때 원인을 찾을 수 없다는 우려입니다. 수백만 달러 매출이 걸린 시스템에서 "코드를 버리고 새로 짜면 된다"는 접근은 현실적이지 않다는 목소리도 있었습니다.

"AI 코드는 보통 상황에서는 잘 돌아가지만 예외 상황에서 무너진다" — AI가 일반적인 경우는 잘 처리하지만, 개발자가 미처 생각하지 못한 극단적인 상황에서 실패한다는 경험담이 많았습니다.

양쪽 모두 맞다 — 상황에 따라 다르게 쓰면 된다

논쟁을 종합하면, 완전히 검증을 자동화할 수 있는 영역반드시 사람이 봐야 하는 영역이 나뉩니다:

자동 검증이 잘 맞는 경우:

  • 입력과 출력이 명확한 유틸리티 함수 (데이터 변환, 계산, 포맷 처리 등)
  • 일회성 스크립트나 프로토타입
  • 규칙이 명확한 비즈니스 로직

사람이 직접 봐야 하는 경우:

  • 보안이 중요한 인증/결제 코드
  • 외부 서비스와 연동하는 코드 (네트워크, 데이터베이스 등)
  • 장기간 유지보수해야 하는 핵심 시스템

흥미로운 점은 케임브리지 대학의 Martin Kleppmann 교수도 같은 방향을 제시했다는 것입니다. 그는 AI가 수학적 증명(Formal Verification)을 대중화할 것이라고 예측했습니다. 코드가 올바른지를 "수학적으로 증명"하는 기술인데, 지금까지는 너무 어렵고 비용이 많이 들어서 항공우주 분야에서만 쓰였습니다. AI 덕분에 이 기술이 일반 소프트웨어에도 적용될 수 있다는 것입니다.

직접 해볼 수 있는 방법

AI 코딩 도구를 쓰고 있다면, 오늘 바로 적용할 수 있는 자동 검증 조합입니다:

# 1. 속성 기반 테스트 도구 설치
pip install hypothesis

# 2. 변이 테스트 도구 설치
pip install mutmut

# 3. AI에게 코드를 짜달라고 한 뒤 자동 검증 실행
mutmut run          # 코드를 일부러 망가뜨려서 테스트 품질 확인
mutmut browse       # 결과를 터미널에서 확인

또는 Lavigne이 공개한 실험 프로젝트를 직접 클론해서 체험해볼 수 있습니다:

git clone https://github.com/Peter-Lavigne/fizzbuzz-without-human-review
cd fizzbuzz-without-human-review
uv sync
# AI에게 src/fizzbuzz/fizzbuzz.py를 짜달라고 한 뒤:
./check.sh    # 자동 검증 실행

AI 코딩의 다음 단계: "읽기"에서 "검증"으로

이 논쟁이 보여주는 큰 흐름이 있습니다. AI가 코드를 짜는 시대에, 개발자의 역할이 "코드를 쓰는 사람"에서 "코드를 검증하는 사람"으로 바뀌고 있다는 것입니다. Lavigne의 접근이 FizzBuzz 수준에서 증명된 것은 사실이지만, 같은 원리를 더 복잡한 시스템에 적용하는 연구가 활발히 진행되고 있습니다.

중요한 것은 "AI 코드를 무조건 믿는다"도, "AI 코드를 전부 읽는다"도 정답이 아니라는 점입니다. 자동 검증 도구를 적절히 활용하면, 사람의 시간은 아끼면서도 코드의 품질은 지킬 수 있습니다. 지금 바로 Hypothesis와 mutmut을 설치해보는 것이 그 첫걸음입니다.

관련 콘텐츠Easy클코로 AI 시작하기 | 무료 학습 가이드 | AI 뉴스 더보기

AI 소식, 가장 빠르고 쉽게 받아보세요

누구나 이해할 수 있도록, 가장 자세하고 쉽게 알려드립니다

텔레그램 채널 구독