The explosion of development methodologies such as Agile and DevOps in the software development scene has turned the spotlight on testing – test automation to be more specific. It’s easy to be sucked into this tunnel vision especially when you see an automation suite swiftly execute a library of test cases. However, manual testing is still a long way from becoming an archaic practice that has no relevance today.
We know now that the cost of a bug fix is massively higher when discovered later in the life cycle. The earlier we catch a bug, the better it is, both time and resource-wise.
But software now runs the world. And the speed of testing has to match the speed of development. This creates a puzzle. We assume that to test better and to test comprehensively, we MUST leverage test automation. However, while test automation might be a useful component of testing, it cannot deliver us to software testing utopia alone. To create such a utopia, we need manual testing to complement automation.
The resurgence of manual testing owing to security
I see a resurgence of manual testing in some specific areas. Part of the credit for that must go to the increased focus on security. For example, one of our old customer engagements (that has a substantial testing component) has over the years leaned heavily towards software test automation.
Increased speed of testing, wider coverage, and freeing up testing resources to handle the difficult and more challenging things in the testing universe are the reasons behind this shift. However, there has been a sudden change in these dynamics of late.
The end-customers of our customers are now asking for product license agreements that include certificates of compliance with the top SANS 20 security controls. Having been an ISO 27001 compliant organization we have an understanding of how to bake over 130 such protocols into the testing suites. But these tests are not always automation inclined. You need testers with extensive product knowledge, robust testing skills, and deep insights into the security protocols to create and conduct these tests. This is, almost always, better done manually hence making manual testing relevant, if not essential.
The role of manual testing in an automation world
Today automated suites have become more sophisticated. Despite that, they still need human drivers. After all, automated tests are often converted from initially manual efforts. In the buzz surrounding automation, it can be easy to forget that test automation is about empowering testing teams. The role of test automation is to eliminate the repetitive jobs so that testing efforts can be directed towards coming up with more creative use cases. The role of test automation is to enhance the test coverage of the overall product. However, some scenarios cannot be covered by test automation.
Manual testing in a DevOps world
It seems that in DevOps, test automation is everything. However, despite test automation being essential to the DevOps environment, the role of manual testing cannot be eliminated. Testing in DevOps has to be fast to match the speed of development. For that, we need to reduce the human effort needed to push data through products to check things manually. However, even in DevOps, the keyword to be related to testing in ‘reduction’ of effort – not elimination.
DevOps demands the automation of as many relevant checks, especially those checks that contribute to business value, as fast as possible.
Risk-based testing is a likely candidate for manual testing here. Risk-based testing is carried out to test scenarios such as the top business risks that can negatively impact a business when identified by the customer or unearthed later in the product. A risk-based testing approach has to be carried out based on product usage characteristics and identify in advance the chance of risk of failure of a feature or functionality in production and its impact on the business in terms of cost and damage. This is done by prioritizing the tests of the features, modules, and functionalities of a product or software based on its impact on customers.
This is where manual testing comes into play, where a tester decides the areas that have a high business impact and optimizes the QA effort by deciding which of these tests should be automated (if feasible) and which should be manual.
The user impact
Users are human – that’s one compelling reason why we cannot do away with all manual testing. Elements such as UI and UX influence how the user interacts with the products. Test automation cannot effectively gauge how visual considerations such as color, heuristics, font size, images, etc. impact and influence the user. Testing for mobile device compatibility also has to be done manually to ensure that mobile interactions do not impact application performance.
Exploratory testing is another aspect of testing that lends itself to manual testing beautifully. Exploratory tests have to be intensive. The tester has to explore the entire product/software employing a deep analysis of user behaviors and user perspectives. Testers also have to be creative and analytical, along with being investigative to increase coverage. Test automation can only find bugs and errors it is programmed to discover. Exploratory tests need a great deal more than this.
Test automation is essential to make testing efficient and increase testing agility. However, even here we need to look at manual testing. After all, it is the tester who tests the test automation code since even the most robust test automation scripts can have bugs. In environments such as DevOps and Agile that have a heavy dependence on automation, it is the manual testers then who become the superheroes keeping the bugs at bay.