Software Testing is an activity performed to identify errors so that errors can be removed to obtain a product with greater quality. To assure and maintain the quality of software and to represents the ultimate review of specification, design, and coding, Software testing is required. There are different levels of testing :
- Unit Testing :
In this type of testing, errors are detected individually from every component or unit by individually testing the components or units of software to ensure that if they are fit for use by the developers. It is the smallest testable part of the software. - Integration Testing :
In this testing, two or more modules which are unit tested are integrated to test i.e. technique interacting components and are then verified if these integrated modules work as per the expectation or not and interface errors are also detected. - System Testing :
In system testing, complete and integrated Softwares are tested i.e. all the system elements forming the system is tested as a whole to meet the requirements of the system. - Acceptance Testing :
It is a kind of testing conducted to ensure whether the requirement of the users are fulfilled prior to its delivery and the software works correctly in the user’s working environment.
These testing can be conducted at various stages of software development. The levels of testing along with the corresponding software development phase is shown by the following diagram –
While performing the software testing, following Testing principles must be applied by every software engineer:
- The requirements of customers should be traceable and identified by all different tests.
- Planning of tests that how tests will be conducted should be done long before the beginning of the test.
- The Pareto principle can be applied to software testing- 80% of all errors identified during testing will likely be traceable to 20% of all program modules.
- Testing should begin “in the small” and progress toward testing “in the large”.
- Exhaustive testing which simply means to test all the possible combinations of data is not possible.
- Testing conducted should be most effective and for this purpose, an independent third party is required.