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

基于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,用于放置特性文件夹。
改变 ListIndex而不发生 Click 事件 -VB资料 改变 TreeView 的背景 -VB资料 改变安装向导的背景色-VB资料 改变按钮的文本颜色-VB资料 功能强大的增强列表框 ――VB6控件LISTVIEW使用指南 关闭MDI窗体中所有的子窗体-VB资料 规范设计Windows应用软件菜单-VB资料 VB建立可滚动的视区 -VB资料 VB建立可下拉选择的属性 -VB资料 VB建立无模式窗口 -VB资料 将VB5中的ToolBar变成平面的 将程序从任务列表中隐藏 -VB资料 将我自已的命令加入窗体的控制菜单栏-VB资料 VB利用 UnloadMode 来控制窗体的卸载? VB利用Form_QueryUnload询问使用者是否关闭窗口 利用VB的图片框实现屏幕的滚动 利用VB动态改变Windows显示模式的两种方法 利用VB控制窗口显示风格 利用VB实现浮动按钮 VB利用子类处理技术限制窗体的大小 奇形怪状的窗体 -VB资料 强制ComboBox弹出下拉框 -VB资料 强制和防止窗口重画 -VB资料 巧用“关于”对话框-VB资料 请问在VB中如何关闭别的应用程序窗口 确定屏幕分辨率-VB资料 让VB5支持动画光标 让窗口拒绝接受键盘和鼠标事件 -VB资料 让窗体处于最前面 -VB资料 让窗体居中 -VB资料 让所有的控件都动起来 -VB资料 求屏蔽后退键方法!!! 请教:关于内存泄漏的问题!!! 这个程序一定是计算机有问题把? 请问为何VC++不认winexec()? 求救!!! 我的猫在WIN2000下总在通不过在网上注册计算机这一步,怎么办? 敢教日月换新天 — 使现有的软件或程序支持 Windows XP 的新界面 急::::100分,,,,,在线, 彩色图像灰度化需要修改哪些参数? 请问一下这个语句有什么问题? 在控件中如何创建另一个控件的窗体? Help,急 怎样实现视频捕捉 知道一个位图文件,怎样把这个位图通过打印机打印出来 如何实现象IE的地址栏一样的combobox???就是说当chang时自动列出关于combobox.text的内容!!! >>在类的虚函数中,为什么可以调用其基类的同名虚函数?它是如何实现的?? 灰毛兔,囡囡你们在哪里??请留下qq,偶想和你们联系 我刚刚开始学习B/S结构的程序设计,请问各位哪里可以下载到这方面的资料?顺便散分。 如何编程实现网络上的视频传输 知道一个模块的句柄侯怎样运行它? 中国为什么比韩国差这么多? 帮帮忙,我急需有关ERWIN的书籍资料,请能在哪里下载?急啊!先说声谢谢! 500分求助!!!如何打印MSCHART控件画出的折线图 请问网上有没有关于UI线程比较好的例子?如果有的话,发一个网址给我,在线等待,谢了! 一道选择题 局域网,一方可以ping通一方,怎么解决?? 装了WIN2K后,如何再装LIUNIX实现双启动? TQuery的简单用法,高分大放送! 如何将controls对话框中不用的控件去掉 请问怎么用coff2omf,把Strmiids.lib、Quartz.lib、Strmbase.lib转化成BCB可以接受的格式 JDBC for mysql 的使用 -------问题 偶有重回delphi修炼了,当年偶的师傅还在吗?老千,老鱼,chech,小新,老鬼,你们过的怎样?? 你现在正在看的这种页面如何实现? 我很喜欢delphi,但老板要我转学单片机,请兄弟们说几句,是福是祸?up、gz有分! vb的安装问题 请问如何在两个数据库之间进行联合查询? 迷 !!!!!! 天使的旁边是魔鬼 数据集排序问题 哪里有 MS viso 下载,谢! 用DATAREPORT设计报表,这个怎样设计? ASP写的计数器程序问题 天女散分:process basename 中文叫什么,进程什么名? 数据库句柄清除问题 请问我用JBuilder + weblogic61 编写的 EJB,在我拿到别的地方部署,是不是只拿 XEjb.jar和客户端 就行了? 如何让两个byte类型的变量a和b进行异或(^)操作,然后将结果存入另一个byte中? 我也来一个关于ACCESS的问题,高分请教。在线等待 CDC问题:怎样从屏幕尺寸转换到厘米呢?反之呢? VC中如何给动态产生的控件写事件方法?在线等! 》》怎么没有人解决这个问题呀,谁解决,我给分!!!!! 为什么快捷方式不能用? 喝苏打水有什么好处? 碱水是怎么来的?什么样的环境可以得到碱水?人工可以制作的出麽?需要些什么材料? 元素的化学性质与最外层电子数的关系如题 化学性质的活泼和不活泼与.数的关系我问的是有什么关系... 苏打水的功效喝苏打水有什么功效?对人有什么好处? 一台功率为40千瓦,质量为2吨的拖拉机,在农田里以0.5m/s的速度耕田.求拖拉机在耕田是受到的阻力? 近代西方科技与中国的古典科技有什么不同 如果、就造一个句子(与环保有关) 碱水粽的碱水是什么?包碱水粽时,用的是什么碱?是不是小苏打粉?用量要多少? 为什么古代中国人在科技方面远远超过同时代的欧洲? 浓硫酸和乙醇加热一段时间之后能闻到试管中出现一种带有特殊香味和甜味的气体,这种气体是乙烯还是乙醚?是否有毒? 做水晶月饼配料中的"枧水"是否就是"碱水"?若自己制作,应该按什么样的浓度配制?是家庭自做. AL(OH)3+NH3.H2O离子方程式 用不管 总造关于环保的句子快, 夏商的中央和地方的政治制度还有周,秦.汉.隋唐.宋.元.明.清的也要还有他们政治制度的发展趋势这个星期三前请给答案 Al(OH)3能与NH3·H2O反应吗? 氯化钾在工业上的作用 请问英文中的First name ,middle name ,last name 具体的含义,并且以例子为证明比如张三具体怎么填呢 最外层电子数与元素的化学性质的关系快,准马上, 夏商制度与西周封建这课的重点和考点是什么?需要背哪些内容?涉及的重要题有哪些? 英文名的构成!请问高手们,First name和Last name是什么?举个例子:Tom Green,First name和Last name是好像Green是First name吧?大人们教一教 请教几道高一历史的题(关于夏商西周的政治制度)1,为什么说王位世袭制是历史的进步?2,夏商西周时期,带有宗族色彩和专制色彩的政治制度是宗法制吗?3,为什么说宗法制起到了使统治集团 夏商西周国家统治人民的手段有哪些最好像简答题那样列出1、2、3 概括中国早期的政治制度的特征(夏商西周)历史简答题.答的好+++分, 夏商的政治制度1确立背景 2正式建立 夏商西周国家统治人民的主要手段有哪些 夏商的政治制度的主要特点和作用 卫生间防水问题,求问?玻璃水也叫水玻璃胶,防水用的,请问在雨虹吉仕涂100 刷完2便干了后我是否可以把水玻璃倒在上面,会不会腐蚀我刚刷好的防水灰浆. 夏商西周三代各自统治的时间为 夏商早期政治制度的主要特点? 中国封建社会皇帝的女人怎么分的等级? 如果说人生是大海或天空,应该怎么造句子? 夏商西周的中央政治制度这一时期的政治制度是分封制 宗法制 那么 这算是中央的制度 还是地方的制度呢 中国封建社会中总产生了多少为皇帝?在中国封建历史上到底有多少为皇帝呢? 四氢硼钠结构式与化学性质 喝苏打水,什么是苏打水? 英国推举新国王与中国封建社会皇帝的产生有什么不同? 一般球形灯泡的尺寸是多少? 一台功率为50KW的拖拉机,在平直的农田里以0.5M/S的速度耕田(1)求拖拉机在耕田时受到的阻力(2)拖拉机耕田1小时所做的功 将适量的四氯化碳加入到盛溴水的试管中,充分震荡,观察到的实验现象 这种球形抱灯叫什么,哪里有卖 一台功率40KM拖拉机在平直农田里以0.5m\s的速度匀速耕田.问拖拉机在耕田是受到的阻力?要完整的过程已知-求解明天要交了来不急了! 向盛有氯化钾溶液的试管中加适量溴水和四氯化碳,震荡后静置,可看到的现象是?要说明原因! 请问这个球形灯怎么拆下来换灯泡卧室的这个球形灯怎么换灯泡. 水和酒精的分离在生活中有什么应用 都说用苏打水加醋可以更好的清洁厨房用品,那苏打水去哪买或是怎么自制啊 球形景观灯.求一些球形的景观灯 要白天和晚上的效果,大型的景观灯 如何判断顺反异构分子的偶极矩大小,以1-氯丙烯为例. 金属切削液(第2版):选择配制使用与管理怎么样 苏打水的作用苏打水能补能量吗? 化学性质相似的两元素的最外层电子数相等不? 化学--水玻璃硅酸钠为什么水玻璃不可以贮存在带玻璃塞的玻璃瓶中? 果冻中氯化钾的作用 请帮忙翻译:please,enter your first name and last nase 酵母菌制酒时,一开始持续通入空气,这时会产生酒精吗? 苏打水有什么作用 翻译成英文:用Jim 和Green分别填写last name和first name 如何用酵母做酒 最近看在郑州绿之源饮品也出苏打水了,哪位大小告诉我一下苏打水有什么功效额 求翻译first name last name family name 什么是酒精酵母和啤酒酵母有什么关系和区别
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘