《测试驱动的嵌入式C语言开发》——3.8节测试要做到FIRST

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

3.8 测试要做到FIRST
在Agile in a Flash[OL11]一书中,Tim Ottinger和Jeff Langr给我们讲述了5个单元测试的关键属性。高效的测试需要做到FIRST。
F Fast(快速的): 测试要快速,快到程序员可以在每个微小的改动后都运行它们而且不会打断工作流。
I Isolated(独立的): 测试用例要是独立的。一个测试不会为另一个测试创建环境。测试中的失败也要分离开。
R Repeatable (可重复的): 测试要可以重复地去运行。可重复意味着自动化。一个循环中的测试总是给出同样的结果。
S Self-verifying(自校验的): 测试会自己检查产出,通过时只给出简单的“OK”,失败时给出详细的细节。
T Timely(及时的): 测试要及时做。程序员要及时写测试,与写产品代码紧连(但必须是在前面)来防止软件bug的产生。
这对于用C来做测试驱动开发来讲很有挑战。TDD最容易应用在完备的功能单元上,而对于通常的C编程实践来讲,常常缺失完备的功能单元。模块的边界不是很清楚,并且语言本身的结构对此的帮助很有限。
在面向对象语言中,函数围绕着通用的数据而聚集在一起,数据由函数定义的接口来访问。语言本身直接支持完备单元。完备单元的可测性更好。这就是为什么TDD在应用于面向对象的编程语言时更自然的原因。虽然C并不是面向对象语言,但是这并不能阻止我们从面向对象世界中学到有价值的知识。
当我们的测试做到了FIRST,那么它将引导我们产出模块化的设计,这样的设计支持当前的测试。让我们拭目以待,来看如何让代码模块化并可测。

相关文章
|
29天前
|
自然语言处理 中间件 编译器
C语言的编译器和中间件开发
C语言的编译器和中间件开发
|
1月前
|
存储 编解码 编译器
嵌入式C语言(四)
嵌入式C语言(四)
27 0
|
1月前
|
存储 编译器 Linux
嵌入式C语言(三)
嵌入式C语言(三)
26 0
|
1月前
|
C语言
嵌入式C语言中的工具代码助你一臂之力
嵌入式C语言中的工具代码助你一臂之力
18 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
|
9天前
|
存储 编译器 C语言
嵌入式C语言(六)
嵌入式C语言(六)
18 0