Pages

Men

rh

7/13/2012

Integration Testing

Integration Testing
Testing performed to expose faults in the interfaces and in the interaction between integrated
components
Testing of combined parts of an application to determine they function together correctly. The
'parts' can be code modules, individual applications, client and server applications on a network
etc. This type of testing is especially relevant to client/server and distributed systems.
 
Objective:
The typical objectives of software integration testing are to:
Cause failures involving the interactions of the integrated software components when running on a single platform.
Report these failures to the software development team so that the underlying defects can be identified and fixed.
Help the software development team to stabilize the software so that it can be successfully distributed prior to system testing.
Minimize the number of low-level defects that will prevent effective system and launch testing.
 
Entry criteria:
  • The integration team is adequately staffed and trained in software integration testing.
  • The integration environment is ready.
  • The first two software components have:
       Passed unit testing.
        Been ported to the integration environment.
        Been integrated.
  • Documented Evidence that component has successfully completed unit test.
  • Adequate program or component documentation is available
  • Verification that the correct version of the unit has been turned over for integration.
Exit criteria: 
  • A test suite of test cases exists for each interface between software components.
  • All software integration test suites successfully execute (i.e., the tests completely execute and the actual test results match the expected test results).
  • Successful execution of the integration test plan
  • No open severity 1 or 2 defects
  • Component stability

Guidelines:
  • The iterative and incremental development cycle implies that software integration testing is regularly performed in an iterative and incremental manner.
  • Software integration testing must be automated if adequate regression testing is to occur.
  • Software integration testing can elicit failures produced by defects that are difficult to detect during system or launch testing once the system has been completely integrated.
Incremental Integration Testing
Integration testing where system components are integrated into the system one at a time until the entire system is integrated

Continuous testing of an application as new functionality is added; requires that various aspects of
an application's functionality be independent enough to work separately before all parts of the program are completed, or that test drivers be developed as needed; done by programmers or by
testers. Integration testing where system components are integrated into the system one at a time
until the entire system is integrated

Top Down Integration
An approach to integration testing where the component at the top of the component hierarchy is
tested first, with lower level components being simulated by stubs. Tested components are then
used to test lower level components. The process is repeated until the lowest level components
has been tested.

Bottom up Integration 
An approach to integration testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested.


Stub and Drivers

Stubs:
Stubs are program units that are stand-ins² for the other (more complex) program units that are
directly referenced by the unit being tested.
 
Stubs are usually expected to provide the following:
An interface that is identical to the interface that will be provided by the actual program unit, and the minimum acceptable behavior expected of the actual program unit. (This can be as simple as a return statement)
 
Drivers:
Drivers are programs or tools that allow a tester to exercise/examine in a controlling manner the
unit of software being tested.

A driver is usually expected to provide the following:
A means of defining, declaring, or otherwise creating, any variables, constants, or other items needed in the testing of the unit, and a means of monitoring the states of these items, any input and output mechanisms needed in the testing of the unit

Sandwich Testing: Combines bottom-up and top-down testing using testing layer.


Non-Incremental Testing

Big Bang Integration
Integration testing where no incremental testing takes place prior to all the system's components
being combined to form the system.
Validation Testing
  • Validation testing aims to demonstrate that the software functions in a manner that can be reasonably expected by the customer.
  • Tests conformance of the software to the Software Requirements Specification. This should contain a section 

Validation criteria which is used to develop the validation tests.
 
Validation test criteria 
  • A set of black box tests to demonstrate conformance with requirements.
  • To check that: all functional requirements satisfied, all performance requirements achieved, documentation is correct and 'human-engineered', and other requirements are met (e.g., compatibility, error recovery, maintainability).
  • When validation tests fail it may be too late to correct the error prior to scheduled delivery. Need to negotiate a method of resolving deficiencies with the customer.
Configuration review
An audit to ensure that all elements of the software configuration are properly developed, catalogued, and has necessary detail to support maintenance.