第4章1 黑盒测试之边界值测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
边界值分析关注的是输入空间的边界,从中标识测试用例。 边界值测试背后的基本原理是错误更可能出现在输入变量的极 值附近。因此针对各种边界情况设计测试用例,可以查出更多 的错误。
➢ 边界值设计原则
(1)如果输入条件规定了值的范围,则应取 刚达到这个范围的边界的值,以及刚刚超 越这个范围边界的值作为测试输入数据。
单缺陷假设是指“失效极少是由两个或两个以上的缺陷 同时发生引起的”。依据单缺陷假设来设计测试用例,只 让一个变量取边界值,其余变量取正常值。多缺陷假设是 指“失效是由两个或两个以上缺陷同时作用引起的”。因 此依据多缺陷假设来设计测试用例,要求在选取测试用例 时同时让多个变量取边界值。
在边界值分析中,用到了单缺陷假设,即选取测试用
执行一种操作,对任意小的值σ,条件C+σ或C-σ会执行另外的 操作,则C就是一个边界。
在多数情况下,边界条件是基于应用程序的功能设计而需 要考虑的因素,可以从软件的规格说明或常识中得到。比如程 序要对学生成绩进行处理,要求输入数据的范围是[0,100], 则很明显输入条件的边界是0和100。
然而,在测试用例设计过程中,某些边界条件是不需要呈 现给用户的,或者说用户是很难注意到的,但同时确实属于检 验范畴内的边界条件,称为内部边界条件或次边界条件。
单缺陷假设,即被测对象只要在某个输入条件的某 个边界出错,则在任何包含改输入条件的某个边界的情况 下一定会出错,那么测试时仅覆盖输入条件的单个边界点 即可,无需测试多个输入条件取边界测试数据的情况。因 此,单缺陷假设的策略是在任何一个测试用例中,有且只 能有一个输入条件的取值为边界邻域内的测试数据,其他 输入条件应取正常值(一般为相邻边界点之间的中值)。
例如,有一个二元函数f(x,y),要求输入变量x,y分 别满足:x∈[0,100],y∈[1000,3000],对其进行健壮性 测试,则需要设计13个测试用例。根据健壮性测试的原理, 可以得到下面一组测试数据:{<-1,1500>,<0,1500>, <1,1500>,<50,1500>,<99,1500>,<100,1500>, <101,1500>,<50,999>,<50,1000>,<50,1001>, <50,2999>,<50,3000>,<50,3001>}。
表 4-1-1 二进制数值的边界
范围或值 0或1 0~255 0~65 535(单字)或 0~4 294 967 295(双字) -2 147 483 648~2 147 483 647 1 024 1 048 576 1 073 741 824
2.字符的边界值 在计算机软件中,字符也是很重要的表示元素。其中 ASCII和Unicode是常见的编码方式。表4-1-2中列出了一些 常用字符对应的ASCII码值。如果要测试文本输入或文本转 换的软件,在定义数据区间包含哪些值时,就可以参考 ASCII码表,找出隐含的边界条件。
再如,一个学生成绩管理系统规定,只能查询9598级大学生的各科成绩,可以设计测试用例,使得查 询范围内的某一届或四届学生的学生成绩,还需设计 查询94级、99级学生成绩的测试用例(不合理输出 等价类)。
(4)如果程序的规格说明给出的输入域或输出域是有序 集合(如顺序文件、线性表等),则应选取集合的第一 个元素和最后一个元素作为测试用例。
x2 d
c oa
b
x1
图4-1-3 两个变量函数的健壮性测试用例
对于一个含有n个输入变量的程序,进行健壮性边界测 试时,使除一个以外的所有变量取正常值,使剩余的那个 变量依次取略小于最小值、最小值、略大于最小值、正常 值、略小于最大值、最大值和略大于最大值,并对每个变 量重复进行。因此其健壮性测试会产生6n+1个测试用例。
字符 Null(空) Space(空格) /(斜杠)
0(零) :(冒号)
@
表 4-1-2 部分 ASCII 码值表
ASCII 码值
字符
0
A
32
a
47
Z
48
z
58
‘(单引号)
64
{(大括号)
ASCII 码值 65 97 90 122 96 123
3.其他边界条件 有一些边界条件容易被人忽略,比如在文本框中不是 没有输入正确的信息,而是根本就没有输入任何内容,然 后就按“确认”按钮。这种情况常常被遗忘或忽视了,但 在实际使用中却时常发生。因此在测试时还需要考虑程序 对默认值、空白、空值、零值、无输入等情况的反应。 在进行边界值测试时,如何确定边界条件的取值呢? 一般情况下,确定边界值应遵循以下几条原则: (1) 如果输入条件规定了值的范围,则应取刚达到这个 范围的边界的值,以及刚刚超越这个范围边界的值作为测 试输入数据。
对于有两个输入变量的程序P,其边界值分析的测试用 例在图中的位置如图4-1-2所示。
x2 d
c oa
b
x1
图4-1-2 两个变量函数的边界值分析
例如,有一个二元函数f(x,y),要求输入变量x,y分 别满足:x∈[1,12],y∈[1,31]。采用边界值分析法设计 测试用例,可以选择下面一组测试数据:{ <1,15>,<2, 15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>, <6,30>,<6,31> }。
(5) 分析规格说明,找出其他可能的边界条件。
4.1.2 边界值分析 为便于理解,以下讨论涉及两个输入变量x1和x2的函
数F。假设x1和x2分别在下列范围内取值:a≤x1≤b;c≤x2≤d。 函数F的输入空间如图4-1-1所示。矩形阴影中的任何一
点都是函数F的有效输入。
x2 d
c oa
b
Байду номын сангаасx1
图4-1-1 两个变量函数的输入域
第4章 黑 盒 测 试
第4章 黑 盒 测 试
4.1 边界值测试 4.2 等价类测试 4.3 基于判定表的测试 4.4 因果图 4.5 其他黑盒测试方法 4.6 综合案例 4.7 本章小结
常用测试技术
黑盒测试方法是在程序接口上进行测试,主要是 为了发现以下错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受? 能否输出正确
比如,在做三角形计算时,要输入三角形的三个边长A、 B和C。这三个数值应当满足A>0、B>0、C>0、A+B>C、 A+C>B、B+C>A,才能构成三角形。但如果把六个不等式 中的任何一个大于号“>”错写成大于等于号“≥”,那就不 能构成三角形。问题常常出现在容易被疏忽的边界附近。类似 的例子还有很多,如计数器常常“少记一次”;循环条件应该 是“≤”时错误地写成了“<”;数组下标越界(在C语言中数 组下标是从零开始,可能错误地认为是从1开始,从而使最后 一个元素的下标越界)等。
例如,如果程序的规格说明中规定:“重量 在10公斤至50公斤范围内的邮件,其邮费 计算公式为… … ”。作为测试用例,我们 应取10及50,还应取10.01,49.99,9.99及 50.01等。
(2)如果输入条件规定了值的个数,则用 最大个数、最小个数、比最小个数少一、比 最大个数多一的数作为测试数据。
软件边界与悬崖很类似
4.1 边 界 值 测 试
任何一个程序都可以看做是一个函数,程序的输入构成 函数的定义域,程序的输出构成函数的值域。人们从长期 的测试工作经验得知,大量的错误是发生在定义域或值域 (输出)的边界上,而不是在其内部。对于软件缺陷,有句谚 语形容得很恰当,即“缺陷遗漏在角落里,聚集在边界 上”。
健壮性边界测试是边界值分析的一种简单扩展。在使用该方 法设计测试用例时,既要考虑有效输入,又要考虑无效的输入。 除了按照边界值分析方法选取的五个取值(min、min+、nom、 max-、max)外,还要选取略小于最小值(min-)和略大于最大值 (max+)的取值,以观察输入变量超过边界时程序会有什么表现。 对于有两个变量的程序P,其健壮性测试的测试用例如图4-1-3所 示。
内部边界条件主要有下面几种。
1.数值的边界值 计算机是基于二进制进行工作的,因此,软件的任何 数值运算都有一定的范围限制。比如一个字节由8位组成, 一个字节所能表达的数值范围是[0,255]。表4-1-1列出了计 算机中常用数值的范围。
术语 bit(位) byte(字节) word(字) int(32 位) K(千) M(兆) G(千兆)
这种方法是把测试对象看做一个黑盒子,测试人员完全不 考虑程序内部的逻辑结构和内部特性,只依据程序的需求 规格说明书,检查程序的功能是否符合它的功能说明。
黑盒测试技术概述
黑盒测试过程
例:测试计算器的功能
黑盒测试的特点
黑盒测试的优缺点
黑盒测试的难点
边界值分析法
被测试 子域
测试内点 测试外点
例如,一个输入文件应包括1-255个记录, 则测试用例可取1和255,还应取0及256等。
(3)将规则1和2应用于输出条件,即设计测试用例
使输出值达到边界值及其左右的值。 例如,一程序属于情报检索系统,要求每次”最少
显示1条、最多显示4条情报摘要”,这时我们应考虑 的测试用例包括1和4,还应包括0和5等。
边界值分析的基本思想是使用输入变量的最小值、略 大于最小值、正常值、略小于最大值和最大值设计测试用 例。通常我们用min、min+、nom、max-和max来表示。
当一个函数或程序有两个及两个以上的输入变量时, 就需要考虑如何组合各变量的取值。我们可根据可靠性理 论中的单缺陷假设和多缺陷假设来考虑。
(5)如果程序中使用了一个内部数据结构,则应当选择 这个内部数据结构的边界上的值作为测试用例。 例如,如果程序中定义了一个数组,其元素下标的 下界是0,上界是100,那么应选择达到这个数组下标 边界的值,如0与100,作为测试用例。
(6)分析规格说明,找出其他可能的边界条件。
常见的边界值
4.1.1 边界条件 边界条件就是一些特殊情况。一般的,在条件C下,软件
(2) 如果输入条件规定了值的个数,则用最大个数、最 小个数、比最小个数少一、比最大个数多一的数作为测试 数据。
(3) 如果程序的规格说明给出的输入域或输出域是有序 集合,则应选取集合的第一个元素和最后一个元素作为测 试数据。
(4) 如果程序中使用了一个内部数据结构,则应当选择 这个内部数据结构的边界上的值作为测试数据。
举例:三角形问题
边界值分析优缺点
4.1.3 健壮性边界测试 健壮性是指在异常情况下,软件还能正常运行的能力。健壮
性可衡量软件对于规范要求以外的输入情况的处理能力。所谓健 壮的系统,是指对于规范要求以外的输入能够判断出这个输入不 符合规范要求,并能有合理的处理方式的系统。软件设计的健壮 与否直接反映了分析设计和编码人员的水平。
对于一个含有n个输入变量的程序,使除一个以外的所 有变量取正常值,剩余的一个变量依次取最小值、略大于 最小值、正常值、略小于最大值和最大值,并对每个变量 重复进行。因此,对于有n个输入变量的程序,边界值分析 会产生4n+1个测试用例。
例如,有一个三元函数f(x, y, z),其中x∈[0,100], y∈[1,12],z∈[1,31],对该函数采用边界值分析法设计 的测试用例将会得到13个测试用例,根据边界分析的原理, 可得到下列测试数据:{ <50,6,1>,<50,6,2>,<50, 6,30>,<50,6,31>,<50,1,15>,<50,2,15>,<50, 11,15>,<50,12,15>,<0,6,15>,<1,6,15>,<99, 6,15>,<100,6,15>,<50,6,15> }。
的结果? 是否有数据结构错误或外部信息(例如数据文件)
访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?
黑盒测试 —戴上眼罩测试软件
输入
软件
输出
不深入代码细节的测试方 法称为黑盒测试。 软件测试员充当客户来使 用。
黑盒测试(Black box testing)也称功能测试或数据驱动 测试,它是已知产品所应具有的功能,通过测试来检测 每个功能是否都正常使用。
例时仅仅使得一个变量取极值,其他变量均取正常值。对
于有两个输入变量的程序P,其边界值分析的测试用例如下: {<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,
<x1nom,x2max->,<x1nom,x2max>,<x1min,x2nom>,<x1min+, x2nom>,<x1max-,x2nom>,<x1max,x2nom>}
➢ 边界值设计原则
(1)如果输入条件规定了值的范围,则应取 刚达到这个范围的边界的值,以及刚刚超 越这个范围边界的值作为测试输入数据。
单缺陷假设是指“失效极少是由两个或两个以上的缺陷 同时发生引起的”。依据单缺陷假设来设计测试用例,只 让一个变量取边界值,其余变量取正常值。多缺陷假设是 指“失效是由两个或两个以上缺陷同时作用引起的”。因 此依据多缺陷假设来设计测试用例,要求在选取测试用例 时同时让多个变量取边界值。
在边界值分析中,用到了单缺陷假设,即选取测试用
执行一种操作,对任意小的值σ,条件C+σ或C-σ会执行另外的 操作,则C就是一个边界。
在多数情况下,边界条件是基于应用程序的功能设计而需 要考虑的因素,可以从软件的规格说明或常识中得到。比如程 序要对学生成绩进行处理,要求输入数据的范围是[0,100], 则很明显输入条件的边界是0和100。
然而,在测试用例设计过程中,某些边界条件是不需要呈 现给用户的,或者说用户是很难注意到的,但同时确实属于检 验范畴内的边界条件,称为内部边界条件或次边界条件。
单缺陷假设,即被测对象只要在某个输入条件的某 个边界出错,则在任何包含改输入条件的某个边界的情况 下一定会出错,那么测试时仅覆盖输入条件的单个边界点 即可,无需测试多个输入条件取边界测试数据的情况。因 此,单缺陷假设的策略是在任何一个测试用例中,有且只 能有一个输入条件的取值为边界邻域内的测试数据,其他 输入条件应取正常值(一般为相邻边界点之间的中值)。
例如,有一个二元函数f(x,y),要求输入变量x,y分 别满足:x∈[0,100],y∈[1000,3000],对其进行健壮性 测试,则需要设计13个测试用例。根据健壮性测试的原理, 可以得到下面一组测试数据:{<-1,1500>,<0,1500>, <1,1500>,<50,1500>,<99,1500>,<100,1500>, <101,1500>,<50,999>,<50,1000>,<50,1001>, <50,2999>,<50,3000>,<50,3001>}。
表 4-1-1 二进制数值的边界
范围或值 0或1 0~255 0~65 535(单字)或 0~4 294 967 295(双字) -2 147 483 648~2 147 483 647 1 024 1 048 576 1 073 741 824
2.字符的边界值 在计算机软件中,字符也是很重要的表示元素。其中 ASCII和Unicode是常见的编码方式。表4-1-2中列出了一些 常用字符对应的ASCII码值。如果要测试文本输入或文本转 换的软件,在定义数据区间包含哪些值时,就可以参考 ASCII码表,找出隐含的边界条件。
再如,一个学生成绩管理系统规定,只能查询9598级大学生的各科成绩,可以设计测试用例,使得查 询范围内的某一届或四届学生的学生成绩,还需设计 查询94级、99级学生成绩的测试用例(不合理输出 等价类)。
(4)如果程序的规格说明给出的输入域或输出域是有序 集合(如顺序文件、线性表等),则应选取集合的第一 个元素和最后一个元素作为测试用例。
x2 d
c oa
b
x1
图4-1-3 两个变量函数的健壮性测试用例
对于一个含有n个输入变量的程序,进行健壮性边界测 试时,使除一个以外的所有变量取正常值,使剩余的那个 变量依次取略小于最小值、最小值、略大于最小值、正常 值、略小于最大值、最大值和略大于最大值,并对每个变 量重复进行。因此其健壮性测试会产生6n+1个测试用例。
字符 Null(空) Space(空格) /(斜杠)
0(零) :(冒号)
@
表 4-1-2 部分 ASCII 码值表
ASCII 码值
字符
0
A
32
a
47
Z
48
z
58
‘(单引号)
64
{(大括号)
ASCII 码值 65 97 90 122 96 123
3.其他边界条件 有一些边界条件容易被人忽略,比如在文本框中不是 没有输入正确的信息,而是根本就没有输入任何内容,然 后就按“确认”按钮。这种情况常常被遗忘或忽视了,但 在实际使用中却时常发生。因此在测试时还需要考虑程序 对默认值、空白、空值、零值、无输入等情况的反应。 在进行边界值测试时,如何确定边界条件的取值呢? 一般情况下,确定边界值应遵循以下几条原则: (1) 如果输入条件规定了值的范围,则应取刚达到这个 范围的边界的值,以及刚刚超越这个范围边界的值作为测 试输入数据。
对于有两个输入变量的程序P,其边界值分析的测试用 例在图中的位置如图4-1-2所示。
x2 d
c oa
b
x1
图4-1-2 两个变量函数的边界值分析
例如,有一个二元函数f(x,y),要求输入变量x,y分 别满足:x∈[1,12],y∈[1,31]。采用边界值分析法设计 测试用例,可以选择下面一组测试数据:{ <1,15>,<2, 15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>, <6,30>,<6,31> }。
(5) 分析规格说明,找出其他可能的边界条件。
4.1.2 边界值分析 为便于理解,以下讨论涉及两个输入变量x1和x2的函
数F。假设x1和x2分别在下列范围内取值:a≤x1≤b;c≤x2≤d。 函数F的输入空间如图4-1-1所示。矩形阴影中的任何一
点都是函数F的有效输入。
x2 d
c oa
b
Байду номын сангаасx1
图4-1-1 两个变量函数的输入域
第4章 黑 盒 测 试
第4章 黑 盒 测 试
4.1 边界值测试 4.2 等价类测试 4.3 基于判定表的测试 4.4 因果图 4.5 其他黑盒测试方法 4.6 综合案例 4.7 本章小结
常用测试技术
黑盒测试方法是在程序接口上进行测试,主要是 为了发现以下错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受? 能否输出正确
比如,在做三角形计算时,要输入三角形的三个边长A、 B和C。这三个数值应当满足A>0、B>0、C>0、A+B>C、 A+C>B、B+C>A,才能构成三角形。但如果把六个不等式 中的任何一个大于号“>”错写成大于等于号“≥”,那就不 能构成三角形。问题常常出现在容易被疏忽的边界附近。类似 的例子还有很多,如计数器常常“少记一次”;循环条件应该 是“≤”时错误地写成了“<”;数组下标越界(在C语言中数 组下标是从零开始,可能错误地认为是从1开始,从而使最后 一个元素的下标越界)等。
例如,如果程序的规格说明中规定:“重量 在10公斤至50公斤范围内的邮件,其邮费 计算公式为… … ”。作为测试用例,我们 应取10及50,还应取10.01,49.99,9.99及 50.01等。
(2)如果输入条件规定了值的个数,则用 最大个数、最小个数、比最小个数少一、比 最大个数多一的数作为测试数据。
软件边界与悬崖很类似
4.1 边 界 值 测 试
任何一个程序都可以看做是一个函数,程序的输入构成 函数的定义域,程序的输出构成函数的值域。人们从长期 的测试工作经验得知,大量的错误是发生在定义域或值域 (输出)的边界上,而不是在其内部。对于软件缺陷,有句谚 语形容得很恰当,即“缺陷遗漏在角落里,聚集在边界 上”。
健壮性边界测试是边界值分析的一种简单扩展。在使用该方 法设计测试用例时,既要考虑有效输入,又要考虑无效的输入。 除了按照边界值分析方法选取的五个取值(min、min+、nom、 max-、max)外,还要选取略小于最小值(min-)和略大于最大值 (max+)的取值,以观察输入变量超过边界时程序会有什么表现。 对于有两个变量的程序P,其健壮性测试的测试用例如图4-1-3所 示。
内部边界条件主要有下面几种。
1.数值的边界值 计算机是基于二进制进行工作的,因此,软件的任何 数值运算都有一定的范围限制。比如一个字节由8位组成, 一个字节所能表达的数值范围是[0,255]。表4-1-1列出了计 算机中常用数值的范围。
术语 bit(位) byte(字节) word(字) int(32 位) K(千) M(兆) G(千兆)
这种方法是把测试对象看做一个黑盒子,测试人员完全不 考虑程序内部的逻辑结构和内部特性,只依据程序的需求 规格说明书,检查程序的功能是否符合它的功能说明。
黑盒测试技术概述
黑盒测试过程
例:测试计算器的功能
黑盒测试的特点
黑盒测试的优缺点
黑盒测试的难点
边界值分析法
被测试 子域
测试内点 测试外点
例如,一个输入文件应包括1-255个记录, 则测试用例可取1和255,还应取0及256等。
(3)将规则1和2应用于输出条件,即设计测试用例
使输出值达到边界值及其左右的值。 例如,一程序属于情报检索系统,要求每次”最少
显示1条、最多显示4条情报摘要”,这时我们应考虑 的测试用例包括1和4,还应包括0和5等。
边界值分析的基本思想是使用输入变量的最小值、略 大于最小值、正常值、略小于最大值和最大值设计测试用 例。通常我们用min、min+、nom、max-和max来表示。
当一个函数或程序有两个及两个以上的输入变量时, 就需要考虑如何组合各变量的取值。我们可根据可靠性理 论中的单缺陷假设和多缺陷假设来考虑。
(5)如果程序中使用了一个内部数据结构,则应当选择 这个内部数据结构的边界上的值作为测试用例。 例如,如果程序中定义了一个数组,其元素下标的 下界是0,上界是100,那么应选择达到这个数组下标 边界的值,如0与100,作为测试用例。
(6)分析规格说明,找出其他可能的边界条件。
常见的边界值
4.1.1 边界条件 边界条件就是一些特殊情况。一般的,在条件C下,软件
(2) 如果输入条件规定了值的个数,则用最大个数、最 小个数、比最小个数少一、比最大个数多一的数作为测试 数据。
(3) 如果程序的规格说明给出的输入域或输出域是有序 集合,则应选取集合的第一个元素和最后一个元素作为测 试数据。
(4) 如果程序中使用了一个内部数据结构,则应当选择 这个内部数据结构的边界上的值作为测试数据。
举例:三角形问题
边界值分析优缺点
4.1.3 健壮性边界测试 健壮性是指在异常情况下,软件还能正常运行的能力。健壮
性可衡量软件对于规范要求以外的输入情况的处理能力。所谓健 壮的系统,是指对于规范要求以外的输入能够判断出这个输入不 符合规范要求,并能有合理的处理方式的系统。软件设计的健壮 与否直接反映了分析设计和编码人员的水平。
对于一个含有n个输入变量的程序,使除一个以外的所 有变量取正常值,剩余的一个变量依次取最小值、略大于 最小值、正常值、略小于最大值和最大值,并对每个变量 重复进行。因此,对于有n个输入变量的程序,边界值分析 会产生4n+1个测试用例。
例如,有一个三元函数f(x, y, z),其中x∈[0,100], y∈[1,12],z∈[1,31],对该函数采用边界值分析法设计 的测试用例将会得到13个测试用例,根据边界分析的原理, 可得到下列测试数据:{ <50,6,1>,<50,6,2>,<50, 6,30>,<50,6,31>,<50,1,15>,<50,2,15>,<50, 11,15>,<50,12,15>,<0,6,15>,<1,6,15>,<99, 6,15>,<100,6,15>,<50,6,15> }。
的结果? 是否有数据结构错误或外部信息(例如数据文件)
访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?
黑盒测试 —戴上眼罩测试软件
输入
软件
输出
不深入代码细节的测试方 法称为黑盒测试。 软件测试员充当客户来使 用。
黑盒测试(Black box testing)也称功能测试或数据驱动 测试,它是已知产品所应具有的功能,通过测试来检测 每个功能是否都正常使用。
例时仅仅使得一个变量取极值,其他变量均取正常值。对
于有两个输入变量的程序P,其边界值分析的测试用例如下: {<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,
<x1nom,x2max->,<x1nom,x2max>,<x1min,x2nom>,<x1min+, x2nom>,<x1max-,x2nom>,<x1max,x2nom>}