# 테스트 기법 26종 실험 — 지시 없는 쪽이 더 나았다

> 코딩 에이전트에게 TDD·퍼징·형식 검증을 시켜 Zstd를 구현시킨 실험입니다. 조건마다 160회씩 돌린 결과와, 에이전트가 실제로 무엇을 했는지 정리했습니다.

- 출처 사이트: AI피셜 (https://aifficial.net/posts/agent-test-technique-eval-26/)
- 발행: 2026-09-08
- 카테고리: 활용·도구 · 태그: 코딩 에이전트, 평가, 형식 검증, 벤치마크, 활용

## 핵심 답변

댄 루는 코딩 에이전트에 26가지 테스트 기법과 4가지 스킬을 지시해 Rust로 Zstd를 구현시키고 조건마다 160회씩 돌렸습니다. 아무 지시도 주지 않은 기본 조건이 평균을 크게 웃돌았고, 기법 이름을 알려 주는 것만으로는 에이전트가 그 기법을 제대로 쓰지 못했습니다.

## 요약

- 조건은 26개(TDD, 퍼징, 속성 기반 테스트, QuickCheck, Lean 4, TLA+, Verus, Kani 등)와 스킬 4개, 모델은 codex의 GPT-5.6 Sol, 노력 수준 medium·xhigh 각 80회씩 총 160회입니다.
- 지표는 숨겨진 테스트를 100% 통과한 실행의 비율입니다. 압도적으로 앞선 조건은 없었고, 지시 없는 기본 조건이 평균 이상이었습니다.
- 퍼징 조건에서 구조적 무작위 입력을 실제로 만든 실행은 160회 중 10회였고, 그중 절반이 진짜 버그를 찾았습니다.
- 가장 인기 있는 테스트 스킬은 정확도를 올리지 못한 채 비용만 medium 26%, xhigh 41% 늘렸습니다.

## 핵심 사실

| 항목 | 값 |
|---|---|
| 실험 | Rust로 Zstd 구현 (IMAP RFC 구현 평가도 함께 진행) |
| 조건 수 | 26개 + 스킬 4개 |
| 실행 수 | 조건당 160회 (medium·xhigh 각 80회) |
| 모델 | codex + GPT-5.6 Sol |
| 지표 | 숨겨진 테스트 100% 통과 비율 |
| 가장 나은 조건 | 직접 쓴 간단한 스킬·proptest·속성 기반 테스트 (xhigh 기준) |


## 무슨 일인가요

댄 루가 코딩 에이전트에게 Rust로 Zstd를 구현하게 하면서 프롬프트 끝에 "테스트 주도 개발을 쓰세요", "Lean 4를 쓰세요", "QuickCheck을 쓰세요" 같은 한 줄을 붙였습니다. 조건은 26개, 여기에 스킬 4개를 더했고, 모델은 codex의 GPT-5.6 Sol입니다. 노력 수준 medium과 xhigh에서 각각 80회씩, 조건마다 160회를 돌렸습니다. 지표는 숨겨진 테스트를 100% 통과한 실행의 비율입니다. 

결과부터 말하면 압도적으로 앞선 조건이 없었고, 아무 지시도 없는 기본 조건이 평균을 뚜렷하게 웃돌았습니다.  xhigh 에서는 퍼징·속성 기반 테스트 계열이 형식 검증 계열보다 평균적으로 조금 나았고, medium 에서는 순위가 더 뒤섞였습니다. 



## 에이전트는 실제로 무엇을 했나요

| 조건 | 160회 중 실제로 벌어진 일 |
| --- | --- |
| 퍼징 | 구조적 무작위 입력을 만든 실행 10회, 그중 절반이 진짜 버그를 찾음 |
| QuickCheck | 63회는 속성을 딱 하나만 검사 |
| 차등 테스트 | 135회가 "차등 테스트라 부를 만한 것"을 했지만 두 구현을 만든 실행은 0회 |
| Verus | 테스트를 쓴 실행 89회로 기본 조건과 동일, 대신 나쁜 테스트가 더 많음 |
| TDD | 구현 전에 실패하는 테스트를 둔 실행 67회 (기본 조건은 0회) |

TDD 조건은 형식만 보면 제대로 지켜졌습니다. 실질 구현 전에 실패하는 테스트를 만든 실행이 160회 중 67회로, 기본 조건의 0회와 대비됩니다. 그런데도 정확도는 떨어졌습니다.  차등 테스트 조건은 전체에서 세 번째로 나쁜 성적이었는데, 두 구현을 만들어 서로 대조한 실행이 하나도 없었습니다.  저자의 표현대로 에이전트는 평소 쓰던 테스트를 다른 기법의 껍데기 안에 넣거나, 기법을 표면만 흉내 내는 쪽으로 갔습니다. 



## 스킬은 도움이 됐나요

에이전트에게 관련 스킬을 찾아보라고 해서 상위에 나온 스킬들을 붙여 봤는데, 정확도는 나아지지 않고 비용만 늘었습니다. 가장 큰 스킬은 본문 34,000자에 Rust 참고 문서 45,000자가 딸려 2만 토큰을 넘겼고, 실행 시작 때 로드된 뒤 이후 동작마다 다시 읽혔습니다.  반면 저자가 2분 만에 쓴 짧은 스킬은 기본 동작에서 벗어나도록 밀어 주는 방식이었고 가장 좋은 축에 들었습니다. 



스킬은 붙여 놓아도 항상 쓰이지 않습니다. 한 스킬은 160회 중 157회 사용됐지만, 다른 스킬은 실제로 문서를 열어 읽은 실행이 108회에 그쳤습니다. 

## 무엇을 보면 되나요



같이 돌린 IMAP RFC 구현 평가에서는 완벽 점수를 낸 실행이 딱 하나뿐이었습니다. 


이 실험에서 가장 실용적인 대목은 순위표가 아니라 "왜 안 됐는가"입니다. 에이전트는 위험한 부분을 지목하는 데는 제법 능했는데, 지목한 곳을 실제로 검사하는 테스트를 만들지는 못했습니다. 이건 프롬프트로 메우기 어려운 종류의 공백이고, 저자 말대로 테스트를 잘하도록 훈련하는 RL 환경이 아직 안 만들어졌다는 신호로 읽힙니다. 지금 할 수 있는 대응은 검증 구조를 사람이 소유하는 것뿐입니다. 



## 자주 묻는 질문

**Q. 그럼 테스트 지시를 아예 하지 말라는 뜻인가요?**

기법 이름만 던지는 지시가 도움이 안 됐다는 뜻입니다. 저자는 테스트와 분류 구조를 사람이 먼저 잡아 주고 에이전트가 거기에 덧붙이게 하면 감독 없이도 그럭저럭 굴러간다고 적었습니다. 짧게 쓴 자기 스킬이 가장 좋은 축이었던 것도 같은 맥락입니다.

**Q. 형식 검증은 왜 성적이 나빴나요?**

에이전트가 도구는 켜지만 관련 없는 성질을 증명하는 데 그쳤기 때문입니다. Verus 조건에서 테스트를 쓴 실행은 160회 중 89회로 기본 조건과 같았는데, 내용은 틀린 결과를 테스트에 박아 넣거나 통과하기 쉬운 테스트를 만드는 쪽이 더 많았습니다.

**Q. 스킬을 붙이면 왜 비용이 오르나요?**

검증한 스킬은 본문 34,000자에 Rust 참고 문서 45,000자가 딸려 2만 토큰을 넘겼습니다. 실행 시작 때 로드되고 이후 여러 동작마다 다시 읽히면서 비용이 medium 26%, xhigh 41% 늘었습니다.

## 출처

1. [How well do agents use test/verification techniques? (Dan Luu)](https://danluu.com/agentic-testing/) (data)
2. [앞선 실험 — 언어별 에이전트 코딩 효과 비교 (Dan Luu)](https://danluu.com/pl-tokens/) (data)

_이 문서는 AI피셜 편집부가 작성했습니다. 인용 시 출처를 표기해 주세요._