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

基于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,用于放置特性文件夹。
Cocos2d-x v3.0正式版本发布!优化C++、Lua、JavaScript接口 定价99元首发1万台 360安全路由器启动预约 AMD新产品线曝光 首次实现X86与ARM针脚融合 IT界最难以替代的9个角色 《近匠》英特尔® XDK:从开发、测试到部署,一站式HTML5开发工具 手游云测工具TestBird:测试走入垂直细分领域 阿里巴巴赴美IPO的种种及马云内部邮件全文 盘点EMC World 2014三大看点 2014年Q1:智能手机总销量下滑,WP同比反增119% 着眼无人驾驶技术 英特尔投资日本ZMP公司 移动云服务UCloud快速扩张 成立北京分公司 精准推送 个推推出2.0产品“Smart Push” 从张小龙的七大价值观说开去 2014高德LBS应用大赛正式启动 助力打造生态圈 专访永洪科技CEO何春涛:管理者的炼成及国内大数据公司的挑战 R语言如何发展?商业支持或许可行 专访InMobi CEO Naveen Tewari:Banner广告已经OUT 效力苹果18年的资深高管Katie Cotton将退休 主打“全、新、独、准”,华为推出游戏中心平台 阿里云计算出海挑战亚马逊 首站香港及东南亚 TIOBE 2014年5月编程语言排行榜:Adobe ActionScript挤进Top20 秒杀iPad Mini?微软或将下月发布Surface Mini 大道手游:详解应用内购买的定价趋势与技巧 与英特尔软硬合作,Cloudera将在中国建立业务机构 准备迎接第一个量子计算软件公司吧! 搜狗搜索发布新LOGO和移动App 正全面入驻腾讯各条产品线 做好扁平化设计-视觉篇 关于敏捷研发的跨界反思 《近匠》雨血,一个“独立游戏人”的反思 一周消息树: 阿里巴巴赴美IPO的种种及马云内部邮件全文 一周热点:准备迎接第一个量子计算软件公司吧! javamail问题 连接ACCESS时,总是要弹出LOGIN窗口,如何去掉? DIB与DDB到底有什么区别?? delphi 怎样建数据库 (dos6.22不动一会儿硬盘就停止响应了)如何在dos下设置硬盘的电源管理。命令是什么?谢谢 《TCP-IP详解卷2:实现》的源代码在哪里下载? 如何接受这个消息呢? Not operational? 谁来推荐本关于NT或2000 服务编程方面的书籍下载地址? 请问如何编写组播路由软件 如何实现 Delphi 带参数运行? 寻找DDbgridEh控件for Delphi6,高分! 一个VFP的打印问题! 关于基于单文档应用程序的问题 怎样在Exchange Server上部署应用,拦截所有通过outlook发给该Exchange的邮件,提供一个思路也行! wolfAone (黑色的狼(WOLF))你给我进来,有消息了! 请问JAVA如何读写注册表 经典图书??? 请问一个关于窗体置前的问题 HELP!关于STRUCT的问题! 请问,怎样知道光驱里面的光盘是不是已被更换? 在Delphi如何进行包的调用,本人将无比感谢 关于exchange的几个问题? sdk中怎样在客户区中播放视频文件(从通用对话框中) 打印问题 大家帮帮忙看看代码,指点我一下。 请问如何让浏览器中的COM组件得到当前浏览器的IDsipach接口(或IWebBrowser2接口)? 控件打印的问题 有关request.getParameter();的奇怪问题! 常见代码,有些地方我不明白帮我详细注解一下以下代码 征求解决方案 裁剪linux后,不能起动 请教MayFlower,asmx文件变成下载的问题 高手难题:SYBASE触发器中如何获取text字段的内容 珠海程序员薪金调查!(决定了我的前途)谢谢! 对利用Telnet进行自动化处理提点意见 强制类型问题 这都啥年代了?CSDN还在卖VS.net beta2!!! 请问在一个基于对话框的应用程序中,怎样实现打印功能?同时要求不弹出打印对话框,而且将纸张大小设为A4,打印方向设为横向? 小问题 SQL Server 7.0有for Alpha的吗? JIT究竟是什么东西?能否详细叙述,谢谢!另外,由于Java的跨平台技术,编译后的Java程序速度相对较慢,那么速度究竟慢到什么程度?通过什么能提 请教各位高手,关于CDONTS.Newmail对象的一些疑问? 我在新建类时为什么找不到CTOOLBAR基类,怎么新建基于CTOOLBAR的类? 用goto语句如何调用另外一个过程中的标签?急!急!急! 我仍然不能打开第二个光驱? 500分求一份关于工资管理系统的分析报告 如何得知一个字符是中文还是英文? help:画一个点的CDC member function is ....? linux下的编译机制与VC的编译机制是不是相差很多,好像LINUX下的慢很多,WHY? 如何导入一个数据文件 晶粒和颗粒的区别? pe立体袋的价格的计算公式 做一个铸件的时候 为了保证质量 我们一般希望它内部是什么晶体呢?等轴晶还是柱状晶好些呢? 我英语水平还不错,但是想学另一门外语,不知道哪一门比较好.主要还是想针对就业... 透镜成像 在一倍焦距内、一倍2倍内、在2倍外 都是什么样的像 晶体实物的折光与晶轴有关系没 商务英语 电气工程及自动化 哪个就业前景好 PE塑料袋的计算公式(最好分别说一下平口袋的和立体袋的)谢谢! 设有一金属球壳,内含一同心的金属球,金属球借助一穿过外球壳小孔的导线接地.如果金属球壳带正电,则内球的带电状况为( ).  A.不带电   B.带正电   C.带负电   D.无法确定 学商务英语的具体可以做哪些工作?3Q 化肥中的氮磷钾对植物分别有什么作用啊?力求详细! 金属球壳 接地不是说金属球壳接地后就不带电了么,为什么有些题目还是带电呢?那到底是带电还是不带电呢,为什么?还有书说是球壳影响大地带上电,可是大地带的电不是可以忽略不计么?静电 大学物理两个同心共面的圆线圈,半径分别为R1和R2且R1 电力线是什么是电场线么? 如何计算一个食品包装袋得成本?我有这方面得人脉、想走这条路,希望谁能告诉我怎样计算,拜托. 太阳平常的紫外线 会无时无刻损坏金刚石晶格吗 电力线是否就是电场线? 一直线经过点(-3,4)且在两坐标轴上的截距之和为12,求直线的方程 人活在世界上有什么意义 日本核辐射,对我们有危害吗? 电力线路上有谁知道这个叫什么? 人活在这个世界上有何意义呢?怎样让朋友们更懂得珍惜你勒? 和刚来中国的受到核辐射的日本人一起在中国吃饭,会受到核辐射吗? 谁知道pvc片材都有哪些 和规格 商务英语和法语哪个就业前景好?我准备 报对外经济贸易大学的 ,选什么 就业前景好? 植物中含氮量测定方法,或者说微量的含氮量如何测定 谁能提供PVC片材报价是做吸塑用的原材料最新报价 商务英语跟经贸英语哪个就业前景好 所有植物中 含钾量最高的 植物是什么.所有植物中 哪种植物含钾量 是最高的.注:是植物,不是食物. 解理面是面指数高的晶面还是面指数低的晶面?为什么? 商务英语和英语教育哪个就业前景好? 两个同心球面 外球带电量为Q,半径2R;内球接地,半径为R 求内球带电量 为什么答案为Q/2 晶体中在写晶向指数或晶面指数时晶体中在写晶向指数或晶面面指数时,往往并不指明坐标轴的选取,这时如何确定是什么方向啊?书籍或文献中,都没有指明坐标轴,就直接给出一个方向,这时我 商务英语和公共事业管理哪个就业前景好具体说说类似的工作,希望能具体,不要泛泛而谈的 物理牛顿第一定律生活中,常会见到物体从高处下落的运动.如用手拿着一个小球和一张纸片,从同一高度同时释放小球和纸片.我们看到小球先落地,纸片后落地,如图(a)所示.美国宇航员大卫&# 怎样判断晶面指数的大小 在球坐标和柱坐标中解波动方程,得到的表达式是什么?亥姆霍兹方程在球坐标中求解球面波的表达式(要亥姆霍兹方程推导出来的)柱面波的表达式(要在柱坐标中解的波动方程求出来的) 物理牛顿第一定律题正在沿水平路平做直线运动的车厢天花板上A点有一个小螺钉脱落,在下落过程中,螺钉并没有与其它物体相碰,不计空气阻力的影响,以下结论正确的是:( )A.螺钉必定 在晶体结构中,具有相同指数的晶向和晶面必定相互垂直吗?还是只是在立方晶系中,才满足这个关系.希望可以阐述的详细些,或者举出反例 关于直线方程:求证中点坐标公式啊 植物缺氮怎么办自家的一盆景缺氮不用化肥该怎么办? 物理光学凸透镜成像题 球的标准方程是什么 植物 氮来自总所周知,氮元素在植物中占着很大的比例,植物体不可缺氮,这么大量的氮元素到底从哪里来的呢?不是常说只有根瘤豆科植物才可以利用空气中的氮妈?而且构成土壤的元素也没多 包装费用公式怎么计算我想知道包装费用有没有一个比较全面的计算公式,比方包装包括的直接包材费用,人力投入,机械投入,水电,煤气,以及间接的隐形的费用.好烦琐的 有没有一个比较好的 北京是不是有核辐射?浙江的沿海地区会有较大的核辐射吗?假如有核辐射有什么简易的防护措施吗? 植物为什么需要氮?请写出主要原因,只要简要 谢了 当知道最小包装数量,实际需求数量,如何按照整包装下单,在excel表中怎么用公式表达?当最小包装数量为1000,而实际需求数量为1996,但下单只能按包装2000的数量购买,这个用什么公式啊?如何使用 桌面上有一个倒下的未开启的矿泉水瓶,瓶中的气泡位于瓶的中段上方,若将瓶突然向左推动,气泡将向(左)方运动,若将瓶突然向右推动,气泡将向(右)方运动,这是(水)的惯性起主要作用. 植物缺乏氮会有什么转变? 袋子里2白2黑,求摸到白概率,给我用组合公式 日本地区核辐射会造成生物和动物的变异吗?基因变异吗?还是本体变异。 PE袋报价的公式是怎么样的 晶体晶面定义?比如{110}晶面 晶格能与键能的区别 求PE立体袋计算公式? 一轴晶体是低级晶族吗 求2013年日本核辐射东京地区的数据,寒假想要去自由行可是家里以核辐射为理由不让去.(最好)要有数据! 物理光学问题——凸透镜成像本人在总复习时发现这部分搞忘了!THANKS 请问什么是晶体晶面,负晶,枝晶,准晶及电晶体?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘