A Tale of Testing

Posted On: 2020-07-13

By Mark

Last week, I hit something of a milestone for my project: I was finally able to have a tester (other than myself) try out the game. In light of that, I thought I'd try something a bit different for today's post. I hope you enjoy!

At first, everything seemed normal. The game ran smoothly, giving the tester access to the title page, and she quickly began browsing the menus controlling the game's settings. As I watched the tester review her controls, I suddenly felt myself inhale - and I became aware I'd been holding my breath. This was the first time that anyone (other than myself) had run my code. Even though I'd been through this title screen hundreds of times over the past year, I knew that introducing a new user, using her own machine, could break the system in unimaginable ways. In programming, the idea "it works on my machine" is understood to be the bare minimum - a starting point before all the issues that only others' machines can discover.

As the tester picked her save slot, I began to relax - once the save slot loads, I could expect over an hour of gameplay to spectate. There was no question that there would be bugs throughout that time, but, once gameplay starts, the probability of encountering unrecoverable bugs would dramatically decrease. What's more, my tester was a veteran: even in the face of game crashes, I had confidence she would merrily document it, and start up all over, ready to test something else. So long as we could just get to the gameplay, I knew the testing session would go great.

As we both watched the menu vanish, cuing the game proper to start, I started to sense something was off. Slowly, dread crept in, as we both waited, ever longer. It was only a couple seconds, but by then I knew something was very wrong - loading a save slot never took even a quarter of a second - yet here we were, waiting more than a dozen times that. When I opened my mouth to speak, the tester joined in, and we unanimously agreed: it was broken, and she could do nothing more until I fixed it.

Turning back to my machine, I fired up the editor and gutted my save files. I had a hunch of what could be going wrong, and, if I could replicate her issue in-editor, I was sure I could get it fixed in short order. As I prepared to blow away all my configuration data as well, I paused - caught in a moment of doubt: what if I couldn't fix it? What if some cryptic, one-in-a-million configuration setting was the only thing allowing the past year of work to operate on my machine? Hedging against that, I instead renamed the configurations' folder. It was a quick and dirty way to backup files, but, knowing my own code, it should work fine.

After a moment of testing, the editor confirmed my hunch: a simple missing folder bug. It was a familiar problem - one I was sure I'd fixed for this exact folder before - but, when I looked at the code, the fix was clearly missing. Preferring to resolve it now and muse about it later, I promptly added the requisite code, rushed through a minimal test, and popped out a new build.

After passing the build to my (eagerly awaiting) tester, I watched, with a new sense of ease, as she started the game up again. We'd squared off against the worst possible outcome, and I'd found and resolved it in less than an hour. A twinge of nervousness still haunted me, as I imagined facing several more such issues, but, my swift success left me with confidence that, even one or two more would be manageable.

To my delight, loading the save immediately triggered the screen fade, and - within moments - there she was, finally playing my game! As she read through the intro, I caught a smile cross her face, and I knew, without a doubt, this was going to be good. Whatever bugs she found, whatever issues may slow her down, she was already having fun - and that was more than I had even dared hope.