我正在写一篇简短的论文来阐述单元测试和TDD的好处.我在最后加入了一个名为“超越TDD”的短片,其中我希望特别介绍一些基于TDD,BDD和ATDD的不同方法.
我对BDD很熟悉(我玩过SpecFlow),但在读完ATDD之后,听起来非常相似. BDD和ATDD只是基本上相同过程的两个名称 – 以“普遍存在的”语言记录行为,生成自动验收测试套件,然后继续进行验收测试?
虽然我一般同意gishu的帖子,但有几个方面我不同意.在IMHO部分,他将BDD规范作为由Rachel Davies等人开发的用户故事规范呈现:作为……我想……这样.
BDD规范是给定的…当……然后……如同
Given that the user is logged in,when the user clicks on x,then we should see Y.
这与条件,行动和期望有关,是BDD的核心.
正如gishu建议的那样,ATDD是通过使用验收测试规范来推动开发的实践,实施为可执行的验收标准. BDD形式的规范既不是必需的,也不是“最佳实践”.然而,在实践中,将思维和语言集中在如何验证工作是否令人满意并满足要求方面是有效的.
请注意,BDD并非特别基于TDD. ATDD松散地基于TDD,因为它是在开发完成之前进行的测试.除此之外,它不是关注开发人员的工作,而是关注项目的总体方向和验证. ATDD与Story Mapping很好地融合在一起,因为它在发现阶段发挥得很好,当时正在编写更高级别的要求,并且知道“我们怎么知道它何时正确完成?”很重要.