本书从第1版付梓到现在已经30余年,是软件测试领域的经典著作。本书结构清晰、讲解生动活泼,简明扼要地展示了久经考验的软件测试方法和智慧。
本书以一次自评价测试开篇,从软件测试的心理学和经济学人手,探讨了代码检查、走查与评审、测试用例的设计、模块(单元)测试、系统测试、调试等主题,以及极限测试、互联网应用系统测试等高级主题,全面展现了作者的软件测试思想。 第3版在前两版的基础上,结合软件测试的最新发展进行了更新,覆盖了可用性测试、移动应用测试以及敏捷开发测试等内容。
本书适合软件开发人员、IT项目经理,以及学生或更多相关的读者阅读,还可以作为高等院校计算机相关专业软件测试课程的教材或参考书。
E-BOOK
软件测试的艺术 原书第3版
软件测试的艺术 原书第3版
👤 Glenford,J.Myers,等
📖 机械工业出版社
📋 9787111376606
🌐 zh-CN
61
下载次数
4.8
用户评分
📦 下载本书
- 测试思维:从心理学和经济学角度理解测试本质,建立正确测试观。
- 用例设计:掌握等价类、边界值、因果图等设计方法,提高用例质量。
- 代码审查:学会代码检查、走查与评审,早期发现缺陷。
- 系统测试:了解功能、系统、验收等高级测试,确保产品满足需求。
- 调试技巧:学习归纳、演绎等调试方法,快速定位和修复问题。
★★★
中级
入门初级中级进阶高级
- 软件测试工程师:提升测试设计能力,掌握经典方法。
- 开发人员:理解测试原理,改进代码质量。
- IT项目经理:了解测试流程,有效管理测试团队。
- 学生:作为软件测试课程的经典教材。
- 自评先行:先做第1章自评价,了解自身水平。
- 理论结合实践:第2-4章是核心,边学边设计用例。
- 重点掌握:第4章测试用例设计是重中之重。
- 扩展阅读:第9、10章涉及敏捷和互联网测试,适合进阶。
- 经典理论:掌握软件测试的经典原则和方法。
- 用例设计:精通多种测试用例设计技术。
- 审查能力:能有效进行代码检查和走查。
- 调试技能:掌握系统化调试方法,提高效率。
- 全局视角:理解测试在软件生命周期中的全面应用。
📖 书籍简介
内容简介
目录
译者序
序言
前言
第1章 一次自评价测试 1
第2章 软件测试的心理学和经济学 4
2.1 软件测试的心理学 4
2.2 软件测试的经济学 7
2.2.1 黑盒测试 7
2.2.2 白盒测试 8
2.3 软件测试的原则 10
2.4 小结 14
第3章 代码检查、走查与评审 15
3.1 代码检查与走查 16
3.2 代码检查 17
3.2.1 代码检查小组 17
3.2.2 检查议程与注意事项 18
3.2.3 对事不对人,和人有关的注意事项 19
3.2.4 代码检查的衍生功效 19
3.3 用于代码检查的错误列表 19
3.3.1 数据引用错误 20
3.3.2 数据声明错误 22
3.3.3 运算错误 23
3.3.4 比较错误 23
3.3.5 控制流程错误 24
3.3.6 接口错误 26
3.3.7 输入/输出错误 27
3.3.8 其他检查 27
3.4 代码走查 29
3.5 桌面检查 30
3.6 同行评审 31
3.7 小结 32
第4章 测试用例的设计 33
4.1 白盒测试 34
4.2 黑盒测试 40
4.2.1 等价划分 40
4.2.2 一个范例 43
4.2.3 边界值分析 45
4.2.4 因果图 50
4.3 错误猜测 66
4.4 测试策略 67
4.5 小结 68
第5章 模块(单元)测试 70
5.1 测试用例设计 70
5.2 增量测试 81
5.3 自顶向下测试与自底向上测试 84
5.3.1 自顶向下的测试 84
5.3.2 自底向上的测试 89
5.3.3 比较 90
5.4 执行测试 91
5.5 小结 92
第6章 更高级别的测试 93
6.1 功能测试 96
6.2 系统测试 97
6.2.1 能力测试 99
6.2.2 容量测试 100
6.2.3 强度测试 100
6.2.4 可用性测试 101
6.2.5 安全性测试 101
6.2.6 性能测试 102
6.2.7 存储测试 102
6.2.8 配置测试 102
6.2.9 兼容性/转换测试 103
6.2.10 安装测试 103
6.2.11 可靠性测试 103
6.2.12 可恢复性测试 104
6.2.13 服务/可维护性测试 105
6.2.14 文档测试 105
6.2.15 过程测试 105
6.2.16 系统测试的执行 105
6.3 验收测试 106
6.4 安装测试 107
6.5 测试的计划与控制 107
6.6 测试结束准则 109
6.7 独立的测试机构 114
6.8 小结 114
第7章 可用性(或用户体验)测试 116
7.1 可用性测试基本要素 116
7.2 可用性测试流程 118
7.2.1 测试用户的选择 119
7.2.2 需要多少用户进行测试 120
7.2.3 数据采集方法 122
7.2.4 可用性调查问卷 124
7.2.5 何时收工,还是多多益善 125
7.3 小结 126
第8章 调试 127
8.1 暴力法调试 128
8.2 归纳法调试 129
8.3 演绎法调试 132
8.4 回溯法调试 135
8.5 测试法调试 135
8.6 调试的原则 136
8.6.1 定位错误的原则 136
8.6.2 修改错误的技术 138
8.7 错误分析 139
8.8 小结 140
第9章 敏捷开发模式下的测试 142
9.1 敏捷开发的特征 143
9.2 敏捷测试 144
9.3 极限编程与测试 145
9.3.1 极限编程基础 146
9.3.2 极限测试:概念 149
9.3.3 极限测试的应用 152
9.4 小结 155
第10章 互联网应用测试 156
10.1 电子商务的基本结构 157
10.2 测试的挑战 159
10.3 测试的策略 161
10.3.1 表示层的测试 163
10.3.2 业务层的测试 165
10.3.3 数据层的测试 167
10.4 小结 169
第11章 移动应用测试 171
11.1 移动环境 171
11.2 测试面临的挑战 173
11.2.1 移动设备多样性 173
11.2.2 运营商网络基础设施 174
11.2.3 脚本编程 176
11.2.4 可用性测试 177
11.3 测试方法 177
11.3.1 真机测试 179
11.3.2 基于模拟器的测试 181
11.4 小结 182
附录A 极限编程示例程序 184
附录B 小于1000的素数 190
序言
前言
第1章 一次自评价测试 1
第2章 软件测试的心理学和经济学 4
2.1 软件测试的心理学 4
2.2 软件测试的经济学 7
2.2.1 黑盒测试 7
2.2.2 白盒测试 8
2.3 软件测试的原则 10
2.4 小结 14
第3章 代码检查、走查与评审 15
3.1 代码检查与走查 16
3.2 代码检查 17
3.2.1 代码检查小组 17
3.2.2 检查议程与注意事项 18
3.2.3 对事不对人,和人有关的注意事项 19
3.2.4 代码检查的衍生功效 19
3.3 用于代码检查的错误列表 19
3.3.1 数据引用错误 20
3.3.2 数据声明错误 22
3.3.3 运算错误 23
3.3.4 比较错误 23
3.3.5 控制流程错误 24
3.3.6 接口错误 26
3.3.7 输入/输出错误 27
3.3.8 其他检查 27
3.4 代码走查 29
3.5 桌面检查 30
3.6 同行评审 31
3.7 小结 32
第4章 测试用例的设计 33
4.1 白盒测试 34
4.2 黑盒测试 40
4.2.1 等价划分 40
4.2.2 一个范例 43
4.2.3 边界值分析 45
4.2.4 因果图 50
4.3 错误猜测 66
4.4 测试策略 67
4.5 小结 68
第5章 模块(单元)测试 70
5.1 测试用例设计 70
5.2 增量测试 81
5.3 自顶向下测试与自底向上测试 84
5.3.1 自顶向下的测试 84
5.3.2 自底向上的测试 89
5.3.3 比较 90
5.4 执行测试 91
5.5 小结 92
第6章 更高级别的测试 93
6.1 功能测试 96
6.2 系统测试 97
6.2.1 能力测试 99
6.2.2 容量测试 100
6.2.3 强度测试 100
6.2.4 可用性测试 101
6.2.5 安全性测试 101
6.2.6 性能测试 102
6.2.7 存储测试 102
6.2.8 配置测试 102
6.2.9 兼容性/转换测试 103
6.2.10 安装测试 103
6.2.11 可靠性测试 103
6.2.12 可恢复性测试 104
6.2.13 服务/可维护性测试 105
6.2.14 文档测试 105
6.2.15 过程测试 105
6.2.16 系统测试的执行 105
6.3 验收测试 106
6.4 安装测试 107
6.5 测试的计划与控制 107
6.6 测试结束准则 109
6.7 独立的测试机构 114
6.8 小结 114
第7章 可用性(或用户体验)测试 116
7.1 可用性测试基本要素 116
7.2 可用性测试流程 118
7.2.1 测试用户的选择 119
7.2.2 需要多少用户进行测试 120
7.2.3 数据采集方法 122
7.2.4 可用性调查问卷 124
7.2.5 何时收工,还是多多益善 125
7.3 小结 126
第8章 调试 127
8.1 暴力法调试 128
8.2 归纳法调试 129
8.3 演绎法调试 132
8.4 回溯法调试 135
8.5 测试法调试 135
8.6 调试的原则 136
8.6.1 定位错误的原则 136
8.6.2 修改错误的技术 138
8.7 错误分析 139
8.8 小结 140
第9章 敏捷开发模式下的测试 142
9.1 敏捷开发的特征 143
9.2 敏捷测试 144
9.3 极限编程与测试 145
9.3.1 极限编程基础 146
9.3.2 极限测试:概念 149
9.3.3 极限测试的应用 152
9.4 小结 155
第10章 互联网应用测试 156
10.1 电子商务的基本结构 157
10.2 测试的挑战 159
10.3 测试的策略 161
10.3.1 表示层的测试 163
10.3.2 业务层的测试 165
10.3.3 数据层的测试 167
10.4 小结 169
第11章 移动应用测试 171
11.1 移动环境 171
11.2 测试面临的挑战 173
11.2.1 移动设备多样性 173
11.2.2 运营商网络基础设施 174
11.2.3 脚本编程 176
11.2.4 可用性测试 177
11.3 测试方法 177
11.3.1 真机测试 179
11.3.2 基于模拟器的测试 181
11.4 小结 182
附录A 极限编程示例程序 184
附录B 小于1000的素数 190
前言/序言
在本书1979年第1版出版的时侯,有一条著名的经验,即在一个典型的编程项目中,软件测试或系统测试大约占用50%的项目时间和超过50%的总成本。
30多年后的今天,同样的经验仍然成立。现在出现了新的开发系统、具有内置工具的语言以及习惯于快速开发大量软件的程序员。但是,在任何软件开发项目中,测试依然扮演着重要角色。
在这些事实面前,读者可能会以为软件测试发展到现在不断完善,已经成为一门精确的学科。然而实际情况并非如此。事实上,与软件开发的任何其他方面相比,人们对软件测试仍然知之甚少。而且,软件测试并非热门课题,本书首次出版时是这样,遗憾的是,今天仍然如此。现在有很多关于软件测试的书籍和论文,这意味着,至少与本书首次出版时相比,人们对软件测试这个主题有了更多的了解。但是,测试依然是软件开发中的“黑色艺术”。
这就有了更充足的理由来修订这本关于软件测试艺术的书,同时我们还有其他一些动机。在不同的时期,我们都听到一些教授和助教说:“我们的学生毕业后进入了计算机界,却丝毫不了解软件测试的基本知识,而且在课堂上向学生介绍如何测试或调试其程序时,我们也很少有建议可提供。”
因此,本书再版的目的与前两版一样:填充专业程序员和计算机科学学生的知识空缺。正如书名所蕴涵的,本书是对测试主题的实践探讨,而不是理论研究,还包括对新的语言和过程的探讨。尽管可以根据理论的脉络来讨论软件测试,但本书旨在成为实用且“脚踏实地”的手册。因此,很多与软件测试有关的主题,如程序正确性的数学证明都被有意地排除在外了。
第1章介绍了一个供自我评价的测试,每位读者在继续阅读之前都须进行测试。它揭示出我们必须了解的有关软件测试的最为重要的实用信息,即一系列心理和经济学问题,这些问题在第2章中进行了详细讨论。第3章探讨的是不依赖计算机的代码走查或代码检查的重要概念。不同于大多数研究都将注意力集中在概念的过程和管理方面,第3章则是从技术上“如何发现错误”的角度来进行探讨。
读者可能会意识到,在软件测试人员的技巧中最为重要的部分是掌握如何编写有效测试用例的知识,这正是第4章的主题。第5章探讨了如何测试单个模块或子例程,第6章讲述了如何测试更大的对象。第7章围绕用户体验或可用性测试这一重要的软件测试概念进行阐述,在更复杂且拥有更广大用户量的软件不断涌现的今天,可用性测试变得越来越重要。第8章介绍了一些程序调试的实用建议,第9章着重研究了极限编程及其测试(一种在今天称为敏捷开发环境中的编程和测试方法)。第10章介绍如何将本书所涵盖的软件测试知识运用到Web开发中,包括电子商务系统以及社交网络的开发。第11章描述了如何测试移动设备上的应用。
本书主要面向三类读者。第一类是专业的程序员。尽管我们希望本书的内容对于他们来说不是全新的知识,但本书能使专业程序员对测试技术增强了解。如果这些材料能使软件开发人员在某个程序中多发现了一个错误,那么本书创造的价值将远远超过书价本身。
第二类读者是项目经理,他们将会直接受益于本书所介绍的实用的测试管理理论与知识。第三类读者是软件或计算机专业的学生,我们的目的在于向学生展示程序测试的问题,并提供一系列有效的技术。对于最后一类读者群,我们建议本书作为程序设计课程的补充教材,使学生在学习阶段的早期就接触到软件测试的内容。
Glenford J. Myers
Tom Badgett
Todd M. Thomas
Corey Sandler
30多年后的今天,同样的经验仍然成立。现在出现了新的开发系统、具有内置工具的语言以及习惯于快速开发大量软件的程序员。但是,在任何软件开发项目中,测试依然扮演着重要角色。
在这些事实面前,读者可能会以为软件测试发展到现在不断完善,已经成为一门精确的学科。然而实际情况并非如此。事实上,与软件开发的任何其他方面相比,人们对软件测试仍然知之甚少。而且,软件测试并非热门课题,本书首次出版时是这样,遗憾的是,今天仍然如此。现在有很多关于软件测试的书籍和论文,这意味着,至少与本书首次出版时相比,人们对软件测试这个主题有了更多的了解。但是,测试依然是软件开发中的“黑色艺术”。
这就有了更充足的理由来修订这本关于软件测试艺术的书,同时我们还有其他一些动机。在不同的时期,我们都听到一些教授和助教说:“我们的学生毕业后进入了计算机界,却丝毫不了解软件测试的基本知识,而且在课堂上向学生介绍如何测试或调试其程序时,我们也很少有建议可提供。”
因此,本书再版的目的与前两版一样:填充专业程序员和计算机科学学生的知识空缺。正如书名所蕴涵的,本书是对测试主题的实践探讨,而不是理论研究,还包括对新的语言和过程的探讨。尽管可以根据理论的脉络来讨论软件测试,但本书旨在成为实用且“脚踏实地”的手册。因此,很多与软件测试有关的主题,如程序正确性的数学证明都被有意地排除在外了。
第1章介绍了一个供自我评价的测试,每位读者在继续阅读之前都须进行测试。它揭示出我们必须了解的有关软件测试的最为重要的实用信息,即一系列心理和经济学问题,这些问题在第2章中进行了详细讨论。第3章探讨的是不依赖计算机的代码走查或代码检查的重要概念。不同于大多数研究都将注意力集中在概念的过程和管理方面,第3章则是从技术上“如何发现错误”的角度来进行探讨。
读者可能会意识到,在软件测试人员的技巧中最为重要的部分是掌握如何编写有效测试用例的知识,这正是第4章的主题。第5章探讨了如何测试单个模块或子例程,第6章讲述了如何测试更大的对象。第7章围绕用户体验或可用性测试这一重要的软件测试概念进行阐述,在更复杂且拥有更广大用户量的软件不断涌现的今天,可用性测试变得越来越重要。第8章介绍了一些程序调试的实用建议,第9章着重研究了极限编程及其测试(一种在今天称为敏捷开发环境中的编程和测试方法)。第10章介绍如何将本书所涵盖的软件测试知识运用到Web开发中,包括电子商务系统以及社交网络的开发。第11章描述了如何测试移动设备上的应用。
本书主要面向三类读者。第一类是专业的程序员。尽管我们希望本书的内容对于他们来说不是全新的知识,但本书能使专业程序员对测试技术增强了解。如果这些材料能使软件开发人员在某个程序中多发现了一个错误,那么本书创造的价值将远远超过书价本身。
第二类读者是项目经理,他们将会直接受益于本书所介绍的实用的测试管理理论与知识。第三类读者是软件或计算机专业的学生,我们的目的在于向学生展示程序测试的问题,并提供一系列有效的技术。对于最后一类读者群,我们建议本书作为程序设计课程的补充教材,使学生在学习阶段的早期就接触到软件测试的内容。
Glenford J. Myers
Tom Badgett
Todd M. Thomas
Corey Sandler
📑 章节目录
- 一次自评价测试
- 软件测试的心理学和经济学
- 代码检查、走查与评审
- 测试用例的设计
- 模块(单元)测试
- 更高级别的测试
- 可用性(或用户体验)测试
- 调试
- 敏捷开发模式下的测试
- 互联网应用测试
- 测试工具与自动化
- 测试的未来趋势