Practical tips for pairing with a developer to test
What you may learn?
- What is pairing?
- Why i do it?
- How i do it?
- Where i've messed up
What is pairing?
It meets my needs.......
Different Kinds of Pairing
- Pair Programming - Typically Two "Developers"
- Solving coding problems together
- Pair Testing - Typically Two "Testers"
- Doing testing together
- 3 Amigos
- BA, Developer, Tester having conversations to clarify stories
“Pair testing is different from many other kinds of pair work because testing is an idea generation activity rather than a plan implementation activity. Testing is a heuristic search. Pairing has the effect of forcing each tester to explain ideas and react to ideas. When one tester must phrase his thoughts to another tester, that simple process of phrasing seems to bring the ideas into better focus and naturally triggers more ideas. ”
 Exploratory Testing in Pairs – http://www.kaner.com/pdfs/exptest.pdf
- Learn about the product
- Learn about each other
- Helps get a shared understanding
- It's fun
Learn about each other......
Welcome to your new team
"We are a cross functional team, we have testers in our team that do testing."
How do i do it?
Agreeing to Pair
- Gaining agreement can often be the first barrier
- Can be seen as wasteful by management
- Begin in small increments. Maybe 10-15 minutes
- Demonstrates benefits and helps build working relationship
- Use tea as an influencing tool
Arrange a suitable time
- Personal preference is the "Tap on the shoulder" approach.
- Other options: Specific times, after stand up, before lunch, use calendar reminders
- Do it frequently
- Reset the timer after each pairing session
Use tools to support your pairing
- Development Debug tools
- 2 Keyboards(Or maybe 1 or maybe none)
- Unit Tests
- Examples (BDD)
- Six Thinking Hats (Bono)
- Use Charters
- Record you pairing sessions
- Mind Maps
- Share knowledge and skills
- Explore before you build
- Increase Testability as you go
- Observe areas that could be made more testable
- Ask for changes and if they are simple, observe the changes there and then
- Many types of Testability
- Pairing makes why testability is important much clearer
- Intrinsic Testability – “If we hadn’t agreed during our pairing to put in extra logging we may never have noticed it”
- Project Related Testability – “Having the developer explain areas he wasn’t too comfortable with and couldn’t Unit Test helped us really focus our exploratory testing charters in those areas.”
- Value Related Testability -“Through our pairing we have built a strong rapport and we are comfortable asking each other challenging questions or constructive feedback”
- Subjective Testability – “Now I know how to run the application locally I can debug through the code and provide more technical information about where the code might be going wrong. I sometimes even feel comfortable coding a fix.”
Heuristsics of Software Testability - http://www.satisfice.com/tools/testable.pdf
Knowing when to pair
And when to stop
- Use Heuristics "I can tackle this problem on my own"
- Danger! Heuristics are fallible.
- Respect personal space when pairing
- Time box pair sessions - Pomodoro
- Learn between pairing
What to do with the odd socks?
- Its not always easy
- Personalities and opinions can conflict
- You won't always agree
- Use a sommelier
What to avoid?
- Shallow Agreements
- Thinking your pairing when you are really just "helping"
- Watch the Master!
To conclude, be less like this....
And more like this.....
Worlds greatest pair #1
Or maybe even more like this....
Worlds greatest pair #2