请输入您要查询的百科知识:

 

词条 软件测试:第3版
释义

基本信息

原书名: Software Testing: A Craftsman's Approach, Third Edition原出版社: Auerbach Publications

作者: (美)Paul C. Jorgensen

译者: 李海峰 马琳

丛书名: 图灵程序设计丛书

出版社:人民邮电出版社

ISBN:9787115247995

上架时间:2011-3-24

出版日期:2011 年3月

开本:16开

页码:330

内容简介

《软件测试:第3版》是经典的软件测试教材。书中对基础知识、方法提供了系统的综合阐述,既涉及基于模型的开发又介绍测试驱动的开发,做到了理论与实践的完美结合,反映了软件标准和开发的最新进展和变化。

《软件测试:第3版》适合作为高等院校计算机学院及软件学院相关专业软件测试课程的教材,也是软件测试领域技术人员的理想参考书。

译者序

很长时间以来,我们一直关注着软件测试技术的发展。工作在计算机科学与技术领域中,如何确保软件产品在实际工作中“不出错”,是我们时刻都要面对的一个非常现实的问题。目前大量关于软件测试方面的专著和教材已经面市,从中可以看到许多不同的测试原理与测试方法。如何科学地选择和运用这些测试原理与技术,在很大程度上取决于个人的经验。同时,对诸如如何评价软件测试的结果,测试后的软件是否还有残留缺陷,残留的缺陷对软件有何影响等问题,目前还没有一个统一的评估标准。因此,我们认为,软件开发人员应该是软件测试的行家,软件测试人员也应该是软件开发的高手。在大力培养软件开发人才的同时大力培养软件测试人才,并特别重视其对科学的思维方式的培养,对软件行业的发展至关重要。

原书是作者在总结长期从事软件设计、开发与测试工作经验的基础上,融合近年在软件测试教学工作中的心得体会而写成的。本书是第3版,较前两版最主要的改动是增加了在更高层次上对软件测试整体策略的全面讨论。本书的重要特点是:对软件测试理论与技术的介绍层次分明、全面精当;以若干实例为线索展开内容,循序渐进,便于读者掌握;在很多章节的最后,还提供深入的对比和讨论,总结了在软件测试中普遍存在的实际问题,精辟深刻;此外,原书在语言上不拘一格,多有诙谐之处,这也是我们翻译过程中所要面对的一项挑战。

在翻译过程中,我们在忠实于原文的同时,针对软件测试工作所涉及的各种理论与技术进行了整理和推敲,对基础理论和技术概念尽可能采用相关学科的主流说法,对新技术和新名词尽可能使用业界当前流行的说法,以期使全书更易于理解、更标准和更科学;对作者举例时讲述的故事,则力求通俗流畅,保持原书的韵味。

《软件测试:第3版》由李海峰翻译第1~10章和第21~23章,马琳翻译第11~20章、第24章和第25章,李海峰对全书进行了审校和润色。在翻译工作中我们借鉴了《软件测试:第3版》前两版和其他同类著作,在此我们向其作译者表示深深的谢意。对人民邮电出版社编辑的艰苦工作和大力支持表示深深的感谢。

好作品必然是经过了反复修改才日臻完善的。由于时间有限,加上译者的知识水平和实际工作经验有限,不当之处在所难免,恳请读者和同行批评指正,提出宝贵意见。

海峰马琳

2010年10月于哈工大

目录

第一部分 数学基础

第1章 测试概述        2

1.1 基本概念        2

1.2 测试用例        3

1.3 通过维恩图来考察测试        4

1.4 构造测试用例        5

1.4.1 功能测试        6

1.4.2 结构测试        7

1.4.3 功能测试与结构测试之争        7

1.5 错误与故障差异        8

1.6 测试的层次        10

参考文献        11

习题        11

第2章 程序示例        12

2.1 通用伪代码        12

2.2 三角形问题        13

2.2.1 问题描述        13

2.2.2 三角形问题的讨论        14

2.2.3 三角形问题的经典实现        14

.2.2.4 三角形问题的结构化实现        16

2.3 nextdate函数        18

2.3.1 问题描述        18

2.3.2 nextdate函数的讨论        18

2.3.3 nextdate函数的实现        19

2.4 佣金问题        21

2.4.1 问题描述        21

2.4.2 佣金问题的讨论        22

2.4.3 佣金问题的实现        22

2.5 satm系统        23

2.5.1 问题描述        23

2.5.2 satm系统的讨论        25

2.6 货币转换器        25

2.7 雨刷控制器        26

参考文献        26

习题         26

第3章 测试人员的离散数学        28

3.1 集合论        28

3.1.1 集合的成员关系        28

3.1.2 集合的定义方法        28

3.1.3 空集        29

3.1.4 集合的维恩图        29

3.1.5 集合运算        30

3.1.6 集合关系        32

3.1.7 集合划分        32

3.1.8 集合恒等        33

3.2 函数        33

3.2.1 定义域与值域        34

3.2.2 函数的类型        34

3.2.3 函数复合        35

3.3 关系        36

3.3.1 集合之间的关系        36

3.3.2 单个集合上的关系        37

3.4 命题逻辑        38

3.4.1 逻辑运算符        39

3.4.2 逻辑表达式        39

3.4.3 逻辑等价        40

3.5 概率论        40

参考文献        41

习题         42

第4章 测试人员的图论        43

4.1 图        43

4.1.1 节点的度        44

4.1.2 关联矩阵        44

4.1.3 邻接矩阵        45

4.1.4 路径        45

4.1.5 连通性        46

4.1.6 压缩图        46

4.1.7 圈数        46

4.2 有向图        47

4.2.1 入度与出度        48

4.2.2 节点类型        48

4.2.3 有向图的邻接矩阵        48

4.2.4 路径与半路径        49

4.2.5 可达矩阵        49

4.2.6 n连通性        50

4.2.7 强分图        50

4.3 软件测试中常用的图        51

4.3.1 程序图        51

4.3.2 有限状态机        52

4.3.3 petri网        53

4.3.4 事件驱动petri网        55

4.3.5 状态图        57

参考文献        58

习题         58

第二部分 功能测试

第5章 边界值测试        62

5.1 边界值分析        62

5.1.1 边界值分析的拓展        63

5.1.2 边界值分析的局限性        64

5.2 健壮性测试        64

5.3 最坏情况测试        65

5.4 特殊值测试        66

5.5 示例        66

5.5.1 三角形问题的测试用例        66

5.5.2 nextdate函数的测试用例        68

5.5.3 佣金问题的测试用例        68

5.6 随机测试        70

5.7 边界值测试的原则        72

习题         72

第6章 等价类测试        73

6.1 等价类        73

6.1.1 弱一般等价类测试        74

6.1.2 强一般等价类测试        74

6.1.3 弱健壮等价类测试        74

6.1.4 强健壮等价类测试        75

6.2 三角形问题的等价类测试用例        75

6.3 nextdate函数的等价类测试用例        77

6.4 佣金问题的等价类测试用例        80

6.5 原则与注意事项        82

参考文献        82

习题         82

第7章 基于决策表的测试        84

7.1 决策表        84

7.2 三角形问题的测试用例        88

7.3 nextdate函数的测试用例        88

7.3.1 第一轮尝试        88

7.3.2 第二轮尝试        89

7.3.3 第三轮尝试        90

7.4 佣金问题的测试用例        92

7.5 原则与注意事项        93

参考文献        93

习题         93

第8章 功能测试回顾        94

8.1 测试的工作量        94

8.2 测试的效率        96

8.3 测试的有效性        97

8.4 原则        98

8.5 案例研究        99

第三部分 结构测试

第9章 路径测试        104

9.1 dd路径        106

9.2 测试覆盖指标        108

9.2.1 基于指标的测试        108

9.2.2 测试覆盖分析器        110

9.3 基路径测试        110

9.3.1 mccabe的基路径方法        111

9.3.2 mccabe基路径方法的注意事项        113

9.3.3 mccabe方法的基本复杂度        114

9.4 原则与注意事项        117

参考文献        118

习题         118

第10章 数据流测试        120

10.1 定义/使用测试        120

10.1.1 举例        121

10.1.2 stocks的定义使用路径        125

10.1.3 locks的定义使用路径        125

10.1.4 totallocks的定义使用路径        125

10.1.5 sales的定义使用路径        126

10.1.6 commission的定义使用路径        126

10.1.7 定义使用路径的测试覆盖指标        127

10.2 基于片的测试        128

10.2.1 举例        129

10.2.2 风格与方法        132

10.3 原则与注意事项        133

参考文献        134

习题         134

第11章 结构测试回顾        135

11.1 缺漏与冗余        135

11.2 用于评估测试方法的指标        137

11.3 重新修订的案例研究        139

11.3.1 基于路径的测试        141

11.3.2 数据流测试        141

11.3.3 片测试        141

参考文献        142

习题         142

第四部分 集成测试和系统测试

第12章 测试的层次        144

12.1 测试层次划分的传统观点        144

12.2 其他生命周期模型        145

12.2.1 瀑布模型的变体        146

12.2.2 基于规格说明的生命周期模型        147

12.3 satm系统        149

12.4 将集成测试与系统测试分开        157

12.4.1 从结构角度分析        158

12.4.2 从行为角度分析        159

参考文献        159

第13章 集成测试        160

13.1 深入研究satm系统        160

13.2 基于功能分解的集成        164

13.2.1 自顶向下集成        164

13.2.2 自底向上集成        166

13.2.3 三明治集成        166

13.2.4 优缺点        167

13.3 基于调用图的集成        167

13.3.1 成对集成        167

13.3.2 相邻集成        168

13.3.3 基于调用图集成的优缺点        169

13.4 基于路径的集成        170

13.4.1 新概念与扩展概念        170

13.4.2 satm系统中的mm路径        172

13.4.3 mm路径复杂度        176

13.4.4 基于路径集成技术的优缺点        177

13.5 案例分析        177

13.5.1 基于分解的集成        181

13.5.2 基于调用图的集成        181

13.5.3 基于mm路径的集成        181

参考文献        182

习题         182

第14章 系统测试        184

14.1 线索        184

14.1.1 线索存在的可能性        185

14.1.2 线索定义        186

14.2 需求规格说明的基本概念        187

14.2.1 数据        187

14.2.2 行为        188

14.2.3 设备        188

14.2.4 事件        188

14.2.5 线索        189

14.2.6 基本概念之间的关系        189

14.2.7 利用基本概念建模        189

14.3 寻找线索        190

14.4 线索测试的结构策略        193

14.4.1 自底向上组织线索        194

14.4.2 节点与边覆盖指标        194

14.5 线索测试的功能策略        196

14.5.1 基于事件的线索测试        196

14.5.2 基于端口的线索测试        197

14.5.3 基于数据的线索测试        197

14.6 satm测试线索        199

14.7 系统测试原则        203

14.7.1 伪结构系统测试        203

14.7.2 性能分析        204

14.7.3 累进测试与回归测试        206

14.8 asf测试示例        206

参考文献        208

习题         208

第15章 交互性测试        209

15.1 交互的语境        209

15.2 交互的分类        211

15.2.1 单处理器中的静态交互        211

15.2.2 多处理器中的静态交互        212

15.2.3 单处理器中的动态交互        213

15.2.4 多处理器中的动态交互        217

15.3 线索的交互、合成和确定性        223

15.4 客户/服务器系统的测试        224

参考文献        225

习题         226

第五部分 面向对象测试

第16章 面向对象测试的相关问题        228

16.1 面向对象测试的单元        228

16.2 合成与封装的含义        229

16.3 继承的含义        230

16.4 多态性的含义        231

16.5 面向对象测试的层次        232

16.6 gui测试        232

16.7 面向对象软件的数据流测试        232

16.8 第五部分所采用的示例        232

16.8.1 面向对象的日历程序        232

16.8.2 货币转换应用程序        234

参考文献        238

习题         238

第17章 类测试        239

17.1 以方法为单元的测试        239

17.1.1 o-ocalendar 的伪代码        240

17.1.2 date.increment 的单元测试        244

17.2 以类为单元的测试        245

17.2.1 windshieldwiper类的伪代码        245

17.2.2 windshieldwiper类的单元测试        246

第18章 面向对象的集成测试        250

18.1 uml对集成测试的支持        250

18.2 面向对象软件的mm路径        252

18.3 面向对象数据流集成测试的框架        259

18.3.1 事件驱动和消息驱动的petri网        259

18.3.2 由继承导出的数据流        260

18.3.3 由消息导出的数据流        261

18.3.4 是否需要片        261

参考文献        261

习题         262

第19章 gui测试        264

19.1 货币转换程序        264

19.2 货币转换程序的单元测试        264

19.3 货币转换程序的集成测试        265

19.4 货币转换程序的系统测试        267

习题         272

第20章 面向对象的系统测试        273

20.1 货币转换器的uml描述        273

20.1.1 问题陈述        273

20.1.2 系统功能        273

20.1.3 表示层        274

20.1.4 高层用例        274

20.1.5 基本用例        275

20.1.6 详细的gui定义        276

20.1.7 扩展的基本用例        276

20.1.8 真实用例        279

20.2 基于uml的系统测试        280

20.3 基于状态图的系统测试        282

参考文献        282

第六部分 新兴测试技术

第21章 探索式测试        284

21.1 上下文驱动学派        284

21.2 探索式测试        285

21.3 探索一个常见示例        287

21.4 探索式测试与上下文驱动测试探讨        288

参考文献        289

习题         289

第22章 基于模型测试        290

22.1 基于模型进行测试        290

22.2 恰当的系统模型        290

22.2.1 peterson格        291

22.2.2 主流模型的表达能力        292

22.2.3 选择恰当的模型        292

22.3 基于用例的测试        293

22.3.1 从用例中推导出测试用例        293

22.3.2 交互用例        294

22.3.3 需要多少用例        295

22.4 支持基于模型的测试的商用工具        295

参考文献        296

第23章 测试驱动开发        297

23.1 “测试然后编码”的软件开发周期        297

23.2 自动化测试执行(测试框架)        304

23.3 java和junit示例        305

23.3.1 java源代码        306

23.3.2 junit测试代码        307

23.4 其他待解决的问题        308

23.4.1 基于规格说明还是基于代码        308

23.4.2 需要配置管理吗        309

23.4.3 粒度应该多大        309

23.5 测试驱动开发的优缺点及其他相关问题        310

23.6 模型驱动开发与测试驱动开发对比        311

第24章 全对测试详述        315

24.1 全对测试技术        315

24.1.1 程序输入        316

24.1.2 独立变量        317

24.1.3 输入的顺序        319

24.1.4 完全由输入所引发的失效        322

24.2 对nist研究成果的进一步分析        322

24.3 全对测试的适用范围        323

24.4 对全对测试的建议        324

参考文献        324

第25章 尾声:软件测试精益求精        325

25.1 软件测试是一种技艺        325

25.2 软件测试的最佳实践        326

25.3 让软件测试更出色的10项最佳实践        327

25.3.1 模型驱动开发        327

25.3.2 慎重地定义与划分测试的层次        327

25.3.3 基于模型的系统级测试        328

25.3.4 系统测试的扩展        328

25.3.5 利用关联矩阵指导回归测试        328

25.3.6 利用mm路径实现集成测试        328

25.3.7 把基于规格说明的测试和基于代码的单元级测试有机地结合起来        328

25.3.8 基于单个单元特性的代码覆盖指标        329

25.3.9 维护阶段的探索式测试        329

25.3.10 测试驱动开发        329

25.4 针对不同项目实现最佳实践        329

25.4.1 任务关键型项目        329

25.4.2 时间关键型项目        330

25.4.3 对遗留代码的纠错维护        330

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/15 13:47:37