To understand why manual testing is needed in a world of automation, we first need to understand what manual testing and automation testing are.
What is Manual Testing?
Manual testing takes place when a test analyst takes the requirements, defined by a company and agreed with a client, and creates a set of test cases. These test cases are used to confirm that the application created meets the requirements specified, and is working correctly.
What is Automation Testing?
Automation testing is a form of testing that utilises specialist software tools to complete and execute tests, before comparing the test results with predicted or expected results. All of this is done automatically with little or no intervention from the test engineer.
Why do we test?
We test to find problems that could affect the value of the product, or the on-time and successful completion of any kind of development work that would delay delivery to a customer.
Essentially, the main reason we manually test is because automation cannot cover everything. In the end, the applications that are created are made for people. Ideally a person should be involved in ensuring that the application developed works correctly.
Jerry Weinberg wrote a chapter about testing in his book, Computer Programming Fundamentals. He stated:
“It is, of course, difficult to have the machine check how well the program matches the intent of the programmer without giving a great deal of information about that intent.”
This relates to creating and maintaining automated test scripts. To do so involves a great deal of information to set up, and the effort involved in updating these scripts if a single piece of information within the application changes can render a test redundant.
Automation test scripts are written to execute a scenario in a very particular way. This is great when running tests continuously, as this means we can run them without the need for human involvement. Automation scripts are easily repeatable, and often faster than manual testing. They are useful in situations where the test is to be executed several times.
Manual testing is based on a particular scenario. A manual tester does not, however, have to rigorously stick to just that scenario. This allows the tester to be fluid during testing and attempt different things to find and identify potential issues to a user. The above allows a manual tester to complete Exploratory Testing.
Exploratory Testing is a very useful tool for a manual tester to have in their arsenal. What this allows is for a tester to take the outlined scenario and delve into the depths of an application.
Exploratory testing is a form of manual testing but a less formalized approach compared to the scripted approach. Exploratory testing normal occurs when tests scripts may not yet be written for the tester. The tester may be reviewing the system on the fly in this case. Exploratory testing is often used in conjunction with the scripted approach. This allows for a more in-depth review of the application before release.
Automation testing is a very useful form of testing for scenarios that may run multiple times in a period of time that do not need any interference from a tester. It can also be used for testing data flow across an application, which may be quite difficult for a person to track or trace. It can also be very useful when testing the integrity of a client’s API. Automation testing should never be used by itself to quantify the quality of an application. Automation tests will never be able to find and identify issues and bugs that a manual tester will. Manual testing is a time consuming and involved process, but it is necessary to ensure a good user experience and a high level of quality.
Article by Ben Cossins, Senior Test Analyst at The Distance