advertisement

•

•

**1.**

*completeness of test coverage*

**2.**

*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 “same sign” as the equivalence relation , R, defined over the input variable’s value set, i = {-200 - -,0, - -, +200}. Then one partitioning will be:**

**– -200 to -1 (negative sign)**

**– 0 (no sign)**

**– 1 to 200 (positive sign)**

**• 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) ε SS**

**– transitive: (-5, -7) ε 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 <a, b, c> do not form a triangle*

*– input sides <a, b ,c> form an isosceles triangle*

*– input sides <a, b, c> form a scalene triangle*

*– input sides <a, b, c> 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 for **

**Triangle Problem**

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

**Triangle Problem**

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