개념
지표는 파이프라인을 고치기 위해 잰다
모듈 6 레슨 5에서 "지표는 목표가 아니라 신호다"를 배웠다. 이 레슨의 지표는 모두 한 질문에 답하기 위한 것이다. 검증 파이프라인을 다음 달에 어디부터 고칠 것인가. 이 질문에 답하지 못하는 지표는 대시보드에 올리지 않는다.
지표는 네 묶음으로 나눈다.
| 묶음 | 답하는 질문 | 주 독자 |
|---|---|---|
| 신호 품질 | 파이프라인이 내는 결과를 믿을 수 있는가 | QA·개발 리드 |
| 검증 범위 | 무엇을 검증하고 무엇을 못 하고 있는가 | QA |
| 결함 흐름 | 결함이 어디서 들어오고 어디서 잡히는가 | QA·제품·개발 |
| 전달 성과 | 검증이 배포 속도와 안정성에 어떤 영향을 주는가 | 경영·플랫폼 책임자 |
신호 품질 ① — 플래키 비율을 정의대로 잰다
플래키 테스트는 같은 코드·같은 환경에서 통과와 실패를 오가는 테스트다. 규모 감을 잡자면, Google은 자사 테스트의 약 16%가 플래키 동작을 보였고 전체 테스트 실행의 약 1.5%가 플래키로 잘못 실패했다고 보고했다. 통과에서 실패로 바뀐 전이의 대부분(84%)에 플래키 테스트가 끼어 있었다.
플래키 비율은 정의에 따라 숫자가 크게 달라진다. 대시보드에 올리기 전에 어떤 정의인지 를 못 박는다.
| 정의 | 계산 | 장점 | 함정 |
|---|---|---|---|
| 시도 내 플래키 | 한 실행에서 재시도 중 통과·실패가 섞인 테스트 수 ÷ 실행된 테스트 수 | 레코드의 attempt_verdicts 로 바로 계산 | 재시도를 끄면 0이 된다 |
| 실행 간 플래키 | 같은 커밋에서 N번 실행했을 때 결과가 갈린 테스트 수 ÷ 테스트 수 | 정확하다 | 반복 실행 비용 |
| 이력 기반 플래키 | 최근 기간 동안 코드 변경 없이 결과가 뒤집힌 횟수가 일정 이상인 테스트 비율 | 추가 비용 없음 | 환경 변경을 코드 변경과 구분해야 한다 |
Playwright는 재시도 중 일부 시도는 기대대로, 일부는 기대와 다르게 끝난 테스트를 flaky 결과로 따로 표시한다. 이런 도구 표시와
레슨 4 판정 레코드의 시도 기록을 함께 쓰면 시도 내 플래키 는 추가 비용 없이 나온다. 회귀 층에서 매주 핵심 기준을 같은 커밋에
여러 번 돌리면 실행 간 플래키 로 보정할 수 있다.
플래키 비율만 보면 안 되는 이유가 하나 더 있다. 재시도가 숨긴 비용 이다.
[신호 품질 — 2026-09 둘째 주 회귀]
실행 테스트 2,140
시도 내 플래키 37 (1.7%)
재시도로 추가된 실행 시간 41분 (전체 회귀 시간의 18%)
격리 목록 22 (만료 초과 6)
플래키로 분류됐다가 제품 결함으로 판명 2 (D-TRAIN-031, D-INFER-008)마지막 줄이 가장 중요한 숫자다. 플래키로 분류됐다가 제품 결함으로 판명된 수. 이 수가 0이 아니면 격리 절차가 결함을 숨기고 있다. 레슨 5에서 본 체크포인트 재개 간헐 실패처럼, 인프라 플랫폼에서는 간헐성이 곧 제품 결함인 경우가 적지 않다.
격리 목록에는 만료 가 있어야 한다. 격리된 테스트에 조사 기한(예: 한 스프린트)을 두고, 만료된 항목 수를 대시보드에 올린다. 만료 초과가 늘면 격리가 사실상 삭제가 된 것이다.
신호 품질 ② — 거짓 경보와 판정자 오판률
| 지표 | 정의 | 출처 |
|---|---|---|
| 거짓 차단 비율 | 게이트 차단 중 검토 결과 결함이 아니었던(환경·데이터·테스트 결함) 비율 | 게이트 검토 기록 |
| 판정자 오판률 | 해석 판정 PASS 표본 중 사람 FAIL 비율, FAIL 중 사람 PASS 비율을 따로 | 레슨 3 표본 재검토 |
| 판정 불가 비율 | 해석 판정 중 abstain 비율 | 판정 레코드 |
| 보정 상태 | 판정자별 κ·FAIL 재현율·보정 만료일 | 보정 기록 |
판정자 오판률은 PASS 쪽과 FAIL 쪽을 합치지 않는다. 놓친 FAIL(거짓 PASS)은 운영 위험이고, 틀린 FAIL(거짓 FAIL)은 개발자 신뢰 하락이다. 비용이 다른 오류를 한 숫자로 합치면 어느 쪽을 고쳐야 할지 모른다.
검증 범위 — 코드 커버리지가 아니라 기준 커버리지
코드 커버리지는 "어떤 코드가 실행됐는가"를 말한다. 이 모듈의 파이프라인이 알고 싶은 것은 "어떤 기준이 검증됐는가" 다. 레슨 2에서 테스트 이름에 기준 ID를 넣었으므로 계산할 수 있다.
기준 커버리지 = 최근 회귀에서 한 번 이상 판정된 기준 수 ÷ 활성 기준 수
세분화
- 결정적 기준 커버리지 / 해석 기준 커버리지
- 흉내 검증만 된 기준 비율 (실물 GPU·실제 업그레이드 경로로 한 번도 검증 안 됨)
- 서비스별 기준 커버리지 — 레슨 7 확장의 진척도
- 운영 탈출 결함 중 대응 기준이 "없었던" 비율 — 기준 목록 자체의 누락마지막 지표가 기준 커버리지의 분모 문제 를 보완한다. 기준 커버리지 100%는 "정의한 기준을 다 봤다"일 뿐이다. 기준이 모자라면 100%도 의미가 없다. 운영 탈출 결함을 기준에 역추적(레슨 5)한 결과가 그 누락을 드러낸다.
코드 커버리지를 버리라는 말은 아니다. 모듈 12 레슨 8의 API 커버리지 네 층처럼, 코드·API·기준 커버리지를 층으로 보면 서로의 빈칸을 보완한다. 기준은 있는데 코드 커버리지가 낮으면 기준을 검증하는 테스트가 얕다는 신호고, 코드 커버리지는 높은데 기준 커버리지가 낮으면 테스트가 무엇을 판정하는지 불분명하다는 신호다.
결함 흐름 — 어디서 들어오고 어디서 잡히는가
결함 추세는 개수보다 발견 위치의 분포 가 중요하다.
[결함 발견 위치 — 최근 8주, 심각도 높음 이상]
PR 회귀 릴리스 전 게이트 예외 후 운영 운영(탈출)
W31 9 4 1 0 2
W32 11 3 2 0 1
...
W38 14 2 1 1 0
왼쪽 이동 비율 = PR 에서 발견 ÷ 전체 발견기준을 스킬로 배포하고(레슨 2) PR 층을 다듬으면 분포가 왼쪽으로 옮겨 가야 한다. 옮겨 가지 않으면 스킬이 적용되지 않았거나 변경 영향 지도가 틀린 것이다. 모듈 6 레슨 5의 결함 탈출률은 이 표의 오른쪽 끝이다.
함께 볼 추세는 셋이다.
| 지표 | 의미 |
|---|---|
| 결함 유입 대비 해결 | 해결이 유입을 못 따라가면 게이트 예외가 늘어날 전조 |
| 높음 이상 결함의 평균 체류 시간 | 차단 결함이 게이트를 몇 주 연속 막는지 |
| 재발 결함 비율 | 해결됨 이후 같은 기준이 다시 실패한 비율 — 수정 검증이 얕다는 신호 |
게이트 지표
| 지표 | 정의 | 이상 신호 |
|---|---|---|
| 차단율 | 차단 1건 이상 발생한 주 ÷ 전체 주 | 몇 달째 0이면 기준이 운영 결함을 못 본다 |
| 예외 승인율 | 예외 승인된 차단 ÷ 전체 차단 | 계속 오르면 예외가 기본 경로 |
| 예외 만료 준수율 | 만료 주에 해소된 예외 ÷ 만료된 예외 | 낮으면 예외가 영구 면제 |
| 게이트 리드타임 | 후보 확정부터 결정까지 시간 | 길어지면 자동 요약이 판단에 도움이 안 된다 |
| 조건부 Go 조건 확인율 | 조건 확인 기록이 남은 조건 ÷ 전체 조건 | 낮으면 조건이 장식 |
전달 성과 — DORA 다섯 지표와 잇기
경영진과 이야기할 때는 DORA 지표가 공용어다. DORA는 2024년부터 소프트웨어 전달 성과를 다섯 지표로 본다.
| 묶음 | 지표 |
|---|---|
| 처리량 | 배포 빈도, 변경 리드타임, 실패한 배포의 복구 시간 |
| 불안정성 | 변경 실패율, 배포 재작업률 (운영 인시던트 때문에 생긴 계획에 없던 배포의 비율) |
DORA 2025 보고서는 AI를 증폭기 로 본다. 기반이 약한 조직에서 AI는 처리량을 올리는 동시에 재작업과 실패한 변경을 늘린다. 그래서 AI 검증 파이프라인의 성과는 불안정성 두 지표로 보여줘야 설득력이 있다.
QA 지표를 DORA 지표 옆에 놓는 방식이 효과적이다.
[분기 보고 — 한 화면]
배포 빈도 주 1회 → 주 1회 (유지)
변경 리드타임 중앙값 3.1일 → 2.4일
변경 실패율 14% → 9%
배포 재작업률 11% → 6%
───────────────────────────────
PR 발견 비율 48% → 63% ← 기준 스킬 배포(7월)
기준 커버리지(compute) 71% → 94%
판정자 거짓 PASS 4.1% → 2.3% ← 루브릭 rev4인과를 과장하지 않는 것이 중요하다. 재작업률이 떨어진 것이 기준 스킬 때문이라고 단정하지 않고 시점을 나란히 보여준다. 모듈 18a 레슨 13에서 "배속 주장"을 계산으로 검증했던 태도가 자기 보고에도 적용된다.
대시보드 설계 원칙
| 원칙 | 구체적으로 |
|---|---|
| 모든 숫자에 정의 링크 | 플래키 비율의 정의가 바뀌면 추세가 끊긴다. 정의 버전과 변경일을 표시 |
| 숫자에서 레코드로 | 클릭하면 해당 기준·판정 레코드·결함으로 내려간다 |
| 목표선보다 추세와 분포 | 목표선을 그으면 목표를 맞추는 방향으로 행동이 바뀐다(굿하트의 법칙) |
| 짝 지표 | 하나를 올리면 다른 하나가 망가지는 짝을 나란히 둔다 |
| 독자별 화면 | QA 운영 화면과 경영 보고 화면을 나눈다 |
짝 지표 예를 보자.
| 올리고 싶은 지표 | 함께 봐야 할 짝 | 망가지는 방식 |
|---|---|---|
| 플래키 비율 낮추기 | 격리 목록 크기·만료 초과 | 테스트를 격리해서 비율만 낮춘다 |
| 게이트 리드타임 줄이기 | 거짓 PASS·탈출 결함 | 검토를 건너뛴다 |
| 기준 커버리지 올리기 | 탈출 결함 중 기준 없음 비율 | 쉬운 기준만 늘린다 |
| PR 발견 비율 올리기 | PR 검증 시간 | PR 층이 무거워진다 |
Jira 대시보드(모듈 22 레슨 8)로 결함 흐름 화면을, 판정 레코드를 저장소에 적재한 뒤 Grafana 같은 도구로 신호 품질·범위 화면을 만드는 조합이 흔하다. 도구보다 레코드 형식이 먼저 다. 레코드가 정리되어 있으면 어떤 도구로도 그릴 수 있다.
실무에서 왜 필요한가
채용 공고의 "지표를 통해 지속적으로 개선합니다"와 우대사항의 "테스트 품질 지표(Flaky rate·커버리지·결함 추세) 운영 및 대시보드 구축 경험"은 같은 것을 가리킨다. 대시보드를 만들어 본 경험보다 지표를 보고 무엇을 바꿨는가 가 평가된다.
지표가 없는 파이프라인 개선은 목소리 큰 사람의 체감으로 움직인다. "요즘 플래키가 너무 많다"는 체감은 격리 목록을 늘리는 결정으로 끝나기 쉽고, 그 사이 간헐 제품 결함이 격리 목록에 들어간다. "플래키로 분류됐다가 제품 결함으로 판명된 수가 두 달 연속 2건"이라는 숫자는 격리 절차 자체를 고치게 만든다.