Testing is finding out how correctly the product works. In other words it is a process that is used to identify correctness, completeness and quality of software. In this post we will discuss various types of software testing. Let us first understand Manual and Automation testing:
Manual testing is done by a person carefully going through application screens, trying various input combinations, comparing the results with the expected behavior and recording their results. Manual tests are repeated in the whole development cycles for code changes.
Manual testing advantages:
- Early Testing – Test Cases can be prepared for testing as soon as the requirements are finalized.
- Useful for small duration projects.
- Useful for projects whose GUIs constantly change
Automated testing is performed by using automation tool which is able to playback pre-recorded scripts and predefined actions to compare the results to the expected output to report pass or fail. Once automated tests are created they can be used to retest the application again.
Automation testing advantages:
- Reduces repetitive work load
- Less resources required
- Execution is faster
- Quick Reporting
Different types of Testing:
1. Unit Testing:
This part of testing is considered the basic level testing that focuses on the smaller building blocks of a program or system separately. Unit Testing is the earliest stage of testing and is the most important stage in removing defects. Unit testing permits the testing and changing code of small units, thus providing a better way to manage the integration of the units into larger units. The detailed unit design is used as a basis to compare how and what the unit is able to perform.
Unit testing will be conducted by the Development Team and also prepare test cases for Unit Testing.
2. Integration Testing:
Prior to the beginning of System Testing, groups of units are fully tested. Units are added, one or more units at a time to the already integrated modules. The goal of integration testing is to verify that modules interact correctly and the hardware and software are integrated adequately.
Preparation of test cases and Integration Testing is conducted by the Testing team.
3. System Testing:
This phase of testing is performed prior to User Acceptance testing. Its purpose is to test the system as a whole for functionality based on the system test plan. The goal of System testing is to verify that the requirements are implemented correctly and include usability testing, performance testing, functional testing, and error checking.
4. Defect Verification Testing:
If an issue or problem is encountered during any testing activity a defect will be entered into the Defect Management Tool. If the defect or problem no longer exists, the defect can be closed. However, if the problem has not been corrected, the defect is reassigned back to the Development team for further investigation and analysis.
5. Regression Testing:
One of the aspects of software development that can affect the operational status of an application is the effect of making changes to a software system. For example, one module is developed and thoroughly tested. Then a change is made to another module, which has a major effect on the thoroughly tested portion. Either the incorrectly implemented change caused a problem, or the change introduced problems in a previously tested module. Regression testing retests previously tested functions to ensure that they still function properly after a change or update has been made. Regression testing is performed after each new delivery in test environment by testing team. Regression testing involves rerunning tests that have been previously executed to ensure that the same results can be achieved currently as were achieved when the system was last tested.