黑盒测试黑盒测试边界值测试边值分析¾在软件设计和程序编写中,常常对于规格说明中的输入域边界或输出域边界不够注意,以致形成一些差错。出域边界不够注意,以致形成些差错。¾实践证明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附件的处理专门设计测试用例,常常取得良好的测试效果测试效果边界值分析是一种补充等价划边界值分析是种补充等价划分的测试用例设计技术。BVA不仅注重于输入条件,而且也从仅注重于输入条件,而且也从输出域导出测试用例。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.边界值分析遵循的原则①如果输入条件规定了取值范围,或是规定了值的个数,应以该范围的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小个的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小个数以及稍小于最小、稍大于最大个数作为测试用例。例如如果程序的规格说明中规定“重量在公斤至公斤范围例如:如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……”。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。如果另一规格说明规定:“某输入文件可包含1至255个记录,……”,则测试用例可取1和255,还应取0及256。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.边界值分析遵循的原则②针对规格说明的每个输出条件使用前面的第①条原则。例如:某程序的规格说明要求计算出“每月保险金扣除额为0至1165.25元”,其测试用例可取0.00及1165.2,还可取-0.01及等1165.26等。如果另一程序属于情报检索系统,要求每次“最多显示1条情报摘要”,这是我们应考虑测试是用例包括1和4,还应包括0和5等。要,这是我们应考虑测试是用例包括1和4,还应包括0和5等。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.边界值分析遵循的原则③如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件、表格等),就应注意选取有序集的第一个和最后一个元素作文件、表格等),就应注意选取有序集的第个和最后个元素作为测试用例。④分析规格说明,找去其他的可能边界条件。使用特殊值作为边界值使用特殊值作为边界值测试用例的补充,会更有效Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.例子某一为学生考试试卷评分和成绩统计的程序,其规格说明指出了对程序的要求:程序的要求:a)标题这一组只有一个记录,其内容为输出报告的名字。b)试卷各题标准答案记录每个记录均在第80个字符处标以数字“2”。该组的第一个记录的第1至第3个字符为题目编号(取值为“1--999”)第10至第59个字1至第3个字符为题目编号(取值为1--999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3个记录相应为第51至第100,第101至第150的答案。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.例子c)每个学生的答卷描述该组中每个记录的第80个字符均为数字每个学生的答卷在若干个该组中每个记录的第80个字符均为数字。每个学生的答卷在若干个记录中给出。如:甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50则第2第3记录分别给出他的第51至第100第101至第超过50,则第2,第3记录分别给出他的第51至第100,第101至第150……题的答案。然后是学生乙的答案记录。若学生最多为200人,输入数据的形式如图所示Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.例子•学生考卷评分和成绩统计程序输入数据的形式:标题1801~50标准答案51~100标准答案题目编号2239105960807951100标准答案1~50题甲学生答案学生甲姓名及学号3505110010180791~50题甲学生答案51~100题甲学生答案学生甲姓名及学号3391059605051100101807980791~50题乙学生答案学生乙姓名及学号35051100101807980799105960Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.80799105960例子¾该程序应给出4个输出报告,即:①按学生学号排序,每个学生的成绩(答对的百分比)和等级报告。②按学生得分排序,每个学生的成绩。③平均分数最高与最低分之差③平均分数,最高与最低分之差。④按题号排序每题学生答对的百分比④按题号排序,每题学生答对的百分比。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.例子•按输入条件编写测试用例:输入条件输入文件测试用例空输入文件输入文件空输入文件标题无标题记录只有1个字符的标题具有80个字符的标题出了1个题出题个数出了1个题出了50个题出了51个题出了100个题出了99个题出了99个题没有题题目是非数值量学生人数学生人数为0学生人数为学生人数学生人数为1学生人数为200学生人数为201学生答卷(1)某学生只有1个答案记录,但有两个标准答案记录学生答卷(1)该学生是文件中第1个学生该学生是文件中最后一个学生学生答卷(2)某学生有2个答案记录,但只有1个标准记录该学生是文件中第1个学生Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.该学生是文件中第1个学生该学生是文件中最后一个学生例子•按输出条件编写测试用例:输出条件测试用例所有学生得分相同学生得分所有学生得分相同所有学生得分均不相同一些学生(非全部)得分相同(用以计算等级)1个学生得0分1个学生得100分输出报告1个学生编号最小(检查排序)1个学生编号最大学生数恰好使报告打印满1页(检查打印)1个学生得100分(1)、(2)学生数使报告1页打印不够,恰好多1人平均值取最大值(所有学生得满分)平均值为0(所有学生都得0)标准偏差取最大值(1学生得0分1学生得100分)输出报告(3)标准偏差取最大值(1学生得0分,1学生得100分)标准偏差相同(所有学生得分相同)输出报告所有学生都答对第1题所有学生都答错第1题输出报告(4)所有学生都答错第1题所有学生都答对最后1题所有学生都答错最后1题题数恰好使报告打印在1页上题数使报告打印1页不够恰好多出1道题Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.题数使报告打印1页不够,恰好多出1道题边界值分析的局限性•如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则很适合边界值分析法。则很适合边界值分析法。•但如果程序中的函数之间有较强的依赖关系,则边界值分析法设计测试用例显然不够充分。也就说边值分析试用例过引用物量的边独立变量极•也就是说边界值分析测试用例是通过引用物理量的边界独立变量极值导出,不考虑函数的性质,也不考虑变量的语义含义。•也可以把边界值分析测试用例看作是初步的,因为这些测试用例的也可以把边界值分析测试用例看作是初步的,因为这些测试用例的获得基本没有利用理解和想象。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.特殊值测试•特殊值也是运用得很广泛的一种功能测试。•当测试人员试用领域知识使用类似程序的经验开发测试用例时就•当测试人员试用领域知识、使用类似程序的经验开发测试用例时就会出现特殊值,我们也把这种测试叫做“特别测试”。不使用测试方针,只使用“最佳工程判断”,特殊值测试特别依赖于测试人员的能力的能力。•尽管特殊值测试是高度主观性的,但是所产生的测试用例集合,常常比用我们已经研究过的其他方法生成的测试集合,更能有效地发现缺陷,这也说明了软件测试的工艺性质。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.黑盒测试黑盒测试等价类测试概述•等价划分设计方法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数有代表性的数为若干部分(子集),然后从每个子集中选取少数有代表性的数据作为测试用例。•等价类是指某个输入域的子集合,其中各个输入数据对于揭露程序中的错误都是等效的中的错误都是等效的整个集合这个事实提供了一种形式的完备性,而互不相交可保证一种新式的无冗余性。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.等价类划分原则•可以把全部输入数据合理化分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据取个数据作为测试的输入条件,就可以用少量代表性的测试数据取得较好的测试结果。等价类划分分为种的情有效等价类效等价类等价类划分分为两种不同的情况:有效等价类和无效等价类。¾有效等价类¾有效等价类•由那些对于程序的规格说明是合理的和有意义的输入数据构成的集合,利用它可以检验程序是否实现了预期的功能和性能;¾无效等价类•有那些对于程序的规格说明是不合理的和无意义的输入数据构成的集合,利用它可以检验程序对于无效数据的处理集合,利用它可以检验程序对于无效数据的处理Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.有效等价类和无效等价类¾有效等价类•由那些对于程序的规格说明是合理的和有意义的输入数据构成的集•由那些对于程序的规格说明是合理的和有意义的输入数据构成的集合;•利用它可以检验程序是否实现了预期的功能和性能;¾无效等价类•有那些对于程序的规格说明是不合理的和无意义的输入数据构成的集合;集合;•利用它可以检验程序对于无效数据的处理在设计用例时,在设计用例时,要同时考虑这两种情况Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.等价类划分规则1)如果输入条件规定了取值范围或值得个数,确定一个有效等价类和两个无效等价类。两个无效等价类。•输入条件:…项数可以从1到999…•---有效等价类为:“1=项数=999”•---无效等价类为:“项数1”及“项数999”值的个数“学生选课允许2门至4门”•值的个数:“学生选课允许2门至4门”•---有效等价类:选课2门至4门•---无效等价类:只选1门或未选课,选课超过4门无效等价类:只选门或未选课,选课超过门Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.等价类划分规则2)输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。则可确定个有效等价类和个无效等价类。例:•“必须如何”“标识符以字母开头”•--有效等价类以字母开头的字符串•--无效等价类以非字母开头的字符串3)如果确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划小。Confidential©2007iSoftStoneHoldingsLtd.AllRightsReserved.确定测试用例等价划分法确定测试用例的步骤:•1)为每个等价类分配唯一的编号•2)设计一个测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有的有效等价类都被覆盖为止•3)设计一个测试用例,