2.2.3. System Testing

Objectives of system testing

System testing focuses on the behavior and capabilities of a whole system or product, often considering the end-to-end tasks the system can perform and the non-functional behaviors it exhibits while performing those tasks. Objectives of system testing include:

  • Reducing risk

  • Verifying whether the functional and non-functional behaviors of the system are as designed and specified

  • Validating that the system is complete and will work as expected

  • Building confidence in the quality of the system as a whole

  • Finding defects

  • Preventing defects from escaping to higher test levels or production

For certain systems, verifying data quality may also be an objective. As with component testing and integration testing, in some cases automated system regression tests provide confidence that changes have not broken existing features or end-to-end capabilities. System testing often produces information that is used by stakeholders to make release decisions. System testing may also satisfy legal or regulatory requirements or standards.

The test environment should ideally correspond to the final target or production environment.

Test basis

Examples of work products that can be used as a test basis for system testing include:

  • System and software requirement specifications (functional and non-functional)

  • Risk analysis reports

  • Use cases

  • Epics and user stories

  • Models of system behavior

  • State diagrams

  • System and user manuals

Test objects

Typical test objects for system testing include:

  • Applications

  • Hardware/software systems

  • Operating systems

  • System under test (SUT)

  • System configuration and configuration data

Typical defects and failures Examples of typical defects and failures for system testing include:

  • Incorrect calculations

  • Incorrect or unexpected system functional or non-functional behavior

  • Incorrect control and/or data flows within the system

  • Failure to properly and completely carry out end-to-end functional tasks

  • Failure of the system to work properly in the system environment(s)

  • Failure of the system to work as described in system and user manuals

Specific approaches and responsibilities

System testing should focus on the overall, end-to-end behavior of the system as a whole, both functional and non-functional. System testing should use the most appropriate techniques (see chapter 4) for the aspect(s) of the system to be tested. For example, a decision table may be created to verify whether functional behavior is as described in business rules.

System testing is typically carried out by independent testers who rely heavily on specifications. Defects in specifications (e.g., missing user stories, incorrectly stated business requirements, etc.) can lead to a lack of understanding of, or disagreements about, expected system behavior. Such situations can cause false positives and false negatives, which waste time and reduce defect detection effectiveness, respectively. Early involvement of testers in user story refinement or static testing activities, such as reviews, helps to reduce the incidence of such situations.

Last updated