목록으로

QA 자동화 봇 (Smoke·Unit·E2E + AI 테스트 생성)

2026년 3월 - 현재Developer주식회사 루멘테라

Playwright, TypeScript, Claude API, AWS Bedrock, Stagehand, GitHub Actions, AWS EC2, Linear SDK

Overview

PR마다 Smoke·Unit·E2E 테스트를 자동 실행하고, 변경 diff를 분석해 Playwright 테스트를 AI로 생성·검증까지 하는 QA 봇을 설계·구축했습니다. 팀의 PR Gate로 정착해 지금도 상시 실행되고 있습니다.

릴리스마다 사람이 손으로 화면을 눌러보는 QA가 병목이었습니다. 역할별 로그인 fixture를 만들고 고정 테스트를 PR Gate로 세운 뒤, 변경된 코드에 대한 테스트는 AI가 생성하도록 파이프라인을 붙였습니다. 다만 AI가 만든 테스트를 그대로 신뢰할 수는 없기에, 문법 검증·DB 읽기 전용 강제·비용 로깅 같은 검증 장치를 함께 설계했습니다.

Structure

QA 봇 파이프라인: 변경 감지에서 리포트까지, 그리고 생성물 Validation Gate변경 감지생성과 검증VALIDATION GATE티켓 추출브랜치 → 이슈 → PRdiff 분석base ↔ head 비교파일 분류화면 · 컴포넌트 · API셀렉터 수집실패 시 정적 패턴 사용AI 테스트 생성변경 범위로 한정Syntax Check실패 시 1회 재시도Read-only 실행데이터 변조 불가리포트PR 코멘트 · 리포트고정 테스트(Smoke · Unit · E2E)는 PR Check에 반영AI 생성 스펙은 참고용으로 분리
8단계

Challenges & Solutions

수동 QA가 릴리스 병목

Before
  • 릴리스마다 역할별 주요 플로우를 사람이 직접 클릭해 확인
  • 확인 범위가 담당자마다 달라 회귀 버그가 운영까지 흘러감
After
  • 역할별 로그인 fixture 기반으로 Smoke·Unit·E2E 3계층 테스트 구성
  • main 대상 PR에서 자동 실행되는 Gate로 배선, 결과를 PR 코멘트와 HTML 리포트로 회수
  • 특정 티켓 버그를 재현하는 회귀 스펙을 따로 두어 같은 버그가 두 번 나지 않도록 고정

변경마다 테스트를 사람이 새로 써야 함

Before

기능이 바뀔 때마다 어떤 화면이 영향을 받는지 판단하고 스펙을 손으로 추가해야 하는 구조

After
  • 티켓 추출 → diff 분석 → 파일 분류 → 라이브 DOM 셀렉터 수집 → 프롬프트 구성 → 생성 → 검증 → 실행 → PR 코멘트 파이프라인 구축
  • 변경 코드와 사이드이펙트 예상 범위만 테스트하도록 제한 (무관한 테스트 생성 방지)
  • 셀렉터 수집에는 저비용 모델, 테스트 생성에는 고성능 모델로 역할 분리
  • 셀렉터 수집이 실패해도 정적 셀렉터 패턴으로 fallback해 파이프라인이 멈추지 않도록 설계

AI가 만든 테스트를 그대로 믿을 수 없음

Before

생성된 코드가 문법적으로 깨지거나, 테스트가 실제 데이터를 건드릴 위험이 있는 상태

After
  • 생성 코드 TypeScript 문법 검증 후 실패 시 에러 컨텍스트를 넣어 1회 재시도
  • AI가 생성한 테스트가 데이터를 변조하지 못하도록 쓰기 요청을 차단
  • AI 생성 스펙은 참고용으로 분리해, 실패해도 PR Check에 반영되지 않게 하고 고정 테스트만 Gate로 사용
  • 토큰 비용을 로그 prefix로 노출하고, 스펙 실행 자체는 LLM을 쓰지 않아 비용이 0임을 teardown에 기록

CI 실행 시간과 운영 비용

Before

전체 테스트를 순차 실행하면 PR 피드백이 늦고, 테스트 전용 환경이 놀면서도 계속 비용을 쓰는 구조

After
  • 워커 3 병렬 + 빌드 해시 스킵 + 빌드 병렬화로 Warm Cache 기준 8~12분까지 단축
  • 테스트 전용 실행 환경을 상시 가동하지 않고 필요한 시점에만 기동·종료하도록 운용

Impact

3계층

Smoke · Unit · E2E

PR마다 자동 실행되는 테스트

지속 실행

팀의 PR Gate로 정착해 상시 실행

read-only

AI 생성 테스트의 데이터 변조 차단