Test Design

Like the analysis stage, the design of tests represents a significant part of the work. The test cases are designed and implemented in this phase. Tests are designed in detail in this phase, taking the results of the test analysis as the starting point. This involves describing the steps or procedures to be followed, techniques, measures and analysis to be applied and the series of test data to be used, as well as the expected results showing that the test objectives have been completed, verifying and validating the requirements covered.

The design of tests is aimed at preventing defects before they arise in coding.

A sound test design will thus prevent defects before they work through to later stages, saving the costs inherent in correction. A sound test plan is a valuable tool for the prevention of defects and provides a basis for refinements, both because the software product will evolve and because the plan itself is susceptible to change and improvement.

Phases at which tests are applied

  • Unit tests.
  • Integration tests. The objective of these tests is to validate functioning in the different modules forming part of the system. The objective is to prove that the interfaces for each modules operate correctly.
  • System tests. These tests verify the proper functioning of the complete system and include test cases to seek for system failures. They are destructive tests intended to establish the robustness of the system even in adverse conditions. They verify both functional and non-functional requirements.
  • User acceptance tests. These are similar to the system tests but are not destructive. They demonstrate that the system functions in normal conditions.
  • Regression tests. These tests are performed at the end of each iteration, before the acceptance tests, to ensure that the functionalities developed in previous iterations have not suffered any damage.
  • Smoke or Sanity Tests. Selection of the high priority tests used to establish in as short a time as possible whether roll-out in production or acceptance environments has functioned correctly.

These tests are performed using specific techniques, such as threshold values, decision tables, penetration tests, etc. Given their importance to the system, performance tests play a key role.

Performance tests

  • Load tests
  • Failover tests
  • Stress tests
  • Performance tests
  • Network load sensitivity tests
  • Volume tests
  • Etc.