Software Testing Techniques II

7. Integration Testing:

Integration is a systematic approach to build the complete software structure specified in the design from unit-tested modules. Once all the individual units have been tested there is a need to test how they were put together to ensure no data is lost across interface, one module does not have an adverse impact on another and a function is not performed correctly. Integration testing is a systematic approach that produces the program structure while at the same time producing tests to identify errors associated with interfacing. There are two ways integration performed. It is called Top-Down Approach (Pre-test) and Bottom-Up Approach (Pro-test).

7.1 Top-Down integration

The integration process is performed in a series of five stages:

  1. The main control module is used as a test driver and stubs are substituted for all modules directly subordinate to the main control module.
  2. Depending on the integration technique chosen, subordinate stubs are replaced one at a time with actual modules.
  3. Tests are conducted as each module is integrated.
  4. On the completion of each group of tests, another stub is replaced with the real module.
  5. Regression testing may be performed to ensure that new errors have been introduced.
7.2 Bottom-up Integration

A bottom-up integration strategy may be implemented with the following steps:

  1. Low-level modules are combined into clusters that perform a particular software sub-function.
  2. A driver is written to coordinate test cases input and output.
  3. The cluster is tested.
  4. Drivers are removed and clusters are combined moving upward in the program structure.
8. System Testing

Ultimately, software is included with other system components and a set of system validation and integration tests are performed. Steps performed during software design and testing can greatly improve the probability of successful software integration in the larger system. System testing is a series of different tests whose main aim is to fully exercise the computer-based system. Although each test has a different role, all work should verify that all system elements have been properly integrated and form allocated functions.

• A system is the big component
• System testing is aimed at revealing bugs that cannot be attributed to a component as such, to inconsistencies between components or planned interactions between components
• Concern: issues, behaviors that can only be exposed by testing the entire integrated system (e.g., performance, security, recovery).

8.1 Recovery Testing

Many computer-based systems need to recover from faults and resume processing within a particular time. In certain cases, a system needs to be fault-tolerant. In other cases, a system failure must be corrected within a specified period of time or severe economic damage will happen. Recovery testing is a system test that forces the software to fail in various ways and verifies the recovery is performed correctly.

8.2 Security Testing

Any computer-based system that manages sensitive information or produces operations that can improperly harm individuals is a target for improper or illegal penetration. Security testing tries to verify that protection approaches built into a system will protect it from improper penetration. During security testing, the tester plays the role of the individual who wants to enter the system. The tester may try to get passwords through external clerical approaches; may attack the system with customized software, purposely produce errors and hope to find the key to system entry. The role of the designer is to make entry to the system more expensive than that which can be gained.


8.3 Stress Testing

Stress testing executes a system in the demands resources in abnormal quantity, frequently or volume. A variation of stress testing is an approach called sensitivity testing in some situation a very small range of data contained with the bounds of valid data for a program may cause extreme and even erroneous processing or profound performance degradation.

9. Conclusion

Software testing accounts for a large percentage of effort in the software development process, but we have only recently begun to understand the subtleties of systematic planning, execution and control.

Related Topics

Guru’s Software Testing
Software Testing Tools – All free and Open-Source
Software Testing Techniques
Software Testing Techniques - II


Also Available

Server Virtualization – World’s Hottest Topic – A Good Research Work