Practical tips for pairing with a developer to test​

Toby Sinclair

@TobyTheTester

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

“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. ”[1]

 

[1] Exploratory Testing in Pairs – http://www.kaner.com/pdfs/exptest.pdf

Why bother?

  • 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?

Pair Testing

1 Developer
 1 Tester

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)

Exploratory Testing

  • Use Charters
  • Record you pairing sessions
  • Mind Maps
  • Oracles
  • Share knowledge and skills
  • Explore before you build

Influence Testability

  • 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

Testability

  • 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

Questions?

Toby Sinclair

@TobyTheTester

deck

By tobythetester