展开全部

主编推荐语

一本详尽、可靠的使用C++进行测试驱动开发的实战指南。

内容简介

本书是一本关于设计原则、编程实践、测试驱动开发的指南,旨在帮助C++ 程序员用测试驱动开发方法构建高性能解决方案。全书共11 章,涵盖测试驱动开发的基本工作方式、潜在好处、怎样利用测试驱动开发解决设计缺陷、测试驱动开发的难点和成本、怎样利用测试驱动开发减少甚至免除调试工作,以及如何长时间维持测试驱动开发。本书适合所有技术层次的C++ 程序员阅读。

目录

  • 版权信息
  • 本书赞誉
  • 译者序
  • 前言
  • 致谢
  • 第1章 环境设置
  • 1.1 开场白
  • 1.2 示例程序
  • 1.3 C++编译器
  • 1.3.1 Ubuntu
  • 1.3.2 OS X
  • 1.3.3 Windows
  • 1.4 CMake
  • 1.5 Google Mock
  • 1.5.1 安装Google Mock
  • 1.5.2 创建main函数运行Google Mock测试
  • 1.6 CppUTest
  • 1.6.1 安装CppUTest
  • 1.6.2 创建main函数以运行CppUTest测试
  • 1.7 libcurl
  • 1.8 JsonCpp
  • 1.9 rlog
  • 1.10 Boost
  • 1.11 构建示例并运行测试
  • 1.12 结束语
  • 第2章 测试驱动开发:第一个示例
  • 2.1 开场白
  • 2.2 Soundex类
  • 2.3 开始吧
  • 2.4 去掉不干净的代码
  • 2.5 增量性
  • 2.6 fixture与设置
  • 2.7 思索与测试驱动开发
  • 2.8 测试驱动与测试
  • 2.9 如果出现别的情况呢
  • 2.10 一次只做一件事
  • 2.11 限制长度
  • 2.12 丢掉元音
  • 2.13 让测试自我澄清
  • 2.14 跳出条条框框来测试
  • 2.15 言归正传
  • 2.16 重构至单一责任的函数
  • 2.17 收尾工作
  • 2.18 漏了什么测试吗
  • 2.19 解决方案
  • 2.20 Soundex类
  • 2.21 结束语
  • 第3章 测试驱动开发基础
  • 3.1 开场白
  • 3.2 单元测试和测试驱动开发基础知识
  • 3.2.1 单元测试的组织和执行
  • 3.2.2 测试驱动单元
  • 3.3 测试驱动开发周期:红-绿-重构
  • 思考和测试驱动开发
  • 3.4 测试驱动开发的三条准则
  • 3.5 表里不一
  • 3.5.1 运行了错误的测试
  • 3.5.2 测试了错误的代码
  • 3.5.3 不当的测试规范
  • 3.5.4 对系统的无效假设
  • 3.5.5 不佳的测试顺序
  • 3.5.6 相关联的产品代码
  • 3.5.7 过度编码
  • 3.5.8 确定性测试
  • 3.5.9 停下来想一下
  • 3.6 成功运用测试驱动开发的思维
  • 3.6.1 增量性
  • 3.6.2 测试行为而非方法
  • 3.6.3 使用测试来描述行为
  • 3.6.4 保持简单
  • 3.6.5 恪守测试驱动开发周期
  • 3.7 成功运用测试驱动开发的方法
  • 3.7.1 下一个测试是什么
  • 3.7.2 十分钟限制
  • 3.7.3 代码缺陷
  • 3.7.4 禁用测试
  • 3.8 结束语
  • 第4章 测试结构
  • 4.1 开场白
  • 4.2 组织方式
  • 4.2.1 文件组织
  • 4.2.2 fixture
  • 4.2.3 Setup与Teardown
  • 4.2.4 Arrange-Act-Assert/Given-When-Then
  • 4.3 快速测试、慢速测试、过滤器和测试集
  • 4.4 断言
  • 4.4.1 经典的断言形式
  • 4.4.2 Hamcrest断言
  • 4.4.3 选择正确的断言
  • 4.4.4 浮点数比较
  • 4.4.5 基于异常的测试
  • 4.5 探查私有成员
  • 4.5.1 私有数据
  • 4.5.2 私有行为
  • 4.6 测试和测试驱动:参数化的测试及其他方法
  • 4.6.1 参数化测试
  • 4.6.2 测试中的注释
  • 4.7 结束语
  • 第5章 测试替身
  • 5.1 开场白
  • 5.2 依赖问题
  • 5.3 测试替身
  • 5.4 手动打造的测试替身
  • 5.5 在使用测试替身时提升测试的抽象程度
  • 5.6 使用模拟对象工具
  • 5.6.1 定义一个派生类
  • 5.6.2 设立期望
  • 5.6.3 松模拟和严模拟
  • 5.6.4 模拟对象中的顺序
  • 5.6.5 巧妙的模拟工具特性
  • 5.6.6 排除模拟失败
  • 5.6.7 一个还是两个测试
  • 5.7 让测试替身各就各位
  • 5.7.1 覆写工厂方法和覆写Getter
  • 5.7.2 使用工厂
  • 5.7.3 通过模板参数
  • 5.7.4 注入工具
  • 5.8 设计会变化
  • 5.8.1 内聚与耦合
  • 5.8.2 转嫁私有依赖
  • 5.9 使用测试替身的策略
  • 5.9.1 探索设计
  • 5.9.2 mock流派
  • 5.9.3 明智地使用测试替身
  • 5.10 其他关于测试替身的主题
  • 5.10.1 怎么称呼它们
  • 5.10.2 测试替身该放在哪
  • 5.10.3 虚函数表和性能
  • 5.10.4 模拟具体的类
  • 5.11 结束语
  • 第6章 增量设计
  • 6.1 开场白
  • 6.2 简单设计
  • 6.2.1 重复代码的代价
  • 6.2.2 投资管理器
  • 6.2.3 投资管理器中的简单重复
  • 6.2.4 我们真的能坚持增量方法吗
  • 6.2.5 更多的重复
  • 6.2.6 小方法的好处
  • 6.2.7 完成功能
  • 6.2.8 增量设计让事情变得简单
  • 6.3 预先设计在哪
  • 6.3.1 哪里才会讨论真正的设计呢
  • 6.3.2 简单设计原则和经典设计理念会在哪起冲突
  • 6.4 阻碍重构的因素
  • 6.5 结束语
  • 第7章 高质量测试
  • 7.1 开场白
  • 7.2 测试先行
  • 7.2.1 快速
  • 7.2.2 独立
  • 7.2.3 可重复
  • 7.2.4 自我验证
  • 7.2.5 及时
  • 7.3 一个测试一个断言
  • 7.4 测试抽象
  • 7.4.1 臃肿的初始化
  • 7.4.2 不相关的细节
  • 7.4.3 缺失的抽象
  • 7.4.4 多重断言
  • 7.4.5 不相关的数据
  • 7.4.6 不必要的测试代码
  • 7.5 结束语
  • 第8章 遗留代码的挑战
  • 8.1 开场白
  • 8.2 遗留代码
  • 8.3 法则
  • 8.4 遗留应用程序
  • 8.5 保持测试驱动开发的心态
  • 8.6 支持测试的安全重构
  • 8.7 添加测试刻画已有行为
  • 8.8 被遗留代码转移注意力
  • 8.9 为rlog创建测试替身
  • 8.10 测试驱动开发改动
  • 8.11 新的场景
  • 8.12 寻求更快测试的简要探索
  • 8.13 立竿见影的提取
  • 8.14 用成员变量查看状态
  • 8.15 用mock查看状态
  • 8.16 其他注入技巧
  • 8.17 用Mikado方法大规模改动代码
  • 8.18 Mikado方法概览
  • 8.19 用Mikado移动一个方法
  • 8.20 有关Mikado方法的更多思考
  • 8.21 这样做值得吗
  • 8.22 结束语
  • 第9章 测试驱动开发与多线程
  • 9.1 开场白
  • 9.2 测试驱动开发多线程应用的核心概念
  • 9.3 示例程序GeoServer
  • 9.4 性能要求
  • 9.5 设计异步方案
  • 9.6 依然简单的测试驱动
  • 9.7 为多线程做好准备
  • 9.8 暴露并发性问题
  • 9.9 在测试中创建客户端线程
  • 9.10 在ThreadPool中创建多个线程
  • 9.11 回到GeoServer
  • 9.12 结束语
  • 第10章 测试驱动开发的其他概念和讨论
  • 10.1 开场白
  • 10.2 测试驱动开发与性能
  • 10.2.1 性能优化测试的策略
  • 10.2.2 相关单元级性能测试
  • 10.2.3 尝试优化GeoServer代码
  • 10.2.4 TestTimer类
  • 10.2.5 性能和小函数
  • 10.2.6 推荐
  • 10.3 单元测试、集成测试和验收测试
  • 10.3.1 测试驱动开发如何与验收测试建立联系
  • 10.3.2 程序员定义的集成测试
  • 10.3.3 测试驱动开发和验收测试驱动开发的重合部分
  • 10.4 变换优先级假设
  • 10.4.1 了解变换
  • 10.4.2 三角法
  • 10.4.3 浏览测试列表
  • 10.5 编写断言
  • 10.5.1 断言—行为—排列
  • 10.5.2 示例程序优先,或至少第二
  • 10.6 结束语
  • 第11章 发展和维持测试驱动开发
  • 11.1 开场白
  • 11.2 向非技术人员解释测试驱动开发
  • 11.2.1 测试驱动什么
  • 11.2.2 关于TDD的研究
  • 11.3 不良测试的死亡漩涡(亦称为SCUMmy周期)
  • 11.4 结对编程
  • 11.4.1 结对原则
  • 11.4.2 结对编程与测试驱动开发
  • 11.4.3 角色切换
  • 11.5 Kata和Dojo
  • 11.5.1 在测试驱动开发中应用Kata
  • 11.5.2 Dojo
  • 11.6 有效地使用代码覆盖率统计
  • 11.7 持续集成
  • 11.8 为团队制定测试驱动开发标准
  • 11.9 保持与社区同步
  • 11.9.1 阅读测试
  • 11.9.2 博客与论坛
  • 11.10 结束语
  • 附录A 比较单元测试工具
  • A1.1 开场白
  • A1.2 测试驱动开发单元测试工具的特性
  • A1.3 Google Mock的说明
  • A1.4 CppUTest的说明
  • A1.5 其他单元测试框架
  • A1.6 结束语
  • 附录B 代码Kata:罗马数字转换器
  • B.1 开场白
  • B.2 出发吧
  • B.2.1 1,2,3……
  • B.2.2 数字10,先生!
  • B.2.3 欲擒故纵
  • B.2.4 收尾工作
  • B.3 熟能生巧
  • B.4 结束语
  • 附录C 参考文献
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社·图灵出品

图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。