软件测试 第3章 黑盒测试及其用例的设计
3.5 边界值分析法 单故障理论、健壮性测试 讨论总结:(概念、使用目的,使用原因,边界值与等价类法的对比) 3.5 边界值分析法 单故障理论、健壮性测试 讨论总结:(概念、使用目的,使用原因,边界值与等价类法的对比) 考虑边界:普通边界值、内部边界值,错误猜测 综合练习
边界值分析法可靠性理论: “单故障”的假设:有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。
3.5.2 边界值分析法测试用例 采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。
3.5.2 边界值分析法测试用例 由《单故障理论》, 在边界值分析法中获取测试用例的方法是: 3.5.2 边界值分析法测试用例 由《单故障理论》, 在边界值分析法中获取测试用例的方法是: (1) 每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。 (2) 对程序中的每个变量重复 (1) 。
边界值分析法测试用例(续) 例1:有二元函数f(x,y),其中x∈[1,12],y∈[1,31]。 写出采用边界值分析法设计的测试用例
边界值分析法测试用例(续) 例2:有函数f(x,y,x),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。请写出该函数采用边界值分析法设计的测试用例。 推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。
健壮性测试 除了对变量的边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。 对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。
健壮性测试 有两个输入变量x1(a≤x1≤b)和x2(c≤x2≤d)的程序F的边界值健壮性测试如下图所示: 练习:请为例2中的函数f(x,y) :x∈[1,12],y∈[1,31]写出相应的健壮性测试用例。
常见等价类划分测试形式 针对是否对无效数据进行测试,可以将等价类测试分为 : 标准等价类测试——不考虑无效数据值,测试用例使用每个等价类中的一个值。 健壮等价类测试——主要的出发点是考虑了无效等价类。对无效输入,一个测试用例有一个无效值,其他均取 有效值。
讨论总结: 概念:对输入或输出的边界值进行测试的一种黑盒测试方法。 使用目的;使用原因 使用目的:作为对等价类划分法的补充。 使用原因:故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。
体会:边界值分析与等价类的区别 例:测试计算平方根的函数 ——输入:实数 ——输出:实数 ——规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息“平方根非法-输入值小于0”并返回0;
等价类划分: 输入 (i) >=0 和 (ii) <0 输出 (a) >=0 和 (b) Error 可以考虑作出如下划分: 输入 (i) >=0 和 (ii) <0 输出 (a) >=0 和 (b) Error
边界值分析: 划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例: 输入 {最小负实数} 输入 {绝对值很小的负数} 输入 0 输入 {绝对值很小的正数} 输入 {最大正实数}
3.5.1 边界值分析法设计测试用例 设计用例的步聚: (1)确定边界 (2)确定测试数据
常见的边界情况: 通常情况下,软件测试所包含的边界检验有几种类型: 字符、数值、空间、位置、质量、大小、速度、方位、尺寸等 相应地,以上类型的边界值应该在: 最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下
常见的边界值 对16-bit 的整数而言 32767 和 -32768 是边界 屏幕上光标在最左上、最右下位置 报表的第一行和最后一行 数组元素的第一个和最后一个 循环的第 0 次、第 1 次和倒数第 2 次、最后一次
边界值选择测试用例的原则 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。 如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。 将规则1)和2)应用于输出条件。
边界值选择测试用例的原则 如果程序的规格说明给出的输入域或输出域是有序集合 (如有序表、顺序文件等),则应选取集合中的第一个和 最后一个元素作为测试用例。 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。 分析程序规格说明,找出其它可能的边界条件。
软件评测师2007年5月上午第40题 用边界值分析法,假定X为整数,10≤X≤100,那么X在测试中应该取 为边界值。 A:X=10,X=100 B:X=9,X=10,X=100,X=101 C:X=10,X=11,X=99,X=100 D:X=9,X=10,X=50,X=100
内部边界值分析 在测试用例设计过程中,有些边界在软件内部,称为内部边界值条件或子边界值条件。 不需要呈现给用户的 用户是很难注意到的
内部边界值分析(次边界值) 主要有下面几种: 数值的边界值检验 字符的边界值检验 其他一些边界条件
数值的边界值检验 计算机数值运算的范围 项 范围或值 位(bit) 0 或 1 字节(byte) 0 ~ 255 字(word) 计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。 计算机数值运算的范围 项 范围或值 位(bit) 0 或 1 字节(byte) 0 ~ 255 字(word) 0~65535(单字)或 0~4294967295(双字) 千(K) 1024 兆(M) 1048576 吉(G) 1073741824
字符的边界值检验 字符 ASCII码值 空 (null) A 65 空格 (space) 32 a 97 斜杠 ( / ) 47 Z 90 在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。 字符 ASCII码值 空 (null) A 65 空格 (space) 32 a 97 斜杠 ( / ) 47 Z 90 48 z 122 冒号 ( : ) 58 单引号 ( ‘ ) 96 @ 64
错误猜测法 输入表为空 输入表只有一个元素 输入表的所有元素都相同 输入表已排好序。 凭直觉和经验,依据(1)列举出的可能犯的错误或错误易发情况的清单(2)来编写测试用例; 例:测试一个排序用的子程序,可以考虑: 输入表为空 输入表只有一个元素 输入表的所有元素都相同 输入表已排好序。
小结 在实际的测试用例设计中,需要结合基本边界值条件和内部边界值条件来设计有效的测试用例。
习题:找零钱最佳组合 假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。 请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。
找零钱最佳组合 一、 分 析 输 入 的 情 形 。 R > 100;0 < R < = 100;R <= 0 P > 100;R<= P <= 100;P < R 二、 分 析 输 出 情 形 。 N50 = 1;N50 = 0; 4 > N10 >= 1;N10 = 0; N5 = 1;N5 = 0; 4 > N1 >= 1;N1 = 0
找零钱最佳组合-可能的情况 R > 100 R <= 0 0 < R <= 100, P > 100 0 < R <= 100, P < R 0 < R <= 100, R <= P <= 100, RR = 50 0 < R <= 100, R <= P <= 100, RR = 49 0 < R <= 100, R <= P <= 100, RR = 10 0 < R <= 100, R <= P <= 100, RR = 9 0 < R <= 100, R <= P <= 100, RR = 5 0 < R <= 100, R <= P <= 100, RR = 4 0 < R <= 100, R <= P <= 100, RR = 1 0 < R <= 100, R <= P <= 100, RR = 0
找零钱最佳组合-测试用例 1. 货品价格 = 101 2. 货品价格 = 0 3.货品价格 = -1 4. 货品价格 = 100, 付款金额 = 101 5. 货品价格 = 100, 付款金额 = 99 6. 货品价格 = 50, 付款金额 = 100 7. 货品价格 = 51, 付款金额 = 100 8. 货品价格 = 90, 付款金额 = 100 9. 货品价格 = 91, 付款金额 = 100 10. 货品价格 = 95, 付款金额 = 100 11. 货品价格 = 96, 付款金额 = 100 12. 货品价格 = 99, 付款金额 = 100 13. 货品价格 = 100, 付款金额 = 100
3.5.3 边界值分析法测试举例 实例1 三角形问题的边界值分析测试用例 3.5.3 边界值分析法测试举例 实例1 三角形问题的边界值分析测试用例 在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1, 100] 。 说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测试用例前先设定取值的下限值和上限值。
测试用例 a b c 预期输出 Test 1 Test2 Test3 Test4 Test5 60 50 1 2 99 100 等腰三角形 等边三角形 非三角形 Test6 Test7 Test8 Test9 Test10 Test11 Test12 Test13
3.5.3 边界值分析法测试举例 实例2 NextDate函数的边界值分析测试用例 3.5.3 边界值分析法测试举例 实例2 NextDate函数的边界值分析测试用例 在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。
测试用例 mouth day year 预期输出 Test 1 Test2 Test3 Test4 Test5 Test6 Test7 6 15 1911 1912 1913 1975 2049 2050 2051 1911.6.16 1912.6.16 1913.6.16 1975.6.16 2049.6.16 2050.6.16 2051.6.16 Test8 Test9 Test10 Test11 Test12 Test13 -1 1 2 30 31 32 2001 day超出[1…31] 2001.6.2 2001.6.3 2001.7.1 输入日期超界 Test14 Test15 Test16 Test17 Test18 Test19 11 12 13 Mouth超出[1…12] 2001.1.16 2001.2.16 2001.11.16 2001.12.16
边界值分析法小结: 本节要掌握两个问题 用边界值法做测试用例:基本单故障法做边界值测试和健壮边界值测试 用边界值法对等价类测试法用补充。 知识点包括:选择边界的原则,单故障理论
边界值分析法小结: 上节要掌握两个问题 用边界值法做测试用例:基本单故障法做边界值测试和健壮边界值测试 用边界值法对等价类测试法用补充 选择边界的原则
边界值选择测试用例的原则 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。 如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。 将规则1)和2)应用于输出条件。