行为驱动开发(BDD)
行为驱动开发(BDD)
引言
BDD是对TDD理念的扩展。BDD强调有利害关系的技术团体和非技术团队都要参与到软件开发过程中。可以把它看成一种强调团体间合作的敏捷方法。大多数采用某种敏捷方法的团队最终都会遵循BDD的许多原则。在编写单元测试的时候,尽量使用BDD风格为测试命名。BDD风格强调使用完整的、描述性的、便于业务用户理解的名称或术语,避免使用技术术语。BDD希望类、方法和变量的名称尽可能地反映日常用语。

一、开发环境和工具
1.1 Visual Studio 2013
1.2 Resharp 10.0 或以上版本
1.3 SpecFlow
Visual Studio菜单中工具->扩展和更新。

Nuget

二、需求
输入一段明文,用Des的加密方式加密成密文。
输入一段密文,用Des的解密方式解密成明文。
三、代码结构

四、添加情景或功能文件


修改情景

五、编写测试代码

六、运行测试代码

建议先编译代码再运行。
测试理所当然的失败了,因为还没有实现功能。

七、编写代码实现功能

测试通过

以类似的方式实现解密的需求。
八、添加需求
输入空字符串时,用Des加密,应返回空字符串。
输入null时,用Des的加密,应抛出ArgumentNullException。
九、添加新的情景


十、编写新的测试代码


十一、再次运行测试代码


加密空字符串时,没有返回空字符串,不符合预期。
加密null时,抛出了ArgumentNullException,符合预期。
十二、调整代码使加密空字符串满足需求


十三、源码
https://github.com/ErikXu/SimpleBDD
十四、本人Github
https://github.com/ErikXu
最近想把自己的Github经营起来,欢迎大家多交流。
行为驱动开发(BDD)的更多相关文章
- 行为驱动开发BDD和Cucunber简介
测试驱动开发(TDD) 1.测试驱动开发,即Test-Driven Development(TDD),测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前 ...
- 行为驱动开发BDD概要
BDD脱胎于TDD 行为驱动开发(Behavior-Driven Development,简称BDD),是在测试驱动开发(Test-Driven Development,TDD)基础上发展而来的一种软 ...
- 【翻译稿】Behavior Driven Development (BDD)行为驱动开发
这是一篇翻译稿,方便给不知道BDD的同学扫盲.原文链接:What is BDD (Behavior Driven Development)? | Agile Alliance Definition定义 ...
- 行为驱动开发iOS <收藏>
前段时间在design+code购买了一个学习iOS设计和编码在线课程,使用Sketch设计App,然后使用Swift语言实现Designer News客户端.作者Meng To已经开源到Github ...
- [翻译]Behavior-Driven Development (BDD)行为驱动开发(二)
测试驱动开发体现了开发人员对软件产品各部分运作方式的理解,而行为驱动开发则关注于开发人员对软件产品最终表现的行为的预期. 行为驱动开发 TDD更像是一种范式而不是一个过程.它描述了一种先编写测试,然后 ...
- 行为驱动开发(BDD) - 深入了解
行为驱动开发(BDD) - 一个快速的描述和示例 BDD表示乙 ehavior ð里文ð才有发展.用于描述行为的语法是Gherkin. 这个想法是尽可能自然地描述一种语言应该发生什么. 如果你熟悉单元 ...
- .NET里的行为驱动开发
BDD (Given - When - then) Ruby Cucumber, Java FitNesse , Python RoboFramework, C# specflow nspec .NE ...
- Cucumber 行为驱动开发简介
Cucumber 是一个能够理解用普通语言 描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,用Ruby编写,支持Java和.Net等多种开发语言. 现在看看Cucumber中用到的术语 . ...
- 行为驱动:BDD框架之Cucumber初探
1.cucumber cucumber早在ruby环境下应用广泛,作为BDD框架的先驱,cucumber后来被移植到了多平台,简单来说cucumber是一个测试框架,就像是juint或是rspec一样 ...
随机推荐
- java中synchronized的使用方法与具体解释
Java语言的keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. 一.当两个并发线程訪问同一个对象object中的这个synchronized ...
- [to do list][PCB][questions]and[plan]
Questions 2014/5/29 1.最后检查布板,除了用netlist查,还有没有更快的方法? 2014/6/8 1. R的location中心究竟是哪个? watermark/2/ ...
- How to Design Programs, Second Edition
How to Design Programs, Second Edition How to Design Programs, Second Edition
- Apache htaccess 重写假设文件存在!
假设文件 data/cache/index.html 存在.那么才重写. 否则使用默认的MVC 重写.by default.fu@foxmail.com RewriteEngine on Rewrit ...
- 如何制作python安装模块(setup.py)
Python模块的安装方法: 1. 单文件模块:直接把文件拷贝到$python_dir/lib 2. 多文件模块,带setup.py:python setup.py install 3. egg文件, ...
- JavaScript 中的事件类型3(读书笔记思维导图)
Web 浏览器中可能发生的事件有很多类型.如前所述,不同的事件类型具有不同的信息,而“ DOM3级事件”规定了以下几类事件. UI(User Interface,用户界面)事件:当用户与页面上的元素交 ...
- [Unity3D]Unity3D游戏开发之ACT游戏三连击效果实现综述
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在研究了Unity3D Mecanim动画系统的重定向特性后,今天我们继续来探索Me ...
- poj - 1170 - Shopping Offers(减少国家dp)
意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...
- 内存级别/栅栏 ( Memory Barriers / Fences ) – 翻译
翻译自:Martin Thompson – Memory Barriers/Fences 在这篇文章里,我将讨论并发编程里最基础的技术–以内存关卡或栅栏著称.那让进程内的内存状态对其它进程可见. CP ...
- 使用注解实现 bean 转 csv
csv 文件是 aaa,bbb,ccc aaa,bbb,ccc 保存 这里的要求是 List<T> 线性表的类型 转换成 类别似 html 中 table的格式,即第一行是 head 后面 ...