/NoteBook_ModernCppProgrammingWithTDD

C++程序设计实践与技巧:测试驱动开发读书笔记

Apache License 2.0Apache-2.0

《C++程序设计实践与技巧:测试驱动开发》笔记

MIT License

本文源码:传送门

TDD 的践行步骤

  1. 编译一个最基本单元功能的测试代码。
  2. 测试失败。
  3. 实现功能代码最低限度使得测试代码通过。
  4. 测试成功。
  5. goto ⬆ 第一步。
  6. TDD 的各个周期都会使用重构来审阅设计,不仅仅是功能代码同样包含测试用例。

TDD 的前进规则

在 TDD 周期中的每一步,你必须能回答一些问题以便判断下一步应该采取的行动。

测试结构

了解如何对在文件以及代码逻辑角度对测试结构进行组织。

测试替身

了解当代码中需要与第三方的依赖接口进行交互时,如何摆脱阻塞对想要测试目标代码进行针对性测试。

增量设计

了解增量设计的必要性,以及探讨设计的时机、简单的设计以及阻碍重构的因素。

高质量测试

学习以下方法,来保证高质量的测试:

  1. FIRST 助记符---审核测试的重要方法。
  2. 一个测试一个断言---帮助限制测试的大小准则。
  3. 测试抽象---保持测试可读性的核心原则。

遗留代码的挑战

针对遗留代码的态度,是选择让维护成本不断增加(再函数内增加各种各样的标志和内嵌的代码块)或者着手处理问题?或许大多数时候还是值得一拼的,不允许任何人让系统变得更糟。不值得这么做的唯一情况是,你面对的是一个封闭的系统或即将被淘汰的系统。

测试开发多线程

  1. 如何使用单元测试验证异步执行函数:可以采取 wait/notify 的策略。
  2. 需要根据当前需求寻找一种方法,用强制手段让错误直接源于测试本身,而不是其他什么偶现的原因。
  3. 多线程测试应当注意多条线程操作线程管理方法时是否存在竞争状态。
  4. 多线程时操作同一个任务时这个竞争状态是否有妥善处理。
  5. 线程管理中多线程时处理任务时对于任务间竞争状态是否妥善处理。