1、第二部分 功能性测试,问题1:三角形问题,接收三个整数a,b,c作为输入,用作三角形的边,程序输出由这三个边确定的三角形的类型:等边三角形、等腰三角形、不等边三角形、非三角形。,问题2:NextDate函数,输入三个变量(年、月、日),函数返回输入日期后面的那个日期。 1月份12 1日期31 1812 年2012,第三章 边界值测试,3.1 边界值分析,应遵循的原则: (1)如果输入条件规定了取值范围,或规定了值的个数,测试用例选择:范围的边界内,最小值,稍高于最小值,正常值,稍低于最大值,最大值。例1:程序的规格说明:“重量在1050公斤范围内的邮 件,其计算邮费”,测试用例选择:10公斤,
2、 10.01 公斤,25公斤,49.99公斤,50公斤例2:“某输入文件可包含1255个记录,”测试用例:1,2,120,254,255;,例:涉及两个变量的函数x1,x2 X1的取值:x1min,x1min+,x1nom,x1max-,x1max X2的取值: x2min,x2min+,x2nom,x2max-,x2max关键假设:“单缺陷”假设:缺陷极少是由两个或多个缺陷的同时发生引起的。,x1,x2,a,b,c,d,对于n变量函数,使除一个以外的所有变量取正常值,使剩余的那个变量取最小值、略高于最小值、正常值、略低于最大值、最大值,对每个变量都重复进行。一个n变量函数的边界值有:4n+1
3、个测试用例?,(2)针对规格说明的每个输出条件使用(1)原则。 (3)如果规格设计中提到的输入输出是个有序的集合(如顺序文件表格等),就应注意选取有序集中的第一个和最后一个元素作为测试用例。 (4)分析规格说明,找出其它的可能边界条件。,边界值分析的局限性 N个变量相互独立 不考虑变量的语义,3.2 健壮性测试,是边界值分析的一种简单扩展,除了使用五个边界值分析取值,还要通过采用一个略超过最大值的取值,以及一个略小于最小值的取值。一个n变量函数的健壮性测试用例有多少个?(基于“单缺陷”假设)6n+1,x1,x2,a,b,c,d,3.3 最坏情况测试,对每一个变量,首先进行包含最小值、略高于最小
4、值、正常值、略低于最大值、最大值五个元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例。n变量函数的最坏情况测试会产生5n个测试用例?,x1,x2,a,b,c,d,X1的取值:x1min,x1min+,x1nom,x1max-,x1max X2的取值: x2min,x2min+,x2nom,x2max-,x2max,健壮最坏情况测试,对每一个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,还要采用一个略超过最大值的取值,以及一个略小于最小值的取值。然后对这些集合进行笛卡尔积计算,以生成测试用例。n变量函数的健壮最坏情况测试会产生多少个测试用例
5、?7n,x1,x2,a,b,c,d,X1的取值:x1min-,x1min,x1min+,x1nom,x1max- x1max,x1max+ X2的取值:X2min- x2min,x2min+,x2nom,x2max- x2max,X2max+,3.4 特殊值测试,使用领域知识、使用类似程序的经验开发测试用例的特殊值,3.5 举例三角形问题,边界值分析的测试用例,最坏情况测试用例(5n),NextDate问题,最坏情况的测试用例,3.6 随机测试,使用随机数生成器选出测试用例,作业1,编程序实现边界值测试用例的自动生成 以三角形问题为例, 能够接收每一个变量的值域的输入 自动生成边界值测试用例
6、并输出预期结果23人为一组完成3月17日之前网上提交,第四章 等价类测试,4.1 等价类划分,等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。 在分析需求规格说明的基础上划分等价类,列出等价类表。,等价类是指某个输入域的集合。 如果用集合中的一个输入条件作为测试数据进行测试不能发现程序中的错误,那么使用集合中的其它输入条件进行测试也不可能发现错误。 对揭露程序中的错误来说,集合中的每个输入条件是等效的。,有效等价类:有效等价类指的是对程序的规格说明是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以有一个,也可以是多个。 无效等价
7、类:无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。,4.2 确定等价类原则,如果输入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。输入条件:项数可以从1到999 有效等价类为 “1 项数 999” 无效等价类为 “项数999” 值的个数 “学生选课允许2门至4门”有效等价类: 选课2至4门无效等价类: 只选一门课或未选课选课超过4门,输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。 例:“标识符以字母开头”有效等价类: 以字母开头的字符串无效等
8、价类: 以非字母开头的字符串如果确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划小。,4.3 确定测试用例,设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,最终使得所有有效等价类均被覆盖。设计一个测试用例,使其只覆盖一个无效等价类,重复这一步,最终使得所有无效等价类均被覆盖。,有效等价类,覆盖有效等价类的测试用例: a b c 覆盖等价类号码 3 4 5 (1)-(7) 4 4 5 (1)-(7),(8) 4 5 5 (1)-(7),(9) 5 4 5 (1)-(7),(10) 4 4 4 (1)-(7),(11),无效等价类,4.4 弱一般等价类,两
9、变量x1, x2的函数 ax1d, 区间 a, b), b, c), c, d ex2g, 区间 e, f), f, g弱一般等价类:使用一个测试用例中的每个等价类(区间)的一个变量实现(单缺陷假设)。,x1,x2,a,b,e,g,f,c,d,三个测试用例使用每个等价类中的一个值,强一般等价类,基于多缺陷假设,需要等价类笛卡尔积的每个元素对应的测试用例ax1d, 区间 a, b), b, c), c, d ex2g, 区间 e, f), f, g,x1,x2,a,b,e,g,f,c,d,ax1d, 区间 a, b), b, c), c, d ex2g, 区间 e, f), f, g 覆盖所有等
10、价类 对可能的输入组合,弱健壮等价类,弱:基于单缺陷假设 健壮:考虑无效值对有效输入,使用每个有效等价类的一个值 对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的。,x1,x2,a,b,e,g,f,c,d,ax1d, 区间 a, b), b, c), c, d ex2g, 区间 e, f), f, g,强健壮等价类,基于多缺陷假设,从所有等价类的笛卡尔积的每一个元素中获得测试用例。,ax1d, 区间 a, b), b, c), c, d ex2g, 区间 e, f), f, g,x1,x2,a,b,e,g,f,c,d,ax1d, 区间 a, b), b, c), c, d ex2g, 区间 e, f), f, g,4.5 举 例三角形问题,输出等价类 R1=:有三条边的等边三角形 R2=:有三条边的等腰三角形 R3=:有三条边的不等边三角形 R4=:三条边的不构成三角形,弱一般等价类,弱健壮等价类,NextDate问题,三变量的有效区间 M1 =月份:1月份12 D1 =日期:1日期31 Y1 =年:1812年2012 无效等价类 M2 =月份:月份1 M3 =月份:月份12 D2 =日期:日期 1 D3 =日期:日期 31 Y2 =年:年 1812 Y3 =年:年 2012,弱一般等价类弱健壮测试用例,