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

基于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,用于放置特性文件夹。
陈晓影:一位女海归曲折的拓荒故事 IDG李丰:在中国,创业公司最好是一个One Man Company Google Drive新增“保存到Drive”按钮功能 可自行添加 腾讯CDC创始人唐沐加盟小米 总经理陈妍接任 老板我想辞职:因为小米100万元征集一张壁纸 移动周报:GitHub上最火的Android开源项目 免费才是王道:盘点开发者须知的25个免费数据可视化工具 Pivotal获通用电气1.05亿美元支持 或将改变大数据和物联网的游戏规则 大掌门与阿里云和解:云生态系统呼之欲出 刘有涛:恩信科技云计算大潮中扬帆起航 Cloudera释放Impala 1.0:与Hadoop完全整合,各方面完爆Hive 云通讯平台:让你的应用会说话 触宝用户过亿,CEO王佳梁常说的词是“创新” 全国电脑健康日启动 360搭建电脑维修开放平台 C语言实现归并排序 360石晓虹:针对移动Apps的DDoS攻击将成重大威胁 更社交化:谷歌将推出Google Play平台服务 C语言对磁盘文件进行快速排序 传Google已关闭短信搜索服务 PayPal首席安全官:靠密码验证身份即将寿终正寝 DRM你又赢了:其API纳入HTML5标准 豌豆荚王俊煜:洗白白其实是一个计划外的产物 抢Google等巨头生意,纽约大学小伙挖掘并出售自己数据 noBackend:前端优先的开发模式 C、CPP const 详解 三星5G技术获得突破性进展 未来传输速度可达10Gbps 5月14日:1984年美国社交网站Facebook创办人Mark Zuckerberg出生 Chartkick:一行代码即可绘制出漂亮的图表 用友UAP将打造开放平台 建应用商店销售企业级应用 共享软件营销:如何将你的产品推向海外 谷歌使用Debian Linux作为GCE的默认操作系统 如何在局域网中实现共享只读文件(没有共享密码)的写操作 杭州的朋友,请问........ 如何在explore显示的网页的文本框中设置正文??? 谁能告诉我学软件工程到底有多少用? 这里有20分,谁要? 大家来看,这就是别人对中国程序员的看法! 寻找图书~? 获取NT管理员权限创意 ?寻找图书~? 为什么运行时正常的程序,编译成可执行文件后运行过程中出错... 怎样填充按钮客户区? 寻找图书~?? 请问如果数据量很大,比如大型企业的即时采集数据,应该用什么数据库系统处理呢?oracle,sysbase,db2,sqlserver还是cobol?? 这么简单的问题,难道就没有人能帮我了吗?!太遗憾了! 敬一杯“情人醉”给MM_mimi(人淡如菊),别人不要进来呀! 谁有过同样的遭遇??? 长整数除法的算法?? 关于Java Plug-in和Applet的一个问题 请求推荐有关SDK的好书!!!!!!! 我受不了了 个人主页链接如何让鼠标变成手形?谢谢! 老话题:三层结构中blob字段的存取出问题了? run-time类是怎么回事? 当多个程序对同一个文件进行读写操作,如何防止同时写入造成混乱? 求银行家算法的c程序! 请问W2K下面鼠标阴影的效果是用哪个API实现的? 我提议有编程经验的朋友们,一起来研究一种真正符合我们实际开发工作的模板 我用上kylix了!!!!!!! 请教,关于NT域用户的问题!NT账号,怎么设定唯一性呀?比如有aa的用户,我用aa登陆后,别人不能用aa同时登陆了?应该在那儿设置呀? Mfm1992?是个什么东西呀! 如何在informix/esql c中使用大事物? 如何保存收下來的email呢???!!!!! 关于一个网站建设的问题,望高手指点。 求救;如何建立一个登陆页面? 谁能给出一个远程访问互联网ACCESS数据库的经典代码?有28分送上! 怎样将-个十六进制数转换为十进制? 如何将java程序编译成dll文件 cannot focus a disabled or invisible window 一表我想通过文本框来增加记录,为何不能发送到表中,不要告诉我是没有post的原因。 奇怪,borland的开发能力这么强,为什么几乎没有一个象office那样流行的应用软件呢?如果它的应用软件很多,就不会象现在这样穷了吧? Delphi 数据库不如Power Builder 吗? 请问怎么安装新的控件? B样条曲线:如何由经过点反算控制点? Berzer曲线:如何由经过点反算控制点? 关于activereport的字符集问题 有没有计算曲线长度和交点的好方法? Install Shield For VC6怎么用???????????????????? ODBC数据库 ****有没有计算曲线长度和交点的好方法? ****Berzer曲线:如何由经过点反算控制点? ****B样条曲线:如何由经过点反算控制点? 六年级数学下册练习册很急啊 急、啊 用猜想和尝试法解决1.一个笼子里,鸡和兔共有28个头,80只脚.鸡和兔各有几只?这个列表我忘了,你们能提醒我一下么?同学们进行队列寻列,排场一个4层的空心方阵,还多15人.如果在方阵的空心部 苏教版数学六年级下册补充习题第78、79页的答案 人教版小学六年级数学下册配套练习册第108页第五题怎么计算,急需算式步骤. 某船队遇晴天和阴天均正常出海捕鱼,逢雨天则休息(晴天、阴天和雨天之外的情形不考虑).那么,在下个月的10日逢雨天的可能性为几分之几?11日出海捕鱼的可能性为几分之几?这两天均不能 补充习题数学六年级下册第60页答案快 1.一个数的6.4倍加上2.6,等于6.1,求这个数2.甲数的五分之二比它的⑦份之①多二分之三,甲数的½是多少?3.1.8的5倍,比一个数的75%少4.5,这个数是多少?4.35除40的商乘以¼与五分之一的差,是 一个正方形,如果长增加2米,宽增加3米,面积就增加46平方米,那么原来正方形的面积是多少平方米?小红有118元钱,全是1元、5元、10元三种面额的,共23张.其中5元和1元的张树一样多.那么1元、5元 六年级数学下册补充习题第11页答案 5题 6题 7题列式 六年级上数学练习册22页第5题答案全说!速度! 苏教版小学六年级数学下册补充习题31页答案 六年级下册数学练习册90页答案,要列式的哦,好的加分! 六年级数学练习册23页的1、2、4、5、6、7、的题目 人教版6年级下册数学书22页第6题答案急 人教版六年级下册数学配套练习册答案10到12页 六年级数学练习册22页第2题、3题、5题、7题和23页的3题 小学六年级上册数学练习二十二的答案 六年级下册数学配套练习册15——21页答案人教版最好有公式的,会答的答,不会答的,别说什么不让抄啊 快 明天就交 不然我就完了 青岛版数学小学六年级课本下册第22页9题 谁有北师大版六年级下册数学练习册72、73页答案我不确定我写的对不对,我想对一下题 六年级下册数学练习册答案47和48补充44和45 青岛版六年级下册数学课本第四页答案现在就要! 北师大版六年级下册数学练习册答案5页 六年级下册数学练习册答案30页的第3题,快.苏教版的.要8个比例试。3/4,4,9. 六年级下册的数学课本有哪些内容, 小学6年级下册北师大版数学练习册答案(只要29 30 31 32页的) 六年级上学期数学练习册习题3.5的9-14小题.(上海教育出版社) 六年级上册数学书第101页人教版的 六年级数学练习册下册北师大版86页答案 六年级上数学练习册40页答案 拜托 急 啊 人教版六年级下册数学书117页答案 篮球场长28米,宽15米.把它画在边长为30厘米的正方形纸上,选择怎样的比例尺比较合适?画好后的篮球场长和宽各是多少厘米?(要算式,有依据) (六年级下学期数学帮你学75页2题) 人教版六年级上册数学练习册41页人教版六年级上册数学练习册41页全部的题 六年级下册人教版数学书练习七答案(6-11)9题可以写也可以不写.莪在此谢过 六年级下册的数学练习册答案 41页、42页、43页答案. 图上距离 实际距离 比例尺 25cm 50km 280km 1:400000还有 0.6cm 4:1人教版的,芝麻开花的快! 六年级下数学练习册41页(三元一次方程)只要做习题6.10 解下列方程 三元一次方程一、 5x-3y+z=25x+2y-4z=3-5x+y-z=2二、x+y=-2x+z=13y+z=1三、x-y-z=-13x+5y+7z=114x-y+2z=-1 人教版六年级下册数学书第62页5.6.7题不需要答案,不过有也行,我的数学书木有带回家.. 六年级数学练习册共几页 六年级数学练习册答案青岛版12到13页一瓶果汁2分之3升用4分之1的杯子来乘能成多少杯 北师大版六年级下册数学书第16页你知道吗的答案 六年级数学练习册 冀教版六年级下册数学练习册第13页答案一块长方形铝板长125.6厘米,宽62.8厘米.用这块铝板卷成一个圆筒,这个圆筒的直径可能是多少厘米?高是多少厘米? 北师大版六年级下册数学课本56页第9题一年级学生88老师4人 二年级学生95老师4人 三年级学生106老师4 四年级学生114老师6 五年级学生130老师6 六年级学生124老师6 大轿车40个座位120元 面包车10 六年级数学!练习册! 复式条形统计图中每个单位长度直条表示什么 苏教版六年级下册数学书16页7、8、9、10题算式加答案,十万火急啊, 谁能告诉我小学人教版数学六年级配套练习册第36页的答案? 复习题1到8 小学6年级数学练习册 北师大版 六年级下册数学配套练习册第六单元综合练习答案人教版会的帮帮忙,不会的别说一些废话啊!整个大题(四)算一算不用给,其他的. 六年级数学练习册下册第35页第3题的第2小题怎么写小明家和小刚家相距1240米.一天两人约定在两家的路上会合.小明每分钟走75米,小刚每分钟走80米,两人同时从家里出发,多长时间后能相遇? 六年级下册数学课本90页的题 六年级数学下册练习册63 六年级下册数学练习册24页的题.(1)为修公路准备了一大堆石子,堆放成圆锥形.这堆石子底面积是1256㎡,高6m.用这堆石子铺宽20米的路,厚度0.2m,能铺路多少米? 开心练习小学数学六年级下第七页六大题的第三问怎么做啊 数学六年级下册练习册54页要的是那种皮子和教科书是一样的练习册哦!只有54页的!我要的是53页的答案 1、5x6/1+6x7/1+7x8/1+8x9/1+9x10/1+……+19x20/12 小学六年级下册数学书第二单元练习二第19题的第二小题怎么算?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn