I tested 1 vs 100 properly before anyone played it. A script opened a thousand simulated players over real WebSockets, started a question, and had all of them answer in the same instant: the thundering herd, the worst moment a live quiz has.
It held. No dropped connections, the question reached every player in tens of milliseconds, and the reveal came back in under half a second.
At the first real event, it broke anyway. Not under load. Under people.
What the test could not contain
Here is what the script did, in order: connect every player, wait until every one of them has joined, and only then press Start.
That is the one order a real room never follows. In a lecture hall, people are still scanning the QR code when the host decides the room looks full. The game had a rule for anyone who joined after Start: watch, do not play. My thousand bots never triggered it, because not one of them was late. Everyone in the real room after the first 45 or so was, and their phones showed every question and never let them answer. The rule and the fix are their own note.
The test was faithful about load and wrong about time. It measured how many people the server could hold, and assumed they would all arrive at once, on cue, and stay on the page. Real people arrive late, switch tabs and reload. None of that is load, and all of it is what broke.
The first ten minutes
The first people with the problem came to me, and I did not know what it was. I went around to them, reassured them, and opened my laptop next to them to look. Technically, nothing was wrong anywhere I could see. The server was healthy and the game was running.
I told them their answers were being counted. I believed it. They were not, and I did not know that yet.
When more and more people had the same problem, I went outside to deal with it properly, making phone call after phone call to understand what was happening.
Not starting again
After about ten minutes the event coordinator came out to find me and asked what was going on. Her suggestion was to start the entire event again.
I asked her not to. Restarting would have thrown away the game for everyone who was playing fine, to fix it for the people who were not. Instead I asked her to tell the crowd that anyone hit by the bug would go through to the next stage rather than be eliminated.
That kept the event moving and kept the people who had been wronged in the game. Meanwhile I changed the rule and deployed the fix while the event was still running, and the stranded players came back in at the next question.
What a load test is for
A load test answers one question well: can the server take this many people at once. It is worth running, and mine was right.
It cannot answer the question that decided the night: what happens when people do not behave like a script. That needs a different test, one that is written from watching a real room: people joining after the start, leaving the page, coming back. Measuring the wrong thing precisely felt like safety. It was only confidence.