테스트 용어집
테스트 분야의 개념 25개를 한 장에 모았습니다. 단위 테스트 · 등급 척도 · 목 · 스텁 등 — 코드베이스에서 뽑아 뜻과 관계를 정리했습니다.
- 단위 테스트 (unit test)
- 함수나 클래스 하나(또는 하나의 동작)를 떼어 내 입력과 출력만 본다. 밀리초 단위로 돌아 가장 많이 쓴다. 이 레포의 도메인 테스트는 목 없이 순수 단위 테스트로 쓴다
- 등급 척도
- 0–3 등급으로 매긴다. 이진 척도와 교차 확인한다
- 목 (mock, mock object)
- 호출됐는지 · 몇 번 · 어떤 인자로 불렸는지를 기록해 검증하는 대역. 상태가 아니라 상호작용을 확인한다
- 스텁 (stub)
- 호출하면 미리 정해 둔 값을 돌려주거나 예외를 던지는 대역. 대상 코드를 원하는 분기로 보내는 데 쓰고, 호출 여부는 확인하지 않는다
- 오프폴리시 평가 (counterfactual evaluation, OPE)
- 로그를 남긴 정책과 다른 정책을 냈으면 지표가 얼마였을지 성향 역수 가중(IPS · SNIPS)으로 추정한다. 배포 없이 새 랭커를 온라인 지표로 잰다
- 온라인 평가
- 실제 트래픽으로 두 시스템을 비교한다. 오프라인 → 섀도 → 인터리빙 · A/B → 점진적 롤아웃 순으로 위험을 줄인다
- 위치 편향 (position bias)
- 위에 있는 결과가 맞아서가 아니라 위에 있어서 눌린다. 클릭을 라벨이나 보상으로 쓰려면 노출 성향으로 나눠야 한다
- 인터리빙
- 두 시스템의 결과를 섞어 보여주고 클릭으로 가른다. A/B 보다 10~100 배 적은 트래픽으로 판정한다
- 재현율 · 정밀도 (recall, precision)
- 찾아야 할 것 중 찾은 비율과 찾은 것 중 맞는 비율. 둘은 맞바꾸는 관계라 한쪽만 보면 속는다
- 커버리지
- 결과 중 판정된 비율. 낮으면 비교가 거짓이다
- 쿼리 단위 교차검증
- 쿼리 단위로 fold 를 나누는 교차검증. 같은 쿼리의 문서가 학습·검증에 갈라지면 점수가 새어 과대평가된다
- 테스트 커버리지 (code coverage, line coverage, statement coverage)
- 테스트가 실행한 코드 줄의 비율. 실행했다는 뜻이지 결과를 확인했다는 뜻은 아니어서, 높아도 단언이 없으면 결함을 못 잡는다
- 통합 테스트 (integration test)
- 실제 DB · 브로커 같은 의존과 함께 여러 컴포넌트를 돌려 경계에서의 동작을 본다. 직렬화 · 쿼리 · 잠금처럼 목으로는 잴 수 없는 것을 잡는다
- 팀 드래프트 인터리빙 (team draft)
- 두 랭커가 번갈아 상위 문서를 뽑아 한 목록으로 섞고, 클릭이 어느 팀 문서에 갔는지로 승자를 가른다. A/B 보다 적은 트래픽으로 판정한다
- 판정 세트 (judgment list, qrels)
- 쿼리마다 어떤 문서가 얼마나 맞는지 적은 정답지
- 판정 세트 구축
- 쿼리마다 후보를 모아 사람이 등급을 매겨 판정 세트를 만든다. 풀링으로 후보를 모으고 커버리지로 빈틈을 잰다. 판정 세트는 그것을 만든 시스템에만 공정하다
- 평가 · 로그
- 오프라인은 판정 세트가, 온라인은 트래픽이 필요하다. 어느 한쪽만 보면 각각의 맹점에 빠진다
- 평가 체계
- 판정 세트로 순위를 채점하고 회귀를 막는다 — nDCG · 재현율을 트래픽 없이 잰다. 빠르게 반복하는 대리 지표이고, 확정은 온라인이 한다
- 풀링
- 여러 시스템의 상위를 모아 판정한다. 만든 시스템에만 공정한 편향을 줄인다. 후보 시스템을 추가하면 풀링부터 다시 한다
- 픽스처 (test fixture, 테스트 데이터)
- 테스트가 시작하기 전에 갖춰 두는 사전 조건 — 객체 · 데이터 행 · 설정. 여러 테스트가 같은 준비를 공유하도록 함수나 객체로 모은다
- A/B 테스트 (A/B test, controlled experiment)
- 사용자를 무작위로 나눠 두 시스템에 보내고 지표를 비교한다. 비즈니스 지표를 직접 재는 유일한 방법이지만 트래픽과 기간이 든다
- BDD (Behavior-Driven Development, 행동 주도 개발)
- 테스트를 구현 단위가 아니라 행동 명세로 적는다. 주어진 상황 · 행동 · 기대 결과를 사람이 읽는 문장으로 쓰고, 그 문장이 곧 테스트 이름이 된다
- E2E 테스트 (end-to-end test, 종단 간 테스트)
- 사용자가 하는 조작을 처음부터 끝까지 실제 화면 · 서버로 재현한다. 가장 많이 잡지만 느리고 불안정해서 핵심 시나리오에만 쓴다
- nDCG (Normalized Discounted Cumulative Gain, nDCG@10)
- 순위 위치를 할인해 더한 이득(DCG)을 이상적 순위의 값(IDCG)으로 나눈 값. 등급이 여러 단계일 때의 기본 지표다
- TDD (Test-Driven Development, 테스트 주도 개발, Red-Green-Refactor)
- 실패하는 테스트를 먼저 쓰고(Red), 그것을 통과시킬 만큼만 구현하고(Green), 동작을 지킨 채 정리한다(Refactor). 테스트가 처음에 빨간불인 것을 봤으므로 그 테스트가 무는 것도 함께 확인된다
다른 분류