In a Continuous Delivery world, is there a place for Manual Testing?
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?
Is Manual Testing Dead?
So, given the capabilities of (and hype behind) automation, is manual testing still relevant? Absolutely. Manual testing is even more important than it’s ever been in software delivery.
Automation should not be view as a catch-all cure that can be applied in all instances to speed delivery. To be any value, automation must be smart—automating mundane, time-consuming processes. That’s where manual testing and quality assurance come in. Even in an SDLC, where almost all processes are automated, manual testing is important.
There are some types of tests that machines can’t effectively perform. Exploratory and ad-hoc testing, for instance, are decidedly manual processes. Robots don’t get tired or take lunch breaks. But even if they can outwork a human, they lack critical thinking abilities like observation and analysis (at least at the time of this writing) that we excel at. A machine does what a human tells it to do and will do that repeatedly. Automation empowers quality assurance analysts to create and evaluate tests, then have a machine execute. In this regard, automation isn’t making manual testing irrelevant, it’s making it more relevant. Quality assurance analysts are now elevated to a role that requires critical thinking, creativity, and advanced technical acumen to ensure that automation works—and that it works smarter.
More Areas Where Manual Testing is Necessary
Usability testing: To test how your product performs with a human being, you’re going to need…a human being. Computers are amazing when it comes to accuracy and equations, but only a real person can assess a product from the viewpoint of a customer. A product can pass every written test, but if a person is unable to use an application because it has shoddy UI, the product is worthless. Manual QA engineers can provide UI/UX design feedback, measure a product’s accessibility, usability, and the more elements that are just as important as the app’s code structure.
Immediate testing: Just updated your product and need to test it NOW? Manual is the way to go. Even small changes in UI can ruin automated tests, whereas a person can quickly adapt to a new interface and figure things out. Keeping an automated test up-to-date is time-consuming and sometimes difficult to do in lock-step with the rollout of new features. Experienced engineers can step right in and start testing new products efficiently.
Test failure: When an automated test fails, someone has to figure out the reason why. Tests help to identify flags and issues, but often external factors—connection issues, platform or architecture failures, or minor interface changes—can cause problems the tests don’t take into account. If a test fails, run it again manually to ensure that everything runs smoothly.
Verdict: Manual Testing is Still Essential
The rise of automation has brought with it a slew of benefits, that much is obvious. However, there will always be a place for manual testing in software. With automated tests and processes and the skill of manual QA analysts, software can be built better and faster. But, you need both.