《测试驱动的嵌入式C语言开发》——1.2节什么是测试驱动开发

简介: 本节书摘来自华章社区《测试驱动的嵌入式C语言开发》一书中的第1章,第1.2节什么是测试驱动开发,作者:(美)James W. Grenning,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.2 什么是测试驱动开发
测试驱动开发(TDD)是一种增量式软件开发技术。简单地说,就是在没有失败的单元测试的前提下不可以写产品代码。这些测试要很小,而且要自动化。用测试来驱动其实很合理。相对于直接工作在产品代码上,TDD的实践者们会先用测试来表达他们希望产品代码会有什么样的行为。然后这个测试显然会失败。只有在这时,他们才开始写产品代码,以便让测试通过。
测试自动化是TDD的关键。在TDD的进程中,首先会生成新的自动化测试,紧跟着是满足这些测试的产品代码。一套单元测试伴随着产品代码同时不断增长,它也是像产品代码一样具有价值的资产。每次微小改动代码时,这套测试都会运行一次。这样不仅保证了新代码是可工作的,同时也保证了已存在的代码与新的改动兼容。
软件是很脆弱的,任何改动都可能产生意料之外的结果。如果只有手工测试,我们很难负担这么多测试来预防所有意料之外的情况发生。重新测试的代价太高了,所以我们只去运行那些我们认为必需的手工测试。有时我们没那么幸运,引入了bug却没发现。如果使用TDD,测试会帮我们检查这些意料之外的情况,我们不用放弃检查之前的那些代码的行为。
尽管你的确要写很多有价值的自动化测试,但是TDD并不是一种测试技术。它是解决编程问题的一种方法。它能帮助软件开发人员做出更好的设计决策。对于方向错误,或者疏漏了实际约束的解决方案,测试将会给出明确的警告。测试抓住了产品代码预期的行为。
TDD还很有趣!这就像一个游戏,你在技术迷宫中将软件引向高可靠的方向,同时还避免了无聊的调试过程。伴随着每一个测试的通过都会有新的成就感,并能感受到向目标更近了一步。自动化测试会记录那些假设,抓住决策,并且让我们能专心面对下一个挑战。

相关文章
|
29天前
|
自然语言处理 中间件 编译器
C语言的编译器和中间件开发
C语言的编译器和中间件开发
|
1月前
|
存储 编解码 编译器
嵌入式C语言(四)
嵌入式C语言(四)
27 0
|
1月前
|
存储 编译器 Linux
嵌入式C语言(三)
嵌入式C语言(三)
26 0
|
1月前
|
C语言
嵌入式C语言中的工具代码助你一臂之力
嵌入式C语言中的工具代码助你一臂之力
16 0
|
1月前
|
算法 项目管理 C语言
嵌入式 C 语言大神的进阶之路
嵌入式 C 语言大神的进阶之路
19 0
|
1月前
|
编译器 C语言
嵌入式C语言变量、数组、指针初始化的多种操作
嵌入式C语言变量、数组、指针初始化的多种操作
29 0
|
1月前
|
程序员 编译器 C语言
嵌入式 C 语言中的全局变量问题
嵌入式 C 语言中的全局变量问题
18 0
|
1月前
|
存储 C语言 芯片
嵌入式数据传输及存储的C语言实现
嵌入式数据传输及存储的C语言实现
27 0
|
1月前
|
C语言 数据安全/隐私保护 C++
嵌入式中如何把C++代码改写成C语言代码
嵌入式中如何把C++代码改写成C语言代码
31 0
|
8天前
|
存储 编译器 C语言
嵌入式C语言(六)
嵌入式C语言(六)
18 0