《测试驱动的嵌入式C语言开发》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)格伦宁著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2012
  • ISBN:9787111366232
  • 页数:256 页
图书介绍:在本书中,敏捷方法专家James Grenning演示了为什么和如何在嵌入式软件开发中应用测试驱动的开发方法,他用详细的例子引领读者从TDD的基础走向精通。本书主要内容包括:第一部分介绍了两个开源的测试框架,通过测试驱动开发方法开发第一个模块;第二部分深入介绍了与系统中其他模块进行交互的代码的测试技术,如测试替身、仿制对象等;第三部分介绍了设计与持续改进代码,如写出更好代码的一些重要原则,建立可测并灵活设计的高级技术,改进已有代码的实践方法——重构技术,改进遗留代码,以及编写和维护测试的指导原则。本书的代码几乎全部用C写成,并且可以用于嵌入式的、受约束的开发和执行环境。本书深入介绍了如何把测试驱动开发应用于嵌入式C语言开发,适合嵌入式C/ C++语言程序员、工程师阅读。

第1章 测试驱动开发 1

1.1为什么我们需要TDD 2

1.2什么是测试驱动开发 3

1.3 TDD的机理 4

1.4 TDD的微循环 5

1.5 TDD的好处 7

1.6对于嵌入式开发的益处 7

第一部分 开始 9

第2章 测试驱动开发的工具和约定 9

2.1什么是自动化单元测试框架 9

2.2 Unity:一个全部用C实现的自动化测试框架 10

2.3 CppUTest:一个用C++实现的自动化单元测试框架 16

2.4单元测试也会崩溃 19

2.5“四阶段”模式 19

2.6我们到哪里了 19

第3章 开始一个C语言模块 21

3.1具有可测性的C模块的那些元素 21

3.2 LED驱动都做些什么 22

3.3写一个测试列表 23

3.4写第一个测试 23

3.5先测试驱动接口再测试驱动内部实现 29

3.6增量式前进 34

3.7测试驱动开发者的状态机 36

3.8测试要做到FIRST 37

3.9我们到哪里了 37

第4章 一路测试直到完成 39

4.1从简单入手“生长”出解决方案 39

4.2保持代码整洁——边做边重构 53

4.3重复直到完成 55

4.4声明完成之前先向回走一步 61

4.5我们到哪里了 61

第5章 嵌入式系统TDD策略 63

5.1目标硬件的瓶颈 63

5.2双目标开发的好处 64

5.3双目标测试的风险 65

5.4嵌入式的TDD循环 65

5.5双目标的不兼容性 67

5.6和硬件一起测试 71

5.7欲速则不达 74

5.8我们到哪里了 74

第6章 是的,但是 75

6.1我们没那个时间 75

6.2为什么不在写了代码之后再写测试 77

6.3测试也需要维护 78

6.4单元测试不能发现所有的bug 78

6.5我们的构建时间太长 79

6.6我们有现存的代码 79

6.7我们的内存有约束 79

6.8我们不得不和硬件交互 80

6.9为什么要用C++的测试框架来测试C 81

6.10我们到哪里了 81

第二部分 测试有合作者的模块 83

第7章 测试替身 83

7.1合作者 83

7.2脱离依赖关系 84

7.3何时使用测试替身 86

7.4用C来仿冒,下一步 88

7.5我们到哪里了 89

第8章 监视产品代码 90

8.1灯光调度测试列表 90

8.2对于硬件和操作系统的依赖 91

8.3链接时代换 92

8.4监视被测试代码 93

8.5控制时钟 97

8.6先0后1 98

8.7处理多个的情况 110

8.8我们到哪里了 115

第9章 运行时绑定的测试替身 116

9.1测试随机性 116

9.2冒仿函数指针 118

9.3外科手术般地插入间谍 120

9.4用间谍来校验输出 124

9.5我们到哪里了 127

第10章 仿制对象 129

10.1闪存驱动程序 129

10.2 MockIO 136

10.3测试驱动开发驱动程序 138

10.4模拟设备超时 142

10.5这值得吗 144

10.6用CppUMock来仿制 144

10.7生成仿制对象 147

10.8我们到哪里了 148

第三部分 设计与持续改进 149

第11章 SOLID、灵活并可测试的设计 149

11.1 SOLID设计原则 150

11.2 C语言中的SOLID模型 152

11.3演进的需求和有问题的设计 154

11.4用动态接口来改进设计 160

11.5更灵活的基于类型的动态接口 168

11.6做多少设计才是足够的 171

11.7我们到哪里了 173

第12章 重构 174

12.1软件的两个价值 174

12.2三项关键技能 175

12.3代码中的坏味道以及如何改进它们 176

12.4转化代码 184

12.5那性能和大小怎么办 199

12.6我们到哪里了 201

第13章 为遗留代码加测试 203

13.1遗留代码改动准则 203

13.2童子军原则 204

13.3遗留代码改动步骤 205

13.4测试点 206

13.5两步结构体初始化 209

13.6崩溃直到通过 211

13.7鉴别测试 216

13.8为第三方代码做学习测试 219

13.9测试驱动缺陷修正 220

13.10增加策略测试 221

13.11我们到哪里了 221

第14章 测试的模式与反模式 223

14.1“喋喋不休”测试反模式 223

14.2“拷贝一粘贴一调整一重复”反模式 224

14.3“格格不入的测试用例”反模式 225

14.4“测试组之间的重复”反模式 227

14.5“不尊重测试”反模式 228

14.6“行为驱动开发”测试模式 228

14.7我们到哪里了 229

第15章 结束语 230

第四部分 附录 233

附录A 开发系统的测试环境 233

附录B Unity快速索引 237

附录C CppUTest快速索引 241

附录D 开始之后的LedDriver 245

附录E 操作系统隔离层的例子 248

附录F 参考书目 255