Navigation

8. 검증과 결과 보고

회귀 테스트가 원래 결함을 검출하는지 확인하고 실행 범위를 기록합니다. 실패, 재시도 통과, 미실행과 커버리지의 측정 경계를 보존합니다.

8.1 회귀 테스트가 원래 결함을 검출하는지 확인합니다

수정한 구현에서 통과만 하는 테스트와 결함을 검출하는 테스트를 구분합니다.

버그를 막는 테스트는 원래 결함이 있는 상태에서 그 결함 때문에 실패하고 수정 후 통과하는지 확인합니다. 가져오기 오류, 서버 시작 실패처럼 다른 원인의 실패를 재현 근거로 삼지 않습니다.

이미 수정했다면 격리된 임시 변경이나 별도 환경에서 결함을 재현하고 정상 상태를 복구합니다. 동시 작업을 되돌리거나 사용자의 변경을 지우지 않습니다. 실패를 재현할 수 없으면 확인한 범위와 남은 불확실성을 그대로 보고합니다. 프로젝트와 요청이 정한 테스트 범위를 따르며 이 규칙을 모든 변경의 일괄 TDD 의무로 넓히지 않습니다.

참고: 공식 문서.

호출이 예외를 던지지 않는다는 것만 확인합니다.

src/util/number/format-quantity.test.tsts
import { expect, test } from "vitest";

import { formatQuantity } from "@/util/number/format-quantity";

test("0도 수량으로 처리한다", () => {
	/**
	 * GIVEN
	 * 빈 값으로 오인하면 안 되는 0
	 */
	const value = 0;

	/**
	 * WHEN
	 * 수량의 표시 문자열 계산
	 */
	const label = formatQuantity(value);

	/**
	 * THEN
	 * 오류 발생 여부만 검사
	 */
	expect(() => label).not.toThrow();
});

원래 결함인 0의 빈 값 처리를 구체적인 결과로 검출합니다.

src/util/number/format-quantity.test.tsts
import { expect, test } from "vitest";

import { formatQuantity } from "@/util/number/format-quantity";

test("0도 수량으로 처리한다", () => {
	/**
	 * GIVEN
	 * 빈 값으로 오인하면 안 되는 0
	 */
	const value = 0;

	/**
	 * WHEN
	 * 수량의 표시 문자열 계산
	 */
	const label = formatQuantity(value);

	/**
	 * THEN
	 * 0의 실제 표시 결과
	 */
	expect(label).toBe("0.00");
});

8.2 실행 범위와 실패 상태를 보존해 보고합니다

미실행과 재시도 통과를 성공으로 섞거나 오래된 결과서를 새 근거로 쓰지 않습니다.

실행한 명령, 범위와 환경, 최초 통과, 재시도 통과, 실패, 미실행을 구분합니다. 재시도와 timeout을 늘리는 것만으로 불안정한 원인을 해결했다고 보고하지 않습니다.

결과처리
skip, fixme, 알려진 실패이유와 추적 대상을 남기고 통과 수에 섞지 않습니다
결과서 생성이번 실행의 결과만 사용하고 러너나 준비 단계의 실패 종료 코드를 보존합니다
커버리지측정한 소스와 제외 범위, 수집기와 소스맵을 기록합니다

커버리지 비율은 검증의 충분성을 대신하지 않고 서로 다른 결과의 비율을 더하거나 평균내지 않습니다. 고정된 전역 비율보다 변경한 계약과 중요한 분기의 누락을 먼저 확인합니다. 테스트를 바꾸면 해당 범위와 프로젝트 필수 검사를 실행하고 미실행은 미실행으로 적습니다. 기계 검사가 통과해도 규칙 선택과 예제의 의미가 맞는지는 별도로 대조합니다.

참고: 공식 문서.

재시도 통과와 미실행을 포함해 전체 성공으로 적습니다.

전체 12개 성공
커버리지 90%
완료

실행 상태와 검증 범위를 구분해 남깁니다.

실행: npm run test:integration
환경: Chromium, API mock
결과: 최초 통과 9, 재시도 통과 1, 실패 1, skip 1
보류: skip의 이슈와 재시도 통과의 원인 추적
커버리지: 이번 실행에서 미측정
범위: 브라우저 통합만 실행, 실제 서버 연동은 미실행
결과서: 이번 실행의 결과 파일로 생성, 실패 종료 코드 유지