I’ve worked previously at several companies that didn’t have a QA department available. When the code freeze happened, all of the developers would go into QA mode. We’d then spend the next few weeks testing the features, and typically each developer would test their own. It was possibly the most feared and hated time of the year.

If you’re familiar with Quake, or pretty much any other FPS, then you know about the deathmatch. It’s my single favorite type of game and, in it’s own way, is really therapeutic when the stress of development, or testing, gets you down. A lot of the other developers I worked with at one point also loved to deathmatch and we used to play during lunch. When testing time came around, we found a way to make it fun… QA Deathmatch.

Here are the rules for QA Deathmatch:

  1. Scoring works on a point system: the points correspond to your company’s severity levels for bugs. If you find a bug, you score that bug’s severity level in damage. The person who owns that bug sustains that many points of damage. If your severity level goes in reverse order, then you score ([max severity] – [bug severity] + 1) per bug. For instance, assume your company has a severity level of 1 for critical bugs, and 5 for cosmetic bugs. If you find a bug with a severity of 2, then you score (5 – 2 + 1) or 4 points of damage and the bug’s owner sustains 4 points of damage.
  2. Damage can be recovered: by fixing a bug that caused the damage. When a bug is fixed, you reduce your damage sustained by the point total for that bug. However, the person who found the bug does not reduce their damage total.
  3. All features are fair game: there are points to be won everywhere in the code base, don’t limit yourself. The more you try all of the features, the more chance you have of scoring big.
  4. First to find a bug gets the points: If you find a bug that’s already been logged, you score nothing.

All players have three running stats:

  • Damage delivered: The sum of the bug scores found by you.
  • Damage sustained: The sum of the scores of the bugs found by other players against your features.
  • Damage recovered: The sum of the damage reduced by you by fixing bugs.

At the end of each day, the point totals are taken and five medals of honor are awarded:

  • Sniper medal: The person who delivered the most damage
  • Stealth medal: The person who sustained the least damage
  • Tactics medal: The person who had the best delivered:sustained ratio
  • Medic medal: The person who recovered the most damage
  • Commander medal: The person with the greatest overall score as calculated by [delivered – sustained + recovered].

The point of all of this is that it makes testing fun. It gives you motivation to find bugs, fix bugs and make your features as solid as you can. It’s amazing what winning one or two medals at the end of the day can do to make you feel great about going into testing for another day. And if you think winning a medal is motivating, wait until you lose a medal to someone else.

Another great thing that QA deathmatch encourages is getting everyone to test all aspects of the system. Too often, developers only test their features and don’t go outside that box. However, there are bugs to be found everywhere, and when you are in scoring mode, you’ll take the time to check out all the new features to see what you can break to score big. It’s also a great facade for getting competitive about finding bugs. Nobody likes the guy that finds a lot of bugs in their features, and even fewer like to be that guy. It’s easy to feel bad about finding a lot of bugs. You’re essentially adding work to other people’s plates. But in QA deathmatch, you are playing a role and it’s a great way to detach personal feeling from the process.

There are other variations of the game too:

  1. Team play: Development is split into two or more teams, divided by feature sets. Point totals are not by individual, but by team.
  2. Capture the flag: Just like team play, but instead of end-of-day totals, points are calculated when bugs are found or fixed. Instead of medals, flags are used that can be stolen by any team at any time. It feels great to find or fix a bug, then be able to steal a flag from another team.
  3. Mercenaries: Testers that aren’t involved in fixing bugs are mercenaries. They may not participate on a team or get any of the normal medals. Instead, a special Mercenary award is given to the one who scores the most damage in a day.

Again, the whole point is to make testing fun. All you need is a whiteboard, a calculator and some gadgets to be used as medals. Of course, you can always add to the game by printing a bunch of these then taping one to a developer’s cube with the bug number and severity penciled in whenever a bug is found. It can only be removed when the bug is fixed. The possibilities for expansion are endless.

QA is a painful process and some days, when 8+ hours of QA work lay ahead of you, it’s just hard to get out of bed in the morning. Don’t let boring work be boring. Not only will you have more fun during the day, but I can guarantee that when you turn QA into a competitive deathmatch, the quality of the final product going out the door will be better than if you are finding and fixing bugs for the sake of quality alone. Happy sniping!