How to improve software quality with a game
Competition and cooperation may happen simultaneously
Given a company with ~20 agile teams consist of developers and testers, each team develop a component which is a part of the company product.
Two weeks sprints, once per quarter a new version is released.
After all the tests still, there are some defects which found only by users.
Some of the defects appear because of lack of within component testing, another in an interaction of few components.
Teams are a bit reluctant to care about components interaction and “the bigger picture”.
As a solution was designed a game which has the next goals:
- Improve cooperation between teams
- Find more defects before release
- Share successful test techniques among teams
- Motivate people and have fun
The main idea behind the game — teams may test each other components.
How it may look like in details?
When teams are ready they split into pairs. T1, T2……Tn.
T1 tests the component of T2 and the other way around. Time bound is one week.
Above is an example of a potential game between teams.
T2 has found more bugs, but T1 has found more critical bugs and thus has won. It is fair because the company is interested more in critical bugs.
T1 will receive a prize, up to €1.5k bonus. T2 is up to €500.
Why is up to?
Because we may have a case when teams are not finding any bugs before in their normal development (when they receive a normal salary) and they find dozens or hundreds only during the game.
It may drain the company budget.
Additionally, the game may be organized between secretly chosen pairs right before the game to avoid fixed matches.
Then the actual bonus is calculated by the next schema:
Again, insurance for the company that the actual prize amount is proportional to the result of the game (found bugs). If T1 found only 1 minor defect and T2 nothing, they should not receive the whole amount of the prize budget.
And bugs of higher impact are valued higher, then this money can be split fair among people and their results in teams.
If you found a critical defect, you paid for that more than for a minor.
Why that game should have a money bonus?
Because we need to motivate and make people interested in that.
Instead of payment, we may use badges, titles (“the best hunter”) or just a whip.
But what is working the best?
Let’s revise did we achieve the goals set in the beginning.
Improve cooperation between teams
T1 will need information about how to work with the component of T2 and vice versa. Will they realize that they need to cooperate and provide the same information about T1 component to T2?
Very likely, if they want to win clean.
If not, T2 may reject playing with T1.
Find more defects before production
Games and competitions are very involving activities and when they are designed with the intent to turn on the natural human curiosity it may have a boost effect.
Another point is when people work over and over again on the same thing, their eyes glaze over. They may become blind or not enought critical thinking because of trying to achive a release goals.
In testing theory the highest quality of testing is testing done by a side organisation, not who develop a product. Because they least likely will compromise!
Share successful test techniques among teams
The game result will bring the question to both teams — how did you find the defects which we couldn’t find in our component our self? What techniques did you use? Again cooperation, knowledge sharing, more involed and interested people in result.
Motivate people and have fun
People received bonuses, found defects, shared testing and functionality knowledge. Seems like it is a win-win cooperative game for both of teams and the company. Is it a high price for that?
Why not repeat that in a few months?