
高等学校软件工程专业系列教材——软件测试基础
扫描上方图片二维码查找系列全部教材~
✦
✦

《软件测试基础》
作者:陈振宇
丛书名:高等学校软件工程专业系列教材
定价:59.80元
印次:1-1
ISBN: 9787302691938
出版日期:2025.6
责任编辑:黄芝
内容简介
本书是一本关于软件测试的教材,旨在为读者提供软件测试的理论与方法。本书从测试的可 判定性问题出发,结合概率统计和图论基础等建立软件测试理论。从软件测试多样性原则和故障 假设原理出发,重新审视开发者测试、功能测试、性能测试和安全测试等各类方法。书中还穿插 着简要讲解部分智能化软件测试和智能软件系统测试的**研究成果。全书共8 章,以软件测试 理论为主线,讲解常用软件测试方法背后的内在联系和主要区别,以启发读者思考。软件测试工 具、测试案例和实践内容请参阅线上资源。读者对象
本书适合作为高等学校软件工程、计算机科学与技术、信息安全等专业的教材,也可供从事 软件测试工作的工程师、研究人员参考。
编辑荐语
采用测试理论框架分析需求S、程序P和测试T三者之间的关联,并进一步引入测试预言O,丰富测试理论框架。对比于图灵测试,引出软件测试的三大问题:终止问题、预言问题和生成问题,贯彻全书。
引入PIE模型,探索Bug的基础理论,从Bug的反向定义、Bug的不确定性、Bug的非单调性和Bug间的干涉性进行深入分析。
通过多样性测试和故障假设测试,将测试方法分为两大类,进行系统性的理论梳理和关联讲解。将待测系统转换为图,进行图结构和图元素的分析与拓展,加深读者对软件测试本质的理解和未来方法的思考。
融入离散数学、线性代数、概率统计等基础知识,尝试构建软件测试的理论体系。
✦
✦
✦
✦
随机测试方法是一种简单且常用的多样性测试方法。通过随机生成测试数据,可以发现一些传统测试方法难以发现的缺陷。采用随机测试方法时,需要考虑不同的随机策略和算法,以达到更好的测试效果。最简单的一个策略是简单随机抽样,即采用随机数生成器快速实现随机测试方法。
下面以三角形程序Triangle为例进行说明。三角形程序Triangle的一个常见版本是将3个整数a、b、c作为输入,然后输出三角形类型:等边三角形、等腰三角形、普通三角形或无效三角形。为了便于讨论,本书限定三角形程序的输入范围为1∼100。
在实现具体的程序以前,可以尝试设计不同的测试,旨在识别输入数据的不同类别,以确保程序在每个类别中都能正确运行。首先考虑有效输入值:3个整数a、b、c都在1∼100。
✦
✦
等价类测试是另外一种多样性测试方法。等价类测试的基本思路是将输入数据划分为若干等价类,然后从每个等价类中选择一个或多个测试数据进行测试,以检测系统是否正确地处理了各种情况。使用等价类测试时,首先确定输入数据的范围。在确定范围时,需要考虑输入数据的数据类型、取值范围等因素。然后通常在有效范围内划分等价类。例如,将输入空间划分为[−∞,0]、[1,100]、[101,∞]三部分;也可以将区间[1,100]进一步划分为10个等距输入区间:[1,10],[11,20],···,[91,100]。然而,不难看出,这种等价类划分过于
粗糙。为了构建更加有效的等价区间,需要进一步考虑三角形类型,即输出数据类型,进行等价类划分。
• a、b、c可以构成等边三角形。
• a、b、c可以构成等腰三角形。
• a、b、c可以构成普通三角形。
• a、b、c无法构成三角形。
对三角形类型的划分是一种典型的等价类测试思路。在划分等价类时,需要将输入或输出数据划分为若干等价类,使每个等价类中的数据具有相同的功能和数据处理逻辑。
✦
✦
软件可能会出现一些罕见的耦合失效,它们只有在两个或更多输入值相互作用时会导致程序失效。组合测试可以帮助发现此类问题。组合测试最初用于测试所有成对(即两两组合)的系统配置。任何具有多种配置选项的系统都适合进行此类测试,特别是具备跨操作系统、数据库和网络特征的各种组合运行的应用程序。可以将组合测试看作等价类测试的加强版本。组合测试通常是在等价类划分的基础上,进一步考虑输入数据的各种组合关系。
组合测试的应用范围很广,尤其是输入参数较多,且交互耦合较多的情况。例如,将输入空间划分为[−∞,0]、[1,100]、[101,∞]3个等价类。对于3个输入变量a、b、c,有以下33 = 27种可能的测试输入组合。但在这27种组合中,只有一组组合a∈[1,100],b∈[1,100],c ∈ [1,100]是有效测试输入。
• a∈[−∞,0],b∈[−∞,0],c ∈ [−∞,0]
• a∈[−∞,0],b∈[−∞,0],c ∈ [1,100]
• a∈[−∞,0],b∈[−∞,0],c ∈ [101,∞]
• a∈[−∞,0],b∈[1,100],c ∈ [−∞,0]
• a∈[−∞,0],b∈[1,100],c ∈ [1,100]
• a∈[−∞,0],b∈[1,100],c ∈ [101,∞]
• a∈[−∞,0],b∈[101,∞],c ∈ [−∞,0]
• a∈[−∞,0],b∈[101,∞],c ∈ [1,100]
• a∈[−∞,0],b∈[101,∞],c ∈ [101,∞]
• a∈[1,100],b ∈ [−∞,0],c ∈ [−∞,0]
• ···
• a∈[1,100],b ∈ [1,100],c ∈ [1,100]
• ···
• a∈[101,∞],b ∈ [101,∞],c ∈ [101,∞]
对于n个输入参数,假如每个输出参数具有A1,A2,··· ,An个等价类划分,那么全部 可能的组合数量为Πn i=1|Ai|。这样策略带来的组合爆炸(指数级增长)问题决定了它无法 在工程中得到应用。后文将引入t-组合覆盖测试概念,这些测试将涵盖所需强度t的所有参 数的等价类划分,其中t=1,2,···。特别要强调的是,t=1为单一组合测试,即每个输入 参数之间不考虑组合。t=2为成对测试,也被称为两两组合覆盖,这是最为常见的组合测 试,并且由于有很好的算法和工具支持而被广泛使用。 上述例子中的1-组合覆盖测试的一个集合如下。
• a∈[−∞,0],b∈[1,100],c ∈ [101,∞]
• a∈[1,100],b ∈ [101,∞],c ∈ [−∞,0]
• a∈[101,∞],b ∈ [−∞,0],c ∈ [1,100]
在这3个组合测试中,a、b、c的每个等价类都被覆盖了一次。
上述例子中的2-组合覆盖测试的一个集合如下。
• a∈[−∞,0],b∈[−∞,0],c ∈ [−∞,0]
• a∈[−∞,0],b∈[1,100],c ∈ [1,100]
• a∈[−∞,0],b∈[101,∞],c ∈ [101,∞]
• a∈[1,100],b ∈ [−∞,0],c ∈ [1,100]
• a∈[1,100],b ∈ [1,100],c ∈ [101,∞]
• a∈[1,100],b ∈ [101,∞],c ∈ [−∞,0]
• a∈[101,∞],b ∈ [−∞,0],c ∈ [101,∞]
• a∈[101,∞],b ∈ [1,100],c ∈ [−∞,0]
• a∈[101,∞],b ∈ [101,∞],c ∈ [1,100]
在组合测试中,a、b、c的每个等价类的两两组合都被覆盖了一次。组合测试的基本思想来源于正交实验设计。例如2-组合覆盖测试是一个正交实验表,每个因素(参数)的每 个水平(等价类)都出现了3次。
正交实验表是一种有用的工具,可以帮助工程师和科学 家设计实验,以便在最小化实验次数的同时获得最大的信息。它们通常用于研究多个因素 对某个响应变量的影响,以确定哪些因素和因素水平对响应变量的影响最大。在设计实验 时,建议使用正交实验表,因为它们可以显著地减少实验次数,并提高实验的效率和信息 量。此外,正交实验表还可以帮助确定哪些因素和因素水平对响应变量的影响最大,这对 改进产品和流程非常有用。
不幸的是,生成满足正交实验设计的最小数量的组合是一个NP-难问题。因此,生成 满足t-组合覆盖的测试数据不是一个简单的任务。覆盖数组指定测试数据,可以将数组的 每一行视为单个测试的一组参数值。总体来说,数组的行至少包含一次参数值的每个t-组 合覆盖。一个包含10个变量的t=3覆盖数组,每个变量有两个值。在这个数组中,任何3 列都包含3个二进制变量的所有8个可能值。因此,这组测试将仅在13次测试中执行输入 值的所有三维组合,而详尽覆盖则为1024次。但实际工具生成的测试数量远远大于这个数量。在某些情况下,利用弱强度的组合进行测试,是实际的工程中需要做出的妥协。组合 测试能够在保证缺陷检出率的前提下采用较少的测试。组合测试方法的有效性和复杂性吸 引了组合数学领域和软件工程领域的学者对其进行了深入研究。同时,读者可以思考输出 结果:等边三角形、等腰三角形、普通三角形、无效三角形、无效输入值之间的可能组合情况。
目前为止,还没有给出任何待测程序的程序代码。这种不依赖源代码的测试方法称为 黑盒测试。与之对应的白盒测试更关注应用程序内部的结构和执行情况。理解被测程序的 源代码是进行白盒测试的前提条件。对于多样性测试方法,无论是随机测试、等价类测试 还是组合测试,并没有严格要求一定是黑盒测试。
精彩样章试读
向上滑动阅览




本书目录
向上滑动阅览
目 录
第1 章软件测试快速入门....................................................................................... 1
1.1 多样性测试入门......................................................................................... 2
1.1.1 随机测试........................................................................................ 2
1.1.2 等价类测试..................................................................................... 4
1.1.3 组合测试........................................................................................ 5
1.2 故障假设测试入门..................................................................................... 7
1.2.1 常见软件故障................................................................................. 8
1.2.2 边界故障假设............................................................................... 10
1.2.3 变异故障假设............................................................................... 11
1.3 图分析测试入门....................................................................................... 13
1.3.1 图生成方法................................................................................... 13
1.3.2 图结构测试................................................................................... 15
1.3.3 图元素测试................................................................................... 16
1.4 本章练习................................................................................................. 17
第2 章软件测试的定义........................................................................................ 18
2.1 测试基础概念.......................................................................................... 19
2.1.1 常用测试术语............................................................................... 19
2.1.2 常用测试分类............................................................................... 22
2.1.3 测试理论框架............................................................................... 26
2.2 待测程序示例.......................................................................................... 30
2.2.1 三角形程序Triangle ...................................................................... 30
2.2.2 日期程序NextDay ........................................................................ 31
2.2.3 均值方差程序MeanVar .................................................................. 33
2.3 测试基本问题.......................................................................................... 36
2.3.1 测试终止问题............................................................................... 37
2.3.2 测试预言问题............................................................................... 39
2.3.3 测试生成问题............................................................................... 40
2.4 本章练习................................................................................................. 43
软件测试基础
第3 章Bug 理论基础........................................................................................... 44
3.1 认识软件Bug .......................................................................................... 45
3.1.1 第一个Bug ................................................................................... 45
3.1.2 著名的Bug ................................................................................... 47
3.2 PIE 模型介绍........................................................................................... 49
3.2.1 PIE 模型的相关概念...................................................................... 49
3.2.2 PIE 模型的计算分析...................................................................... 52
3.2.3 PIE 模型与测试调试...................................................................... 54
3.3 Bug 理论分析.......................................................................................... 57
3.3.1 Bug 的反向定义............................................................................ 57
3.3.2 Bug 的不确定性............................................................................ 58
3.3.3 Bug 的非单调性............................................................................ 61
3.3.4 Bug 间的干涉性............................................................................ 62
3.4 本章练习................................................................................................. 64
第4 章多样性测试............................................................................................... 65
4.1 随机测试理论.......................................................................................... 66
4.1.1 均匀随机测试............................................................................... 66
4.1.2 非均匀随机测试............................................................................ 68
4.1.3 自适应随机测试............................................................................ 69
4.1.4 引导性随机测试............................................................................ 73
4.2 等价类理论............................................................................................. 76
4.2.1 软件等价类假设............................................................................ 77
4.2.2 软件等价类划分............................................................................ 81
4.2.3 划分随机测试方法......................................................................... 85
4.2.4 划分随机测试分析......................................................................... 87
4.3 组合理论................................................................................................. 95
4.3.1 组合测试初步............................................................................... 95
4.3.2 组合测试准则............................................................................... 98
4.3.3 组合测试生成.............................................................................. 103
4.4 本章练习................................................................................................ 106
第5 章故障假设测试.......................................................................................... 107
5.1 边界故障假设......................................................................................... 108
5.1.1 输入边界值分析........................................................................... 108
5.1.2 计算边界值分析........................................................................... 114
VIII
目 录
5.1.3 输出边界值分析........................................................................... 117
5.2 变异故障假设......................................................................................... 120
5.2.1 变异分析基本概念........................................................................ 120
5.2.2 变异测试优化技术........................................................................ 123
5.2.3 变异分析理论框架........................................................................ 126
5.3 逻辑故障假设......................................................................................... 132
5.3.1 逻辑测试基础.............................................................................. 132
5.3.2 逻辑故障结构.............................................................................. 135
5.3.3 逻辑约束求解.............................................................................. 140
5.4 本章练习................................................................................................ 143
第6 章图分析测试.............................................................................................. 144
6.1 图测试基础............................................................................................ 145
6.1.1 图论基础..................................................................................... 145
6.1.2 控制流图..................................................................................... 147
6.1.3 数据流图..................................................................................... 149
6.1.4 事件流图..................................................................................... 151
6.2 图结构测试方法...................................................................................... 154
6.2.1 L-路径测试................................................................................. 155
6.2.2 主路径测试.................................................................................. 156
6.2.3 基本路径测试.............................................................................. 158
6.3 图元素测试方法...................................................................................... 162
6.3.1 数据流测试.................................................................................. 162
6.3.2 逻辑测试..................................................................................... 166
6.4 本章练习................................................................................................ 173
第7 章开发者测试.............................................................................................. 174
7.1 开发者多样性测试.................................................................................. 175
7.1.1 代码多样性策略........................................................................... 175
7.1.2 组合多样性策略........................................................................... 179
7.1.3 行为多样性策略........................................................................... 183
7.2 开发者故障假设测试............................................................................... 187
7.2.1 边界故障假设.............................................................................. 187
7.2.2 变异故障假设.............................................................................. 190
7.2.3 逻辑故障假设.............................................................................. 193
7.3 开发者测试进阶...................................................................................... 198
7.3.1 mock 测试对象............................................................................. 198
IX
软件测试基础
7.3.2 从单元到集成.............................................................................. 200
7.3.3 开发者测试评估........................................................................... 203
7.4 本章练习................................................................................................ 206
第8 章专项测试................................................................................................. 207
8.1 功能测试................................................................................................ 208
8.1.1 功能测试简介.............................................................................. 208
8.1.2 多样性功能测试........................................................................... 210
8.1.3 故障假设功能测试........................................................................ 216
8.2 性能测试................................................................................................ 221
8.2.1 性能测试简介.............................................................................. 222
8.2.2 多样性性能测试........................................................................... 225
8.2.3 故障假设性能测试........................................................................ 230
8.3 安全测试................................................................................................ 235
8.3.1 安全测试简介.............................................................................. 235
8.3.2 多样性安全测试........................................................................... 238
8.3.3 故障假设安全测试........................................................................ 242
8.4 本章练习................................................................................................ 247
参考文献...........................................................................................................248


夜雨聆风