If you know anything about the way software is developed in the age of digitalization, you certainly know that product quality is at the heart of software delivery.
As software development gets faster and faster, Quality Assurance maturity is becoming a crucial factor that can make or break the success of the entire company. As a consequence, testing strategies are being revised, and a dev team’s attitude towards product quality is becoming a key topic of conversation between business executives.
Let’s take a look at how product QA is evolving in the age of IoT-enabled products developed using Agile and DevOps strategies.
Back in the days of the Waterfall (V-model) development approach, Quality Assurance would largely consist of a testing phase stuck at the end of the development lifecycle. But with the rising adoption of Agile and DevOps strategies came shorter development cycles, and increased focus on quality.
In this era of accelerated software delivery, you simply can’t afford to ignore bugs for a long time, then go back to fix them however deep they are buried in the code.
Agile requires developers to test early and often, shifting Quality Assurance left in the lifecycle. This has completely redefined the role that quality considerations play in the process of delivery. The advent of DevOps has only escalated the pace of this evolutionary process.
How has Agile and DevOps changed product QA?
This focus on improving product quality has had a huge effect on the practical side of testing: the procedures, tools, and techniques used to ensure the robustness of software products.
Changes in approach to product testing
In an Agile environment, developers aim to test early and often, prioritizing their test cases like user stories as they engage in continuous testing. When creating a user story, Agile developers also define the acceptance criteria to validate that requirement, driving its testing from day one.
In fact, testing has moved so far upstream in the development lifecycle that some techniques consider it a starting point. One of the key strategies of Agile QA today is Test Driven Development (TDD), which starts with the definition of a test case (clearly articulating what you want to test), then writing the user story and the code to fulfil that test.
Other modern types of product testing include Acceptance Test Driven Development (ATDD) and Behavior Driven Development (BDD). ATDD is similar to Test Driven Development but focuses on user acceptance testing, verifying that the product works as a customer (user) expects it to. With BDD, the aim of development is to achieve a defined business outcome, helping developers better understand the feature they are working on.
Changes in testing strategy
Due to the fast pace of Agile/DevOps product delivery, you rarely see a well-documented and complete testing plan. Yet quality can’t be compromised, so instead, Agile teams rely on a sound testing strategy to define the objectives, methods, and scope of their testing activities. This way, testers can remain flexible as they process changing requirements, and a test strategy also helps strengthen the team’s commitment to product quality.
As Agile and DevOps introduce a multidisciplinary approach, testers are increasingly involved in non-traditional aspects like operations testing, performance testing, security testing, and the monitoring and analysis of the piece of software in production. This enables them to have an all-encompassing view of product quality.
Changes in test execution
With all this focus on QA come more test cases – and more test cases mean more work. No team possesses the testing resources to achieve the ultimately desired 100% test coverage and 0 bugs in a released product. But in order to be able to ensure thorough testing, they need to rely on more automation.
Automated functional tests, performance tests, and security or resilience tests are increasingly automated to fit the velocity of the delivery pipeline. Software tools are vital to support these accelerating testing activities. In addition to Continuous Integration platforms, Application Lifecycle Management tooling is necessary to help manage the high volume of testing artifacts in a structured and fully traceable manner. ALM also provides powerful tools for manual and automated test execution.
To learn more about managing the quality lifecycle from test planning through execution to monitoring and test results-driven analytics, watch these recordings of our webinar series from April 2019: