코드를 못 읽어도 시험은 한다
앞 절의 30명 동시 신청을 저희는 프로그램으로 했습니다. 바이브 코딩만 쓰는 독자도 같은 시험을 할 수 있습니다. 시험하는 화면을 만들게 하면 됩니다. 미리보기 주소 끝에 /test를 붙이면 열리는 시험용 화면입니다. 이렇게 보냅니다.
내가 코드를 못 읽어도 확인할 수 있게 /test 화면을 만들어 줘. [30명 동시에 신청하기] 단추를 누르면 30개의 신청을 한꺼번에 보내고, 받아 준 수와 거절된 수, 지금 명단 수를 보여 줘.
무엇을 누르면 무엇이 보여야 하는지만 정했습니다. 저희가 보냈을 때는 26초 만에 답이 왔습니다.
/test 화면을 만들었어요. [30명 동시에 신청하기] 단추를 누르면 30명이 동시에 신청하고, 받아 준 수와 거절된 수, 지금 명단 수와 정원 지킴 여부를 보여 줘요. 테스트 신청도 실제 명단에 들어가니 끝난 뒤 메인 페이지에서 명단을 확인해 보세요.
[코드]에는 static/test.html이 하나 늘었습니다.
1. 눌러 보기
미리보기 위쪽 주소 칸의 /를 /test로 바꿔 엽니다.

[30명 동시에 신청하기]를 누릅니다. 저희가 같은 코드를 저희 컴퓨터에서 빈 명단으로 띄워 눌렀을 때는 이렇게 나왔습니다.

결과는 이렇게 읽습니다.
- 받아 준 수와 거절된 수를 더하면 30이다.
- 받아 준 수는 누르기 전의 남은 자리와 같다. 명단이 비어 있었으면 10, 내가 한 명 신청해 두었으면 9다.
- 지금 명단 수가 정원을 넘지 않는다.
판정 줄은 이 가운데 마지막 것만 봅니다. 명단 수가 정원 이하이면 "정원을 지켰어요"가 나옵니다. 서버가 신청을 하나도 받지 않아도 판정은 같은 말을 합니다. 그래서 받아 준 수까지 함께 봅니다.
시험 신청은 진짜 명단에 들어갑니다. 화면에도 "테스트 신청은 실제 명단에 추가돼요."라고 적혀 있습니다. 한 번 누르면 미리보기 명단이 '테스트1', '테스트2' 같은 이름으로 정원까지 찹니다. 3장 1절에서 넣은 내 신청은 그대로 남습니다. 그래서 바로 한 번 더 누르면 받아 준 수 0, 거절된 수 30이 맞는 결과입니다.
미리보기 명단은 이대로 두고 넘어가도 됩니다. 미리보기에는 주최자 키를 넣을 칸이 없어서(5장 2절) 5장에서 만드는 주최자 화면으로도 미리보기 명단은 지우지 못합니다. 배포한 앱은 빈 명단에서 시작합니다(6장 1절).
지금 명단 수가 정원을 넘고 판정이 "정원을 넘었어요"로 나오면, 본 숫자를 넣어 이렇게 보냅니다.
30명이 동시에 [신청하기]를 누르는 시험을 했더니 정원 10명인데 30명이 모두 들어갔어. 동시에 눌러도 10명까지만 받고 나머지는 '정원이 찼어요'를 받게 고쳐 줘.
"30명이 모두" 자리에는 내가 본 명단 수를 씁니다.
고친 뒤 다시 시험할 때는 걸리는 것이 있습니다. 명단이 이미 정원을 넘어 있어서, 눌러도 받아 준 수 0과 판정 "정원을 넘었어요"가 나옵니다. 이것으로는 고쳐졌는지 가릴 수 없습니다. 저희는 고친 코드를 저희 컴퓨터에서 빈 명단으로 띄워 다시 시험했습니다. 바이브 코딩에서는 크레딧을 쓰지 않고 정원 숫자를 잠시 직접 바꾸는 길이 있습니다. 저희가 미리보기에서 해 본 길은 아니어서 결과는 여러분 화면으로 확인합니다.
- [코드]에서
main.py를 엽니다. 저희 코드에서는 위쪽에CAPACITY = 10이라는 줄이 있었습니다. 이 10이 서버가 지키는 정원입니다. 10을40으로 바꿉니다. 손을 잠깐 멈추면 저장되고, Ctrl+S를 누르면 바로 저장됩니다. 서버가 있는 앱의 미리보기는 저장하면 다시 켜집니다.- /test를 열어 [30명 동시에 신청하기]를 누릅니다. 받아 준 수가 40에서 누르기 전 명단 수를 뺀 수를 넘지 않고, 지금 명단 수가 40을 넘지 않는지 봅니다.
40을 다시10으로 돌려놓습니다.
2. "정확히 10명만"은 시험 결과가 아니다
고급 모델 판에서 동시 신청을 고쳐 달라고 했을 때 AI는 이렇게 답했습니다.
동시에 여러 명이 신청 버튼을 눌러도 서버가 요청을 하나씩 순서대로 처리하도록 바꿔서, 정원 10명이 지나면 바로 '정원이 찼어요' 응답을 받도록 고쳤어요. 이제 30명이 동시에 눌러도 정확히 10명만 들어가고 나머지는 거절돼요.
이 답을 만드는 동안 아무도 30명을 동시에 보내 보지 않았습니다. 바이브 코딩은 코드를 만들기만 하고, 실행해서 확인하지는 않습니다. "정확히 10명만"은 고친 쪽의 예상입니다. 저희가 그 코드를 30명 동시로 다섯 번 돌려 보고 나서야 다섯 번 모두 10명 저장, 20명 거절이 확인되었습니다.
이번에는 예상이 맞았습니다. 그보다 앞서 서버로 옮겼을 때 같은 AI는 "직접 요청을 보내도 11번째 신청은 거절되고"라고 했습니다. 그 말도 하나씩 보낼 때는 맞았습니다. 동시에 보내자 30명이 들어갔습니다.
AI가 "됐어요"라고 하면 그 말은 시험할 목록으로 받습니다.
3. 시험을 시키는 길
이 절에서는 시험하는 화면을 만들게 하고 내가 눌렀습니다. 바이브 코딩만으로 됩니다.
AI가 직접 시험을 만들어 돌리게 하는 길도 있습니다. 그러려면 내 컴퓨터에서 명령을 실행할 수 있는 AI 도구가 필요합니다. Claude Desktop의 Code 탭이나 Claude Code 같은 도구이고, 유료 구독이 있어야 씁니다. 이 책을 따라가는 데는 필요 없고, 구독이 있다면 이런 길도 있다는 정도입니다. 바이브 코딩의 [코드]에서 파일을 내려받아 그 도구로 폴더를 열고 이렇게 말합니다.
이 신청 서버에서 정원 10명이 지켜지는지 시험을 만들어 돌려 줘. 30명이 동시에 신청하는 경우를 꼭 넣어 줘. 고치지는 말고, 시험한 것, 통과, 실패, 시험 못 한 것 네 칸으로 보고해 줘.
보고를 네 칸으로 받는 이유는 『필수 지식』의 통과 보고는 네 칸으로 받습니다에 있습니다. 이 장의 시험을 네 칸에 넣으면 이렇습니다.
| 칸 | 내용 |
|---|---|
| 시험한 것 | 신청 30개를 한꺼번에 보내기. 미리보기 서버에 프로그램으로, 저희 컴퓨터에 띄운 서버에 /test 단추와 프로그램으로 |
| 통과 | 기본 모델 판: 받아 준 수 10, 거절된 수 20, 명단 10. 고급 모델 판(고친 뒤): 다섯 번 모두 10명 저장, 20명 거절 |
| 실패 | 고급 모델 판(고치기 전): 세 번 해서 30명, 30명, 29명 저장 |
| 시험 못 한 것 | 실제 휴대폰 30대에서 사람이 누르기. 배포한 주소에서 시험하기 |
오래 볼 칸은 마지막 칸입니다. 저희가 보낸 30개는 모두 한 컴퓨터에서 나갔습니다. 실제 신청은 서른 사람의 휴대폰에서 각자의 인터넷으로 들어옵니다. 저희는 그것을 시험하지 못했습니다. 6장에서 친구와 각자 휴대폰으로 신청해 보는 것이 이 칸의 '서로 다른 휴대폰' 부분을 조금 채웁니다. 30명이 동시에 누르는 경우는 시험하지 못한 채로 남습니다.
/test의 [30명 동시에 신청하기]는 진짜 명단에 신청 30개를 넣는 단추입니다. 배포한 앱에 남아 있으면 주소를 아는 누구나 눌러 명단을 채울 수 있습니다. 배포하기 전에 뺍니다(6장 1절).
마지막 수정