-
TDD/BDD,测试/行为如何驱动开发?20
看过一些关于 RoR 里 TDD/BDD 的概念和实践的文章,Test::Unit 和 RSpec 我也知道怎么使用,也尝试过在一些小项目中用它们先写好测试/行为描述,然后开始写实现,但总是感觉写出来的测试/行为描述都是些琐碎的东西(例如 Model 的字段取值范围之类),跟我真正想要的功能似乎并没有太大关系,从而无法驱动出我需要的实现代码。
请问这是怎么回事,我需要怎样来解决这个问题?
问题补充:
谢谢 open2ye 的回答,但是我现在的情况是测试无法驱动出功能,开发根本没有办法按照 TDD 的方式继续下去了,怎么坚持?
有测试代码写得比较好的开源 Rails 项目推荐吗?我所在的公司开发团队小,并没有可以参考学习的优秀代码。
问题补充:
其实我觉得我的问题不在于不知道什么东西该测什么东西不该测,而是根本就不知道如何写出能驱动出功能的测试,感觉写出来的测试都是微不足道的,没有抓住重点的测试,所以无法驱动出想要的功能来。简言之,就是不知道如何设计测试。
请问如何才能学习这种能力?有什么讨论这个问题的优秀书籍吗?2008年8月05日 11:30
9个答案 按时间排序 按投票排序
-
采纳的答案
我觉得你现在需要练习的是书写user story(用户故事)的能力。把你的业务需求用一个一个User Story描述出来,User Story要尽量细一点,然后一个User Story就是一个spec,就这么简单。
http://errtheblog.com/posts/54-be-dee-dee-and-me
你可以看看这篇文章。用test spec可以先写User Story,例如:
引用A User (in general):
- should be able to digg a story
- should not be able to digg a story twice
- should be able to tell if he has dugg a story
这是一个User Story,用yaml格式描述的,然后运行一个rake task,就生成spec的骨架了,接着你填写spec的测试内容就可以BDD驱动编程了。2008年8月05日 22:58
-
写测试驱动代码并不只是写测试代码,是假设你的功能代码已经完成(用mock类),你的测试驱动代码以用户的角度来调用还未实际编写程序(用mock类),来完成实际业务需求。
这样做的目的是要找出那些功能是实际会用到的,然后将用到的代码真正实现,这就是测试驱动开发。2008年8月05日 22:54
-
对测试而言,楼上的楼上说的对,重要的是思想,一定要有所测试,有所不测。这方面和java是一样的,建议看看Junit on Recipts那本书,也许会有所获
不论怎么做,最重要的就是不断的实践/实践2008年8月05日 21:43
-
测试驱动,重要的是思想。
为什么要测试驱动,是优于传统的先写代码再写测试。
比如有数据库增加功能。
先写
A a = new A()
dao.save(a);
然后再去写dao这个实现。
这样的好处是先去思考你要完成的功能是什么。
测试代码写好了,功能就出来了。
“无法驱动出我需要的实现代码”显然是你没把测试代码没有体现你要的功能。2008年8月05日 17:08
-
再看回答
感觉自己有点跑题,
什么东西该测, 什么东西不该测,
在我们公司是这样定义的,
如果你把你代码中的一句话删除, 测试还是通过的话
那么你就应该加个测试了2008年8月05日 12:36
-
这是每个刚开始 TDD/BDD 的人都会有的疑问.
你现在需求的是坚持下来.
到 你测试覆盖不到就睡不着觉时. 你就明白了.
快速学习: 看看别人的测试代码. (Rails 源码)2008年8月05日 12:09
相关推荐
测试驱动开发(Test-Driven Development, TDD)和行为驱动开发(Behavior Driven Development, BDD)是两种重要的软件开发方法论,尤其在敏捷开发环境中被广泛应用。它们的核心目标都是确保软件的质量,但侧重点有所...
### 行为驱动开发(BDD)初探 #### 一、设计的重要性 设计不仅关乎一个类的构建方式,更是整个系统架构的灵魂。正如文中所述:“大到整个系统,小到一个类,我们都要去规划其结构和行为,这个过程被称为设计。”设计...
该数据集是为了对两种著名的软件开发方法进行比较研究而创建的:行为驱动开发 (BDD) 和测试驱动开发 (TDD)。它包含从使用这些方法开发的项目中收集的质量指标,旨在探索它们对软件质量和性能的影响。 该数据集包含...
BDD将DDD的原则和测试驱动开发(Test-Driven Development,简称TDD)结合起来,形成了一套完整的流程,从需求分析到系统实现,再到系统测试,BDD提供了一种模式和语言来帮助团队更好地沟通和协作。 在BDD中,一个...
- **宏和模板:** 通过宏和模板,可以自定义测试行为,如测试数据生成、测试数据驱动等。 - **异常处理:** 支持测试代码中异常的处理,可以检查是否抛出了预期的异常,或者是否没有抛出不应出现的异常。 - **测试...
作者可能会探讨BDD与传统测试驱动开发(TDD)的区别,强调BDD更关注于业务价值而非代码实现。 接下来,书中的重点将转向Cucumber的使用。它会指导读者如何设置和运行Cucumber项目,使用诸如`Feature`、`Scenario`和...
BDD起源于测试驱动开发(TDD),但它更加注重设计过程而非仅仅测试。在BDD中,系统的行为被清晰地定义,这些行为描述随后转化为测试用例,确保实现的代码符合设计预期。BDD的一个关键组成部分是用户故事,这是一种...
本项目gameoflife.net是基于.NET平台,采用行为驱动开发(BDD)和测试驱动开发(TDD)以及面向对象编程(OOP)方法来实现的康威生命游戏。这里我们将深入探讨这些技术及其在项目中的应用。 首先,让我们谈谈BDD...
通常,验收测试使用BDD(行为驱动开发)工具,如Cucumber或JBehave,这些工具支持用业务语言编写的可执行规范,使得非技术人员也能理解测试目的。 在实际应用中,TDD和ATDD可以帮助开发者: 1. 提高代码质量:由于...
与传统的测试驱动开发(TDD)不同,BDD更侧重于非技术人员(如业务分析师和产品经理)也能理解的自然语言表述,这有助于确保开发出的软件符合用户的需求。 在BDD中,测试不再仅仅是验证代码是否按预期工作,而是...
行为驱动开发(Behavior-Driven Development, BDD)是一种软件开发方法论,它结合了敏捷开发的思想和技术,如测试驱动开发(TDD)和领域驱动设计(DDD),以确保软件产品的功能符合最终用户的需求。BDD的主要目标是...
Steve Freeman和Nat Pryce的书籍中,还涵盖了BDD(行为驱动开发,Behavior-Driven Development),这是一种与TDD相关的实践,它强调从用户或利益相关者的角度来描述软件的行为。BDD通常使用领域特定语言(DSL)来...
NET的自动测试(TDD / BDD / ATDD / SBE)工具和框架列表这是与测试的方法和类型有关的.NET自动化测试框架的列表: 测试驱动开发(TDD) 行为驱动开发(BDD) 范例说明(SBE) 验收测试驱动开发(ATDD) 基于属性的...
标题 "turma-accenture-tdd-bdd" 暗示了这是一个与 Accenture 公司相关的培训项目,重点在于 TDD(Test-Driven Development,测试驱动开发)和 BDD(Behavior-Driven Development,行为驱动开发)这两种软件开发实践...
BDD(行为驱动开发)版本是使用 JBhehave 并使用 BDD 实践开发的。 安装 TDD 项目是一个自包含的 eclipse java 项目。 所有依赖项都包含在 /lib 文件夹中 BDD 项目使用进行依赖管理。 在编译项目之前,需要解析...
在C#的TDD实践中,还有一种称为"行为驱动开发"(Behavior Driven Development,BDD)的方法,它使用自然语言描述测试场景,使非技术人员也能理解。例如,我们可以使用SpecFlow这个工具,将Gherkin语法的测试场景转化...
7. **BDD**:行为驱动开发(BDD)是TDD的一种扩展,更注重业务行为的描述。 8. **ATDD**:验收测试驱动开发,确保需求的正确实现。 **Challenge of TDD** 1. **是否所有代码都需要TDD**:不是所有代码都适合或需要...
**RSpec**是一种广泛应用于Ruby生态系统的测试框架,它支持一种称为**行为驱动开发(BDD)**的方法论。BDD不仅是一种测试方法,更是一种软件开发的哲学,强调的是将开发过程中的关注点放在行为上,而不仅仅是功能实现...