Search

Saturday, January 24, 2009

Black Box Testing Techniques
  • Equivalence Partitioning
  • Boundary Value Analysis
  • State Transitions
  • Exploratory Testing

1) Equivalence Partitioning
Partition the input domain into a finite number of equivalence classes
Create test cases to invoke as many different conditions as possible
It is based on the premise that if a test case in an equivalence class detects an error, all other test cases in the same class detect the same error

Step 1
Identify the input parameters
Identify the allowable classes of input
Select a representative value for each class
Create test cases to cover as many classes as possible

Step 2
Select invalid values for each class
Create additional test cases to cover invalid classes

Step 3
Identify the output parameters
Identify the possible classes of output
Create test cases to generate each possible output

Example:
Strategy:
•Identify input equivalence classes
–Based on conditions on inputs / outputs in specification / description
–Both valid and invalid input equivalence classes
–Based on heuristics and experience
•“Input x in [1..10]” ® classes: x <> 10
•“Enumeration A, B, C ® classes: A, B, C, not {A, B, C,}
• Define one / couple of test cases for each class
–Test cases that cover valid eq. classes
–Test cases that cover at most one invalid eq. class
•Test a function for calculation of absolute value of an integer
•Equivalence classes :
2) Boundary Value Analysis

Boundary Value Analysis technique tests conditions on, above and beneath the edges of input and output Equivalence Classes

Test cases are created to test the edge of each Equivalence Class
Test cases are created to test edges of both input and output classes

For each equivalence class identified:
Select a value on the class boundary
Pick a value just under the boundary
Pick a value just over the boundary

3) Finite State Testing Process:
Create test cases to:
Force each transition
Force each action

4) Exploratory Testing
Some people can design test cases that will discover failures based on their experience
Allow these people to write test cases
Address complex areas
Address changes
Report failures, faults and errors so that experience level may grow