Testing like in video games

I have just read James Whittaker’s Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design. As the title says, a big part of the book talks about exploratory testing techniques and heuristics. It is based on the tourist metaphor: when you want to discover a new city, there are several approaches depending on what is your final target. It’s the same with testing and of course those touring flavours are complementary. Funny fact, when I design my first exploratory testing workshop, I introduced it with a tourism metaphor too, which means that my understanding of the subject was not too bad :).

The book addresses several other topics, one of them being the Microsoft development and testing culture, as Whittaker was a test manager for several years in that company. And he talked about the way he saw the future of testing, or better said how he hoped it would be.

Luckily, he did not talked about buzzy current topics like the end of testers or IA against testers (OK, the book was written ten years ago), although he said that the role of the tester will change in the future — it is already and always changing! But for me, one of his richer idea was about how to enhance interfaces for testing purposes. His model was how video games work, as he has also been part of X-Box projects.

When a player walks through a RPG or FPS or strategy game, she often has access to a map, hers enemies level, an arrow at the top showing her next target, informations displayed about her magic, bullets or life values during battles, and so on. This is not realistic, except if you have Tony Stark’s helmet, but it helps your progression and your exploration. That is called a HUD: head up display. In software and web testing, the more information testers and developers have, the more they can take good decisions about the state of the product. Logs, warnings, console pushes, time for responses, the more the better. But Whittaker says that all should be displayed directly on the screen, you should not have to search for it. He even imagines that when you hover a displayed element, all code related could appear in a box to analyse defects in real time (sci-fi? Maybe.)

Another useful tool video games’ testers have is cheat codes. For example, when they have to test something random, they can make it appear now, because they have to test how the player interacts with that Boss or NPC (non playable character). Or they can directly validate a quest to test the next step of the scenario. Well, software testers also need cheat codes. If they need to test an account, they have to be logged in with one single command or URL or API request. Same for A/B tests, they should not go to cookies settings each time they open a new browser. If they have to test an historic of orders, they need a single command line which will create all the data needed (I know, that is usually called fixtures). And so on.

Whittaker calls that the THUD: testing head up display. It is also known as part of testability, which is all the means to make testing easier and more focused — you remove all the waste related to setting context and painful repetitive tasks. It is not because you take customers shoes that you cannot take shortcuts to reach your goals — find customers issues. Whittaker goes very far in that logic and he is very inspiring.

Concretely, all this is a reminder that when you test specs (in groomings, backlog refinements, etc), when you ask “how will we test that?” (you always do right?), a discussion about testability should occur, and if needed, helpers should be taken into account during development and in estimations. In the same logic, if there is something painful in testing and it is recurring, then technical tasks have to be prioritised to implement ways to help future testing. Product managers may think this is not user centric, but it will add a lot of value by shorten the feedback loop. Isn’t it what we all want?

And you, did you ever had crazy or genial ideas about ways to improve testability? What is preventing you to propose it to your team?