Chapter 17 – Software Testing Techniques

Overview

The importance of software testing to software quality can not be overemphasized. Once source code has been generated, software must be tested to allow errors to be identified and removed before delivery to the customer. While it is not possible to remove every error in a large software package, the software engineer’s goal is to remove as many as possible early in the software development cycle. It is important to remember that testing can only find errors, it cannot prove that a program is bug free. Two basic test techniques involve testing module input/output (black-box) and exercising internal logic of software components (white-box). Formal technical reviews by themselves can not find allow software defects, test data must also be used. For large software projects, separate test teams may be used to develop and execute the set of test cases used in testing. Testing must be planned and designed. The SEPA web site contains the template for a generic test plan.

 

Software Testing Objectives

 

Software Testing Principles

 

Software Testability Checklist

 

Good Test Attributes

 

Test Case Design Strategies

 

Basis Path Testing

 

Control Structure Testing

 

Graph-based Testing Methods

 

Equivalence Partitioning

  1. If input condition specifies a range, one valid and two invalid equivalence classes are defined
  2. If an input condition requires a specific value, one valid and two invalid equivalence classes are defined
  3. If an input condition specifies a member of a set, one valid and one invalid equivalence class is defined
  4. If an input condition is Boolean, one valid and one invalid equivalence class is defined

 

Boundary Value Analysis

  1. If input condition specifies a range bounded by values a and b, test cases should include a and b, values just above and just below a and b
  2. If an input condition specifies and number of values, test cases should be exercise the minimum and maximum numbers, as well as values just above and just below the minimum and maximum values
  3. Apply guidelines 1 and 2 to output conditions, test cases should be designed to produce the minimum and maxim output reports
  4. If internal program data structures have boundaries (e.g. size limitations), be certain to test the boundaries

 

Comparison Testing

 

Orthogonal Array Testing

  1. Detect and isolate all single mode faults
  2. Detect all double mode faults
  3. Mutimode faults

 

Specialized Testing

  1. Task testing (test each time dependent task independently)
  2. Behavioral testing (simulate system response to external events)
  3. Intertask testing (check communications errors among tasks)
  4. System testing (check interaction of integrated system software and hardware)