The Software Development Life Cycle is incomplete without software testing – a key component that enhances software quality and therefore crucial to the success of the product. Software testing covers a wide expanse that includes compatibility, reliability, and usability. Hence, software testing done correctly, is an essential part of the user-experience.
Software testing can be divided into two broad classes:
- Manual Testing
- Automated Testing
Each class has its relative merits.
What is Manual Testing?
As the name implies, manual testing is the process of carrying out test cases manually. Here, the tester plays the part of an end-user without using automation tools. It is a manual way of checking software performance. Any difference between the expected and the actual results is considered a bug or defect.
Steps of Manual Testing
- As obvious as this might sound, the first step is to understand the requirements clearly. Defects can only be identified when the clarity of project understanding is high.
- Knowing the requirements is essential for the second step, writing test cases. Test cases must include all variables and scenarios against which the software is to be tested, considering both positive and negative outcomes. Test cases should include steps for guiding the tester about the execution process along with the expected results.
- In the penultimate step, tests are conducted individually. Results are marked as ‘passed’, ‘skipped’ or ‘failed’.
- In the final step, the tester documents test plans, bug reports, configuration details, and changes in the code. A good bug report is necessary for fixing errors effectively. The tester reports on all the details of the process such as, how many tests were carried out, how many were skipped, the number that failed etc.
Manual Testing ‘Pros’
- It is essential to be aware of real-user issues to enhance user experience. Since manual testing is carried out by humans, visual, interface and usability issues can be identified without any omissions.
- Manual tests may involve Ad-hoc testing that open the opportunity to explore different ways of software checking. This increases the effectiveness of software testing as the chances of omitting errors is very low.
- It suits small projects which do not require expensive software automation tools.
Manual Testing ‘Cons’
- Because it is manual, the process can be slow and time-consuming. Whenever a change is made in the software, all the tests need to be run again manually.
- It is not recommended for big projects with tight deadlines.
- The manual nature of this type of testing may lead to some errors being overlooked. Hence, its accuracy may be called into question.
- It is not practical where test cases run frequently.
What is Automated Testing?
It is the execution of pre-scripted test cases to compare actual results with predicted outcomes. Unlike manual testing, software tools are used in Automated Testing.
Steps of Automated Testing
- It is important to understand the need for automation testing in the context of project requirements. Sometimes automated testing is carried out to save the time spent on manual testing; at other times, these tests are run for improving accuracy.
- The second step involves deciding which test cases require automation. Test cases that can frequently be run and need multiple data sets to perform the action should be chosen for automation testing. Tests that cannot be included in manual testing should be considered for automation. Automation engineers are responsible for scripting and executing the test cases.
- Choosing compatible tools for automation is as important as selecting the right test cases, and should be reflective of budget and project requirements. They should support desktop, web and mobile applications. Support for cross-browser testing is also a key feature. Automation testing must generate test reports in a pre-determined format.
- The final step in automation testing is the creation of a test automation framework. This is a set of guidelines that are required for the efficient and timely execution of the automated tests.
Automated Testing ‘Pros’
- Tests can be run quickly, frequently and reused, thus saving time. The process is effective and not exhaustive.
- Very little intervention by the automation engineer is required, hence, tests can be run 24/7 without the need for monitoring.
- Chances of human errors are minimal, ensuring test results are reliable and accurate.
- It can be executed on separate platforms simultaneously without adding to costs.
- Test results are readily available and accessible to all team members.
Automated Testing ‘Cons’
- There is minimal human involvement in the whole process. Hence, it lacks user-friendliness.
- It is efficient in detecting most bugs, yet there are limitations to the efficiency of the tools. Since they are pre-scripted, there is no room for exploratory tests.
- The test-scripts need to be de-bugged, replaced and re-recorded even for minor modifications. Maintenance of test scripts is a costly process.
Success of the software testing process depends on the approach selected and executed. Where manual testing is efficient in checking the usability and user-experience, automated testing does not require human resources and thus saves time. Manual testing is preferred when the functions are still evolving and are in the development phase. Later on, test cases can be automated for the pre-existing functions that were manually tested previously. Ideally, it is best to use a combination of both where each complements the other.