This section gives a brief summary of the structured testing techniques during each process in a simplified software lifecycle.
12.1 Design process
Consider the expected cyclomatic complexity when partitioning functionality into modules, with a view towards limiting the complexity of each module to 10. Limiting the explicit complexity of modules in the design to 7 is usually sufficient. Estimate unit testing effort. Estimate the eventual integration complexity from the design. Plan high-level integration tests.12.2 Coding process
Limit the cyclomatic complexity of modules to 10 wherever possible without violating other good design principles, and document any exceptions. Examine the control flow graphs of modules with essential complexity greater than 1 and improve the quality of their logic structure where feasible. Plan unit tests.12.3 Unit testing process
Test a basis set of paths through each module. This can be done either by first running functional tests and then executing only the additional paths to complete basis path coverage, or by planning and executing a complete basis set of paths using the baseline method independently of functional testing. For modules for which a complete basis cannot be executed due to control flow dependencies, analyze those dependencies and either eliminate or document them. Build a unit level regression suite so that all tests are repeatable.12.4 Integration testing process
Test a basis set of paths through the design-reduced control flow graph of each module, either by first running functional tests and then executing only the additional paths to complete coverage, or by using integration complexity to plan and execute a complete basis set of integration subtrees. Apply the incremental integration testing techniques at each stage of the overall integration strategy. For object-oriented systems, select a strategy for testing polymorphic call resolutions based on complexity analysis and subjective risk assessment, and apply the safety analysis technique to avoid unnecessary testing. Build an integration level regression suite so that all tests are repeatable. Take care to verify initial system behavior to the greatest feasible extent so that the error detection power of the regression suite is not wasted.12.5 Maintenance process
Prevent sudden degradation of control structure quality by rejecting modifications that significantly increase essential complexity. Avoid increasing the cyclomatic complexity of modules beyond 10 whenever feasible. Use the incremental reengineering technique to improve overall system quality during routine modifications. Use data complexity analysis to assess the impact of potential data structure changes and guide testing of data changes. Perform full regression testing where feasible, otherwise select a shortcut technique to test the specific changed software.