테스트 용어집

테스트 분야의 개념 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). 테스트가 처음에 빨간불인 것을 봤으므로 그 테스트가 무는 것도 함께 확인된다

다른 분류