Software Test Techniques

Profile picture for user devraj

We use different techniques to test the application against functional or non-functional requirements. The purpose of these techniques is to help in identifying test conditions, test cases, and test data.

Categories of Test Techniques

Three widely used test techniques are:

1. Black-Box

Black box techniques are used to examine an application without knowledge of the software project's internal design, structure, or implementation. Black-Box testing techniques include:

  1. Equivalence Partitioning
  2. Boundary Value Analysis
  3. Decision Table Testing
  4. State Transition Testing
  5. Use Case Testing

2. White-Box

White-box testing is based on the test object's internal structure. White-Box test techniques are: 

  1. Statement Testing and Coverage
  2. Decision Testing and Coverage
  3. Modified Condition/Decision Testing
  4. Multiple Condition Testing
  5. Basis Path Testing
  6. API Testing

3. Experience-Based

In experience-based test techniques, test cases are derived from the tester's skills, intuition, and experience with similar applications and technologies. Techniques of experience-based testing are:

  1. Error Guessing
  2. Exploratory Testing
  3. Checklist-based Testing

Test Techniques Selection Factors

Some test techniques are more applicable to specific situations and test levels. Generally, while creating test cases, testers use a combination of test techniques to achieve the best results from the test effort. The choice of which test techniques to use depends on several factors, including:

  1. Component or system complexity
  2. Regulatory standards
  3. Customer or contractual requirements
  4. Risk levels and types
  5. Available documentation
  6. Tester knowledge and skills
  7. Available tools
  8. Time and budget
  9. Software development lifecycle model
  10. The types of defects expected in the component or system

The use of test techniques in the test analysis, design, and implementation activities can range from formal to informal, whereas informal ones require no or little documentation.

The appropriate level of formality depends on the 

  • testing context
  • the maturity of test and development processes
  • time constraint
  • safety or regulatory requirements
  • the knowledge and skills of the people involved
  • and the software development lifecycle model being followed.