Software testers may at times feel like their efforts are not fully appreciated by project programmers and developers. In some instances, they may even face a great deal of disdain from these parties and be seen as drags on the production process.

These conditions can become so far gone that quality assurance teams may feel that other project participants simply don’t want their assistance. When friction between programmers and testers persists, it can lead to harmful communication breakdowns and ultimately serve as a detriment to the development of quality software.

(Related: Why developers should not perform testing)

As InfoQ contributor Gil Zilberfeld noted, this conflict can be traced back in part to the early days of software development, when programmers had free rein to both write code and test the program’s functionality. This was largely done out of financial necessity as companies did not have the funding to devote to dedicated software testers.

As software development has become a more major focus across every industry, QA is now a critical element of the design process. The need to pass along builds to software testers who point out every flaw and defect in the code does not sit well with all developers, creating friction between these individuals.

“The developers see themselves as innovative creators,” Zilberfeld stated. “They create software from nothing, only to get pointed at what’s not working by the testers… Developers get the sense that testers are the enemy, so they throw releases over the wall, hoping for as little communication with the testers as they can manage.”

Understanding the value of QA
IBM Software quality and product manager Laura Rose explained that much of this friction can be attributed to software developers’ misinformed views regarding what QA teams actually do. Programmers (and to some extent executive decision-makers) see software testing as a drain on resources.

If companies didn’t submit their programs to rigorous testing, they could get products out the door sooner and get the ball rolling on new development projects without delay, increasing revenue streams. However, that viewpoint neglects to take into account the critical role that QA plays in the development process, and it also downplays the value that these teams bring to an organization.

“In many software development projects, the relationship between developers and testers is clouded by misunderstanding, disappointment and frustration. The difference in the way developers and testers approach problems is the [yin-yang] of this relationship,” Rose wrote.

Without dedicated QA efforts, finished products would be rife with errors, affecting program functionality and resulting in a dissatisfied user base. That will inevitably lead to higher customer churn rates and reduced revenue streams, hurting a company’s bottom line. The blowback would fall upon programmers’ shoulders as they were tasked with testing software and ensuring it worked properly. Furthermore, by placing the burden of testing on QA teams, developers can focus solely on creating high-quality products.

In order to ensure that software development proceeds effectively and delivers a strong, profitable release, programmers and testers need to work in a collaborative fashion. InfoQ’s Zilberfeld explained that the agile movement has been a major asset in this regard, helping to break down the walls that separate project teams and foster friction between them. Establishing a collective platform to upload and share important information is a crucial step to encouraging communication.

Test-management software offers the ideal framework to document various aspects of the QA process such as bug reports and test results. Team members can freely upload important files and tools in real time, giving other units access to these assets as soon as they become available. This way, any confusion regarding QA efforts can be eliminated and programmers will clearly see how testers benefit the overall production. A test-management system will ultimately encourage greater collaboration and communication between developers and testers.