We all have stumbled upon a bug or two in the various apps we use every day, and we’ve written an article about the importance of software testing before.
Various software testing approaches exist, but generally, they can be divided into manual and automated testing. We’ve written quite a few articles about automated testing, and one might think that there are no limitations to automation, and it is possible to automate everything. Although we have a growing number of test automation tools and frameworks available, not everything can and should be automated. In some cases, it is cheaper and better to stick to manual testing. This article will discuss eight aspects of why manual testing is still necessary and in what situations it can be used instead of automation.
1. Time
Even though automated tests themselves will execute faster and with less input from the tester, automation infrastructure setup can be time-consuming. In some cases, it would be faster to do manual tests rather than automated tests. Setting up the automated environment and automated tests is easier during the early stages of the project when it is less likely to be as time-consuming. However, if the project is very complex and with many interconnected components, the automation environment and test setup will consume more time and resources. In some cases, if the project is too complicated, it may be impossible or too expensive to create an automatization environment and automated tests for the project.
2. Human touch
Furthermore, automated tests do not have human senses. After all, it is the computer that is running tests and checking values. For end-users, an app’s visual aesthetics are as essential as the correct functioning of its features. In most cases automated tests would only check if the value of, for example, the text label is on the screen, but it would not check the position of the label on the screen. In such cases, manual testing is convenient because the element’s visual appearance can be verified easily. If the user interface is complex (e.g., many animations or interactive elements), it is way faster and cheaper to test that manually and automate only SDK and/or API part to ensure that business logic doesn’t have any regressions. There are visual automated testing solutions which evaluate the visual details of software, but they will take some time and effort to set up and use.
3. Experience is needed
If automated tests are written poorly, and without following best practices, the outcome of such testing may be misleading and therefore render these activities useless. Based on our own experience working with lots of test automation projects, you should assign experienced engineers to the task of test automation planning and implementation. These engineers will follow best practices to create test environments, write tests, and maintain the code. Automated tests have to be maintained and checked daily.
4. Security
For complex projects, you should carefully evaluate all permissions that are needed for the test execution. In some projects, test automation engineers might not have full access to the system and have restrictions on which systems and environments the tester has been granted access to. In such cases, it is important to weigh whether it is worth using automated testing at all. You can’t automate testing on systems where you don’t have the necessary access level.
5. Exploratory testing
Exploratory testing is a type of testing where test cases are not created in advance, but testers check the system on the fly. It can help the tester quickly identify major flaws, thus helping to create a product that is actually needed. While very simple and easy-to-do, exploratory testing can not be done with automated testing because automated tests consist of test scenarios written by a test engineer. These scenarios are not flexible, and the computer will check only those things that are written to be checked and verified – nothing more and nothing less.
6. Not everything can be automated
As I’ve said before, it is not recommended, nor is it possible to automate everything. If you have a mobile product and you need to validate how it works on many different devices/screen sizes/OS versions/manufacturers – it’s not practical to automate that, and many older phones don’t support automation. There may be situations where there are no automation tools for specific platform or device type.
Another example would be a phone application where you should test calling Emergency services. In this case, it is crucial to think ahead and weigh the potential risks that can be encountered with the automation of such functionality tests. In this scenario, the main functionality to test would be call screen launching, not the calling itself. With this said, it is important to know which tests are stable enough for automated testing because this scenario may fail at some point, and in that case, such tests can cause trouble not only for the test engineers but also for the company itself.
There are times when the information that needs to be checked is displayed for a very short time or impossible to detect, and for this reason, manual testing would be better since the automated test would need some time and/or access to detect an element, whereas a human sees it right away. Also, due to the test framework or tools’ capabilities, there might be restrictions to read and locate, for example, an element in a push notification. Again, this can be checked with ease manually.
7. Stability
Moreover, suppose an application is being developed, and it has not reached a very stable version. In that case, there is no point in wasting resources and time in making and creating an automatization environment and automated tests because the tests will need constant updating after every application version update. Of course, test cases and scenarios have to be checked anyway to maintain desired outcomes, but when an application is unstable, the automated tests’ outcomes are more likely to be false. If the application is stable, the automated tests will be stable and objective as well. Before that, it is better to start testing the application manually to get valuable results. But once a product is out in the market, and you need to ensure there are no regressions between incremental updates, test automation can be very useful.
8. Validation of user stories
Last but not least, it is impossible to validate user stories without doing the tests manually. In this case, the functionality has to be checked and verified according to the given documentation. This can only be done by a test engineer who initially performs a manual test and verifies the functionality of the newly added functions or changes. If the automated test is created right away, that might raise defects. After manual tests of the documented functionality are done, test scenarios are written. To test functionality objectively, defects have to be fixed first. Only after that, automated tests can be created.
To sum up, both testing methods – manual and automated – have their pros and cons. And it is up to the test engineer to choose which of the methods will best suit the project needs and at what stage.
If you are unsure about this in your project, contact us, and let’s schedule a consultation. Our ever-growing team of 550+ ISTQB certified software testing engineers have worked with hundreds of testing projects and have vast experience with various test frameworks, tools, and approaches.