BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

行为驱动的开发框架——NBehave

| 作者 王翔 关注 0 他的粉丝 发布于 2007年7月19日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

作为测试驱动开发“里外翻新”的方法——行为驱动开发,它强调根据业务行为展开测试,而且测试要在功能实现之前,业务行为测试驱动开发工作。柏林的同行最近发布了NBehave,虽然框架很简单,但为实施.NET敏捷开发提供了一个新的方法参考。

BDD(Behaviour Driven Developement)最重要的基础概念是业务化的“Story”,缘于一个很显而易见的原因——“软件开发是要服务于业务需要的”,但实际项目中往往因为各种外部原因打扰我们对这个问题的关注,项目开发的很多时间被“浪费”在怎样完成令项目经理满意的各种报表上,或者像有点“走火入魔”趋势的测试驱动一样,每天忙于为每个类建立Test Class,并且为每个方法、属性建立Test Method。但实际上业务目标往往是粗颗粒度的,BDD一个很重要的目标就是直接达成“需求到实现”的过渡,而并非“需求——概要设计——详细设计——实现”这个中规中矩的过程。在项目规模不是很大、“Story”不是很复杂的情况下,借助各种快速开发工具(Visual Studio.NET/Eclipse),BDD可以作为敏捷开发的一个很好的方法选择。

NBehave有几个关键词:Scenario、Story、World,它们强调了在何种应用情境下,根据业务应用的特点,会有怎样的产出,就是“输入->输出”。在其ATM的示例中很好地演示了这个过程:

  • 定义了一个应用领域“账户管理”。
  • 该领域会有一个事件——用户提取现金。
  • 这里有个前提(Given),用户的账户信息信息可以从信用卡中获取。
  • 然后发生了一个业务行为——用户提取现金(响应就会触发对应的事件)。
  • 这是会出现两种情形(Scenarios)——超支和没有超支良种情况。
  • 最后产生了一个业务结果,账号里的余额情况。
  • 这个过程看上去很直接,而且基本上就是一个完整的需求点的映射,但没有提及任何类方法,更没有提到抽象后对象间的继承关系,完全就是业务化的,考虑范围也仅仅在一个非常集中的业务领域之内。使用后最大的感觉借用广告一句广告词就是“Just do it”,开发工作就是把上面的那个过程用代码填空,最后通过测试验证。

    但是开发一个项目而言,除了业务部分外,还有很大的技术框架部分,NBehave虽好,不过用它完成DAAB那样的技术框架就成问题了。从某种程度上看,NBehave不强调抽象,它考虑的就是“Then and there”怎么做。所以,如果是技术层面的开发,请尽量集成现有框架;业务层面尤其是最外层的业务功能开发,不妨考虑一下BDD;联系它们两者的中间部分,就用领域实体来完成,至于领域实体用XSD方式还是ORM方式,视情况和个人喜好而定。

    评价本文

    专业度
    风格

    您好,朋友!

    您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

    获得来自InfoQ的更多体验。

    告诉我们您的想法

    允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

    当有人回复此评论时请E-mail通知我
    社区评论

    允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

    当有人回复此评论时请E-mail通知我

    允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

    当有人回复此评论时请E-mail通知我

    讨论

    登陆InfoQ,与你最关心的话题互动。


    找回密码....

    Follow

    关注你最喜爱的话题和作者

    快速浏览网站内你所感兴趣话题的精选内容。

    Like

    内容自由定制

    选择想要阅读的主题和喜爱的作者定制自己的新闻源。

    Notifications

    获取更新

    设置通知机制以获取内容更新对您而言是否重要

    BT