advertisement

•

•

**1.**

**2.**

*completeness of test coverage lessen duplication of test coverage*

•

**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 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*

**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?**

•

**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?**

•

•

**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. **

•

**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**

• • •

**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>**

•

**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!*

•

**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*

• •

*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.)**

•

**What about the **

*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)**