By Asst.Prof.Dr. Wararat Songpan (Rungworawut) Faculty of Computer Science, Department of Science, Khon Kaen University, Thailand 1 Chapter 3: Equivalence Class Testing :EC Software Testing
Equivalence Class Testing : EC The next step from Boundary Value Testing is a Functional Testing. Define equivalence classes on the range of input or output for each variables also called partition method. Completeness and greatly reduces redundancy. 2
Function F is implemented and a function F, of two variables x1 and x2. x1 and x2 have the following boundaries and intervals within boundaries: ▫ a=<x1=<d with intervals [a,b), [b,c), [c,d] ▫ e=<x2=<g with intervals [e,f), [f,g] So, invalid value for x1 and x2 as follows, ▫ x1 d ▫ x2 g Remarks: [ = closed interval, ( = open interval 3 quivalencelassTesting Equivalence Class Testing : EC
Equivalence Class Testing : EC There are 4 sub-techniques of Equivalence Class Testing. 1) Weak Normal Testing :WN 2) Strong Normal Testing :SN 3) Weak Robust Testing :WR 4) Strong Robust Testing :SR 4
1) Weak Normal Testing :WN 5 x2 x1 f e ab c d g Valid EC: Ec1 = {x1: a=<x1< b} Ec2= {x1: b=<x1< c} Ec3 = {x1: c <= x1 <= d} Ec4 = {x2: e =<x2 < f} Ec5 = {x2: f =< x2 <=g} -One variable from each equivalence class as “single fault assumption” -Values identified in systematic way
For example: Addition x1 and x2 (Simple example) 6 x1 x2 Function: Addition X1 and x2 Results = OkCancel
Simple example: WN Test case design Test case IDEC IDx1x2Expected Results WN1EC1, EC45611 WN2EC2, EC WN3EC3, EC Valid EC: Ec1 = {x1: 5=<x1< 10} Ec2= {x1: 10=<x1< 15} Ec3 = {x1: 15 <= x1 <= 20} Ec4 = {x2: 5 =<x2 <10} Ec5 = {x2: 10=< x2 <=20} x2 x
2) Strong Normal Testing : SN Test cases taken from each element of Cartesian product of the equivalence classes. Cartesian product guarantees notion of completeness. SN is a “multiple fault assumption” 8 x2 x1 f e ab c d g
Simple example: SN Test case design Test case IDEC IDx1x2Expected Results SN1EC1, EC45611 SN2EC1, EC SN3 EC2, EC SN4EC2, EC SN5EC3, EC SN6EC3, EC Valid EC: Ec1 = {x1: 5=<x1< 10} Ec2= {x1: 10=<x1< 15} Ec3 = {x1: 15 <= x1 <= 20} Ec4 = {x2: 5 =<x2 <10} Ec5 = {x2: 10=< x2 <=20} x2 x
3) Weak Robust Testing (WR) Robust - consideration of invalid values and extension to WN. Invalid inputs – each test case has one invalid value, single fault should cause failure as “single fault assumption”. Problems with robust EC Testing specification (expected output for invalid TC?) 10 x2 x1 f e ab c d g Additional consider in Invalid EC: Ec6 = {x1: x1 < a} Ec7 = {x1: x1 > d} Ec8 = {x2 : x2 < e} Ec9 = {x2 : x2 > g}
Simple example: WR Test case design 11 Test case IDEC IDx1x2Expected Results WR1EC1, EC45611 WR2EC2, EC WR3EC3, EC WR4EC6, EC448X1 is out of range WR5EC7, EC4238X1 is out of range WR6EC3, EC8184X2 is out of range WR7EC3, EC91823X2 is out of range
4) Strong Robust Testing :SR Robust - consideration of invalid values and extension to SN. Strong – multiple faults assumption. Test cases taken from each element of Cartesian product of the Valid EC and Invalid EC 12 x2 x1 f e ab c d g
Triangle Program (Simple) Input 3 integers: a, b, c are side of triangle that have boundaries a, b, c are [1,200]. Output is type of triangle o Equilateral o Isosceles o Scalene o Not a Triangle 13
WN Test case design Triangle Program (Simple) Valid EC EC1: 1<=a<= 200 EC2: 1<=b<=200 EC3: 1<=c<= Test CaseEC IDabcExpected Results WN1EC1,2, Scalene
SN Test case design Triangle Program (Simple) Valid EC EC1: 1<=a< 200 EC2: 1<=b<=200 EC3: 1<=c<= Test CaseECabcExpected Results SN1 EC1,2, Scalene
Equivalence Class : Triangle Problem (Output) Using output from specification translate into Equivalence Class (EC) 4 possible outputs: Equilateral, Isosceles, Scalene, and Not a Triangle 4 output equivalence classes: o Ec1 = { : the triangle with sides a, b and c is equilateral} o Ec2 = { : the triangle with sides a, b and c is Isosceles} o Ec3 = { : the triangle with sides a, b and c is Scalene) } o Ec4 = { : the triangle with sides a, b and c is Not a Triangle} 16
Weak Normal(WN)/ Strong Normal(SN) Test Cases: Triangle Program Test Case ID ECabcExpected Results OWN1EC1 555 Equilateral OWN2EC2 223 Isosceles OWN3EC3 345 Scalene OWN4EC4 412 Not a Triangle 17
Weak Robust(WR) Test Cases: Triangle Program Consideration Invalid EC with WN EC5: a> 200 EC6: a < 1 EC7: b>200 EC8: b < 1 EC9: c>200 EC10: c<1 18
Weak Robust(WR) Test Cases: Triangle Program 19 Test Case ID ECabcExpected Results WN1 …WN4 WR1EC6 55 a not in range WR2EC8 55 b not in range WR3EC10 55 c not in range WR4EC a not in range WR5EC b not in range WR6EC c not in range
Strong Robust(SR) Test Cases: Triangle Program 20 Test CaseabcExpected Results WN1 …WN4 SR1 55 a not in range SR2 55 b not in range SR3 55 c not in range SR4 5 a, b not in range SR5 5 b, c not in range SR6 5 a, c not in range SR7 a, b, c not in range
Improved EC: Triangle Program Improved EC Input classes for each type of triangle: ▫ EC1 = { : a=b=c} ▫ EC2 = { : a=b, a ≠ c} ▫ EC3 = { : a=c, a ≠ b} ▫ EC4 = { : b=c, a ≠ b} ▫ EC5 = { : a ≠ b, a ≠ c, b ≠ c } Extra design of input classes: Check every side of triangle as not a triangle ▫ EC6 = { : b + c <= a} ▫ EC7 = { : a + c <= b} ▫ EC8 = { : a + b <= c} 21
Equivalence Classes(EC) : NextDate Problem Valid EC o M1 = {month: 1 =< month =<12} o D1 = {day: 1 =< day =< 31} o Y1 = {year: 1812 =< year =< 2012} Invalid EC o M2 = {month: month <1} o M3 = {month: month >12} o D2 = {day: day <1} o D3 = {day: day >31} o Y2 = {year: year < 1812} o Y3 = {year: year > 2012} 22
Weak Normal and Strong Normal Test Cases: NextDate Problem 23 Test CaseMonthDayYearExpected Results WN1, SN /16/1912
Weak Robust Test Cases: The NextDate Problem 24 Test Case ID MonthDayYearExpected Results WN /16/1912 WR Month not in range 1…12 WR Month not in range 1…12 WR Day not in range 1…31 WR Day not in range 1…31 WR Year not in range 1812…2012 WR Year not in range 1812…2012
Strong Robust Test Cases: The NextDate Problem 25 Test CaseMonthDayYearExpected Results WN /16/1912 SR month not in range 1…12 SR day not in range 1…31 SR year not in range 1812…2012 SR month not in range 1…12 day not in range 1…31 SR day not in range 1…31 year not in range 1812…2012 SR month not in range 1…12 year not in range 1812…2012 SR month not in range 1…12 day not in range 1…31 year not in range 1812…2012
Improved Input Equivalence Classes: NextDate Problem M1 = {month: month has 30 days} M2 = {month: month has 31 days} M3 = {month: month = February} D1 = {day: 1 =< day =< 28} D2 = {day: day = 29} D3 = {day: day = 30} D4 = {day: day = 31} Y1 = {year: year is leap year} Y2 = {year: year is common year } 26
Input Equivalence Class: The Commission Problem Valid EC L1 = {lock: 1 =< locks =< 70} S1 = {stocks: 1=< stocks =< 80} B1 = {barrels: 1 =< barrels =< 90} Invalid EC L2 = {locks: locks <1} L3 = {locks: locks > 70} S2 = {stocks: stocks < 1} S3 = {stocks: stocks > 80} B2 = {barrels: barrels <1} B3 = {barrels: barrels >90} 27
Strong Robust Test Cases: Commission Problem 28 Test Case IDLocksStocksBarrelsExpected Results SR SR Locks not in range 1…70 SR Stocks not in range 1…80 SR Barrels not in range 1…90 SR5 45 Locks not in range 1…70 Stocks not in range 1…80 SR6 40 Locks not in range 1…70 Barrels not in range 1…90 SR7 35 Stocks not in range 1…80 Barrels not in range 1…90 SR8 Locks not in range 1…70 Stocks not in range 1…80 Barrels not in range 1…90
Using output to Equivalence Classes Test Cases: Commission Problem Sales = 45 * locks +30 * stocks + 25 * barrels o S1 = { : sales =<1000} o S2 = { : 1000 < sales =<1800} o S3 = { : sales > 1800 } 29 Test Case ID LocksStocksBarrelsSalesCommission (Expected Results) OWN OWN OWN How to design WN Test Case??
Specification of Commision Sales = 45*Locks + 30*Stock + 25*barrels if sales <= 1000 commission = 10% * sales if sales > 1000 commission = 10%* %*(sales – 1000) if > 1800 commission = 10%* %* %* (sales-1800) 30
Summary of EC Testing Normal (Valid)Robust (Valid +Invalid) Weak Normal Testing Strong Normal Testing Weak Robust Testing Strong Robust Testing 31 Single fault (1 EC)Multiple fault (1 EC+) Weak Normal Testing Weak Robust Testing Strong Normal Testing Strong Robust Testing Single fault vs Multiple fault assumption Normal vs Robust