“Who implemented that sh*t?” or “It’s not a bug, it’s a feature” - probably every development team member encountered similar statements. Communication skills of every team member are just as important as the ability of entire teams to communicate effectively with each other. In software development especially, testers and developers must be able to collaborate closely to deliver a software product on time, in accordance with quality standards and client requirements specified at the outset. They will successfully deliver only if they communicate their actions to each other clearly and efficiently.
How to make the software testers and developers work as a team when they have entirely different responsibilities in every project? There are several aspects of the communication process that will make mutual alignment easier. Here’s what the process is about:
Understand each other’s goals in the project
Both software developers and software testers work together to deliver high-quality end product but each team has a different, yet indispensable, role in the software development process. Developers code a solution to the requirements specified by the client, usually in a number of iterations, their goal is to close implemented functionalities. Testers check the implemented solution for bugs and quality standards and their goal is to find as many bugs as possible in tested functionality. Our common goal is to deliver a high-quality solution, so we have to cooperate, not compete. The results of every test determine the scope of development works (corrections) that developers have to perform in a given iteration and the scope of testers work is dependent on what developers implement.
The customer requirements will always determine the specific functionalities and goals of each project, so it’s important that both teams arrive at a mutual understanding of what needs to be done, what’s the scope of work of the other team and how to configure the work environment. This is particularly important as deadlines are usually tight, requirements are ambiguous and budgets are limited. If testers and developers work together from the beginning and understand what the other team is doing, it will be much easier for them to communicate and achieve the same goals.
Weave a communication process into the development process
This isn’t about having periodic meetings to update the entire team on a regular basis, but rather about communicating new outputs in a clear way immediately. Testers will begin their work when developers finish coding a given functionality. When they discover critical errors, they should inform the development team immediately, so that the bug could be fixed as soon as possible. If the error isn’t critical, it’s best to put it in the backlog and plan corrections at the next agile meeting. After corrections have been applied, developers turn back to testers for another round of checks.
Frequent communication between testers and developers will help generate ideas on how to improve the product: testers may often suggest how to correct a bug while developers may have ideas on how to test a functionality better. Work together to determine the process that will best serve this purpose in every project and the software development lifecycle will run smoothly.
Have a clear process for reporting bugs
This aspect of communication between the two teams is critical. Developers must understand how to re-create an error to be able to fix it, so software testers must clearly describe every step that must be taken to arrive at that bug. Identifying configuration errors and adding any relevant data will make the correction process much easier for developers. Good bug report saves developers nerves and time, makes work on bug fix easier and also helps testers in retesting and minimizes the risk of rejecting bug report.
The number of testers involved in the software development lifecycle will depend on the scale of a given project. Large-scale software products may require dedicated testers to check specific components only. When multiple people are involved in the testing process, having a clear and unified process for reporting bugs will minimize the potential ambiguities that developers may otherwise encounter.
Pick a tool for cross-functional communications
Testers and developers work together closely during the entire development process, so it’s important to have a tool in place that facilitates daily updates. At CSARHK, we mainly use JIRA for communication, planning the tasks for every team member and tracking progress and reporting bugs, but Slack may also be useful in the software development process.
You can pick any tool that best suits both teams. The point is to have a communication channel for reporting the bugs immediately to the entire team, so it could be addressed as soon as possible. Make sure it also has planning features that will allow you to assign tasks and outline the structure and features so everyone could see the bigger picture.
When misalignments occur, seek external advice
Conflicts may naturally occur between testers and developers, especially when each team has a different understanding of what constitutes an actual bug. Testers may find an error and report it to be fixed, and developers may at times reckon it has been coded the right way.
The same may occur when developers doubt if users will go through a specific path to arrive at the coding error. In such cases, it’s best to consult with someone who will be able to clarify the project requirements or the specific path. Product owners may be particularly helpful in such cases.
Don’t underestimate the power of empathy
The communication between software testers and developers may be a sensitive issue. It’s important to be respectful of the other team’s work. Developers should understand that bugs are not reported to annoy them, and vice versa. The tester should not be angry when a bug that he reported is rejected or stuck in the backlog. Both teams should be wary not just about what they communicate, but also how they do it.
The above measures help our teams grow with every project. Implement all of them and your cross-functional teams will gradually become stronger and more competent in their work, resulting in better software products delivered faster.
This article is the third and last in our series on software testing. You can read about the technical skills required to excel at the job here. We also outlined the software tester’s responsibilities in this article.