科技
类型
7.4
豆瓣评分
可以朗读
语音朗读
310千字
字数
2017-01-01
发行日期
展开全部
主编推荐语
一本详尽、可靠的使用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月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。