黑盒测试——等价类划分穷尽的黑盒测试需要使用所有有效的和无效的输入数据来测试程序,通常这是不现实的。因此,只能选取少量有代表性的输入数据,以期用较小的代价暴露出较多的程序错误。本章重点:等价类划分测试边界值分析决策表测试因果图测试黑盒-等价类测试等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。划分是互不相交的一组子集,这些子集的并是整个集合对揭露程序中的错误来说,集合中的每个输入条件是等效的。如果用集合中的一个输入条件作为测试数据进行测试不能发现程序中的错误,那么使用集合中的其它输入条件进行测试也不可能发现错误。例如:比如边界值(5,5,5)和边界值(9,9,9)输出结果都为等边三角形,而不可能出现不同的结果黑盒--等价类测试意义域一域二域N将输入域(输出域)划分为若干互不相交的子集(避免冗余),在每个子集(域)中选择典型的数据进行测试,则整个等价类的并即是整个域(完备测试)进行测试测试意义:完备测试避免冗余有效等价类:有效等价类指的是对程序的规格说明是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以有一个,也可以是多个。无效等价类:无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。黑盒测试-划分等价类黑盒测试-确定等价类1.按区间划分:如果输入条件规定了取值范围(或值的个数),则可确定一个有效等价类和两个无效等价类。输入条件(需求规格说明):…项数可以从1到999…有效等价类为“1≤项数≤999”无效等价类为“项数1”及“项数999”(需求规格说明)值的个数:学生选课允许2门至4门”有效等价类:选课2至4门无效等价类:只选一门课或未选课或选课超过4门2.按数值集合划分:输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。例:“标识符以字母开头”有效等价类:以字母开头的字符串M135无效等价类:以非字母开头的字符串135“输入四个直辖市之一”有效等价类:北京无效等价类:广州3.按限制条件或规则细分等价类:如果确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划小。黑盒测试-确定测试用例1、规定测试用例编号2、设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,最终使得所有有效等价类均被覆盖。3、设计一个测试用例,使其只覆盖一个无效等价类,重复这一步,最终使得所有无效等价类均被覆盖。(若用一个测试用例检测多个无效等价类,则某个无效等价类可能永远不会被检测到,)例如:需求规定“每类科技参考书50-100册……”如果一个测试用例为“文艺书籍10册”,在测试中可能检测出书的类型错误,而忽略了书的册数错误弱一般等价类弱一般等价类:使用一个测试用例中的每个等价类(区间)的一个变量实现(不考虑无效数据值,测试用例使用每个等价类中的一个值称为单缺陷假设)。若F实现为一个程序,输入两变量x1,x2拥有以下边界a«x1«d,区间[a,b),[b,c),[c,d]e«x2«g,区间[e,f),[f,g]X1无效值X1aX1dx2无效值X2eX2gx1x2abegfcd使用一个测试用例中的每个等价类(区间)的一个变量实现强一般等价类(补充)基于多假设缺陷,需要等价类笛卡尔积的每个元素对应的测试用例a«x1«d,区间[a,b),[b,c),[c,d]e«x2«g,区间[e,f),[f,g]x1x2abegfcda«x1«d,区间[a,b),[b,c),[c,d]e«x2«g,区间[e,f),[f,g]弱健壮等价类弱:基于单缺陷假设健壮:考虑无效值对有效输入,使用每个有效等价类的一个值对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的(单缺陷)。x1x2abegfcda«x1«d,区间[a,b),[b,c),[c,d]e«x2«g,区间[e,f),[f,g]强健壮等价类(补充)基于多缺陷假设,从所有等价类的笛卡尔积的每一个元素(包括无效值)中获得测试用例。a«x1«d,区间=a,[a,b),[b,c),[c,d],=de«x2«g,区间=e,[e,f),[f,g],=gx1x2abegfcda«x1«d,区间[a,b),[b,c),[c,d]e«x2«g,区间[e,f),[f,g]弱一般等价类(教材称标准等价类)弱:考虑单缺陷有效值;一般:考虑有效值;强一般等价类(补充)强:考虑多缺陷有效值(笛卡儿积)一般:考虑有效值弱健壮等价类(教材称健壮等价类)弱:基于单缺陷假设;健壮:考虑无效值强健壮等价类(补充)强:考虑多缺陷(笛卡儿积);健壮:考虑无效值例1:报表日期设某公司要打印2001~2005年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。第一步:划分等价类输入及外部条件有效等价类无效等价类报表日期的类型及长度6位数字字符①有非数字字符④少于6个数字字符⑤多于6个数字字符⑥年份范围在2001~2005之间②小于2001⑦大于2005⑧月份范围在1~12之间③小于1⑨大于12⑩第二步:为有效等价类设计测试用例对表中编号为①②③的3个有效等价类用一个测试用例覆盖:测试数据期望结果覆盖范围200105输入有效等价类①②③第三步:为每一个无效等价类至少设计一个测试用例测试数据期望结果覆盖范围001MAY输入无效等价类④20015输入无效等价类⑤2001001输入无效等价类⑥20000输入无效等价类⑦20080输入无效等价类⑧200100输入无效等价类⑨200113输入无效等价类⑩本例的10个等价类至少需要8个测试用例不能出现相同的测试用例对招干考试系统“输入学生成绩”子模块设计测试用例招干考试分三个专业,准考证号第一位为专业代号,如:1-行政专业,2-法律专业,3-财经专业.行政专业准考证号码为:110001~111215法律专业准考证号码为:210001~212006财经专业准考证号码为:310001~314015例:例2:准考证号码例:准考证号码的等价类划分有效等价类:(1)110001~111215(2)210001~212006(3)310001~314015无效等价类:(4)-~110000(5)111216~210000(6)212007~310000(7)314016~+例3电话号码城市的电话号码由两部分组成。这两部分的名称和内容分别是:地区码:以0开头的三位或者四位数字(包括0);电话号码:以非0、非1开头的七位或者八位数字。假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。划分等价类并编号输入数据有效等价类无效等价类地区码1.以0开头的3位数串2.以0开头的4位数串3.以0开头的含有非数字字符的串4.以0开头的小于3位的数串5.以0开头的大于4位的数串6.以非0开头的数串电话号码7.以非0、非1开头的7位数串8.以非0、非1开头的8位数串9.以0开头的数串10.以1开头的数串11.以非0、非1开头的含有非法字符7或者8位数串12.以非0、非1开头的小于7位数串13.以非0、非1开头的大于8位数串为有效等价类设计测试用例测试数据期望结果覆盖范围01023145678显示有效输入1、80232234567显示有效输入1、708513456789显示有效输入2、7085123145678显示有效输入2、8为每一个无效等价类至少设计一个测试用例测试数据期望结果覆盖范围0a3423456789显示无效输入30523456789显示无效输入40123423456789显示无效输入5234123456789显示无效输入602801234567显示无效输入902812345678显示无效输入10028qw123456显示无效输入11028623456显示无效输入12028886234569显示无效输入13