Friday, 13 December 2013

Challenges, Puzzles & Games

It seems to me that one of the most difficult things about preparing training material is finding applications that students can explore; a set of public applications that can help us to teach software testing. These may be applications based on traditional testing exercises, applications written specifically to challenge or puzzle testers, games that highlight a particular aspect of software testing or an application with unintended and interesting behaviours.

Here are some of the things I have found or been pointed towards:

A simple parking calculator hosted by Adam Goucher for testing based on the original from Gerald R Ford Airport. The challenge I was given was to find the maximum dollar figure I could be charged for parking.

The horse lunge game, which is a nice application for state transition modeling.

The Triangle Tester exercise from Elisabeth Hendrickson, with background information that can point you to specific bugs for investigation.

The Black Box Software Testing machines from James Lyndsay has a number of flash games to practice exploratory testing.

A simple Javascript implementation of Escapa, linked from a (now closed) testing challenge to find the shortest and longest game times.

James Bach recommends the White Box exercise and Lye Calculator.

I'm very interested to learn what else is out there, please leave a comment.


  1. Nice post Katrina - useful set of links!

    Paul Carvalho (@can_test) put me onto this via Twitter, not sure if its of interest to you?

    There's also some ideas you might like in here:


  2. In all the @TheTestLab's I've been involved with, we've spent a chunk of time auditioning and choosing open-source software. As a general rule, the more 'real' one makes the system under test, the harder it is to set up and support, but the better it is for teaching.

    At the @TheTestLab at EuroSTAR, Kristoffer Ankarberg, Ru Cindrea, Teemu Vesala, Ruud Cox and Adina Moldovan offered this wide gamut of possible subjects: . They were kind enough to open the lab early, which allowed me to drop some of their subjects into a tutorial. OpenCart was a popular subject there, and I've used FreeMind, OpenEMR, RedMine and more in other events.

    It's great to use tuned and positive exercises in workshops, but I reckon that lessons stick well, and the discussions get deeper, when those exercises are followed up with applied work on real software. Open source gives testing teachers (and learners) an astonishing learning resource.

  3. In the security testing area there are apps like:
    * Dam Vulnerability Web App
    * Web Goat
    Which are applications that are designed to be broken to demonstrate and allow learning to take place on them.

    Has anyone made a real looking app (something with users and items like the student, course, grade DB from DB courses at Uni or Inventory product, details, stock levels type thing?) that has intended bugs in them. And the type bugs that you find in real life.

    Sure the apps linked above are great for demonstrating particular concepts but is there a real looking something that can test on and find bugs?

    I sometimes feel finding defects in real software has the issue that find the "nit picky" bugs rather than things that pick up day to day. Like length checker is a "<" rather than "<=" and edit screen is missing field X that the create screen does have or two fields are being transposed when saving to the DB which you don't get in "real apps". The stuff that testing finds so the users and public never see it?

  4. Here is an exercise for you.