나온 것
자동화 결함이 아닌 것이 처음 나왔습니다. 그리고 그건 자랑이 아닙니다.
밤새 300번 돌린 결과입니다. 잡힌 것은 대부분 «자동화 자신의 결함»이었는데 — 하나가 그걸로 설명이 안 됐습니다. 그리고 그건 자랑이 아닙니다.
대부분은 자동화 탓이었고, 그건 정상입니다
이 루프는 이미 다 통과하는 걸로 확인된 검사만 돌립니다. 그래서 실패가 나면 자동화 탓이라는 전제로 굴립니다.
실제로 300번 도는 동안 잡힌 것 대부분이 그랬습니다. 제가 만든 쪽 문제였습니다.
전제대로 나온 것이니 정상입니다.
그런데 하나가 그 전제로 설명이 안 됐습니다
300번 중 147번, 거의 절반에서 같은 경고가 기록에 찍혔습니다.
내용은 이랬습니다 — 「그래픽 설정 하나가 설정 파일에 분명히 적혀 있는데 적용되지 않는다.」
이건 제 자동화가 만든 게 아닙니다. 게임이 스스로 낸 경고입니다.
원인을 찾아보니 이랬습니다. 그 값은 애초에 설정 파일로 바꿀 수 있는 종류가 아니었습니다. 설정 파일에 적혀 있으니 바꿀 수 있는 것처럼 보이는데, 실제로는 다른 데서 정해지는 값이었습니다.
즉 설정 파일이 「할 수 있다」고 말하는데 실제로는 못 하는 상태였습니다.
그리고 이건 자랑이 아닙니다
여기가 이 글에서 제일 중요한 대목입니다.
「자동화가 제품 결함을 잡았다」고 쓰면 멋있어 보입니다. 정직하게 말하면 자동화가 똑똑해서 잡은 게 아닙니다.
무슨 일이 있었냐면 — 147번이나 찍혔기 때문에 제 눈에 띈 것입니다. 한 번 찍혔으면 못 봤습니다.
| 실제 | |
|---|---|
| 자동화가 한 일 | 많이 돌았다 |
| 자동화가 «안» 한 일 | 그 경고를 판정 항목으로 보지 않았다 |
당시 제 판정 목록에는 「반복되는 경고를 센다」가 없었습니다. 그러니까 자동화는 그 경고를 147번 그냥 지나쳤고, 제가 기록을 훑다가 눈에 걸린 것입니다.
우연히 발견한 것을 실력으로 적으면, 다음에 같은 게 안 잡힐 때 왜 안 잡혔는지 모릅니다.
그래서 무엇을 바꿨나
발견 자체보다 이게 실제 성과입니다.
판정 항목을 하나 늘렸습니다 — 「기록에 반복해서 나오는 경고를 센다.」
이제는 147번이 아니라 3번만 찍혀도 걸립니다. 우연에 기대지 않게 됐습니다.
→ 한 번 우연히 걸린 것을 판정 규칙으로 바꿔야, 그게 실제로 잡는 장치가 됩니다. 안 그러면 「그때 운이 좋았다」로 끝납니다.
여기부터는 자세한 기록입니다
300 사이클을 돌리는 동안 잡힌 건 대부분 자동화 자신의 결함이었다. 전제가 그랬으니 정상이다.
그런데 하나가 그 전제로 설명이 안 됐다.
자동화 결함이 아닌 것
300 사이클 중 147회, 절반 가까이에서 같은 경고가 로그에 찍혔다. 그래픽 옵션 하나가 설정 파일에 분명히 적혀 있는데 적용되지 않는다는 내용이었다. 원인은 그 값이 애초에 설정 파일로 바꿀 수 있는 종류의 변수가 아니었던 것.
여기서 조심할 게 있다.
이건 제품 결함으로 확정된 게 아니다. 의도된 동작일 수도 있고, 판정은 만든 사람 몫이다. 확실한 건 하나뿐이다 — 자동화 결함은 아니다.
이 구분이 중요한 이유는 앞의 전제 때문이다. “제품이 다 통과한다”를 깔고 자동화를 고쳐 왔는데, 그 전제로 설명이 안 되는 신호가 처음 나온 것이다. 그렇다고 곧장 “제품 버그를 찾았다”로 건너뛰면, 내가 그동안 자동화에 적용해온 기준을 제품에는 안 적용하는 셈이 된다.
그리고 이건 자랑이 아니다
정직하게 말하면 자동화가 똑똑해서 잡은 게 아니다.
그 경고는 300번 찍히는 동안 계속 거기 있었다. 아무도 안 보고 있었을 뿐이다. 무인 반복이 한 일은 발견이 아니라 누적이다 — 한 번 돌릴 땐 로그 한 줄이라 넘어가고, 300번 돌리니 49%라는 숫자가 되어 눈에 걸렸다.
빈도는 사람이 못 세는 종류의 증거다. 사람이 손으로 열 번 돌리고 그중 다섯 번에서 같은 경고를 봤다면 “가끔 나네” 정도로 남는다. 300번 중 147번이면 그건 다른 종류의 사실이다.
이 루프가 실제로 잘하는 건 새로운 걸 찾는 게 아니라, 이미 보이던 걸 무시할 수 없는 크기로 키우는 것이다.
그래서 무엇을 바꿨나
이 발견 이후로 판정 항목이 하나 늘었다. 로그에 반복되는 경고를 세는 것.
원래는 케이스마다 통과·실패만 봤다. 지금은 런이 끝나면 경고 종류별 빈도표가 같이 나온다. 어떤 경고가 몇 %의 사이클에서 나왔는지.
이게 값을 하는 이유는, 자동화가 판정하지 못하는 것을 사람 앞에 놓기 때문이다. 기계는 “이 경고가 문제인가”를 못 정한다. 그런데 “이 경고가 49%에서 나온다”는 정할 수 있고, 그 숫자를 보면 사람이 판단한다.
전건 PASS인 런에서도 이 표는 나온다. 초록불 뒤에 무엇이 쌓이고 있었는지를 보는 유일한 창이다.