QA: Friend or Foe to Development?

If there is one common idea that is usually thought of when it comes to describing the relationship between developers and QA, it is that it is often contentious. This is due to misconceptions regarding the role of QA in the development life cycle. In the current world of development, where most teams have adopted an agile development process, the speed at which features are implemented has increased exponentially. The creation of new tools and the fact that programming has become more accessible has also contributed to this increased development speed. However, a misconception that persists is that QA is a bottleneck in the development process. In my point of view as a developer, it is clear QA serves a vital function and their goals are in line with developers in creating a positive experience for end-users.

As an engineer, I understand the gratification of putting time and effort into implementing a new feature and essentially creating something out of nothing. But before I had a career as an engineer, I had a career as an IT auditor, where I performed compliance testing of business and IT processes. That experience illustrated to me that even the most intelligent and competent business leaders make mistakes, and that testing is the only way to find them before they have a negative financial impact. As I transitioned into engineering, I instantly realized the value of QA. Performing tests in a structured way throughout the development process ensure that problems are caught early and before they grow out of control. QA has a remarkable ability to find these problems because of their experience and the tools they have access to.

QA testers have unique skills that I appreciate as an engineer. They usually have core test cases and test data that they re-use and follow a very structured routine. They also view finding bugs as a challenge. They do not give up easily when they do not find errors and can get creative in applying additional testing techniques. Additionally, they have the advantage of having a more comprehensive understanding of an application and its features. The nature of their jobs requires it as they must ensure all the system’s components are operating effectively and problems are caught early. They also need to understand the system’s inherent flaws and limitations and work with developers to best mitigate the risk.

There is a fearlessness QA has in pushing the system to its limits. This is valuable to developers since we often are unable to view the system from the perspective of the user. Testers understand that they must perform out-of-the-box testing techniques because that is more in line with the everyday user. Because the end-user experience is a top priority, I have found QA to be bold in trying, repeatedly and with ingenuity, to “break the system”. This comes from having a broad knowledge of the entire system. As developers our role is creating new features or updating current ones for the user, and thus, we do not have the time to cultivate the skills or employ tactics that really push a system. However, not only is that QA’s role, but I have found they enjoy it. As developers this is something that should be viewed as an asset. Having someone on the team that enjoys finding bugs before the user ensures the best possible version of the product is available.

The entire development life cycle also experiences benefits from implementing QA processes. This is because in the long run, when tests are defined and implemented early, this leads to a notable decrease in bugs released into the production environment. One simple reason for this is that you have more people looking at the non-client facing versions of the system where it is easier to fix. A bug found by a client can lead to negative reviews and press which can be hard to recover from in our current fast-paced social media and news cycles. With so many online venues for customers to vent their frustrations, companies cannot risk bugs being found by clients. The issue is worse if the bug leads to errors in client data. In the 21st Century, data is the new oil. Businesses have been created simply for the analysis and processing of data. Businesses that are relying on your system to perform calculations or store financially significant and sensitive data will simply not accept bugs that affect their bottom line. At the end of the day, bugs found by clients will lead to a reduction in sales. It is much more affordable to have QA find these issues before the client does.

The benefits of having a QA function are apparent and there are ways to ensure that QA does not become a bottleneck in the development process. One important way is to have QA engaged early. This simple step may not seem like much, but the benefits become apparent both in the short and long term. For one, by having conversations about the product well in advance, developers will have a clear understanding of QA’s test strategy. This ensures that developers will keep in mind components they must integrate into their features to ensure they pass testing. QA also benefits by understanding the short-term and long-term goals of the developers and will have a clear understanding of what is ready to be tested and what needs to be tested at a later date. QA will know ahead of time any inherent issues with the system and can categorize these risks by severity early in the development life cycle.

The tools and skills of QA have also evolved the same way they have for developers. Just as technology has become more accessible, leading to an increase in developers and development speed, it has also led to QA being able to test more efficiently. One way this is done is through automation. Here at CelticQA, in addition to performing QA functions, we utilize QA automation tools, such as Selenium and Ranorex, to perform repetitive tasks and test cases. By creating and implementing these automation systems early in the development process, we have found we are able to create expansive and comprehensive automation test suites that supplement our manual testing. Not only does this greatly reduce the testing cycle, but it also allows QA to perform more thorough testing that cannot be automated. It even has the potential for QA to perform root cause analysis on bugs and provide recommendations on how they can be properly addressed. This is how QA can add additional value as their role continues to evolve.

One thing is clear, having a QA process and dedicated testers reap many benefits for businesses. However, to reap these benefits to the fullest, QA must be engaged as early as possible. Standards must be set while processes are being discussed to best foster an environment that values a high-quality product. Both developers and QA have a goal of ensuring that the client has a positive experience using their product, and ultimately, becoming an advocate for it. This type of active endorsement of a product only happens when it is tested regularly and kept bug free so developers can continue to implement features users look forward to and enjoy.

– Written by Josh Bouzy, Automation Engineer