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

基于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,用于放置特性文件夹。
美国政府:修复漏洞仍有风险 应禁用Java插件 AppGlu应用辅助工具:帮助开发者处理善后工作 iOS!你这几个方面该向Android好好学习 小于1%,中国有真正自主的移动操作系统吗? 张小龙专访系列(下):不一样的产品思维 Gartner:截止到2016年公有云市场复合增长为17.7% Appcore:在企业内部部署IaaS平台 B轮融资600万美元 超现实主义!用脑电波控制你的计算机设备 搜狐否认“情理之中”的退市 上市仍是最优选择 六大BaaS产品推荐:移动开发必备的后端云服务 未遵守承诺 微软遭遇欧盟7.31亿美元巨额罚单 PaaS正能量:6人团队,仅1人全职后端 支撑6000万用户 三星:我不抽成,收益100%让开发者拿去! 腾讯开放平台推“送红利计划” 承诺半年内不参与分成 JavaEE快速开发框架Wabacus 4.0发布,开发效率提高五倍以上 市盈率创新高 谷歌为什么会在苹果博弈中暂时胜出 从Rovio遇到危机,看现在应用市场的演变 Windows Azure支持Android应用 面向东亚推广云服务 抛弃DRAM、拥抱闪存,Facebook重做Memcached 夏普三星联姻 电子行业或将多元化发展 从下拉菜单设计细节看Amazon对用户体验的把握 Chartboost美女CEO:40人团队服务3亿移动玩家 Distimo:新晋开发者想让产品得到关注越来越难 OpenFeint绝迹后,开源项目OpenKit继续前进 美FDA通过搜索引擎和社交平台预警药品副作用 挖坟三星“眼球追踪技术”背后的技术团队 为什么开发者热衷在Stack Overflow上查阅API文档? Facebook推新News Feed 欲造就“个性化报纸” 女神程序员的一天:暴力测试social爬虫代码 2013IBM云存储路线图:更快,更简单,更安全 二战大数据故事:数学家、物理学家、概率论击败德国潜艇 打包以后问题多多. 在sql中怎么不能插入毫秒级的数据啊 急!!!如何得到上一个页面的ID值 使用axis写web services,生成客户端出错 ejb不能执行的问题? 关于showModalDialog方法生成的窗口问题 关于网上邻居 在vb里调用我动态库的一个函数,结果发现在动态库中的局部变量未被正确初始化,这是为什么呢?其它语言都正常。 SQL Server的恢复(100分相送) 哪里有BoundsChecker下载!带注册码的!知道的进来!然后给100分!不知道的不要来! 如何在SQL 语句中加入参数? 如何统计服务器上面的session实例的个数 中病毒,症状:打开很多应用程序,系统无反应,运行金山毒霸,系统无反应;点击“开始”-“关机”-“重新启动”,死机! 这是scanf的漏洞吗? 哪一个网站可以很好地查图书资料? web service 及 net remoting中调用com组件问题 当老师了,教计算机,有哪个的小孩敢拿来让我教 当老师了,教计算机,有哪个的小孩敢拿来让我教 控件被其他控件覆盖 听说JFreeChart的文档都是收费的,哪位高人用的熟,整理一个说明拿来看看.小弟谢过了 那为师兄能详细的介绍以下javasmart怎么用吗? 想换心情! 求救,硬盘故障!!! 高手快来!!不知是什么错误!! 讨论架构 求救,硬盘故障!!! 从一个TQuery中的数据如何快速的存放到另一个表中? 创建临时表空间时出错了 VC6的命令行工具 unix下 oralce 8.0.5 连接unix 下8.1.6的问题 帮助中的一段话 关于delphi中类之间成员的访问问题 请教一条sql语句 IE 不能正常浏览applet? SQL语句的简单问题 求救!树形菜单,请高手赐教 求救!!谁有写过安全策略方案,给个模板呀? winrunner怎么获取工具条中的按钮对象? 这个update为什么报错?该如何改? 招兼职图片程序员 请大家帮帮忙,简单(送分) 如何在web.config中设置验证登陆??????? 非常奇怪的编译问题 .NET的平台怎么搭建! 退格键的ASCii码值是多少?急。。。。。。。。。。。 请教大家个问题 如何用php下载文件? 求能够交替显示不同颜色的行的表格控件,十万火急! 如何将SQL SERVER 2000中的两个表连接在一起,且其中的记录是一对多? 如何用JavaScript控制验证控件的Enable属性?? 拼音模糊查询 两条没有y的直线方程如何判断是平行还是垂直证明下列直线互相平行2x-1=0;x+3=0 璎珞流苏是什么意思 一个圆柱形的汽油桶底面半径是两分米,高是五分米,做这个桶至少要用多少平方分米的铁皮?它的容量是多少升 英语翻译不好意思啊 我是想把这句话翻译成英语 对不起噢 我没说清楚 汗 绾着,赤金盘螭,璎珞,宫绦分别是什么意思? 最好今天晚上回答出来. 螭璎珞圈帮帮忙. 根据两直线方程式,怎样判定是否平行或垂直要列式子 螭读什么?什么意思? 蟠螭怎么读 只做6,8题 6到8题求做 法国总统奥朗德会见中国外长王毅 谴责美国医改网站频瘫痪 奥巴马打保票负全美无人机再袭巴基斯坦致3人死亡美国F-35战机进行首次对地精确投弹X-CAT摩托艇锦标赛挺进中国 首站中国最透明的安全软件:百度杀毒隐私保肯德基“半价桶”遭遇争论 小薯条代替宁海查获一万多罐假红牛 包装味道都和外国驻韩外交官5年犯法48起 外交豁农业部:农垦有望率先实现农业现代化朴槿惠为韩职棒总决赛开球 穿日本运动金鹰系转型“全生活业态” 与品牌商捆【乖乖】你确定这是石头?打死我都不信一个90后连续创业是如何失败的?进口奶粉新规大限将至 新西兰近半奶粉P2P评级口水战何时是个头安卓手Q新服开启 9月2日欢迎召唤师33岁CA创投董事总经理戴周颖:互联从颜色上就能辨认 火影忍者手游勾玉属疯牛来了,但是我只要稳健的18%收益玫瑰花茶搭配减肥效果一级棒一只饥饿的老虎,这个故事看了没有不说极速狂人史上最强读者盲僧纵横录灵魂档案明星贵公子镜中行大宋工程师灵性蒙古高原篮坛风云传奇暗黑之全职业精通者世界第一农庄泸溪河旅游崖墓旅游兴隆热带植物园旅游博鳌永久会址旅游奥林匹克广场旅游佑民寺旅游解州关帝庙旅游永乐宫旅游妈阁庙旅游鳄鱼公园旅游桃坪羌寨旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘