1、软件测试,第3章 黑盒测试方法 边界值分析法,目 录,为什么使用边界值分析法,第一部分:复习,等价类划分法,弱一般等价类测试,强一般等价类测试,弱健壮等价类测试,强健壮等价类测试,边界值分析法概要,边界值分析法就是 对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。,为什么使用边界值分析法?,无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。 例如,一个循环条件为“”时,却错写成“”;计数器发生少计数一次。,边界值分
2、析测试的基本思想,故障往往出现在输入变量的边界值附近。例如,一个循环条件为“”时,却错写成“”;计数器发生少计数一次。 基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说软件失效基本上是由单故障引起的。,怎样用边界值分析法设计测试用例?,(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。 (2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。,边界值分析法设计测试用例,假设有两个变量x和y的程序,x、y在下列范围内取值:axb cyd 区间a,b和c,d是x、y的值域,程序
3、F的输入定义域图所示,即带阴影矩形中的任何点都是程序F的有效输入。,有两个变量x、y的程序的输入域,有两个输入变量的程序F的边界值分析(标准性测试)测试用例:,; ; ; ;,; ; ; ;,;,标准性(一般性)测试,对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-、max值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生4n+1个测试用例。,练习1:,有二元函数f(x,y),其中x1,12,y1,31。 则采用边界值分析法设计的测试用例是:, , , , , , , , , , ,健壮性测
4、试,边界值分析测试的一种扩展,除了取5个边界值外,还需要考虑采用一个略超过最大值(max+)及略小于最小值(min-)的取值,检查超过极限值时系统的情况 健壮性测试最有意义的部分不是输入,而是预期的输出,健壮性测试,对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、min-,nom、max-、max, max+值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生6n+1个测试用例。,有两个输入变量的程序F的边界值分析(弱健壮性测试)测试用例:,; ; ; ; ; ,; ; ; ; ; ;,;,练习2:,有函数f
5、(x,y,z),其中x1900,2100,y1,12,z1,31的。请写出该函数采用边界值分析法设计的测试用例。 , , , , , , , , , , , , ,NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:条件1 1 month 12条件2 1 day 31条件3 1912 year 2050,问题:NextDate函数,NextDate函数的边界值分析测试用例,常见的边界值,对16-bit 的整数而言 32767 和 -32768 是边界 屏幕上光标在最左上、最右下位
6、置 报表的第一行和最后一行 数组元素的第一个和最后一个 循环的第 0 次、第 1 次和倒数第 2 次、最后一次,边界值分析法的原则,1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为“。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。,边界值分析法的原则,2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。 比如,一个输入文件应包括1255个记录,则测试用
7、例可取1和255,还应取0及256等。,边界值分析法的原则,3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。 例如,某程序的规格说明要求计算出“每月保险金扣除额为0至1165.25元“,其测试用例可取0.00及1165.24、还可取一0.01及116526等。 再如一程序属于情报检索系统,要求每次“最少显示1条、最多显示4条情报摘要“,这时我们应考虑的测试用例包括1和4,还应包括0和5等。,边界值分析法的原则,4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。5)如果程序中使用了一个内部数据结构,则应当选
8、择这个内部数据结构的边界上的值作为测试用例。 6)分析规格说明,找出其它可能的边界条件。,3、最坏情况测试,边界值分析采用可靠性理论中的单缺陷假设,如果不考虑这种假设,那么,应该关心当多个变量取极值时会出现什么情况。,最坏情况测试,使用这种思想生成最坏情况的测试用例,首先对每个变量进行包含最小值min,略高于最小值min+,正常值nom,略低于最大值max-和最大值max五个元素集合的测试,然后对这些集合进行笛卡儿积计算,以生成测试用例。,最坏情况测试,最坏情况测试,最坏情况测试比边界值分析测试以及健壮性测试要彻底,边界值分析测试用例是最坏情况测试用例的真子集。 N变量函数的最坏情况测试,会产
9、生5n个测试用例,而边界值分析只产生4n+1个测试用例,健壮最坏情况测试,首先对每个变量进行包含略小于最小值min-,最小值min,略高于最小值min+,正常值nom,略低于最大值max-,最大值max,和略大于最大值max+,七个元素集合的测试,然后对这些集合进行笛卡儿积计算,以生成测试用例。,健壮最坏情况测试,习题:,找零钱最佳组合假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。,Thank You !,