Test Design Techniques

What is meant by a test design?

For the purpose of holistic testing of a software product, it is necessary to create a wide set of tests for the software under test. There is no one set method for testing a software product. This general scheme comprising of different set of tests with different techniques is called a test design. Each testing design has its own strengths and weaknesses and takes care of specific defects.

What are the different categories of test design?

The test designs are categorised as:

  • Static test design techniques
  • Dynamic test design techniques

What all is covered under static test design techniques?

Static test design techniques consist of a plethora of activities....

  • Informal reviews: An Informal review focuses on a cursory review of the software product's working manual with the help of a team of couple of experts along with the author. The comments of this team are largely remain undocumented and are intent on improving the quality of the manual.

  • Technical review:A tech. review is done by a team of designers and a small group of prospective users with the aim of detecting flaws in the software as well as finding suitable alternatives.

  • Walkthroughs:The working code inherent in the software is studied in detail by a team of programmers and readers. Questions relevant to compliance with development standards and possibilities of error are asked.

  • Inspection:Similar to walkthrough but a lot more formal in nature, inspections are carried out to detect more complex errors along with safety or time related constraints.

  • Static analysis:The software's source code is checked for coding compliance and possible syntax errors.This also involves steps for code optimization.

What all is covered by dynamic test design techniques?

The scope for Dynamic test design techniques is pretty wide and consists of the following:

  • Specification based/black box testing technique:
  • The test cases are derived with the help of external descriptions and the specifications of the software. The tester need not have any prior knowledge of the internal code of the product. Some of the commonly used approaches are:

    1. Equivalence Partitioning:
    2. The entire input test data is carved into smaller divisions which are then used to create test cases.

    3. Boundary value analysis:
    4. After the segregation of the entire input data into equivalence partitions, boundaries are selected with the biggest and smallest values. This is done keeping in mind the fact that most of the bugs found are located here.

    5. Decision Table:
    6. Also known as a cause & effect table, a decision table's utility in handling large number of combinatorial inputs and responses is a pretty useful asset for testing

    7. User case Testing:
    8. This technique helps in devising test cases which have coverage to examine the complete working system in the software product from start to finish.

    9. State Transition Testing:
    10. Sometimes, outputs are generated based on the change in input condition or state of the system. The test cases are then devised to implement these valid and invalid transitioning to different states of the software system.

  • Structure based/white box testing technique:The tester has prior knowledge of the internal code of the software and covers facets such as statement, conditioning, path and loop testing.
  • Experienced based testing technique:This is further branched into...
    1. Error guessing: basically depends on the past working experience of the tester in dealing with bugs and errors.

    2. Exploratory testing: this technique focuses on minimum planning and maximum execution of test cases. The tester incorporates a learner's attitude while generating new test cases.