The purpose of test design techniques is to identify test conditions and test scenarios through which effective and efficient test cases can be written.Using test design techniques is a best approach rather the test cases picking out of the air. Test design techniques help in achieving high test coverage. In this post, we will discuss the following:
1. Black Box Test Design Techniques

  • Specification Based
  • Experience Based

2. White-box or Structural Test design techniques

Black-box testing techniques

These includes specification-based and experienced-based techniques. These use external descriptions of the software, including specifications, requirements, and design to derive test cases. These tests can be functional or non-functional, though usually functional. Tester needs not to have any knowledge of internal structure or code of software under test.
Specification-based techniques:

  • Equivalence partitioning
  • Boundary value analysis
  • Use case testing
  • Decision tables
  • Cause-effect graph
  • State transition testing
  • Classification tree method
  • Pair-wise testing

From ISTQB Syllabus:
Common features of specification-based techniques:

  • Models, either formal or informal, are used for the specification of the problem to be solved, the software or its components.
  • From these models test cases can be derived systematically.

Experienced-based techniques:

  • Error Guessing
  • Exploratory Testing

Read Unscripted testing Approaches for the above.

From ISTQB Syllabus:
Common features of experience-based techniques:

  • The knowledge and experience of people are used to derive the test cases.
  • Knowledge of testers, developers, users and other stakeholders about the software, its
    usage and its environment.
  • Knowledge about likely defects and their distribution.

 

White-box techniques

Also referred as structure-based techniques. These are based on the internal structure of the component. Tester must have knowledge of internal structure or code of software under test.
Structural or structure-based techniques includes:

  • Statement testing
  • Condition testing
  • LCSAJ (loop testing)
  • Path testing
  • Decision testing/branch testing

From ISTQB Syllabus:
Common features of structure-based techniques:

  • Information about how the software is constructed is used to derive the test cases, for example, code and design.
  • The extent of coverage of the software can be measured for existing test cases, and further test cases can be derived systematically to increase coverage.