Get in touch

Get in touch with Binary

Binary Studio website uses cookies to enhance your browsing experience. By continuing to use our site, you agree to our Privacy Policy and use of cookies.

Learn more more arrow
Andriy Karun QA Engineer 28.07.2017

A stitch in time saves nine – QA’s role in quality software development

“Quality is not equal to testing. Quality is achieved by putting development and testing into a blender and mixing them until one is indistinguishable from the other.” –

How Google Tests Software James A. Whittaker, Jason Arbon, Jeff Carollo

In this article, I present the real and proven benefits when your development team has a QA specialist, based on our experiences here at Binary Studio. In a nutshell, QA’s role is (1) to ensure that the application meets the requirements as well as the needs of the business and customer, (2) to prevent issues and problems, but also (3) to make sure that the implementation of a new feature does not break other functionality that was already built.


One of the intellectual traits of the QA engineer is thoroughness. It is supported by the knowledge of test design techniques, which in turn makes it possible to predict and prevent future issues, and to verify compliance of the current functionality to the requirements. Getting the implemented functionality from the developers, the tester scrutinizes  whether the functionality is fulfilling its intended purpose. This is why it helps to perform an exhaustive check of the functionality.

Exploratory testing is not chaotic and random, it is ad hoc with the clear purpose of finding bugs. It is an approach that helps the tester learn how to use an application which encourages creativity, intuition and critical thinking. For example, it’s unlikely that things the software should not do will be documented. It’s driven by the fact that we can’t imagine every possible route or action, particularly when it relies upon unpredictable users. Because of this, the quality of tests which cover that depends on the experience and critical thinking of QAs. It’s important to detect as many defects as possible, even if they have low priority, because it can be a base for bigger problems. And a tester will deeply explore the software while they perform various scenarios, combine input data, and conducts chains of actions.

Establish a well-defined process

Everyone is familiar with Agile methodology and the tester’s role in it. Agile means lean and flexible processes, where testing happens throughout each iteration to provide a high quality product at the end of the sprint.

So how does the QA specialist establish a well-defined process? Based on our experience in the implementation of dozens of IT projects, we can say that the estimation time to deliver a product can be increased dramatically if there is no strictly-dedicated QA on the project. This is due to the fact that the development process is chaotic and it is based on merging several roles into one. The productive way is to test functionality during each iteration, not in the end. Here are some arguments for this:

First, the most obvious point is that while the developers have the task of delivering working code, the QA staff is responsible for ensuring the code reaches an acceptable level of reliability, performance, and functionality before it goes into production.

The next thing that a QA engineer brings to the project is the sequence in the development process. It lies in the fact that a verification of functionality will occur at the start of the project, then at the stage of its visual presentation (mockups, wireframes) and finally, at the stage of its implementation. Along with this, a QA specialist defines and improves the processes and procedures related to quality.

Do not forget that a tester analyzes the level of quality and prepares a release report on this at the delivery stage. Within a stipulated time, the customer receives a ready-made working solution and detailed information about its quality.

Regression Testing

Technical debt is "a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution.” One of the types of technical debt is regression testing. Above all, its goal is to ensure that the existing functionalities work correctly and no errors occur due to the development of other, seemingly independent, functionalities.

But with each new iteration and implementation of new functionality over old, the level of regressive technical debt increases. To reduce this debt, a QA engineer performs the regression testing each sprint.

Automation is a key to regression testing, because manual testing can be very time consuming and expensive. The standard for regression testing is to perform it each sprint before deployment. But with every new bit of functionality, the amount of tests will only increase. To have the opportunity to have more time for exploratory and thorough testing of new implemented functionality - old tests should be automated.

Risk assessment

It’s not enough to just detect a failure — you have to prevent it from making it to production. This implies that the risks need to be identified. This starts early in the project, and uses that knowledge of risk to guide testing planning, specification, preparation and execution. Usually it requires a series of brainstorming sessions and it is important to document all the identified risks to system quality. Therefore it is a collective effort, driven by the testing team, which helps determine what areas of the application need maximum focus. It gives the QA team good direction on how to proceed with their activities. Also, by identifying areas of concern early, developers are able to proactively remediate and reduce the overall risk of a production defect.

A guarantee that all critical issues will be found and fixed before the customers find them.

We don’t live in a perfect world and there is no 100% effective test approach to ensure that the delivered application will be bug-free. However, there is huge value in guaranteeing  that critical issues in the application will not be discovered by end users. During the development process, a test engineer is wearing an end-user’s hat, by acting and performing different user scenarios and applying testing strategies. This also includes knowledge of what end users expect from working with the product. The more you know the product, the better you can test it. With an understanding of business goals and knowledge of the domain this provides a solid insurance policy for the development team and the product.

Our way

“Testing is a process, not a single activity.”

Binary Studio QA engineers are involved in the project from the very beginning, when functionality is still nothing more than an idea. The development team does not have much clarity, and they do not know exactly how it will be built. The most important task at this stage is thorough understanding and potential assistance in defining acceptance criteria - what success means for customers, thanks to the knowledge of tech design techniques and the experience of using it., These criteria will provide the main direction for the entire team at the development stage.

Also, during the Inception phase, a QA specialist designs a testing proposal with testing strategy, approaches, test result reports and communication procedures. Then, the QA’s work covers the whole software testing life cycle, including assistance in critical requirements analysis, test management, test design, and the execution of testing, as well as improving the quality process.

We believe that preventive and proactive testing approaches are the best solution and help identify issues in the early stages of the project. Moreover, it will minimize maintenance and debugging costs compared to a reactive style of testing and can be useful in providing suggestions for improving the software. Then, during beta-release, our team will perform stress testing to monitor performance and make sure that your solution is in “tune” before release.