# 검증

> 통과가 무엇을 뜻하는지 한 문장으로 말할 수 없으면 그 테스트는 아직 검증이 아닙니다.

- 수치: 조건 2
- 상태: wip
- 사람이 보는 화면: https://aitryed.com/ko/built/moon-studio/future-2/qa/
- 반대 언어: https://aitryed.com/en/built/moon-studio/future-2/qa/index.md
- ⚠ 정본은 여기가 아니다: https://aitryed.com/ko/built/moon-studio/future-1/qa/
- 이 사이트 안내(AI용): https://aitryed.com/ko/llms.txt

---

**빈 칸입니다. 여기 적힌 건 「이 칸이 채워졌다고 말하려면 무엇이 있어야 하는가」뿐입니다.**

## 조건 — 「통과가 무엇을 뜻하는지 한 문장으로」

이 칸의 합격 조건입니다.

> **테스트가 통과했을 때 그게 무엇을 뜻하는지 한 문장으로 말할 수 없으면, 그건 아직 검증이 아닙니다.**

「테스트 100개 통과」는 좋아 보이는데, **그래서 뭐가 보증되는지** 말할 수 없으면 아무 의미가 없습니다.

## 넘어오는 것 하나 — 「0이 두 가지를 뜻하면 안 됩니다」

값을 치르고 배운 것입니다.

결과가 **0**으로 나왔다고 해 봅시다. 두 가지일 수 있습니다.

| 실제 | 화면 |
|---|---|
| **검사했는데 문제가 없음** | **0** |
| **검사 자체가 안 돎** | **0** |

**둘이 똑같이 보입니다.** 그리고 **좋은 소식처럼 보입니다.**

이게 제일 위험한 종류의 착각입니다. **고장 났는데 합격으로 읽힙니다.**

그래서 갈라야 합니다.

- 검사했고 문제 없음 → **「0건 (검사 12개 실행)」**
- 검사가 안 돎 → **「실행 안 됨」** — 0이 아님

> **「없음」과 「안 셌음」은 다른 값이어야 합니다.**

## 넘어오는 것 둘 — 「오류 없이 통과」는 「제대로 동작함」이 아닙니다

두 번째로 배운 것입니다.

프로그램을 만들면 **오류 없이 빌드되는 것**과 **실제로 켜서 제대로 도는 것**은 다릅니다.

| | 무엇을 보증하나 |
|---|---|
| **오류 없이 통과** | **문법이 맞음** |
| **켜서 돌려 봄** | **의도대로 동작함** |

앞엣것을 뒤엣것으로 착각하는 일이 자주 생깁니다. 특히 **오류가 안 나면 다 된 것 같은 기분**이 들어서요.

그런데 오류 없이 **아무 일도 안 하는 코드**를 쓰는 건 아주 쉽습니다.

> **정적으로 통과했다는 건 「깨지지 않았다」이지 「동작한다」가 아닙니다.**

## 다시 정해야 하는 것 — 「무엇이 결함인가」

이건 **게임마다 답이 다릅니다.**

같은 현상이 **어떤 게임에서는 버그고 어떤 게임에서는 기능**입니다.

| 현상 | 이 게임에서는 |
|---|---|
| 캐릭터가 벽을 통과함 | 보통은 버그 / **벽 통과가 기술인 게임에서는 기능** |
| 적이 갑자기 멈춤 | 보통은 버그 / **경직 연출이면 기능** |
| 화면이 잠깐 멈춤 | 보통은 버그 / **타격감 연출이면 기능** |

그래서 **「무엇이 결함인가」를 먼저 정하지 않으면**, 테스트가 **정상 동작을 버그로 신고**하거나 **진짜 버그를 정상으로** 넘깁니다.

그리고 이건 **기획이 정해야** 하는 것이지 테스트가 정할 게 아닙니다.

## 여기부터는 자세한 기록입니다

> ⚠ **이 글은 [미래 게임 1의 QA](/ko/built/moon-studio/future-1/qa/index.md)와 같은 글이다.** 두 칸이 아직 다를 근거가 없어서 지어낸 차이를 적지 않았다.

빈 칸이다. 여기 적힌 건 **이 칸이 채워졌다고 말하려면 무엇이 있어야 하는가**뿐이다.

## 넘어오는 것 1 — 0이 두 가지를 뜻하면 안 된다

[무협 게임의 검증](/ko/built/moon-studio/wuxia/qa/index.md)에서 나온 규칙이고, 이 스튜디오에서 본업 파이프라인으로 실제로 넘어간 것이다.

"찾은 게 없다"와 "찾을 데가 없었다"가 같은 0으로 나오면, **그 테스트는 고장을 통과시킨다.** 세는 값과 대상 개수를 따로 내보내고, 대상이 0이면 통과가 아니라 설정 오류로 뜨게 만든다.

## 넘어오는 것 2 — 정적 통과는 작동 증명이 아니다

파일을 읽어 "고쳤다"고 보고하면 안 된다. 화면 결함은 찍어서, 동작 결함은 실제로 돌려서 판정한다. 하네스가 통과했는데 **씬 배선이 비어 있어 실물은 안 돌던 일**이 있었다.

## 다시 정해야 하는 것 — 무엇이 결함인가

무협 게임에서 "전조를 읽을 시간이 없다"는 결함이다. 다른 게임에선 그게 의도일 수 있다. **결함의 정의가 게임마다 바뀌므로, 통과 기준을 먼저 한 문장으로 쓰고 시작한다.**
