There is this well-known proverb in English "two heads are better than one". This is applied in programming, so let's bring this concept into testing. Pair testing refers to the case when two or more people are testing the same thing at the same time and place. It's a continuous exchange of ideas between these people.
Two other major ingredients for pair testing are shared resources, like a shared monitor, and most importantly communication. It is vital for the pair to talk at least as much as they test, so everyone will be on the same page.
The same benefits listed for pair programming are also applicable for pair testing, such as increased discipline, collective test ownership, mentoring, and fewer interruptions on behalf of the other team mates. There are some advantages worth dwelling on.
- Team building and collaboration: When the responsibility of finishing a task is shared between two people, each one is more keen to stay focused. Even if one of them lacks the drive to complete the task, the other one puts the first one on track.
- Share knowledge by creating T shaped testers: One of the pair can have a broader knowledge than the other one of a certain topic and thus share his or her knowledge. This avoids creation of expertise only in one domain.
- High creativity: When two people work together on the same task, one explains what he or she is doing and the other one reacts to the first one's actions or words. Having two people concentrated on the same task, a plethora of ideas is born and more scenarios are covered in the process.
As every half full glass of water has a half empty glass of water, pair testing has its disadvantages.
- Work overload: I have found that pairing can sometimes be less efficient than working individually. Ensuring that tasks are clearly prioritized, based on their urgency can overcome this drawback.
- Conflict can emerge when paired incorrectly: It's a fact that there are people that don't work well with others. This may result in conflict between the two of them. Let's not lose hope, some coaching can help improve communication and team player skills.
To pair or not to pair?
Because of the danger of creating favoritism within your team, you need to know when pairing is efficient and when not. It's vital to know when to pair:
- When training newbies
- When coaching and mentoring other team members
- When regular feature work progresses smoothly
- When creating new teams
- When deadlines are approaching
And when not to pair:
- When having tight deadlines and testers are new to pairing, to team or to project
- When team members have very different attitudes toward the task at hand
- When it is counterproductive to pair. Some tasks are just not suitable for pairing
- Just because it's a new fad
Common problems and solutions
Pair testing is not problem free. But our approach is to see every problem as an opportunity. So, here are a few common problems that you may encounter while pair testing and some suggested solutions.
- There is no time.
Suggestion: Compare pair testing with pair programming.
- Strong personalities to work with.
Suggestion: Bring a coach to the table.
- Rob off the work on the junior tester.
Suggestion: Make them understand it's a win-win situation. Senior mentors and junior learns.
- It is not easy to prove that it actually works.
Suggestion: Consider trying with different people for a longer time span.
- Failed attempts can be counterproductive.
Suggestion: Be vocal about your successes and celebrate the highs to increase confidence.
Pair testing can be productive if everyone owns up to his or her role in the pair. Bringing together resources, knowledge, ideas and scenarios lead to a powerful partnership.