Written by: Sachin Gupta, Application Development Manager, CG Infinity Inc.
In this era of DevOps, development teams are equipped with tools and processes to build and deploy products quickly and efficiently to production. However, this direct flow significantly challenges the process and traditional role of QA. The team’s iterative nature has urged QA to bring agile thinking to the testing process, reduce waste, and make better use of QA’s time.
In this article, I put a perspective on why traditional QA no longer fits, how the role of quality engineers has evolved in the past decade, and how high-performing teams have challenged software testing styles and brought agility to overall application delivery.
Why does traditional QA not work with agile teams?
- In a non-agile team, the development team hands off their work to the testing group, creating a delay in the find/fix/retest loop
- Traditional QA works in isolation which implies that each testing session involves retesting the same functionality over and over, also called manual regression testing, which leads to a longer testing cycle
- In his book, Principles of Product Development Flow, Don Reinertsen states that a longer testing cycle creates opportunity cost, which could be realized by reducing the testing cycle and releasing more often
- With both the development and testing teams in their own silos, they will naturally focus on optimizing their own subcomponent instead of optimizing broader delivery processes
While traditional software testing roles in QA teams may be going away in some organizations, the work testers do is not.
Adoption of a continuous approach to quality
Agile practices have blended development and testing activities to such a degree that software testing is no longer a standalone phase. Instead, testing becomes an implicit activity during the development of software. In agile, QA works with the development team throughout the development phase and provides valuable feedback right from the beginning instead of waiting until the end of the development cycle.
This must involve Continuous Testing, which could take the form of shift left and shift right.
Shifting testing left refers to applying testing practice earlier in the development process. To shift left, QA should bring their testing skill to the early phase of the development, such as requirement gathering, planning, and estimation by identifying gaps in user stories, planning automated testing ahead of time, and covering edge scenarios early. QA should work in parallel with development and build test cases during sprint stories which can be automated later (preferably in the next sprint).
Shift right refers to applying testing practice at the later stage in the development process. It involves testing not just during the application release but also in deploying, configuring, operating, and monitoring applications. It also includes running tests frequently in production to identify potential issues before the customer reports them. QA should work closely with DevOps to effectively set up the infrastructure to extend their Continuous Testing culture by enabling shift right testing practices.
QA and Developers, together, can prevent workload on the QA team at the end of the sprint and reduce the risk of surprises.
Path to high performing QA
Working together with Developers
Agile QAs work closely with the developers on user stories. While the developers finish the development, QA writes the test scenarios which are not covered in unit tests, plans testing strategy, and prepares the testing environment.
Modern testing frameworks such as cypress.io and TestCafe, enable developers and QAs to write unit, integration, and end-to-end tests together and allow them to run them in deployment pipelines. It helps QA to build test suites without putting dedicated time to write automated test cases.
Test Manually for the right reasons
QA should have a valid reason to not automate a test case, but not every test needs to be automated. Complex and subjective validations, new functionalities, and user experience testing are few examples where automated testing can be avoided due to efficiency and low return on investment. However, exploratory testing can identify gaps in automation tests.
Achieve Shift Left
Modern QA with DevOps can help the organization build tools to shift IT knowledge to the service desk and further to the end customer. High-performing QA runs the mission-critical test scenarios in production environments at regular intervals to achieve high IT state transparency to service desk professionals. When a customer calls in, they can identify the outage and resolve the customer query faster. In fact, customers respond confidently to find their own answers. Making the critical service status available to the customer self-service portal can reduce organization cost to serve and result in faster and effective resolution.