Test Driven or Test First?

简介: I recently got into a discussion with Cobbie Behrend, following on from some comments I’d made about test-driven development.
I recently got into a discussion with Cobbie Behrend, following on from some comments I’d made about test-driven development. I’d said that I rarely do test-first, but I often do test-driven coding.

Cobbie pushed me to distinguish between them, particularly in light of references on the Object Mentor site, the C2 wiki, and other sites, which seem to equate the two.

I disagree—test-first is different than test-driven development.

For me, test-driven development is an important way of thinking about coding. It’s about using tests to gain perspective on your design and implementation. You listen to what the tests are telling you, and alter to code accordingly. Finding it hard to test something in isolation? Refactor your code to reduce coupling. Is it impossible to mock out a particular subsystem? Look at adding facades or interfaces to make the separation cleaner. Tests drive the design, and tests verify the implementation.

Test-first development takes this a step further. In test-first, you never write a line of production code until you first have a failing test that will be "fixed" by the code you write. Want to write a new class? First write a test that instantiates it, watch the test fail, and then implement the class body to fix the broken test.

Test-first development is a subclass of test-driven development. It has every benefit of test-driven development, and then adds a ritual component of testing and coding in a certain order. The intent of the ritual is to ensure that tests are always produced.

For me, test-driven development is an essential part of coding. Test-first coding, however, often strikes me as unnecessarily high-church. So I distinguish the two, in the same way that I distinguish agile methods from eXtreme Programming. Test-driven is an important, almost universal practice. Test-first is a particular implementation, and it isn’t always applicable.

I don’t know if this helps Cobbie in his search for meaning, though…

目录
相关文章
|
8月前
test114514
test114514
48 0
|
存储 SQL 缓存
|
8月前
|
人工智能 安全 数据安全/隐私保护
叫好不叫座?Arm、英特尔、AMD 等 5 位技术大咖畅聊机密计算技术
机密计算作为一项新兴技术,为我们如何安全处理和计算敏感数据提供了新的视角和解决方案。
|
关系型数据库 MySQL 数据库
通过Docker快速搭建Mysql测试开发环境
通过Docker快速搭建Mysql测试开发环境
379 0
通过Docker快速搭建Mysql测试开发环境
just test
click me
1032 0
test1
1340009911118900001111
352 0
|
Shell 开发工具 Perl