说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基于Python的行为驱动开发实战

HTML文档下载 WORD文档下载 PDF文档下载
行为驱动开发(Behavior-Driven Development,BDD)是一种卓越的开发模式,可使整个团队保持专注,保持自信,保持活力,并使潜在错误降到最低。

【编者按】行为驱动开发(Behavior-Driven Development,BDD)是一种卓越的开发模式。能帮助开发者养成日清日结的好习惯,从而避免甚至杜绝“最后一分钟”的情况出现,因此对提高代码质量是大有裨益的。其与Gherkin语法相结合的测试结构及设计形式,使得对团队的全部成员包括非技术人员都具有极好的易读性。

所有代码都必须进行测试,这意味着上线时把系统瑕疵降到最低甚至为零。这需要与完整的测试套件相配,从整体把控软件行为,使得检测与维护都能有序进行。这就是BDD的魅力所在,难道不心动吗?

什么是BDD?

BDD的概念和理论源自TDD(测试驱动开发),类似于TDD的理论要点是在编码前先写好测试。不同点是除了使用单元测试进行细粒度化测试,还使用接受测试(acceptance tests)贯穿程序始末。接下来我们会结合Lettuce测试框架进行讲解。


BDD过程可简单概括为:

  • 编写一个缺陷接受测试
  • 编写一个缺陷单元测试
  • 使单元测试通过
  • 重构
  • 使接受测试通过

在每个功能里,如有需要重复上述步骤。

敏捷开发中的BDD

在敏捷开发中,BDD更是如鱼得水。

如果项目的新功能和新需求每隔一、两个星期就发生变更,那么该团队需要配合进行快节奏的测试和编码工作。Python中的接受和单元测试可以帮助实现该目标。

接受测试为人熟知的是使用了一个英文格式的“特性”描述文件,内容是含有的测试以及个别测试。这样做的好处是使整个项目团队都参与其中,除了开发者,还有管理者与商业分析者等不参与实际测试过程的非技术成员。

特性文件的编写遵循全员可读的规则,使技术和非技术成员都能清楚理解与接收。如果只包含单元测试,那么有可能会导致需求分析不全面或不能达成共识。接受测试的最大优点是适用性强,不论项目规模大小都能运用自如。

Gherkin语法

通常会使用Gherkin来编写接受测试,Gherkin来自Cucumber框架,由Ruby语言所编写。Gherkin语法十分简单,在Lettuce Python中主要使用以下8点来进行特性和测试的定义:

  • Given假设
  • When时间
  • Then下一步
  • And与
  • Feature特性:
  • Background背景:
  • Scenario Outline场合大纲:

安装

使用Python常用的pip install语句就可完成Lettuce包的安装:

$ pip install lettuce
$ lettuce /path/to/example.feature用于运行测试。可以每次只运行一个测试文件,或者是提交目录名来运行目录下的所有文件。

为了使测试的编写和使用更加容易,我们建议把nosetests也安装好:

$ pip install nose

特性文件

特性文件由英语写成,内容是测试所覆盖的程序范围。此外还包括测试的创建任务。换言之,你除了需要编写测试,还得规范自己就程序的方方面面编写出良好的文档。这样做的好处是使自己对代码上下都心中有数,明确下一步做什么。随着项目规模的扩大,文档的重要性会逐步显现;例如重新回顾某个功能或对某个调用API进行回溯等等。

接下来会结合TDD中的一个实例创建一个特性文件。该实例是一个由Python写成的简易计算器,同时会演示接受测试的基本写法。目录构成的建议是建立两个文件夹,一个是app,用于放置代码文件如calculator.py;另一个是tests,用于放置特性文件夹。
巧用MapReduce+HDFS,海量数据去重的五大策略 革自己的命?为带来一致体验 IE11伪装FireFox 最古老的Linux发行版Slackware以及Arch Linux齐弃MySQL JEECG v2.3 发布,基于代码生成器的智能开发框架 Mozilla将设应用工场 Firefox OS瞄准欧洲南美 Summly创始人:12岁开始编程 17岁公司卖了3000万美元 因SaaS与NoSQL,Oracle雄风不在? 那些年云计算领域的大牛们 回顾:那些被平台方封杀的第三方应用 [热帖推荐] 中国的程序员,真的“短命”吗? 聚焦HTML5移动开发 第六届英特尔杯大学生软件开发大赛开幕 虚拟化技术新星Pluribus Networks获中国VC青睐 可穿戴开发!Pebble Watchface SDK 4月发布 我想做个程序员:一位编程小白的App开发故事 Go 1.1发布,支持向后兼容 Polycode:免费、开源的跨平台(游戏和APP)开发工具 为何大多数云计算公司注定要失败 究竟是什么让Redshift比Hive快10倍?! [评论]将Linux拒之门外 微软被开源社区指控垄断 精细化运营:友盟统计分析SDK 3.0版本发布 “锤子OS”功能猜测与罗式对比营销 神奇!1KB JavaScript代码编写的3D蜜蜂 顶尖技术人员“兜售”的顶尖编程语言、扩展工具等 移动阅读商业化:Flipboard支持用户DIY杂志 全球移动App:Top 52发行商排行榜 知新网CTO:从程序员的视角,实践精益创业 罗永浩锤子ROM:小团队的75项微创新 谷歌知识图谱扩展到Android平板电影中 云计算大战升温 服务器OEM押注OpenStack 如何将战略性的内容策略融入进网页设计中 数字天堂CTO:移动行业应用开发“潜规则” 怎么去掉超链接的下划线 如何在BSD上安装jdk,resin,oracle8i 如何利用ADO建立一个与带有密码的ACCESS数据库联接? 在C#中,有一个MDI的父窗体,如何在其上创建几个悬浮的窗口? 请问如何得到鼠标所在的窗口句柄 問題很簡單,請幫我看一下:這個頁面為什麼一按刪除按鈕就會出錯呢? asp中具体怎么用其自带的TreeView控件?(多给分!!!) u 盘的使用问题 急 急 急!!!!! 谢谢大家 两块硬盘,装两个linux系统,如何设置启动? 图象横向和纵向的显示问题 问个基本问题? 问一个SQL查询语句 难题!怎么通过Proxy的NTLM验证? 分不是问题,望高手详解 允许DBGrid对记录进行编辑,在线等待,急急急~ ISO 1054 标准 请问如何使用PFC中数据窗口的resize服务? 页面设置问题!请教!! 哪里有 趣味程序导学 java2這本書的源代碼下載﹖ 关于win2000AD的一个问题?(急) 为什么找不到a.out文件 oracle 的SGA问题,性能优化 写功能模块报告含流程图的问题 请教关于DOM NodeFilter的相关用法! 关于BREW 买书落,便宜啊......(UP有分) 请问,通过java怎么访问其他机器的web services?提供思路就给分! 现在我面临着给50多台机装win2000的任务,怎么办 oracle 的SGA问题,性能优化 刚刚完成的改版公司主页。大家去支持一下小弟呀! ? 有谁知道上海的做J2EE薪水有多少(平均水平),谢谢大家! 几个算法问题,参与者都有分! .NET制作的安装程序安装好后如果删除了打包的一个文件,再次通过快截方式启动时会重新安装,怎么不让他安装? 哪位能给提供一套ISO文档的实例? 如果procedure中执行的是一条SQL语句,如何得到返回的数据集? 可不可以在单线乘里开2个SOCKET? 帮我看看这个c语言的程序! 怎样处理窗口标题? 高分求助 !!!怎样利用INTERNET实现异地多台机器互连? 很简单,如何得到当前的时间和日期?(在线等待) 请问哪里有用applet做的,能绘制数学曲线的动态演示系统?各位,请不吝赐教 今天大清早被人诅咒! Delete 多个表时一条语句怎样写?? 请教:如何获取文本框中SQL语句。50分 日期型的格式应该怎样写?? windows xp internet 浏览器的问题 大家帮我看看这段代码:它是如何得到name和phone的值,并写到文件中取得 100分求李维的delphi5.x分布式系统开发的源代码,电子书我已经有 奇怪。为何win2000的搜索选项中的日期控件是Delphi中的样式?欢迎来讨论,给分!!! 请教一个数据库查询的问题! 哥、姐帮帮小第,一生成并打印表格问题(有图片及字体适应),急急,十万火急。 我去年买了表 每个人都有烦恼吗,为是么世界上有烦恼 2014香港回归多少年 我去年买了个表什么意思 什么地方有火山,多长时间爆发一次? 新民主义革命的三大法宝是什么?毛泽东是怎样论述其相互关系的? 我去年买了个表!什么意思? 什么是实证法 香港回归至今已有多少年?我要去香港啦! 有句话是说斧头砍树 把斧头磨锋利点比一开始就去砍树的那把斧头砍的快 那句话怎么 通入过量SO2气体后为什么Na+、Ca2+、K+、Cl- 仍能大量共存不是会生成CaSO3沉淀吗?如果不能反应,原理是什么~ 请问今年7月1日是香港回归多少年纪念日?回答具体一点! 锋利的斧头砍倒了一棵棵树.改为拟人句 SO2气体通入含有大量NH4+,I-,Cl-,Ca2+的溶液答案上说不反应,NH4+,Ca2+不是反应了吗 K+ Ca2+ Cl- NO3- 在溶液中,通入CO2 能否共存?Ca2K+ Ca2+ Cl- NO3- 在溶液中,通入CO2 能否共存?Ca2+ 是不是会与CO2反应? 人们用锋利的斧头( )地砍倒一棵棵高大的树木 怎样提高英语分数(初三的)? 香港回归之前比如说 英国人和香港人平等吗 英国是否想奴化香港人 香港回归前的生活等等 宇通客车上柴发动机换方向机助力泵时方向要打一边吗 “伐木人用斧子把他砍倒,拉到山谷里去了”换个表达方式,意思不变 三个句子 我初三了英语什么都看不懂不会,我还有希望吗?我怎么才能提高英语成绩, 《诗经》是怎样描写伐木声的 武林外传 锋利的斧头武林外传里的“锋利的斧头”怎么得 日本的火山是怎么形成的 尽头的意思是什么 显示器翻译成英文是什么 成因与非洲板块运动直接相关的地形单元? 孤单,寂寞的尽头是什么呵呵 英语翻译KUVAVARITARKENNUSASETUKSETKIRKKAUEKONTRASTIGAMMAESIASPUNAINPUNAINENVIHREASININENVAAKASUORAPYSTYSUORAKIELTSUOMIosd asentovaakasuorapystysuora 避雷针有什么构成? 砍树的声音是什么声 英语翻译请翻译“Warning!CPU has been changed or cpu ratio changed fail.Please re-enter cpu settings in the CMOS setup and remember to save before quit! 避雷针的构造包括全部技术 提供 砍树的声音用文字表达还有用锯子锯树的声音用文字表达 有一幅图片表现的是一个男人砍掉了所有的树后,一只小鸟对他说:"请把我也带走吧.根据这些写作文400字. 避雷针的组成部分快,急 膈的运动与呼吸运动的关系请问、这个图是呼气还是吸气 为什么说中国革命是新民民主义革命 避雷针由哪几部分组成的? 避雷针的功能是什么 规范研究法和实证研究法的异同? 压力真的能给人带来动力么?这个社会,压力太大,做什么事都是的,真的能激发我的动力吗? 避雷针起什么重要的作用? 谈谈对新民民主义革命基本理论的理解 人是不是要有压力才有动力吗? 家是什么?请说说你对家的理解 恒定刺激法有哪些特点和操作方法? 这是个什么电路,上面各个元件都是神马? 形容伐木的象声词 请问上市公司财务风险预警实证研究可以只选取一种方法吗,比如logistic回归分析法. 少量SO2通入Ca(CIO)2溶液中的离子方程式 热学的一些概念 这里有一些选择概念,希望master们帮忙分析和判断,1.温度相同的物体,内能都相等.2.物体的温度越高,内能就越大.3.物体的运动速度越大,其内能就越大.4.物体被举的越高,其内能 头孢类和大环内脂类抗生素分别指的哪些抗生素,阿奇类抗生素是哪些?对于孩子来说,哪些副作用小一些? 7.2v电源的遥控车可以用9.6V的电池吗? 英语翻译中---->英十字槽盘头螺钉六角头全螺纹螺栓平垫圈环氧玻璃布板 小林和妈妈去超市购物,买日永平花去所带前的三分之一,买食品花去剩下钱的四分之一还剩150元,求她们所带的钱 不敢恭候什么意思 “给大师买表”这句话是什么意思? 人为什么要有那么多烦恼呢? 新民主义革命三大法宝是什么?毛泽东是怎样论述其相互关系的 杨洁篪:中国是二十国集团的积极参与者“中国皮都”平阳十年整治制革产业 政微信被指“封杀”来往 回应称打击病毒巴基斯坦塔利班首领被美击毙 巴和平进监察部召开座谈会 聘请马怀德等40人民政部部长:鼓励老年人再社会化 释放中国国资改革进入关键期 “领队”角色快递员送货路上猝死 “过劳现象”蔓延联合国官员:目前还在讨论叙利亚化武销获俄罗斯一大型私营网站聘用 斯诺登开英国检方称《世界新闻报》曾窃听哈里王洛杉矶机场枪击案嫌犯身份确定 被指曾巴武装人员挖地道埋炸药炸伤以军 巴以纽约将购烟年龄限制上调至21岁 禁止美国:伊拉克“平衡木”不好走克里承认美国一些监听行为很过分联合国官员:目前还在讨论叙利亚化武销美国防部否认美日制定钓鱼岛防卫计划联合国官员:目前还在讨论叙利亚化武销洛杉矶机场枪击案嫌犯身份确定 被指曾水泥槽罐车侧翻压住红色宝马 永康一对老师调查压岁钱去哪了:男孩称存钱“买福建:老人街头被摩托撞倒 路人将其扶越南两手应对南海事务:模仿中国 搞反男子捡到伪钞不上交 买槟榔花200元新加坡华人政要呼吁新移民为新家园作出内蒙古提前两年半实现城乡居民养老保险长春边检站开展“换岗体验”活动2013落马官员逾5成系厅局级 “5台五旬男子因感情生变刺死女友 出租房日韩海外周报-日本铁树开花难救主 韩图:黄晓明携女友老家探亲 与Ange驻格鲁吉亚大使岳斌赴中资企业考察调研香港各界谴责歧视内地客行为 呼吁警方港铁旺角东站两家店铺遭窃 损失仍在评文物局:名城规划保护要避免“千城一面西班牙一中国夫妻在医院离弃初生女婴遭“我与冰雕合个影” 图《猛禽(二)》特种邮票23日发行张雨绮卖萌展小女人一面傻子瓜子创办者:当时钱多得用麻袋装 新增出生人口考验资源 人大常委:需监
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘