搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Effective软件测试
0.00     定价 ¥ 98.00
图书来源: 浙江图书馆(由浙江新华配书)
此书还可采购25本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787302629375
  • 作      者:
    作者:(荷)毛里西奥·阿尼什|责编:王军|译者:朱少民//李洁//张元
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2023-06-01
收藏
畅销推荐
内容介绍
本书将帮助你交付优质软件。对于软件工程师来说,测试是开发过程中最关键的部分。为编写良好测试以及防止bug进入生产环节,你必须精通掌握基于需求规格的测试、边界测试、结构化测试以及其他核心策略。 《Effective软件测试》面向开发人员,指导你完成一个单元乃至整个组件的所有不同类型的测试。开发者将学会如何使代码便于测试,以及如何编写易维护的测试代码,从而创建无bug的软件。本书的讲解全面系统,十分透彻,为示例代码添加了注释,呈现紧贴现实的场景,并做了深入阐述。 主要内容: 设计能够找到bug的严密测试套件; 适时地使用单元测试、集成测试和系统测试; 前置条件、后置条件、不变式、契约测试和基于属性的测试; 设计测试友好的系统; 测试最佳实践和测试坏味道; 利用基于Java的示例来阐释概念,这些概念也适用于其他面向对象的语言。
展开
目录
第1章 有效和系统的软件测试
1.1 测试的开发者与不测试的开发者的对比
1.2 开发者的有效软件测试
1.2.1 开发过程中有效的测试
1.2.2 有效测试是一个迭代过程
1.2.3 专注于开发,然后专注于测试
1.2.4 “设计正确性”的神话
1.2.5 测试的成本
1.2.6 有效和系统的含义
1.2.7 测试自动化的作用
1.3 软件测试的原则(或者,为什么测试如此困难)
1.3.1 详尽的测试是不可能的
1.3.2 知道何时停止测试
1.3.3 可变性很重要(杀虫剂悖论)
1.3.4 缺陷在某些地方更容易发生
1.3.5 测试永远不可能完美或充分
1.3.6 上下文信息特别重要
1.3.7 验证不同于确认
1.4 测试金字塔,以及我们应该关注的地方
1.4.1 单元测试
1.4.2 集成测试
1.4.3 系统测试
1.4.4 何时使用每个测试层次
1.4.5 偏爱单元测试的原因
1.4.6 在不同层次上测试什么
1.4.7 如果你不同意测试金字塔,该怎么办
1.4.8 本书能帮助大家找到所有bug吗
1.5 练习题
1.6 本章小结
第2章 基于需求规格的测试
2.1 需求告诉我们一切
2.1.1 步骤1:理解需求、输入和输出
2.1.2 步骤2:探索程序在各种输入情况下的行为
2.1.3 步骤3:探索可能的输入和输出,并确定分区
2.1.4 步骤4:分析边界
2.1.5 步骤5:设计测试用例
2.1.6 步骤6:测试用例的自动化
2.1.7 步骤7:用创造力和经验增补测试集
2.2 基于需求规格的测试简述
2.3 通过SBT发现缺陷
2.4 实际工作中的SBT
2.4.1 测试过程是迭代的,而不是顺序的
2.4.2 SBT的测试深度
2.4.3 分区还是边界?这并不重要
2.4.4 上点和离点就足够了,但可以加入一些内点和外点
2.4.5 通过相同输入的变化来促进理解
2.4.6 当组合数量激增时,务实一点
2.4.7 有疑问时,选择最简单的输入值
2.4.8 为无关紧要的输入选取合理的值
2.4.9 测试null值和异常情况,但只在有意义的时候
2.4.10 当测试用例的骨架相同时,采用参数化测试方法
2.4.11 适用于任何层次的需求或单元测试以外的测试
2.4.12 如何测试有状态的类
2.4.13 经验和创造力的影响
2.5 练习题
2.6 本章小结
第3章 结构化测试与代码覆盖
3.1 代码覆盖的正确使用方式
3.2 结构化测试概述
3.3 代码覆盖标准
3.3.1 行覆盖
3.3.2 分支覆盖
3.3.3 条件+分支覆盖
3.3.4 路径覆盖
3.4 复杂条件语句和MC/DC覆盖标准
3.4.1 一个抽象的例子
3.4.2 创建一个实现MC/DC的测试集
3.5 处理循环语句及类似结构
3.6 标准之间的包含关系及标准的选择
3.7 基于需求规格的测试结合结构化测试:一个实例
3.8 边界测试和结构化测试
3.9 单靠结构化测试往往不够
3.10 实际工作中的结构化测试
3.10.1 为什么有些人痛恨代码覆盖率
3.10.2 100%的覆盖率意味着什么
3.10.3 应该选择哪种覆盖率标准
3.10.4 MD/DC:非常复杂且不能简化的表达式
3.10.5 其他覆盖标准
3.10.6 哪些代码不应被覆盖
3.11 变异测试
3.12 练习题
3.13 本章小结
第4章 契约式设计
4.1 前置条件和后置条件
4.1.1 断言关键字
4.1.2 前置条件和后置条件的强弱
4.2 不变式
4.3 契约变更与里氏替换原则
4.4 契约式设计和测试的关系
4.5 实际工作中的契约式设计
4.5.1 弱契约还是强契约
4.5.2 输入确认与契约必须2选1吗
4.5.3 断言语句还是异常处理
4.5.4 抛出异常还是软返回值
4.5.5 契约式设计有不适用的情况吗
4.5.6 前置条件、后置条件和不变式的代码需要测试吗
4.5.7 工具支持
4.6 练习题
4.7 本章小结
第5章 基于属性的测试
5.1 示例1:PassingGrade程序
5.2 示例2:测试unique方法
5.3 示例3:测试indexOf方法
5.4 示例4:测试Basket类
5.5 示例5:创建复杂的领域对象
5.6 实际工作中的基于属性的测试
5.6.1 基于实例的测试与基于属性的测试
5.6.2 基于属性测试中的常见问题
5.6.3 创造性是关键
5.7 练习题
5.8 本章小结
第6章 测试替身和模拟对象
6.1 哑对象、伪对象、桩对象和模拟对象
6.1.1 哑对象
6.1.2 伪对象
6.1.3 桩对象
6.1.4 模拟对象
6.1.5 间谍对象
6.2 模拟框架的介绍
6.2.1 依赖项插桩
6.2.2 模拟对象及预期
6.2.3 捕获参数
6.2.4 模拟异常
6.3 实际工作中的模拟
6.3.1 模拟的局限性
6.3.2 适合使用模拟的场景
6.3.3 日期和时间包装器
6.3.4 模拟第三方类库
6.3.5 其他人对模拟的看法
6.4 练
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证