Automated Testing in the DevOps Cycle Improves Quality and Reduces Risk
Over the past few years, technology trends, including mobile, social, big data and cloud, have driven tremendous innovation in systems of engagement. In turn, these have required the evolution of systems of record (SoRs), such as proven z Systems* applications, so they can be utilized in increasingly varied ways. Meanwhile, regulatory compliance management and governance of multisourced applications have increased as businesses accelerate software development.
To meet these needs and deliver high-quality software at the speed required by the market, the DevOps culture emerged.
The DevOps methodology emphasizes collaboration between development, testing and operations throughout the project lifecycle, from design to production. It seeks to establish an environment where software can be released more frequently, failure recovery is faster, and operational processes are more maintainable and predictable.
A DevOps approach typically involves automation. The automation and programmability of the build, staging and delivery processes ensure the consistency and efficiency the DevOps environment needs. This is usually achieved using a toolchain that can efficiently manage each of these operational processes in sequence. Static code analysis tools govern coding standards. Software configuration tools build software from source code. Testing tools test the software once it’s built. Staging tools package the software. Release tools deploy the software. Infrastructure automation tools control the configuration, orchestration and integration of all processes.
Test automation, in particular, is a key way teams can verify the software quality at every step of the operation. Automated tests can be written at the unit, function, system and integration levels, and—depending on how much of the source code they cover—can be an efficient substitute for manual testing. By running the automated tests as part of the operational toolchain, they ensure regression testing is done early and often in a release, shifting testing to the left on the project timeline.
Some traditional software development methodologies place system, integration and regression testing at the end of the release cycle. When a defect is found, it’s at the point of the release with the least amount of time and the most risk involved in fixing the problem. A team must then decide whether it’s riskier to introduce a code change to fix the problem or to release, knowing a bug exists in the code.
However, running automated tests as a regular part of the development operations helps find defects as soon as they’re introduced. These can be easily mapped to code changes that occurred since the previous successful test run. As a result, they can be fixed faster and earlier in the release cycle. Therefore, automated testing can both improve quality and reduce risk. This is known as shift-left testing—where testing occurs earlier in the project timeline—and is a key DevOps practice. Read about how this is an improvement in “DevOps Practices in the Real World,” below.
comments powered by