Effective软件测试
全新正版 极速发货
¥
61.36
6.3折
¥
98
全新
库存6件
作者(荷)毛里西奥·阿尼什
出版社清华大学出版社
ISBN9787302629375
出版时间2023-06
装帧平装
开本32开
定价98元
货号1202980414
上书时间2024-09-05
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
Maurício Aniche博士是荷兰代尔夫特理工大学软件工程系的助教,并兼任Adyen公司技术部总监。
目录
第1章 有效和系统的软件测试 1
1.1 测试的开发者与不测试的开发者的对比 2
1.2 开发者的有效软件测试 14
1.2.1 开发过程中有效的测试 14
1.2.2 有效测试是一个迭代过程 16
1.2.3 专注于开发,然后专注于测试 16
1.2.4 “设计正确性”的神话 17
1.2.5 测试的成本 17
1.2.6 有效和系统的含义 17
1.2.7 测试自动化的作用 18
1.3 软件测试的原则(或者,为什么测试如此困难) 19
1.3.1 详尽的测试是不可能的 19
1.3.2 知道何时停止测试 19
1.3.3 可变性很重要(杀虫剂悖论) 20
1.3.4 缺陷在某些地方更容易发生 20
1.3.5 测试永远不可能完美或充分 20
1.3.6 上下文信息特别重要 21
1.3.7 验证不同于确认 21
1.4 测试金字塔,以及我们应该关注的地方 22
1.4.1 单元测试 22
1.4.2 集成测试 24
1.4.3 系统测试 25
1.4.4 何时使用每个测试层次 27
1.4.5 偏爱单元测试的原因 28
1.4.6 在不同层次上测试什么 28
1.4.7 如果你不同意测试金字塔,该怎么办 29
1.4.8 本书能帮助大家找到所有bug吗 31
1.5 练习题 32
1.6 本章小结 34
第2章 基于需求规格的测试 35
2.1 需求告诉我们一切 36
2.1.1 步骤1:理解需求、输入和输出 39
2.1.2 步骤2:探索程序在各种输入情况下的行为 39
2.1.3 步骤3:探索可能的输入和输出,并确定分区 41
2.1.4 步骤4:分析边界 43
2.1.5 步骤5:设计测试用例 46
2.1.6 步骤6:测试用例的自动化 48
2.1.7 步骤7:用创造力和经验增补测试集 51
2.2 基于需求规格的测试简述 52
2.3 通过SBT发现缺陷 54
2.4 实际工作中的SBT 64
2.4.1 测试过程是迭代的,而不是顺序的 64
2.4.2 SBT的测试深度 64
2.4.3 分区还是边界?这并不重要 65
2.4.4 上点和离点就足够了,但可以加入一些内点和外点 65
2.4.5 通过相同输入的变化来促进理解 65
2.4.6 当组合数量激增时,务实一点 66
2.4.7 有疑问时,选择最简单的输入值 66
2.4.8 为无关紧要的输入选取合理的值 66
2.4.9 测试null值和异常情况,但只在有意义的时候 67
2.4.10 当测试用例的骨架相同时,采用参数化测试方法 67
2.4.11 适用于任何层次的需求或单元测试以外的测试 67
2.4.12 如何测试有状态的类 68
2.4.13 经验和创造力的影响 70
2.5 练习题 70
2.6 本章小结 73
第3章 结构化测试与代码覆盖 75
3.1 代码覆盖的正确使用方式 76
3.2 结构化测试概述 79
3.3 代码覆盖标准 81
3.3.1 行覆盖 81
3.3.2 分支覆盖 82
3.3.3 条件+分支覆盖 82
3.3.4 路径覆盖 84
3.4 复杂条件语句和MC/DC覆盖标准 84
3.4.1 一个抽象的例子 84
3.4.2 创建一个实现MC/DC的测试集 85
3.5 处理循环语句及类似结构 88
3.6 标准之间的包含关系及标准的选择 89
3.7 基于需求规格的测试结合结构化测试:一个实例 90
3.8 边界测试和结构化测试 96
3.9 单靠结构化测试往往不够 97
3.10 实际工作中的结构化测试 99
3.10.1 为什么有些人痛恨代码覆盖率 99
3.10.2 100%的覆盖率意味着什么 101
3.10.3 应该选择哪种覆盖率标准 103
3.10.4 MD/DC:非常复杂且不能简化的表达式 103
3.10.5 其他覆盖标准 105
3.10.6 哪些代码不应被覆盖 105
3.11 变异测试 106
3.12 练习题 109
3.13 本章小结 113
第4章 契约式设计 115
4.1 前置条件和后置条件 116
4.1.1 断言关键字 118
4.1.2 前置条件和后置条件的强弱 119
4.2 不变式 121
4.3 契约变更与里氏替换原则 125
4.4 契约式设计和测试的关系 130
4.5 实际工作中的契约式设计 131
4.5.1 弱契约还是强契约 131
4.5.2 输入确认与契约必须2选1吗 131
4.5.3 断言语句还是异常处理 134
4.5.4 抛出异常还是软返回值 135
4.5.5 契约式设计有不适用的情况吗 136
4.5.6 前置条件、后置条件和不变式的代码需要测试吗 136
4.5.7 工具支持 137
4.6 练习题 137
4.7 本章小结 139
第5章 基于属性的测试 141
5.1 示例1:PassingGrade程序 141
5.2 示例2:测试unique方法 146
5.3 示例3:测试indexOf方法 148
5.4 示例4:测试Basket类 155
5.5 示例5:创建复杂的领域对象 163
5.6 实际工作中的基于属性的测试 165
5.6.1 基于实例的测试与基于属性的测试 165
5.6.2 基于属性测试中的常见问题 165
5.6.3 创造性是关键 167
5.7 练习题 167
5.8 本章小结 168
第6章 测试替身和模拟对象 169
6.1 哑对象、伪对象、桩对象和模拟对象 172
6.1.1 哑对象 172
6.1.2 伪对象 172
6.1.3 桩对象 172
6.1.4 模拟对象 173
6.1.5 间谍对象 173
6.2 模拟框架的介绍 174
6.2.1 依赖项插桩 174
6.2.2 模拟对象及预期 180
6.2.3 捕获参数 184
6.2.4 模拟异常 188
6.3 实际工作中的模拟 190
6.3.1 模拟的局限性 191
6.3.2 适合使用模拟的场景 193
6.3.3 日期和时间包装器 197
6.3.4 模拟第三方类库 200
6.3.5 其他人对模拟的看法 202
6.4 练习题 204
6.5 本章小结 205
第7章 可测试性设计 207
7.1 基础设施代码和领域代码分离 208
7.2 依赖注入和可控制性 217
7.3 让类和方法具有可观察性 221
7.3.1 示例1:引入有助于断言的方法 221
7.3.2 示例2:观察void方法的行为 223
7.4 构造函数的依赖项,还是使用方法的参数 227
7.5 实际工作中的可测试性设计 230
7.5.1 被测试类的内聚性 231
7.5.2 被测试类的耦合 232
7.5.3 复杂条件与可测试性 233
7.5.4 私有方法的可测试性 233
7.5.5 静态方法、单例模式与可测试性 233
7.5.6 六边形架构与设计技术中的模拟 234
7.5.7 延伸阅读 234
7.6 练习题 235
7.7 本章小结 237
第8章 测试驱动的开发 239
8.1 第一个TDD练习 239
8.2 针对TDD练习的思考 249
8.3 实际工作中的TDD 251
8.3.1 采用TDD还是不采用TDD 251
8.3.2 需要100%的TDD吗 252
8.3.3 TDD适用于所有应用程序和领域吗 252
8.3.4 学术研究对TDD的观点 253
8.3.5 TDD的其他学派 254
8.3.6 TDD和的测试 256
8.4 练习题 256
8.5 本章小结 258
内容摘要
《Effective软件测试》将帮助你交付优质软件。在软件开发过程中,测试是最关键的部分。为编写良好测试以及防止bug进入生产环节,你必须精通掌握基于需求规格的测试、边界测试、结构化测试以及其他核心策略。
这本实用指南将引导开发者了解不同类型的单元测试和集成测试。开发者将学会如何使代码便于测试,以及如何编写易于维护的测试代码,从而创建无缺陷的软件。本书的讲解全面、系统且透彻,富有清晰注释的示例代码,呈现紧贴现实的场景,并对此做了深刻的阐述。
主要内容
•设计严格的测试套件来查找bug。
•适时地使用单元测试、集成测试和系统测试
•前置条件、后置条件、不变式、契约测试和基于属性的测试
•设计测试友好的系统
•测试很好实践和测试坏味道
•利用基于Java的示例来阐释概念,这些概念也适用于其他面向对象的语言
主编推荐
近年来出现了一 些新的出版方式,MEAP(Manning Early Access Program)就是其中的一种,把开源运动扩展到出版行业。在MEAP中,读者可在图书出版前逐章阅读早期版本。在作者写作过程中,读者可以及时提供反馈,帮助作者写出更好的作品。
本书正是基于MEAP诞生的一本软件测试图书,其质量已得到多位读者的检验。本书作者Mauricio Aniche试图帮助开发人员避免常犯的错误。Mauricio博士是开发人员出身,曾亲赴现场交付和部署软件;在客户提出问题后,及时对软件进行了调试、分析和修正。教训是深刻的,他对测试非常重视,亲力亲为,深信“要成为一名高效的开发者,必先成为一名高效的软件测试者”,并强烈推荐在开发系统时构建一个 自动化测试集,随时反馈测试结果,从而显著提高软件工程师的工作效率。
— 没有更多了 —
以下为对购买帮助不大的评价