# Equivalence Class Testing (chapter 6)

1.

2.

## key goals

### for equivalence class testing are similar to partitioning:

completeness of test coverage lessen duplication of test coverage

### Partitioning

Recall a partitioning of a set, A, is to divide the set A into ( a1, a2, - - - -, an ) subsets such that:

– –

a1

U

a2

U

- - - -

U

an = A (completeness) for any i and j, ai ∩ aj = Ø (no duplication) Partitioning of a Set A of rocks with no relational meaning Size ≤ 10” Size > 10” Partitioning of a Set A of rocks with relational meaning ( with respect to “size”)

### Equivalence Classes

• •

Equivalence Relation, R,

is a relation defined on the set A such that it is reflexive , transitive , and symmetric:

let € to mean an “element of”

Reflexive: z €A, then (z,z) € R

– –

Symmetric: (a,b) € R then (b,a) € R, for all a,b in A Transitive : (p,q) € R and (q,r) € R, then (p,r) € R for all p,q,r in A Try the above conditions with R defined as “=“ Equivalence class testing is the partitioning of the

( often times, but not always )

input variable’s value set into classes (subsets) using some equivalence relation.

Equivalence Class Test Cases

Consider a numerical input variable, i, whose values may range from -200 through +200. Then a possible partitioning of testing input variable, i, by 4 partitions may be:

-200 to -100

– – –

-101 to 0 1 to 100 101 to 200

• •

Define variable’s value set, i = {-200 - -,0, - -, +200}. Then one partitioning will be:

– – –

“same sign” as the -200 to -1 (negative sign) 0 (no sign) 1 to 200 (positive sign) equivalence relation , R, defined over the input Let’s check if “ same sign” relation , SS , is an equivalence relation: (let be “element of”)

reflexive : -2 ε Input Variable then (-2, -2) ε SS

– –

symmetric : (3, 5) ε SS , then (5, 3) ε transitive: (-5, -7) ε SS SS and (-7, -200) ε SS , then (-5, -200) ε SS ‘ε’

A sample equivalence test case “set” from the above “same sign” relation would be { -5; 0; 8 } where -5 is negative sign, 0 is no sign, 8 is positive sign

## Weak Normal Equivalence testing

1. Assumes the ‘single fault’ or “independence of input variables.”

e.g. If there are 2 input variables, these input variables are independent of each other.

2. Partition the test cases of each input variable separately into one of the different equivalent classes .

3. Choose the test case from each of the equivalence classes for each input variable independently of the other input variable

Example of : Weak Normal Equivalence testing Assume the equivalence partitioning of input X is: 1 to 10 ; 11 to 20 , 21 to 30 and the equivalence partitioning of input Y is: 1 to 5 ; 6 to 10 ; 11 to15 ; and 16 to 20 30 X We have covered everyone of the 3 equivalence classes for input X.

20 10 1 1 5 10 15 We have covered each of the 4 equivalence classes for input Y. 20 Y For ( x , y ) we have: ( 24, 2 ) ( 15 , 8 ) ( 4, 13 ) ( 23, 17 ) General rule for # of test cases?

What do you think? # of partitions of the largest set?

## Strong Normal Equivalence testing

This is the same as the weak normal equivalence testing except for “multiple fault assumption” or “dependence among the inputs”

All the combinations of equivalence classes of the variables must be included.

Example of : Strong Normal Equivalence testing Assume the equivalence partitioning of input X is: 1 to 10; 11 to 20, 21 to 30 and the equivalence partitioning of input Y is: 1 to 5; 6 to 10; 11;15; and 16 to 20 30 X 20 We have covered everyone of the 3 x 4 Cartesian product of equivalence classes 10 1 1 5 10 15 Y 20 General rule for # of test cases?

What do you think?

## “Weak robust”

### input variables are now considered.

A note about considering invalid input is that there may not be any definition “specified” for the various, different invalid inputs - - - making definition of the output for these invalid inputs a bit difficult at times. (but fertile ground for testing)

Example of : Weak Robust Equivalence testing Assume the equivalence partitioning of input X is 1 to 10; 11 to 20, 21 to 30 and the equivalence partitioning of input Y is 1 to 5; 6 to 10; 11;15; and 16 to 20 30 X 20 We have covered everyone of the 5 equivalence classes for input X.

10 1 Y 1 5 10 15 20 We have covered each of the 6 equivalence classes for input Y.

## Strong Robust Equivalence testing

Does not assume “single fault” - - - assumes dependency of input variables

“Strong robust” is similar to “strong normal” equivalence test except that the invalid input variables are now considered.

Example of : Strong Robust Equivalence testing Assume the equivalence partitioning of input X is: 1 to 10; 11 to 20, 21 to 30 and the equivalence partitioning of input Y is: 1 to 5; 6 to 10; 11;15; and 16 to 20 30 X 20 We have covered everyone of the 5 x 6 Cartesian product of equivalence classes (including invalid inputs) 10 1 Y 1 5 10 15 20

### Equivalence class Definition

• • •

Note that the examples so far focused on defining input variables without considering the output variables.

For the earlier “triangle problem,” we are interested in 4 questions:

– – – –

Is it a triangle?

Is it an isosceles?

Is it a scalene?

Is it an equilateral?

We may define the input test data by defining the equivalence class through “viewing” the 4 output groups:

– – – –

input sides do not form a triangle input sides form an isosceles triangle input sides form a scalene triangle input sides form an equilateral triangle

Consider: Weak Normal Equivalence Test Cases to cover “ Triangle” Problem Output “valid” inputs: 1<= a <= 200 1<= b <= 200 1<= c <= 200 and for triangle: a < b + c b < a + c c < b + a output Not triangle a inputs b c

35 10 4

Equilateral

35 35 35 Valid Inputs to get:

Equilateral Isosceles Not Triangle Scalene Isosceles Scalene

24 24 7 35 18 24

Strong Normal Equivalence Test Cases for Triangle Problem

Since there is no further sub-intervals inside the valid inputs for the 3 sides a, b, and c, and the 4 outputs are “independent,” Strong Normal Equivalence is the same as the Weak Normal Equivalence for covering the outputs because the outputs are “independent”

You may want to look at Equilateral as the super set of Isosceles. But for this discussion, let’s consider them separate sets.

Weak Robust Equivalence Test Cases Triangle Problem for <200,200,200> Now, on top of the earlier 4 normal test cases, include the “invalid” inputs

Valid outputs

<1, 1, 1> Equilateral Not Triangle Isosceles Scalene Include 6 invalid test case

in addition to Weak Normal

above: below:

<201, 45, 50 > < -5, 76, 89 > <45, 204, 78 > < 56, -20, 89 > <50, 78, 208 > < 56, 89, 0 >

Strong Robust Equivalence Test Cases Triangle Problem for

• •

Similar to Weak robust, but

all

combinations of “invalid” inputs must be

included for the Strong Robust .

Look at the “cube” figure and consider the corners (two diagonal ones) a) Consider one of the corners <200,200,200> : there are a total of 2 3 combinatoric of valid-invalid but only (2 3 – 1 ) = 7 cases of “invalids” < 201, 201, 201 > < 50 , 201, 50 > < 201, 201, 50 > < 50 , 201, 201 > < 201, 50 , 201 > < 50, 50 , 201 > < 201, 50 , 50 > (50, 50, 50) valid b) There will be 7 more “invalids” when we consider the other corner , <1,1,1 > : < 0, 0, 0 > <7, 0, 9 > < 0, 0, 5 > <8, 0, 0 > < 0, 10, 0 > <8, 9, 0 > < 0, 8, 10>

### Next Day Program example

Here we have 3 input variables and may choose to have the sets defined as (

without partitioning of

days, month, or year):

– – –

Day : 1 through 31 days Month : 1 through 12 Year : 0001 through 3000

In this case, for weak normal equivalence testing only needs 1 test case from each input:

(year; month; day) : (2001, 9, 23)

Clearly, this “non-partitioning” of the input gives very limited test case!

### Next Day Program example (cont.)

A more useful situation is to partition the 3 inputs. As an example:

– – – –

Day: 1 through 28 Day :29 Day: 30 Day: 31

4 partitions of days

– – –

Month: those that have 31 days or {1,3,5,7,8,10,12} Month: those that have 30 days or {4,6,9,11} Month: that has less than 30 days or {2}

3 partitions of months

– –

Year: leap years between 0001 and 3000 Year: non-leap years between 0001 and 3000

2 partitions of years

### Next Day Problem example (cont.)

• •

Weak Normal equivalence Test Cases : Number of test cases is driven by the # of partitions of the largest set , which in this case is the Days – has 4 partitions: (year, month, day):

– – – –

(leap year, 10, 8) (leap year, 4, 30) (non-leap year, 2, 31) (non-leap year, 7, 29)

Without considering any relationship among the inputs and just mechanically following the rule How good is this set of test cases ?? How valuable is the

“generic” Weak Normal test Cases? --- Not Much!

Next Day Problem example (cont.)

Strong Normal

case where we consider all the permutations of the previously partitioned 3 inputs?

We should have (2 years x 3 months x 4 days) = 24 test cases

(leap year, 10, 5) (non-leap year, 10, 5) (leap year, 10, 30) (non-leap year, 10, 30) (leap year, 10, 31) (non-leap year, 10, 31) (leap year, 10, 29) (non-leap year, 10, 29) (leap year, 6, 5) (non-leap year, 6, 5) (leap year, 6, 30) (non-leap year, 6, 30) (leap year, 6, 31) (non-leap year, 6, 31) (leap year, 6,29) (non-leap year, 6, 29) (leap year, 2, 5) (non-leap year, 2, 5) (leap year, 2, 30) (non-leap year, 2, 30) (leap year, 2, 31) (non-leap year, 2, 31) (leap year, 2, 29) (non-leap year, 2, 29)

A little better than previous?

Next Day Problem example (cont.)

What if we also consider the invalids, Weak Robust ?

– – –

31 < days; days < 1 12 < months; months < 1 3000 < year ; year < 0001 Then we need to include the following to the Weak Normal : ( valid year, 5, 45) ( valid year, 5, -5) ( valid year, 22, 30) combine ( 3500, 22, 45) ( valid year, 0, 15) into ( 0000, 0 , -5) ( 3500, 7, 20 ) Would you combine or leave them separately?

Why?

( 0000, 7, 15)

Next Day Problem example (cont.)

• •

For

Strong Robust

, we need to consider and include all the permutations of the invalids to the Strong Normal: 3 inputs, so there are 2 3 – 1=7 invalids each for

high

and for

low , making a total of 14 more.

– – – – – – –

high low

( 3025, 45, 80) ( 0000, -2, 0) ( 3025, 45, 25) ( 0000, -2, 15) ( 3025, 7, 80) ( 0000, 4 , 0) ( 3025, 7, 25) ( 0000, 4, 10) ( 2000, 45, 80) ( 2000, -2, 0) ( 2000, 45, 25) ( 2000, -2, 10) ( 2000, 7, 80) ( 2000, 4, 0)