AI QA 에이전트에게 베이지안 사전 확률 (Bayesian prior) 부여하기: 확인하기 전에 버그가 어디에 있을지 예측하기
요약
AI QA 에이전트의 효율성을 높이기 위해 베이지안 사전 확률 개념을 도입하여, 과거 위반 이력을 바탕으로 발생 가능성이 높은 오류를 우선 예측하고 검사하는 설계 방식을 제안합니다.
핵심 포인트
- 정적인 체크리스트 대신 과거 데이터를 기반으로 한 사전 확률(Prior) 적용
- 도구 카테고리별 빈번한 위반 패턴을 예측하여 검사 우선순위 설정
- 비용이 적은 grep 스윕을 시각적 검사 전에 선행하여 효율 극대화
- 판정 오염을 방지하기 위해 체크(Check)와 수정(Fix) 세션을 엄격히 분리
AI 에이전트에게 QA 체크리스트를 건네주면 다음과 같은 결과가 나타납니다. 모든 항목이 완벽하게 균일한 주의력을 가지고 처음부터 끝까지 검사됩니다. 하지만 주의력이 균일하게 분산되면, 실제로 문제가 발생하는 지점들을 놓치게 됩니다.
AI 에이전트를 사용하여 600개 이상의 다국어 웹 도구에 대해 QA를 수행하면서, 저는 QA에 사전 확률 (prior probability)을 부여하는 방식이라고 설명할 수 있는 설계를 하게 되었습니다. 전체 구현은 마크다운 (markdown) 파일로 이루어져 있습니다.
문제점: 정적인 체크리스트는 주의력을 균등하게 분산시킨다
숙련된 인간 QA 엔지니어는 체크리스트를 균등하게 읽지 않습니다. 그들은 "이런 유형의 도구는 보통 여기서 문제가 발생한다"라는 휴리스틱 (heuristic)을 가지고 있으며, 의심스러운 지점에 먼저 주의를 집중합니다.
AI에게 체크리스트(제 것은 70개 이상의 알려진 위반 패턴을 카탈로그화하고 있습니다)를 주면, 그러한 주의력의 기울기가 존재하지 않습니다. AI는 의무적으로 모든 것을 검증하며, 그 과정에서 컨텍스트 (context)를 소모하지만, 여전히 빈번하게 발생하는 위반 사항들을 그냥 지나칩니다.
해결책: 위반 이력을 축적하여 검사 전 예측하기
제가 한 일은 부끄러울 정도로 간단합니다.
QA에서 발견된 모든 위반 사항은 지식 베이스(마크다운 파일)에 기록됩니다: 어떤 카테고리의 도구인지, 어떤 위반 패턴인지. 이것이 축적 단계입니다.
그 후 QA 시작 시, 체크리스트를 건드리기 전에 에이전트는 도구의 카테고리 × 과거 빈도를 바탕으로 발생 가능성이 높은 상위 3~5개의 위반 사항을 예측합니다. 저의 카테고리 수준 예측은 다음과 같습니다:
- 계산기 (Calculators): 과도하게 노출된 "실시간 계산" 마케팅 문구 / 단위 전환 기능 누락 / 깨진 출력 카드 레이아웃
- 시각적 도구 (Visual tools): 초기화 시 깜빡임 (flicker) / 프리뷰 오버플로 (overflow) / 내보내기 요소 크기 깨짐
- 텍스트 도구 (Text tools): 다국어 레이블 오버플로 (overflow) / 하드코딩된 UI 문자열
예측이 틀릴 때도 있습니다. 그럼에도 불구하고, 시각적 주의력의 첫 번째 패스를 "이전에 실제로 문제가 발생했던 곳"에 맞추는 것만으로도 놓치는 부분을 눈에 띄게 줄였습니다. 베이지안 (Bayesian) 관점에서 말하자면, 균등 분포 (uniform distribution)에서 QA를 시작하는 것을 멈추고, 사전 확률 (prior)에서 시작하는 것입니다.
효과를 배가시킨 두 가지 설계
시각적 QA가 시작되기 전에 grep이 잡을 수 있는 모든 것을 제거하기
일부 위반 패턴은 기계적으로 탐지 가능합니다: 가시적인 카피 내 금지된 단어, 인라인 onclick, 하드코딩된 UI 문자열 등입니다. 시각적 검사(visual inspection)를 수행하기 전에 이러한 항목들을 하나의 배치 grep 스윕(grep sweep)으로 실행하십시오. 비용이 많이 드는 검사(픽셀을 직접 확인하는 작업)는 오직 눈으로만 잡아낼 수 있는 것들만을 다뤄야 합니다. 저렴한 검사를 먼저, 비용이 많이 드는 검사를 나중에 — 이는 명백한 순서이지만, 강제하지 않으면 AI 에이전트들이 건너뛰는 부분입니다.
체크(check)와 수정(fix)을 서로 다른 세션과 브랜치로 분리하기
QA 에이전트가 동일한 세션 내에서 문제를 수정하게 두면 판정(verdict)을 오염시키게 됩니다. 즉, "수정했다"라는 욕구가 합격/불합격(pass/fail) 판단에 스며들게 됩니다. 저는 한때 동일한 파일 내에 "PASS"라는 결과와 해결되지 않은 이슈 목록이 공존하는 QA 기록을 본 적이 있습니다.
그 이후로 다음과 같이 운영합니다: 체크(check) 역할은 탐지하고 보고만 하며, 코드는 절대 건드리지 않습니다. 수정(fix)은 별도의 의도(intent), 별도의 브랜치, 별도의 세션에서 이루어집니다. 만약 동일한 발견 사항이 세 번의 라운드를 거치고도 살아남는다면, 계속해서 수정을 시도하는 대신 인간에게 에스컬레이션(escalate)하십시오 (보류(shelving)는 인간만이 내릴 수 있는 결정입니다).
참고할 점: "합격 + 미해결 이슈"와 같은 기록 오염은 오늘날의 툴링(tooling)을 사용하면 발생할 가능성이 낮을 수 있습니다. 하지만 수정 권한을 갖지 않음으로써 QA의 객관성을 보장한다는 설계 원칙은 특정 원인이 패치된 후에도 여전히 유효합니다.
구현 비용
특별한 도구는 필요하지 않습니다. 위반 카탈로그(violation catalog)는 하나의 마크다운(markdown) 파일입니다. 지식 베이스(KB, 위반 이력) 또한 하나의 마크다운 파일이며, '항상 읽어야 하는 섹션'과 '필요할 때 찾아보는 섹션'으로 계층화되어 있습니다. 예측(prediction)과 라우팅(routing)은 에이전트에게 전달되는 스킬 파일(skill file, 절차 문서)에 포함됩니다.
즉, 이 모든 것은 그저 마크다운일 뿐입니다. 학습(training)도, 외부 데이터베이스도 필요 없습니다. 절차에 "이력을 참조하고 예측하라"라는 단 하나의 추가 단계만 삽입하면 됩니다. 그 한 단계가 QA를 정적인 체크리스트와 질적으로 다르게 만들었습니다.
한계 및 주의사항
사전 확률(prior)은 축적이 필요합니다. 초기에는 KB가 비어 있어 아무런 효과가 없지만, 기록된 위반 사항이 수십 번의 QA 실행을 거치고 나면 작동하기 시작합니다.
부실한 카테고리는 부실한 예측을 낳습니다. 저는 대략 "계산기 / 시각적 / 텍스트" 정도의 입도(granularity)로 시작했으며, 그것으로 충분했습니다.
예측을 너무 신뢰할 경우 발생하는 쇠퇴(decay) 위험이 있습니다. 즉, 에이전트가 예측된 3~5개 범위를 넘어 더 이상 탐색하지 않게 되는 것입니다. 예측은 단지 주의(attention)의 순서를 재정렬할 뿐이며, 전체적인 탐색(full sweep)이 결코 생략되지는 않습니다.
검증됨: 2026년 4월–6월. 환경: Claude Code + 커스텀 기술/지식 베이스 (markdown) / 다국어 웹 도구 플릿(fleet) 전반에 걸친 QA.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기