커버리지·테스트 생성
실제 사용자 세션에서 커버리지가 높은 경로를 찾아 자동 테스트 케이스로 변환하는 파이프라인입니다.
커버리지·테스트 생성 파이프라인은 RUM 세션을 그룹 단위로 분석해 실제 사용자가 가장 많이 밟는 경로를 찾고, 그 경로를 세션 리플레이 기반의 자동 테스트 케이스(Appium·Playwright)로 변환합니다. 가상 시나리오가 아니라 프로덕션에서 일어난 실제 행동에서 테스트를 만듭니다.
해결하는 문제
QA 팀은 테스트 시나리오를 수작업으로 기획하지만, 실제 사용자가 쓰는 경로와 괴리가 큽니다. 모바일 자동화 테스트는 유지 비용이 크고, 어떤 경로를 먼저 테스트해야 하는지에 대한 객관적 근거도 부족합니다. 이 파이프라인은 실사용 데이터에서 우선순위를 도출하고, 테스트 작성과 UI 변경에 따른 유지보수까지 에이전트에게 위임합니다.
NOTE — v2 계획
이 페이지는 v2 파이프라인 계획을 설명합니다. 커버리지 지표와 에이전트 구성은 확정되었으나, 세부 동작과 임계값은 구현 과정에서 달라질 수 있습니다.
단계별 흐름
RUM 세션 수집
│
▼
Analyzer Agent ── 사용자 그룹핑 · 퍼널/Sankey 분석
│ 경로 정규화 · 커버리지 상위 경로 추출
▼
TC Gen Agent ── 대표 세션 리플레이 → 테스트 스크립트 변환
│ 초안 제출
▼
Validator Agent ── 원본 세션과 재생 결과 비교
│ 승인
▼
테스트 카탈로그 등록 ──▶ CI 파이프라인 통합- 세션 수집 — RUM 세션 이벤트가 인덱싱됩니다.
- 분석 — Analyzer Agent가 세션을 세그먼트로 그룹핑하고, 화면 전환을 퍼널·Sankey로 집계해 커버리지 상위 경로를 추출합니다.
- 테스트 생성 — TC Gen Agent가 각 경로의 대표 세션을 읽어 실행 가능한 테스트 스크립트 초안을 작성합니다.
- 검증 — Validator Agent가 초안을 실행해 원본 세션의 핵심 이벤트와 일치하는지 확인합니다.
- 등록 — 승인된 스크립트가 테스트 카탈로그에 등록되고 CI 파이프라인에 통합됩니다.
사용자 행동 커버리지
사용자 행동 커버리지는 Sophonz가 정의한 고유 지표입니다. 코드 커버리지가 코드 실행 여부를 측정하는 것과 달리, 사용자 행동 커버리지는 실제 사용자가 밟는 경로를 기준으로 합니다. RUM 세션 데이터에서 대다수 사용자가 실제로 통과하는 경로들을 추출하고, 그 경로들의 합이 전체 실사용의 몇 %를 덮는지를 수치화합니다.
coverage(path) = (해당 path를 포함하는 세션 수) / (전체 세션 수)기본 우선순위는 coverage * frequency이며, 조직별로 가중치를 커스터마이즈할 수 있습니다.
에이전트별 책임
Analyzer Agent
- 입력 — 프로젝트, 환경, 기간.
- 프로세스 — 세션을 디바이스·유저 세그먼트로 그룹핑하고, 화면 전환을 Sankey 그래프로 집계하고, 동적 파라미터를 정규화(
/users/123→/users/:id)한 뒤, 커버리지 기준 Top-N 경로를 선택합니다. - 출력 — 경로 목록과 각 경로의 대표 세션 ID.
TC Gen Agent
- 입력 — 경로와 대표 세션.
- 프로세스 — 세션 이벤트 스트림을 읽어 액션 시퀀스를 추출하고, 플랫폼별 코드를 생성합니다(Android/iOS → Appium, Web → Playwright). 스크립트에 재시도·대기 로직을 자동 삽입하고, 픽스처·테스트 데이터 자리는 주석으로 표시합니다.
- 목표 — 사용자 행동 커버리지를 설정한 임계치 이상으로 끌어올리는 것.
Validator Agent
초안을 에뮬레이터/헤드리스 브라우저에서 실행해 원본 세션의 핵심 이벤트와 일치하는지 검증하고, 플레이크(flaky)를 감지하면 재생성을 트리거합니다.
자동 유지 보수 루프
UI 변경으로 테스트가 실패하면 다음 루프가 사람 개입 없이 돕니다.
- 실패 이벤트가 오케스트레이터에 전달됩니다.
- Analyzer가 최근 7일 세션으로 경로를 다시 추출합니다.
- TC Gen이 스크립트를 재생성합니다.
- Validator가 다시 검증합니다.
보안과 프라이버시
- 세션 이벤트에 포함된 민감 입력값은 RUM 세션의 마스킹 정책을 따릅니다.
- 생성된 스크립트에는 마스킹된 placeholder만 포함되며, 실제 값은 포함되지 않습니다.
- 전체 파이프라인이 하나의 트레이스로 기록되어 세션→경로→스크립트→CI 결과가 동일 트레이스에 묶입니다.