Software testing improves the quality of the product, increases user satisfaction, promotes security, and mitigates costs by identifying defects early when they are less expensive to fix.
But the road to successful software testing can be filled with potholes. From tight deadlines and unstable test environments to last-minute requirements changes and a lack of skilled testers, there are obstacles around every turn. In this blog we focus on one of the least technical – but arguably one of the most critical – obstacles facing software testing teams: poor communication.
Effective Communication is Key
Take it from Henry Ford, "If everyone is moving forward together, then success takes care of itself." That’s true in software development. Clear, effective communication between the testing team and all stakeholders is the foundation on which productive software testing is built. It helps foster a shared understanding of the risks and challenges facing your project. Without it, it will be nearly impossible to capture the customer’s needs and reflect them in a quality end-product.
Here’s why. The testing team needs to verify the software is working as it intended. When testers discover the software doesn’t work as planned – a certainty in nearly every development project – they need to inform the development team (and likely management). Testers may also need to speak directly with customers to obtain details of a software failure.
These conversations require diplomacy and empathy on the part of the test team to deliver unwelcome news. In turn, the development team needs the ability to receive unwelcome news without becoming defensive. If a communication barrier exists between the testers and any stakeholders, which may also include management, hardware vendors, even the customer, the effectiveness of the testing will be markedly diminished. And that could put the project in peril.
So how do you close the gap? A great place to start is by understanding that as critical thinkers, software testers typically approach their tasks from a negative perspective – searching for reasons the software will fail. Their job is to make sure the software works and doing so requires poking holes or taking the contrary view for purposes of discussion. Think of it as akin to playing devil’s advocate.
It is important that developers don’t take this type of constructive commentary personally as testers aren’t maliciously raining on the developers’ parade. Rather, they’re trying to help the team produce high-quality code.
5 Steps for Better Communication
What else can be done to foster better communication? Here are five measures the team can take. Though at first glance these steps may appear obvious, they are commonly overlooked or given little emphasis. In such cases, team members grow increasingly frustrated and the end-product suffers.
1. Communicate consistently
Testers and developers need to maintain frequent communication, optimally once a week. Regular, transparent interaction (ideally including the product manager to ensure that everyone is aligned on deliverables) helps decrease the potential for errors and delays, and helps testers execute result-oriented test cases. These measures increase the likelihood your team will deliver a quality product on schedule.
2. Write requirements thoughtfully
Developers hate meaningless bugs, and software testers hate being accused of being overly picky. For that reason, developers and testers have shared goals around project requirements. Clear communication, supported by requirements written in a way that serves the whole team, not just one discipline, can smooth what is a challenging process.
3. Choose helpful tools for collaboration
To ensure team members can share their knowledge with the right people at the right time – and prevent multiple people from duplicating effort – you need to establish proper channels for collaboration. At ICS, we use a variety of tools including Jira and Slack, but there are many options. Choose those that work best for your organization. (As a side note: choose tools that make it easy for team members to collaborate across time zones.)
4. Provide better information
When software testers receive detailed, accurate information in a timely manner, they can begin their work promptly. In turn, they can rapidly identify, communicate and resolve any defects, accelerating the entire software testing process. But this can be accomplished only when requirements are clearly communicated (and updated) at every iteration. Again, better information leads to better results.
5. Share useful reports
Providing testing reports to stakeholders on a predetermined timeline helps keep everyone informed – transparency that improves the entire development processes. Ultimately, every member of the team has the same goal: deliver quality code that meets requirements, on time and on budget.
Developing quality software requires harmonious effort from every member of the product team. Inconsistent, imprecise communication gives rise to uncertainty and confusion. And nobody wants that.
For more on software testing, read our article “Why risk it? Meticulous software testing can save the lives of medical device users,” which first appeared in Medical Design & Outsourcing magazine.