本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
书名: | 测试驱动的嵌入式C语言开发[图书]|199003 |
图书定价: | 49元 |
图书作者: | (美)James W. Grenning |
出版社: | 机械工业出版社 |
出版日期: | 2012-01-01 0:00:00 |
ISBN号: | 9787111366232 |
开本: | 16开 |
页数: | 256 |
版次: | 1-1 |
作者简介 |
James W.Grenning 在全球范围内从事培训以及咨询工作。他在软件开发的技术和管理方面拥有丰富的经验。他是把敏捷开发实践引入到嵌入式领域的带头人。他发明了计划扑克(Planning Poker)。他还是2001年2月《软件开发敏捷宣言》的作者之一。 尹哲 是Odd-e.com团队中的一名敏捷教练。他在世界各地从事培训和软件项目咨询,如测试驱动开发、系统工程实践以及分析实践等。他在敏捷与精益教练方面拥有丰富经验,在研发管理和软件设计这两方面也造诣颇深。他同时还是敏捷社区和开源软件的积极参与者。他与本书作者James相识多年,得其言传身教,对本书中所涉及的知识及其应用领域都相当了解。(新浪微博:terry尹哲) |
内容简介 |
《测试驱动的嵌入式C语言开发》深入介绍如何把测试驱动的开发方法应用于嵌入式C语言开发,*部分介绍了两个开源的测试框架,通过测试驱动开发方法开发*个模块;第二部分深入介绍了与系统中其他模块进行交互的代码的测试技术,如测试替身、仿制对象等;第三部分介绍了设计与持续改进代码,如写出更好代码的一些重要原则,建立可测并灵活设计的高级技术,改进已有代码的实践方法—重构技术,改进遗留代码,以及编写和维护测试的指导原则。本书的代码几乎全部用C写成,并且可以用于嵌入式的、受约束的开发和执行环境。 《测试驱动的嵌入式C语言开发》是作者多年实践经验的总结,实用性强,适合嵌入式C/C++语言程序员、工程师阅读。 |
目录 |
《测试驱动的嵌入式C语言开发》 对本书的赞誉 译者序 推荐序一 推荐序二 前言 致谢 第1章 测试驱动开发1 1.1 为什么我们需要TDD2 1.2 什么是测试驱动开发3 1.3 TDD的机理4 1.4 TDD的微循环5 1.5 TDD的好处7 1.6 对于嵌入式开发的益处7 *部分 开 始 第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 测试要做到FIRST37 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 单元测试不能发现所有的bug78 6.5 我们的构建时间太长79 6.6 我们有现存的代码79 6.7 我们的内存有约束79 6.8 我们不得不和硬件交互80 6.9 为什么要用C++的测试框架来测试C81 6.10 我们到哪里了81 第二部分 测试有合作者的模块 第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后198 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 MockIO136 10.3 测试驱动开发驱动程序138 10.4 模拟设备超时142 10.5 这值得吗144 10.6 用CppUMock来仿制144 10.7 生成仿制对象147 10.8 我们到哪里了148 第三部分 设计与持续改进 第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 第四部分 附 录 附录A 开发系统的测试环境233 附录B Unity快速索引237 附录C CppUTest快速索引241 附录D 开始之后的LedDriver245 附录E 操作系统隔离层的例子248 附录F 参考书目255 |