Building High Quality Apps, Quicker within a Continuous Testing Framework

by August 15, 2017

Test before you code

Continuous Testing has been put forward as a natural development from “Agile”, a natural progression for organizations who are achieving “agility” and are now testing and deploying releases faster than ever before. However, it is yet to be, and may never be, precisely defined, and so the question of what it means to successfully ‘do’ or ‘achieve’ Continuous Testing should be considered carefully.

Quality and speed: what Continuous Testing means in practice

Continuous Testing is increasingly considered as an important practice within a broader effort to test and deliver software faster, and with higher quality. Speed and quality are then the two essential goals.

Faster throughput is therefore one component of Continuous Testing, and this involves the elimination of bottlenecks through automation. Numerous tools have emerged to automate components of the development lifecycle, ranging from automated builds and documentation, to environment provisioning and test execution automation. Here’s an example – watch this short video to see how Continuous Testing drives test and development teams to build better apps, faster.

Automation is not the only a silver bullet for Continuous Testing

There are occasions where organizations striving for Continuous Testing focus more on getting faster to market as the primary goal, neglecting the second essential element, quality. Often, the emphasis is on tools to aid in the development and regression testing of systems which have already been designed, instead of on the design phase.

Quality, by contrast, must be built in from the start, otherwise all that’s being accelerated in the Continuous Testing pipeline is defect creation. What’s worse, testing is often a part of this “garbage in, garbage out” culture, and does not pick up on the defects until it’s too late.

It is true that test execution can be automated relatively easily, but this does not affect the quality of the tests. Instead, some manual tasks will remain and it is in these tasks that testers and developers must intervene to make sure Continuous Testing is reliable and successful.

When automating test execution, test creation in the form of scripting is one such manual task. The issue is that this is often performed based on incomplete and ambiguous requirements, so that tests only cover a fraction of the possible logic involved in a complex system.

In addition to the quality of the tests, manual design is highly time-consuming and falls short of Continuous Testing’s goal of automating processes which create bottlenecks. This is made worse by test maintenance, which frequently forces testing to the end of a sprint.

With such an approach, defects will be detected later consequently, where they require far more time and resources to repair. In the realm of testing and development, this can make the difference between a requirements defect being perpetuated throughout the fundamental code underpinning a system, to one which is fixed before any code has even been written.

Achieving both quality and speed

Our advice is that testing is involved far earlier, with QA starting at the design phase. This can eliminate the majority of defects which stem from the requirements upfront, preventing defects being accelerated throughout the SDLC.

CA advocates Model Based Testing, and one advantage of this approach is precisely that it offers an unambiguous model with which to drive testing. It also offers a way for requirements to be validated during the design phase itself, working to avoid the garbage in, garbage out scenario set out above.

Model Based Testing can also enable the greater degree of automation that Continuous Testing demands. Working from a mathematically precise representation of the requirements, tests can be derived and maintained automatically, and can be optimized to provide maximum functional test coverage.

This approach accordingly eliminates the manual test case design and maintenance which frequently creates testing bottlenecks. In other words, Model-Based Testing enables building of software with both the speed and quality which is at the heart of Continuous Testing.