Well, it entirely depends upon your requirements.
Although Automation testing is most talked about buzzword, and is slowly dominating the testing domain, importance of manual testing cannot be ignored. Human instinct can any day or any time, cannot be replaced by a machine (atleast not till we make some real headway in AI).
Time Consumption and Cost to the Company
In a project where the content is large and the testing phase runs for quite a long time, automation testing is the perfect choice since
It reduces the number of resources required.
Multiple type of similar test case scenarios can be executed simultaneously with a single script.
For a large project, the estimated budget is sufficient enough to afford the set up and maintenance of an automated testing tool.
However, in small projects where the testing phase runs for only a few weeks, Manual testing is more preferable since
Resources do not have enough time to get trained in the tools and start testing.
Maintenance and installation is time consuming and costly.
There is less need of simultaneous execution of multiple test cases of similar nature.
User Acceptance Testing
The use of automated testing to test responsiveness in the user interface of an application is widely appreciated. However, it is not supposed to be an aid, but a boost to your UI testing capabilities. Automated testing tools in UI works by checking the position of an element, alignment and distance between elements and the container. A very small error in the testing script will result in one such alignment being misinterpreted.
During User Acceptance testing, the instinct of a manual tester is very important. An experienced tester can observe any object or element that looks misaligned or does not matches the requirement.
Accuracy of Results
For a testing phase where duration is long, there are high chances of an undetected error when testing is performed manually. Every time a small defect is fixed, the entire application needs to be tested to ensure that any other breakage is not occurring. The process is tiring and monotonous and testers often tend to miss out small but critical defects while performing repeated testing.
Automation testing involves execution of scripts that perform repeated testing of the application over and over again. Since machine does not get monotonous, if the script is properly written, there is no chance of missing a defect when the test is executed over and over again.
Regression testing is a phase that involves constant code changes and testing how the application is responding to frequent changes. When regression testing is performed manually
There are high chances of error since human eye often misses small changes while observing the same thing repeatedly.
In case of a large application, it takes a number of testers to perform these repeated tasks.
When automation testing is used
Regression testing tools speed up the process by repeated execution of test cases.
Multiple test case scenarios can be simultaneously executed.
Saves up time by parallel execution along with other test cases.
Nature of the Application
Apart from the complexity of the application and project duration, the nature of the application also decides what kind of testing is better to test it.
For a banking application, a number of scenarios require testing. Like,
Validation during user login.
Security protocols during banking operations.
Security testing for fraudulent activities during transactions.
For these kinds of scenarios, testing is completed much faster when a well written script is executed. Since most of the testing involves repetitive operations of the same scenario but with different entities. Hence, manual testing is better.
For a small web application like a personal blog page or the page of a small business like a restaurant, the look and feel of the application along with user experience is important. In this scenario, testing is needed to be done based on human instinct. Tester should think from the perspective of an end user and test the application to find out bugs or defects that may hamper user experience. Since no automated testing tools are not yet discovered that can replace human instinct, Manual testing is more preferable for this scenario.