The software life cycle:

End user

Requirements

Objectives

External specification

System Design

Program Structure Design

Module Interface Specifications

Code

The testing cycle should be based on the development cycle. In other words, you should be able to establish a one-to-one correspondence between development and testing processes. For instance:

  • The purpose of a module test is to find discrepancies between the program’s modules and their interface specifications.
  • The purpose of a function test is to show that a program does not match its external specifications.
  • The purpose of a system test is to show that the product is inconsistent with its original objectives

Function testing Function testing is a process of attempting to find discrepancies between the program and the external specification (e.g., a description of the program’s behavior from the end user perspective)

System testing System testing aims at comparing the system to its original objectives. It is a more high-level process compared to the function testing. The focus is on issues related to the external specification (interfaces, guis). Examples:

acceptance testing acceptance testing is the process of comparing the program to its initial requirements and the current needs of its end users

Test completion criteria When, exactly, we can stop testing a system? There is no way of knowing if the error just detected is the last one

  • stop when time and resources are expired
  • stop when a predefined arbitrary number of errors have been found (e.g., using industry-wise averages)
  • plot the number of errors found per unit time during the test phase and examining the shape of the curve