Agile methodology and its accompanying practices (extreme programming, scrum, kanban, among others) are almost universally accepted as the most effective approaches to software development. When used effectively, these practices result in high-quality software delivery at greater speeds when compared with the traditional waterfall or iterative models.
The rise of agile practices has ushered in the next iterations of the methodology: DevOps, continuous delivery (CD), continuous integration (CI), and continuous testing (CT) are just a few of the practices that further narrow the gap between the time something built and tested. These practices and improved workflows—coupled with the speed of automation tools—are accelerating and evolving how software is built.
In this new, faster world of continuous delivery, is manual testing still relevant? In this article, I’ll explore the question.
The DevOps Era in Software Development: More Than a Buzzword
The aforementioned progress in delivery methods has fostered a highly competitive landscape. Products, technologies, ideas, principles, and tools always have to be one step ahead. DevOps is the continuous collaboration between development and operations teams. Rather than being siloed operations, each team collaborates and communicates to ensure an efficient, progressive workflow that enables organizations to deploy a highly reliable version of the product in less time.
The primary benefit of using this method is that it accelerates each phase of the software development lifecycle (SDLC). To that end, DevOps facilitates a faster speed to market and more frequent deployments, by identifying defects earlier in each phase of the cycle. In short, DevOps helps to improve quality assurance (QA). Improved QA produces higher-quality products that encounter fewer delivery roadblocks, and are therefore delivered to market faster.
When Everything Is Automated…
Automation is essential for the implementation of a CD approach and is used to accelerate each phase of the product development life cycle. CI provides verification of each integration through an automated build and automated test. When combined with CT, the three processes quickly test for and identify bugs in a rapid feedback cycle.
When code changes are pushed to the source repository, the CI tool (Jenkins, TeamCity, among others) compiles the code and runs unit tests. Then, if tests are passed, the new build is deployed to the test environment, where another round of automated tests is run. Usually, this process is implemented with nightly deployments. Every night, a new build is created and tested. When teams begin their work the next day, they already have a clear picture of the living state of the product—the version of the build, the tests that passed and failed, and which features have been covered.
Read also: our blog on benefits of unit testing for better and faster code.
Automation makes this rapid cycle possible. Imagine if you had to do this all manually: How much time and effort would it take to run each of these tests every day?