0 0

TDD/BDD,测试/行为如何驱动开发?20

看过一些关于 RoR 里 TDD/BDD 的概念和实践的文章,Test::Unit 和 RSpec 我也知道怎么使用,也尝试过在一些小项目中用它们先写好测试/行为描述,然后开始写实现,但总是感觉写出来的测试/行为描述都是些琐碎的东西(例如 Model 的字段取值范围之类),跟我真正想要的功能似乎并没有太大关系,从而无法驱动出我需要的实现代码。

请问这是怎么回事,我需要怎样来解决这个问题?
问题补充:
谢谢 open2ye 的回答,但是我现在的情况是测试无法驱动出功能,开发根本没有办法按照 TDD 的方式继续下去了,怎么坚持?

有测试代码写得比较好的开源 Rails 项目推荐吗?我所在的公司开发团队小,并没有可以参考学习的优秀代码。
问题补充:
其实我觉得我的问题不在于不知道什么东西该测什么东西不该测,而是根本就不知道如何写出能驱动出功能的测试,感觉写出来的测试都是微不足道的,没有抓住重点的测试,所以无法驱动出想要的功能来。简言之,就是不知道如何设计测试。

请问如何才能学习这种能力?有什么讨论这个问题的优秀书籍吗?
2008年8月05日 11:30

9个答案 按时间排序 按投票排序

0 0

采纳的答案

我觉得你现在需要练习的是书写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
0 0

写测试驱动代码并不只是写测试代码,是假设你的功能代码已经完成(用mock类),你的测试驱动代码以用户的角度来调用还未实际编写程序(用mock类),来完成实际业务需求。

这样做的目的是要找出那些功能是实际会用到的,然后将用到的代码真正实现,这就是测试驱动开发。

2008年8月05日 22:54
0 0

对测试而言,楼上的楼上说的对,重要的是思想,一定要有所测试,有所不测。这方面和java是一样的,建议看看Junit on Recipts那本书,也许会有所获

不论怎么做,最重要的就是不断的实践/实践

2008年8月05日 21:43
0 0

测试驱动开发。呵呵~。那本没看完。只能无法回答你问题哦。

2008年8月05日 18:00
0 0

测试驱动,重要的是思想。

为什么要测试驱动,是优于传统的先写代码再写测试。

比如有数据库增加功能。
先写
A a = new A()
dao.save(a);

然后再去写dao这个实现。
这样的好处是先去思考你要完成的功能是什么。

测试代码写好了,功能就出来了。

“无法驱动出我需要的实现代码”显然是你没把测试代码没有体现你要的功能。

2008年8月05日 17:08
0 0

TDD中的T,更多的含义是用测试代码描述需求

另外还要加上不断的重构

2008年8月05日 16:00
0 0

其实ruby on rails有很多优秀的开源项目,rforum,typo,instantwiki,都可以参考

2008年8月05日 14:57
0 0

再看回答

感觉自己有点跑题,
什么东西该测, 什么东西不该测,

在我们公司是这样定义的,

如果你把你代码中的一句话删除, 测试还是通过的话
那么你就应该加个测试了

2008年8月05日 12:36
0 0

这是每个刚开始 TDD/BDD 的人都会有的疑问.

你现在需求的是坚持下来.

到 你测试覆盖不到就睡不着觉时. 你就明白了.

快速学习: 看看别人的测试代码. (Rails 源码)

2008年8月05日 12:09

相关推荐

    开发人员看测试之TDD和BDD

    测试驱动开发(Test-Driven Development, TDD)和行为驱动开发(Behavior Driven Development, BDD)是两种重要的软件开发方法论,尤其在敏捷开发环境中被广泛应用。它们的核心目标都是确保软件的质量,但侧重点有所...

    初探行为驱动开发(BDD)

    ### 行为驱动开发(BDD)初探 #### 一、设计的重要性 设计不仅关乎一个类的构建方式,更是整个系统架构的灵魂。正如文中所述:“大到整个系统,小到一个类,我们都要去规划其结构和行为,这个过程被称为设计。”设计...

    行为驱动开发 (BDD) 和 Tes 质量指标的比较数据集-最新出炉.zip

    该数据集是为了对两种著名的软件开发方法进行比较研究而创建的:行为驱动开发 (BDD) 和测试驱动开发 (TDD)。它包含从使用这些方法开发的项目中收集的质量指标,旨在探索它们对软件质量和性能的影响。 该数据集包含...

    行为驱动开发全(BDD)面介绍

    BDD将DDD的原则和测试驱动开发(Test-Driven Development,简称TDD)结合起来,形成了一套完整的流程,从需求分析到系统实现,再到系统测试,BDD提供了一种模式和语言来帮助团队更好地沟通和协作。 在BDD中,一个...

    cpp-Catch一个很时尚的C原生的框架只包含头文件用于单元测试测试驱动开发和行为驱动开发

    - **宏和模板:** 通过宏和模板,可以自定义测试行为,如测试数据生成、测试数据驱动等。 - **异常处理:** 支持测试代码中异常的处理,可以检查是否抛出了预期的异常,或者是否没有抛出不应出现的异常。 - **测试...

    Cucumber 行为驱动开发指南 [(英)韦恩,(挪)赫勒索著]

    作者可能会探讨BDD与传统测试驱动开发(TDD)的区别,强调BDD更关注于业务价值而非代码实现。 接下来,书中的重点将转向Cucumber的使用。它会指导读者如何设置和运行Cucumber项目,使用诸如`Feature`、`Scenario`和...

    行为驱动开发

    BDD起源于测试驱动开发(TDD),但它更加注重设计过程而非仅仅测试。在BDD中,系统的行为被清晰地定义,这些行为描述随后转化为测试用例,确保实现的代码符合设计预期。BDD的一个关键组成部分是用户故事,这是一种...

    gameoflife.net:使用BDDTDD和OOP在.NET中Conway的生活游戏

    本项目gameoflife.net是基于.NET平台,采用行为驱动开发(BDD)和测试驱动开发(TDD)以及面向对象编程(OOP)方法来实现的康威生命游戏。这里我们将深入探讨这些技术及其在项目中的应用。 首先,让我们谈谈BDD...

    Test Driven: Practical TDD and Acceptance TDD for Java Developers (PDF英文版)

    通常,验收测试使用BDD(行为驱动开发)工具,如Cucumber或JBehave,这些工具支持用业务语言编写的可执行规范,使得非技术人员也能理解测试目的。 在实际应用中,TDD和ATDD可以帮助开发者: 1. 提高代码质量:由于...

    基于行为驱动开发的自动化测试方法研究.rar

    与传统的测试驱动开发(TDD)不同,BDD更侧重于非技术人员(如业务分析师和产品经理)也能理解的自然语言表述,这有助于确保开发出的软件符合用户的需求。 在BDD中,测试不再仅仅是验证代码是否按预期工作,而是...

    BDD开发之rspec和cucumber

    行为驱动开发(Behavior-Driven Development, BDD)是一种软件开发方法论,它结合了敏捷开发的思想和技术,如测试驱动开发(TDD)和领域驱动设计(DDD),以确保软件产品的功能符合最终用户的需求。BDD的主要目标是...

    测试驱动的面向对象软件开发(英文pdf)

    Steve Freeman和Nat Pryce的书籍中,还涵盖了BDD(行为驱动开发,Behavior-Driven Development),这是一种与TDD相关的实践,它强调从用户或利益相关者的角度来描述软件的行为。BDD通常使用领域特定语言(DSL)来...

    .NET的测试工具和框架列表:。.NET的自动测试(TDDBDDATDDSBE)工具和框架列表

    NET的自动测试(TDD / BDD / ATDD / SBE)工具和框架列表这是与测试的方法和类型有关的.NET自动化测试框架的列表: 测试驱动开发(TDD) 行为驱动开发(BDD) 范例说明(SBE) 验收测试驱动开发(ATDD) 基于属性的...

    turma-accenture-tdd-bdd

    标题 "turma-accenture-tdd-bdd" 暗示了这是一个与 Accenture 公司相关的培训项目,重点在于 TDD(Test-Driven Development,测试驱动开发)和 BDD(Behavior-Driven Development,行为驱动开发)这两种软件开发实践...

    CMS-module:CSC 510 项目作为 TDD 与 BDD 实践的演示

    BDD(行为驱动开发)版本是使用 JBhehave 并使用 BDD 实践开发的。 安装 TDD 项目是一个自包含的 eclipse java 项目。 所有依赖项都包含在 /lib 文件夹中 BDD 项目使用进行依赖管理。 在编译项目之前,需要解析...

    c#_tdd.zip

    在C#的TDD实践中,还有一种称为"行为驱动开发"(Behavior Driven Development,BDD)的方法,它使用自然语言描述测试场景,使非技术人员也能理解。例如,我们可以使用SpecFlow这个工具,将Gherkin语法的测试场景转化...

    测试驱动的产品开发与设计.pptx

    7. **BDD**:行为驱动开发(BDD)是TDD的一种扩展,更注重业务行为的描述。 8. **ATDD**:验收测试驱动开发,确保需求的正确实现。 **Challenge of TDD** 1. **是否所有代码都需要TDD**:不是所有代码都适合或需要...

    The Rspec Book -- BDD methodology

    **RSpec**是一种广泛应用于Ruby生态系统的测试框架,它支持一种称为**行为驱动开发(BDD)**的方法论。BDD不仅是一种测试方法,更是一种软件开发的哲学,强调的是将开发过程中的关注点放在行为上,而不仅仅是功能实现...

Global site tag (gtag.js) - Google Analytics