Testing is a process of executing a program with the aim of finding error. To make our software perform well it should be error free. If testing is done successfully it will remove all the errors from the software.
Principles of Testing
- All the test should meet the customer requirements
- To make our software testing should be performed by third party
- Exhaustive testing is not possible. As we need the optimal amount of testing based on the risk assessment of the application.
- All the test to be conducted should be planned before implementing it
- It follows pareto rule(80/20 rule) which states that 80% of errors comes from 20% of program components.
- Start testing with small parts and extend it to large parts.
Functional testing types include:
- Unit testing
- Integration testing
- System testing
- Sanity testing
- Smoke testing
- Interface testing
- Regression testing
- Beta/Acceptance testing
Non-functional testing types include:
- Performance Testing
- Load testing
- Stress testing
- Volume testing
- Security testing
- Compatibility testing
- Install testing
- Recovery testing
- Reliability testing
- Usability testing
- Compliance testing
- Localization testing
Few testing types are illustrated.
It focuses on smallest unit of software design. In this we test an individual unit or group of inter-related units. It is often done by programmer by using sample input and observing its corresponding outputs.
The objective is to take unit tested components and build a program structure that has been dictated by design. Integration testing is testing in which a group of components are combined to produce output.
Every time new module is added leads to changes in program. This type of testing make sure that whole component works properly even after adding components to the complete program.
This test is done to make sure that software under testing is ready or stable for further testing. It is called smoke test as testing initial pass is done to check if it did not catch the fire or smoked in the initial switch on.
This is a type of validation testing. It is a type of acceptance testing which is done before the product is released to customers. It is typically done by QA people.
The beta test is conducted at one or more customer sites by the end-user of the software. This version is released for the limited number of users for testing in real time environment
In this software is tested such that it works fine for different operating system. It is covered under the black box testing technique. In this we just focus on required input and output without focusing on internal working. In this we have security testing, recovery testing, stress testing and performance testing
In this we give unfavorable conditions to the system and check how they perform in that condition.
It is designed to test the run-time performance of software within the context of an integrated system. It is used to test speed and effectiveness of program.