康玲复习等价类划分三角形问题重新思考NextDate问题练习作业等价类划分法的思想?什么是等价类?等价类的类型?等价类划分法的步骤?针对是否对无效数据进行测试,可以将等价类测试分为两种:标准等价类测试(也称,一般等价类测试)健壮等价类测试不考虑无效数据值,测试用例使用每个有效等价类中的一个值;通常,标准等价类测试用例的数量和最大有效等价类中元素的数目相等。出发点考虑了无效等价类;对有效输入,测试用例从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取有效值;存在问题:规格说明往往没有定义无效测试用例的期望输出,因此需要定义这些测试用例的期望输出;某函数F有两个变量x1,x2.要求两输入变量的取值范围如下:a≤x1≤d,区间为[a,b],(b,c),[c,d]e≤x2≤g,区间为[e,f),[f,g]x1,x2的无效区间为:x1a,x1d;x2e,x2g请用等价类划分法设计测试用例特点:不考虑无效数据,测试用例使用每个等价类中的一个值——覆盖所有有效等价类弱标准等价类测试abcdefgx2x1特点:每一个有效等价类要对应至少一个测试用例——覆盖所有有效等价类的组合强标准等价类测试abcdefgx2x1特点:对于有效输入,使用每个有效类的一个值对于无效输入:测试用例只使用一个无效值,其余值都是有效的弱健壮等价类测试abcdefgx2x1特点:每个有效等价类和无效等价类都至少要选择一个测试用例强健壮等价类测试abcdefgx2x1划分法特点弱标准等价类测试不考虑无效等价类,选取的测试用例只需覆盖到有效等价类。强标准等价类测试不考虑无效等价类,选取测试用例时,要根据等价类笛卡儿积,各有效区间的组合都要覆盖到弱健壮等价类测试基于单缺陷假设,考虑无效等价类,选取的测试用例要覆盖每一个有效等价类和无效等价类,但时不能同时覆盖两个无效等价类。强健壮等价类测试每个无效等价类和有效等价类的组合都要覆盖到,考虑所有的有效和无效情况。输入三个整数a,b,c,分别作为三角形的三条边,现通过程序判断三条边构成三角形的类型为:一般三角形等边三角形等腰三角形不构成三角形现在要求输入的三个整数必须满足以下条件:条件1:1≤a≤100条件2:1≤b≤100条件3:1≤c≤100条件4:a+bc条件5:a+cb条件6:b+ca三角形问题如果输入值不满足这些条件中的任何一个,程序给出相应的信息,如:”a的取值不在允许范围内”若a,b,c满足条件1,2,3,则输出下列情况之一:若不满足条件4,5,6中的一个,则输出”非三角形”若三条边相等,则输出“等边三角形”若恰好有两条边相等,则输出“等腰三角形”如果三条边不相等,则程序输出“一般三角形”弱标准等价类测试编号[a,b,c]期望输出WN1WN2WN3WN4523452415352等边三角形等腰三角形不等边三角形不构成三角形编号[a,b,c]期望输出WR1WR2WR3WR4WR5WR6WR7-15510155505-1551015155-155190a不在允许的取值范围内b不在允许的取值范围内c不在允许的取值范围内a不在允许的取值范围内b不在允许的取值范围内c不在允许的取值范围内不构成三角形弱健壮等价类测试强健壮等价类测试编号[a,b,c]期望输出SR1SR2SR3SR4SR5SR6SR7…-155-15-1-1…5-15-1-15-1…55-15-1-1-1…a不在允许的取值范围内b不在允许的取值范围内c不在允许的取值范围内a,b不在允许的取值范围内b,c不在允许的取值范围内c,a不在允许的取值范围内a,b,c不在允许的取值范围内…有三个变量month,day,year的函数,输出为输入日期下一天的日期。如:输入为2007年7月19日,输出为2007年7月20日。要求三个变量都为整数,且满足:条件1:1≤month≤12条件2:1≤day≤31条件3:1912≤year≤2050NextDate函数YearMonthDay的有效值区间定义如下:M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤year≤2050}无效等价类是:M2={month1}M3={month12}D2={day1}D3={day31}Y2={year1912}Y3={year2050}弱标准等价类测试测试用例monthdayyear预期输出Test161520052005.6.16强标准等价类测试用例?测试用例MDY预期输出Test1Test2Test3Test4Test5Test6Test76-1136666151515-132151519122005200520052005191120511912.6.16month不在有效值内month不在有效值内day不在有效值内day不在有效值内year不在有效值内year不在有效值内弱健壮等价类测试测试用例MDY预期输出Test1Test2Test3Test4Test5Test6Test7…-166-16-1-1…15-115-1-115-1…1918191819112005191119111911…month不在有效值内day不在有效值内year不在有效值内month,day不在有效值内day,year不在有效值内month,year不在有效值内month,day,year不在有效值内…M1={month有30天}M2={month有31天}M3={month是2月}M4={month是12月}D1={1≤day≤27}D2={day=28}D3={day=29}D4={day=30}D5={day=31}Y1={year是闰年}Y2={year是平年}考虑对输入日期的处理测试用例monthdayyear预期输出Test1Test2Test3Test467261529303120001996200220002000.6.161996.7.302002.2.31不可能的日期2000.7.1(不可能的输入日期)测试用例monthdayyear预期输出Test1Test2Test3Test4Test5Test6Test7Test8Test9Test10Test11Test12Test13Test14Test156666666666667771515142929293030303131311514142000199620022000199620022000199620022000199620022000199620022000.6.161996.6.162002.6.152000.6.301996.6.302002.6.302000.6.31(不可能的日期)1996.6.31(不可能的日期)2002.6.31(不可能的日期)2000.7.1(无效输入)1996.7.1(无效输入)2002.7.1(无效输入)2000.7.161996.7.152002.7.15测试用例monthdayyear预期输出Test16Test17Test18Test19Test20Test21Test22Test23Test24Test25Test26Test27Test28Test29Test307777777772222222929293030303131311414142929292000199620022000199620022000199620022000199620022000199620022000.7.301996.7.302002.7.302000.7.311996.7.312004.7.312000.8.11996.8.12002.8.12000.2.151996.2.152002.2.152000.3.1(无效的输入日期)1996.3.12002.3.1不可能的日期测试用例monthdayyear预期输出Test31Test32Test33Test34Test35Test362226663030303131312000199620022000199620022000.3.1无效输入1996.3.1无效输入2002.3.1无效输入2000.7.1无效输入1996.7.1无效输入2002.7.1无效输入1.如果实现的语言是强类型语言(无效值输入会引起系统运行时出错),则没有必要使用健壮等价类测试.2.如果错误输入检查非常重要,则应进行健壮等价类测试.3.如果输入数据以离散区间或集合的形式定义,则等价类测试是合适的,当然也适用于变量值越界会造成故障的系统.4.在发现合适的等价关系之前,可能需要多次尝试.某城市电话号码由三部分组成。它们的名称和内容分别是:地区码:空白或三位数字;前缀:非‘0’或‘1’开头的三位数字;后缀:4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。多于3位数字少于3位数字有非数字字符空白3位数字地区码编号无效等价类编号有效等价类输入条件前缀200~999有非数字字符起始为’0’的三位数起始为’1’的三位数少于3位数字多于3位数字后缀4位数字有非数字字符少于4位数字多于4位数字341256789101112131415测试用例编号输入数据预期输出地区码前缀后缀1空白1234567接受(有效)21238059876接受(有效)320A1234567拒绝(无效)4332345678拒绝(无效)512342344567拒绝(无效)61232B31234拒绝(无效)71230131234拒绝(无效)81231231234拒绝(无效)9123231234拒绝(无效)1012323451234拒绝(无效)111232341B34拒绝(无效)1212323434拒绝(无效)1312323423345拒绝(无效)覆盖等价类1,3,42,3,456789101112131415保险公司计算保费费率的程序某保险公司的人寿保险的保费计算方式为:投保额×保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:年龄性别婚姻抚养人数20~3940~59其它MF已婚未婚1人扣0.5点最多扣3点(四舍五入取整)6点4点2点5点3点3点5点1.分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。1.年龄:一位或两位非零整数,值的有效范围为1~992.性别:一位英文字符,只能取值‘M’或’F’3.婚姻:字符,只能取值‘已婚’或‘未婚’4.抚养人数:空白或一位非零整数(1~9)5.点数:一位或两位非零整数,值的范围为1-992.根据(1)中的等价类表,设计能覆盖所有等价类的测试用例。有一个文本框要输入我们国家的身份证号,请设计相应的测试用例。