CSC/ECE 517 Fall 2009/wiki1b 4 xy
Functional and integration testing and beyond
Recognition of software test engineering as a specialty area has increased during the last twenty years. Testing is one of the key focus areas in software engineering. It is an essential activity that observes the functionality of a software system validates its intended behavior and identifies the potential malfunctions. Testing is also the primary way to improve software reliability.
The test cases should be carefully designed to cover many aspects in the SDLC such as possible aberrations from user’s requirements, system behavior upon malicious inputs, and robustness to extensive load conditions and so on. As more and more software is used in critical applications, the time and cost involved in testing is also increasing owing to the higher quality required. Although test automation saves a lot of time and can be used for regression load tests, manual testing is still widely used in the industry.
Integration testing
Integration testing is the next phase of unit testing. Generally in software development complete software is divided into various sub-systems mostly developed by different teams. More often than not each sub-system works very well individually but when they are integrated then lot of problems.
There are many approaches that can be followed for Integration Testing
- Big-Bang: As the name suggests all the components are integrated at once. After all the integration is completed a set of tests are run which not only validate a single component of sub-system but also test and validate the interaction between different components.
- Disadvantages:
- Debugging and solving a fault is not that trivial. Because since this type of testing is done for the first time one cannot be sure whether the bug found was present in any sub-system or interaction between different sub-systems.
- Testing process cannot be started until all the sub-systems have finished their development.
- Writing test cases are also non-trivial.
- Disadvantages:
- Incremental Testing: As the name suggests testing is done after integration of one sub-system at a time. This solves the disadvantages of the Big-Bang.
- Disadvantages:
- This approach is a time taking process. For a large system
- Disadvantages: