Pair testing in software development involves two individuals testing a software application at the same time using a single workstation/keyboard. These two individuals can be a combination of a;
- Tester and Tester,
- Tester and Developer,
- Tester and User or a
- Tester and any other member of the team
During testing, only one person executes the tests while the other person asks questions, directs the testing efforts, takes notes /makes observations or provides feedback. Pair testing is a software testing technique that has received much attention in recent times as it is a quick way to get different perspectives during testing.
The saying, ” Two heads are better than one”, is true also with software testing as pair testing improves the overall quality of the software. Also, it is a time-saving approach that fosters collaboration and serves as a good learning opportunity especially when a new or a junior tester is paired with someone more experienced or knowledgeable about the product. When a user is involved, it becomes an avenue for the tester to learn more about the user’s perspective of the system as it is being explored with the tester. When paired with a developer, the tester herself gets to learn more about the implementation and business logic of the application.
As we continue to embrace working remotely, there will be times when testers or team members are unable to conduct pair testing physically. In such situations, conferencing tools such as Zoom, Google Meet or Skype come in handy; where the tester or ‘driver’ shares his screen as he tests and goes through the application. The other tester/developer or team member as the case may be; acts as the navigator directing the ‘driver’ of the test.
Preparing to Pair
Pair testing remotely requires a level of preparedness to achieve optimum results. Consider these things to get you prepared:
- Establish the goal of your pair testing session beforehand. The goal refers to the overall purpose for which this test is being executed or the objective you are trying to achieve by pairing with another tester. Is it to investigate a bug that had been reported earlier or an exploratory test to uncover any defects in the application or to confirm that the implementation meets acceptance criteria. Whatever the purpose may be, ascertaining the goal you are trying to achieve beforehand helps to direct the required effort and attention on relevant test activities.
- Decide on the strategy for testing. After deciding on the goal you wish to achieve with the pairing session, the next step is to conclude on the best strategy that will help in meeting this goal effectively. This strategy simply defines the approach you wish to take in testing the software. For example, if your goal is to test a newly released feature that is visible on the UI, you may decide that the best approach is to test this in a controlled live environment with one of the users or better still decide that the only feasible non-breaking approach is testing with simulators. On the other hand, if the reason for setting up the pair testing session is to investigate a bug, you should figure out what approach you wish to investigate the bug. Do you wish to replicate the bug with the developer in his local environment, or do you prefer the staging environment or you may check the logs/audit trail on the admin/logging infrastructure of the app to decipher what happened? Whatever the case may be, the decision on the testing approach should be agreed upon before the session.
- Determine the role of each participant in advance. Knowing who would be doing what ahead of the pairing session and assigning roles accordingly is also important for managing expectations during the pairing session.
- Set up the environment to be used ahead. This is very important. Wherever the test will be conducted as well as necessary tools that would be used in the course of the testing process should be set up in advance for a seamless uninterrupted session. This could include feature branch environment/ test environment, database, IDE, test data etc.
- Go through any related available documentation earlier on. This cannot be overemphasized. As a tester, studying related requirement documents, Jira tickets, acceptance criteria, emails from PMs or stakeholders and the likes is imperative to provide guidance and serve as a benchmark to compare the test results with. A popular saying by Yogi Berra says it all; “If you don’t know where you are going, you’ll end up someplace else.”
Ready. Set. Go.
As a Software QA, the pairing session should not be limited to clicking or typing away. While the pair testing session is on, do well to;
- Carry the other person along. Sometimes, the pairing session is mistaken for `testing alone while someone else is watching’; which shouldn’t be. If you are the driver of the session (ie you are the one executing the test) while the other person acts as the navigator providing directions and making observations, it is good to stop intermittently to ask questions like “What do you think?”, “Did you notice that?”, “Should we note that down?” etc
- Ask Questions! Even though answers to all the questions may not be provided immediately, asking questions has been proven to be one of the best ways to help both parties to think aloud, clarify doubts and do away with unsafe assumptions made by both persons. Asking questions also demonstrates your interest and attention to what is being done. It ultimately is a good way to discover new things and add value to the session.
- Take Notes. While one is executing tests, the other person should be making notes of what is being done and what has been observed. Notes taken are what would serve as input for your test plan or test documentation/feedback that would help the rest of the team make informed decisions.
Happy pair testing.
Collaboration is multiplication – John C. Maxwell.