QA Agent 통과율 50%에서 61%로 끌어올린 날

26년 03월 25일

통과율 50%는 신뢰할 수 없다

이날은 QA Agent 신뢰도를 올리는 데 집중했다.

smoke 테스트 통과율이 50%밖에 안 됐다.

동전 던지기 수준이다.

이걸 61%까지 끌어올렸다.

처음으로 “쓸 만하다”고 느낀 구간이었다.

QA Agent가 테스트를 돌리고 통과, 실패를 판정하는데, 통과율이 50%면 결과를 믿을 수가 없다.

통과했다고 해도 진짜 통과한 건지, 그냥 운이 좋았던 건지 구분이 안 된다.

CI에 붙여서 회귀 테스트를 맡기려면 최소한 결과를 신뢰할 수 있어야 한다.

그래서 통과율을 올리는 세 가지 작업을 했다.

블록된 케이스만 다시 돌리기

첫 번째는 2단계 재시도 구조를 만든 거다.

그 전까지는 케이스가 막히면 바로 재시도를 했다.

근데 같은 브라우저 세션에서 같은 이유로 또 막혔다.

타임아웃이 났든, 데이터가 없었든, 원인이 같으니까 재시도해도 같은 결과가 나온다.

그래서 재시도를 두 단계로 나눴다.

1단계에서 전체 케이스를 병렬로 돌린다.

통과, 실패, 막힘을 수집한다.

그리고 2단계에서는 막힌 케이스만 다시 돌린다.

이때 브라우저 세션을 새로 만들고 왜 막혔는지 원인이랑 통과한 이웃 케이스의 컨텍스트를 같이 주입한다.

원인을 분석하는 건 Inspector라는 별도 에이전트가 한다.

타임아웃인지, 브라우저 에러인지, 데이터가 없어서인지 판단한다.

그러니까 2단계 재시도는 같은 원인으로 또 실패하는 걸 피할 수 있다.

재시도 동시 실행 개수도 제한을 뒀다.

막힌 케이스 수랑 최대 동시 실행 개수 중 작은 값으로 잡았다.

그룹 단위 재시도

두 번째는 재시도 단위를 그룹 레벨로 넓힌 거다.

케이스 단위로만 재시도를 하면, 한 Lane 전체가 같은 의존성 때문에 실패했을 때 복구가 안 된다.

그래서 실행 그룹 단위로 재시도 범위를 잡았다.

그룹이 공유하는 의존성이 실패해서 전체가 막혔을 때, 그룹 전체를 다시 돌리니까 복구가 됐다.

뷰포트 프리셋

세 번째는 뷰포트를 표준화한 거다.

그 전까지는 뷰포트가 들쭉날쭉했다.

실행할 때마다 브라우저 크기가 달라서 레이아웃이 깨졌다가 안 깨졌다가 했다.

모바일, 태블릿, 데스크톱 세 가지 표준 뷰포트 프리셋을 만들어서 고정했다.

그러니까 해상도마다 결과가 달라지는 가짜 실패가 사라졌다.

Zod로 실행 계획 검증

마지막으로 Zod 스키마 검증을 붙였다.

Planner가 실행 계획을 세우면, 그 결과를 Zod 스키마로 먼저 검증한다.

통과, 실패, 판정 같은 필드가 제대로 들어 있는지, DAG 노드 형태가 맞는지 확인한다.

검증이 실패하면 그 계획을 버리고 다시 플래닝을 돌린다.

이게 왜 중요하냐면, LLM이 가끔 형식이 잘못된 결과를 내놓는다.

그걸 그대로 실행에 옮기면 토큰만 날리고 실패한다.

실행 전에 검증을 하니까, 형식이 잘못된 계획은 잡아내고 다시 짜게 만든다.

회사 프로젝트 작업

QA Agent 외에 회사 교육 플랫폼 작업도 했다.

두 가지. 하나는 국비지원 코스 홍보 페이지의 반응형 개선이었다.

태블릿이랑 모바일에서 레이아웃이 깨지는 문제를 잡았다.

브레이크포인트 기준을 조정하고 모바일에서는 상단 영역을 숨기고 관리자 대시보드 진입 버튼도 권한에 따라 노출되게 만들었다.

모바일에서 채널톡 버튼이 하단 바랑 겹치는 문제도 같이 잡았다.

다른 하나는 학습 관리 시스템 어드민 버그 두 개였다.

학생 관리 화면에서 페이지를 넘기면 검색 필터가 날아가는 문제랑, 학습 활동 목록이 잘못된 학생을 노출하는 문제. 검색 상태랑 페이지네이션 상태를 분리하고 노출 대상 필터 조건을 고쳤다.

국비지원 코스 홍보 페이지는 모바일에서 보는 사람이 많아서 반응형이 깨지면 바로 전환율에 타격이 간다.

어드민 버그도 매일 쓰는 기능이라 고치자마자 체감이 컸다.

마무리

QA Agent 통과율을 50%에서 61%로 올리니까, 처음으로 결과를 믿고 쓸 수 있게 됐다.

2단계 재시도가 가장 효과가 컸다.

같은 이유로 반복 실패하던 케이스들이 원인 분석과 새 브라우저 세션으로 통과하기 시작했다.

이날은 구조를 크게 바꾼 게 아니라, 있는 구조를 믿을 수 있게 만든 날이었다.

그리고 다음 날부터 멀티 에이전트 아키텍처 전환이 들어갔는데, 오늘 올려놓은 재시도 구조랑 Zod 검증이 그 전환의 기반이 됐다.