AI가 작성한 코드에 대한 자체 검토를 요청했고, 3개의 버그를 발견했습니다
요약
AI가 작성한 코드의 신뢰성에 의문을 제기하며, 개발자가 AI에게 '회의적인 검토자' 역할을 부여하여 자체적으로 버그를 발견하는 과정을 공유합니다. 이 방법은 AI가 놓친 결함을 찾아내어 코드 품질을 높이는 효과적인 기법입니다.
핵심 포인트
- AI의 코드는 신뢰하기 전에 반드시 재검토해야 합니다.
- AI에게 '회의적인 검토자' 역할을 부여하여 자체적으로 버그를 발견했습니다.
- 이 과정은 개발자가 놓치기 쉬운 결함을 찾아내는 데 매우 효과적입니다.
당신은 AI 어시스턴트가 방금 작성해 준 코드를 신뢰하십니까?
저는 그랬습니다. 너무 많이요.
최근에는 제가 AI(Claude Code 사용)에게 무언가를 작성하게 한 후, 추가적으로 요청하는 것이 있습니다. '이걸 네가 직접 쓴 게 아니라고 가정하고, 이전에 본 적 없는 회의적인 선임 엔지니어처럼 검토해 달라'고 말입니다.
지난주에 그 추가 단계 덕분에 3개의 버그를 발견했습니다. 이 버그들은 같은 AI가 몇 분 전에 작성했던 코드 안에 있었습니다. 그리고 AI는 코드를 작성할 때 전혀 알아차리지 못한 버그들이었습니다.
알고 보니, 무언가를 쓰는 사람 자신은 그것의 결함을 볼 수 없는 것 같습니다. 그리고 이것이 AI에게도 해당되는 것 같습니다.
문제를 시작하게 한 버그
저는 스크린샷을 실시간으로 번역하는 Windows 앱을 만들고 있습니다. 스크린샷을 붙여넣으면, 텍스트를 OCR(광학 문자 인식)하고 그 위에 번역된 내용을 오버레이합니다.
특정 화면 유형에서 계속 문제가 발생했습니다. 바로 어두운 네이비 헤더에 흰색 텍스트가 있는 경우였습니다. 'Sign up'이나 'Help' 같은 버튼들이 완전히 건너뛰어졌습니다. 잘못 번역된 것이 아니라, 아예 텍스트로 감지되지 않은 것입니다.
원인은 다음과 같았습니다: OCR 파이프라인이 '어두운 배경 = 이 영역은 무시한다'고 판단하고, 읽으려고 시도하기도 전에 전체 헤더를 폐기해 버린 것입니다.
저는 Claude Code에게 이것을 고치라고 요청했습니다. 즉, 어두운 영역을 감지하여 국소적으로 반전시키고(invert), 그 다음에 OCR을 실행하도록 했습니다. 이 부분은 작동했습니다. 'Sign up'과 'Help'가 올바르게 번역되기 시작했습니다.
저는 모든 것이 끝났다고 생각했습니다.
그러자 AI에게 스스로 의심하게 만들었습니다
제 습관이 있습니다. 저는 AI가 자신의 작업을 '완료'로 표시하도록 절대 내버려두지 않습니다. 무언가를 작성한 직후, 저는 같은 AI에게 역할을 전환해 달라고 요청합니다. 즉, 이 코드를 본 적 없는 회의적인 검토자가 되어 방금 작성된 diff를 해체해달라는 것입니다.
이번에는 그 AI가 방금 배포했던 수정 사항에서 실제 버그 3개를 발견했습니다:
**1.
3. 밝기 측정 방식에 오류가 있었습니다
이전에는 영역을 반전할지 여부를 결정하는 로직이 문자의 '잉크(ink)' 부분이 얼마나 밝은지를 보고 밝기를 측정했습니다. 따라서 굵은 흰색 글자(밝은 픽셀 영역이 많음)는
그래서 이제 제가 AI에게 무언가를 작성하거나 수정하게 할 때마다, 완료했다고 부르기 전에 두 번째 역할을 맡게 합니다. 마치 이 코드를 본 적이 없는 사람처럼요. 그 역할은 저자가 놓친 것을 찾아내는 것입니다.
이렇게 시작한 이후로, 사용자가 발견하기 훨씬 전에 제가 눈에 띄게 더 많은 버그를 잡고 있습니다.
실제로 저는 이 과정을 할 때마다 두 가지 특정 프롬프트를 사용합니다. 하나는 '회의적인 검토자(skeptical reviewer)'가 리뷰 자체를 하도록 강제하는 것이고, 다른 하나는 모든 발견 사항을 맹목적으로 적용하지 않도록 그것들을 분류(triage)하는 것입니다. 만약 사람들이 정확한 프롬프트가 필요하다면 댓글로 알려주세요. 제가 전체 도구 키트와 함께 더 자세한 내용을 구성할 수도 있습니다.
이런 종류의 글(혼자 개발 + AI, 성공과 실패담)은 Threads에 더 많이 올릴 예정입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기