쉬운 설명
AI에게 "이런 프로그램 만들어줘"라고 부탁하고, AI가 짠 코드가 자체 테스트에서 '통과'하면 보통 안심하기 마련인데요. 사실 그 초록색 '통과' 표시는 AI가 상상해서 만든 깔끔한 가짜 데이터에서만 잘 돌아갔다는 뜻일 수도 있어요. 실제 세상의 데이터는 생각보다 훨씬 지저분하거든요. 이번 글은 테스트를 전부 통과했는데도 실제로 돌려보니 261개 중 겨우 6개만 맞았던 실제 사례를 통해, AI가 만든 결과물을 어떻게 더 꼼꼼하게 검증해야 하는지 이야기해 드립니다.

요약
이 글은 '바이브 코딩', 즉 코드를 일일이 뜯어보지 않고 AI에게 원하는 바를 말로 설명해 코드를 받는 방식으로 블로그 자동화 도구를 만들다 겪은 실제 이야기예요. 구글 검색 실적을 보여주는 서치콘솔에서 데이터를 긁어와 글별 노출과 순위를 정리하는 도구를 만들었는데요. AI가 함께 짜준 자체 검증 코드(셀프테스트)는 가볍게 통과했지만, 실제로 실행해 보니 261편의 글 중 고작 6편만 제대로 연결됐다고 해요. 웹페이지 텍스트를 긁어올 때 표 셀 안에 숨어 있던 버튼 문구까지 함께 딸려 들어와 URL이 엉망이 된 게 원인이었죠.
이 사례가 주는 교훈은 분명합니다. 테스트를 통과했다고 해서 검증이 정말 끝난 건 아니라는 점이에요. AI가 기능 코드와 테스트 코드를 함께 만들면, 둘 다 "입력 데이터는 깨끗한 URL일 것"이라는 똑같은 잘못된 착각을 공유하기 때문에 테스트가 오류를 절대 잡아내지 못하거든요. 글쓴이는 이 경험을 겪은 뒤, 작업을 끝마치는 조건으로 세 가지를 새로 추가했다고 밝혔습니다. 바로 '변이 테스트(테스트를 일부러 고장 내보기)', '실제 데이터로 딱 한 번 돌려보기', '확인할 수 없는 부분은 판별 불가라고 확실히 적어두기'입니다.
활용 포인트
개발자나 데이터를 다루는 분이라면 "테스트 통과(초록불) = 개발 완료"라는 생각을 다시 돌아볼 필요가 있어요. AI에게 웹페이지를 긁어오거나(스크래핑) 외부 데이터를 다루는 도구를 만들게 할 때, 테스트용 가짜 데이터(픽스처)를 AI가 상상한 예쁜 데이터로만 채우면 위험합니다. 실제 화면에서 innerText나 API 응답을 직접 출력(print)해 보고, 그 날것 그대로의 데이터를 테스트에 넣어보는 습관이 큰 도움이 돼요. 또한 도구를 만든 직후에는 실제 데이터로 전체를 딱 한 번 돌려보며 결과 수치가 상식적인지(예: 261편 중 겨우 6편 매칭처럼 이상하지는 않은지) 직접 확인하는 절차를 작업 완료 조건에 넣어보는 것도 좋은 방법입니다.
기획자나 비개발자 입장에서도 무척 유용한 이야기예요. AI 도구나 자동화 스크립트를 외주 맡기듯 쓸 때 "테스트 통과했습니다"라는 말만 믿지 않고, "실제 데이터로도 한번 돌려보셨나요?"라고 되묻는 것만으로도 큰 실수를 미리 막을 수 있거든요. 아울러 정규표현식(re.search(r'https?://\S+', raw)) 같은 간단한 코드로 지저분한 텍스트에서 깔끔하게 URL만 쏙 뽑아내는 '키 정리' 방식은, 비슷한 스크래핑 작업을 할 때 곧바로 써먹을 수 있는 유용한 실전 팁입니다.
주의 사항
참고로 글쓴이는 서치콘솔 화면에서 평소 보이지 않던 버튼 문구가 왜 innerText에 딸려 들어왔는지(CSS 수준의 정확한 원인), 그리고 왜 하필 6편만 오염되지 않고 정상 매칭되었는지는 직접 확인하지 못했다고 밝혔어요. 또한 이 사례는 특정 시점(2026년 9월)과 특정 환경(macOS, Python 3.14.7)에서 겪은 개인적인 경험인 만큼, 사용하는 환경이나 AI 도구에 따라 결과가 다를 수 있다는 점도 염두에 두시면 좋겠습니다.
자체 검증
원문에서 다룬 핵심 수치인 "261편 중 6편만 매칭됐다"와 "키 정리 후 261편 중 100편으로 늘었다"는 내용을 본문에 그대로 정확하게 반영했습니다. 원인으로 지목된 innerText 속성이 요소와 그 하위 요소들의 렌더링된 텍스트까지 전부 가져온다는 설명 역시 원문의 MDN 문서 인용 사실과 일치합니다. 다만 완료 조건 세 가지(변이 테스트, 실데이터 1회 실행, 판별 불가 명시)는 원문 머리말 요약에 나온 내용을 정리한 것이며, 서치콘솔 사례 뒤에 이어지는 나머지 두 도구(ad-inventory.py, 수요 게이트)의 자세한 사례는 발췌본에 포함되지 않아 이번 글에서는 다루지 않았습니다.
태그
#AI #바이브코딩 #소프트웨어테스트 #개발자경험 #데이터검증 #자동화 #스크래핑