这是一篇翻译稿,方便给不知道BDD的同学扫盲.原文链接:What is BDD (Behavior Driven Development)? | Agile Alliance Definition定义 Behaviour Driven Development (BDD) is a synthesis and refinement of practices stemming from Test Driven Development (TDD) and Acceptance Test Driven…
TDD测试驱动开发 一.概念 TDD故名思意就是用测试的方法驱动开发,简单说就是先写测试代码,再写开发代码.传统的方式是先写代码,再测试,它的开发方式与之正好相反. TDD是极限编程的一个最重要的设计工具之一,使得我们编码的目的更加明确.而极限编程的另一个最重要的工具—重构.重构改变的是代码的内部结构,而不会改变外部接口功能.一整套完备的测试用例可以保证我们的程序更加健壮,功能更加完善. 二.作用 站在用户使用的角度去思考如何完成产品设计,强迫开发人员事先思考完善的测试用例并提供不考虑细节的外部…
今天在实验室给大家介绍了一下TDD和Docker,大家对TDD都比较感兴趣,包括老板,也问了一些问题. 还是从头来说TDD吧,TDD作为敏捷开发领域的领头军,充满魅力,同时也充满争议.一切从三大军规说起: 除非这能让失败的单元测试通过,否则不允许去编写任何的产品代码. 只允许编写刚好能够导致失败的单元测试. (编译失败也属于一种失败) 只允许编写刚好能够导致一个失败的单元测试通过的产品代码. 上面这三个是网上找的中文翻译,回来后,我还是决定要把英文原文找出来,相对与上面三句拗口蹩脚的翻译,我相信…
参考 https://baike.baidu.com/item/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/3328831?fr=aladdin https://en.wikipedia.org/wiki/Test-driven_development https://github.com/mjhea0/flaskr-tdd 总结 先写测试,然后写程序pass掉测试,that is 测试驱动开发. TDD usually foll…
重复无聊的定义 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行.这有助于编写简洁可用和高质量的代码,并加速开发过程.(来源百度百科) 重复无聊的过程 测试驱动开发的基本过程如下: 快速新增一个测试(编者注:并非快速) 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过 做一些小小的改动,尽快…
[前言] 1. 有关上篇请参见<使用IdleTest进行TDD单元测试驱动开发演练(1)>,有关本篇用到Entity Framework Code First请参见<使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First>,而用的个人类库参照IdleTest.2. 本文只用了简单的Entity Framework演练单元测试,着重于Testing,而不是实现,并不会涉及事务.效率等问题. 3. 回顾上一篇里面讲到的是针对业务层的测试,正…
一.[前言] (1)本文将用到IOC框架Unity,可参照<Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备>(2)本文的解决方案是基于前述<使用IdleTest进行TDD单元测试驱动开发演练(1)>.<使用IdleTest进行TDD单元测试驱动开发演练(2)>继续编 写的,但是已经将解决方案.项目名称等等改名为了“IdleTest.EFAndMVCDemo”.(3)本文将不再一步一步的记录,只写出重要的步骤并贴出一些关键代码,完整代码…
敏捷开发 敏捷软件开发又称敏捷开发,是一种从上世纪 90 年代开始引起开发人员注意的新型软件开发方法.和传统瀑布式开发方法对比,敏捷开发强调的是在几周或者几个月很短的时间周期,完成相对较小功能,并交付使用.在项目周期内不断改善和增强. 2001 年初,在美国犹他州雪鸟滑雪胜地,17 名编程大师分别代表极限编程.Scrum.特征驱动开发.动态系统开发方法.自适应软件开发.水晶方法.实用编程等开发流派,发表“敏捷软件开发”宣言.其内容主要包括: 人和交互重于过程和工具: 可以工作的软件重于求全责备的…
[前言] 开发工具:Visual Studio 2012 测试库:Visual Studio 2012自带的MSTest DI框架:Unity 数据持久层:Entity Framework 前端UI:ASP.NET MVC 4.0 需求:我这里假设只满足两个功能,一个用户注册,另一个则是登陆的功能,借助于一些DDD思想,我将从领域层(或者常说的BLL)开始开发,当然每一层都是采用TDD,按我喜欢的做法就是“接口先行,测试驱动”,不废话,直奔主题吧. 有关VS2012的单元测试请参见<VS2012…
测试驱动开发体现了开发人员对软件产品各部分运作方式的理解,而行为驱动开发则关注于开发人员对软件产品最终表现的行为的预期. 行为驱动开发 TDD更像是一种范式而不是一个过程.它描述了一种先编写测试,然后实现,并伴随可能的代码重构这样的一系列步骤.但其并没有关于以下的内容: 应该从哪里开始开发: 应该对什么进行测试: 测试应该怎样组织和命名. 测试驱动开发这个命名也让人疑惑,人怎么能够对不存在的东西进行测试呢.Dan North对这些问题进行了研究,建议开发人员更应该考虑关注软件的特征行为而不是编写…
classpath,路径列表.告诉java需要加载类的存放位置, java会去搜寻.这种机制实现了动态加载. java -cp 加载类路径 执行类名   : 加载类路径可是绝对,也可以相对. 代码重构机制:1,保证没有重复 2,干净,有表现力,能清楚知道意图. 如 一,去除不必要的局部变量(作用:中间传值),将函数结构直接传给下一个函数. 二,代码中不得出现无意常数,或是字符串,这些要放到变量里,在开头声明,如果前面加final,则不可改变(其值). 三,类成员不能直接暴露给外部,也就是其它对像…
一.前言 最近团队要尝试TDD(测试驱动开发)的实践,很多人习惯了先代码后测试的流程,对于TDD总心存恐惧,认为没有代码的情况下写测试代码时被架空了,没法写下来,其实,根据个人实践经验,TDD并不可怕,还很可爱,只要你真正去实践了几十个测试用例之后,你会爱上这种形式方式的.微软对于TDD的开发方式是大力支持和推荐的,新发布的VS2012的团队模板就是根据.新的Visual Studio 2012给我们带来了Fakes框架,这是一个针对代码测试时对测试的外界依赖(如数据库,文件等)进行模拟的Moc…
说起面向对象,人们就会想到继承,常见的继承分为2种:接口继承和实现继承.接口继承只继承方法签名,实现继承则继承实际的方法. 由于函数没有签名,在ECMAScript中无法实现接口继承,只支持实现继承. 1. 原型链 1.1 原型链将作为实现继承的主要方法,基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 构造函数---原型---实例 之间的关系: 每一个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针. function Sup…
 Cucumber是一种BDD实践开发工具,属于敏捷开发的组成部分.      在敏捷开发中,对用户进行需求分析时,不是像传统的P&D的开发方式,首先编写大量的用户需求分析文档,而是通过一个个User Story来进行用户需求的分析.      User Story的编写,也就是Cucumber的Gherkin编写.由一个个feature组成.User Story的编写应该符合SMART原则,即简明详细.可测量.可以在一个迭代内实现.有商业价值,并且可测试. BDD开发流程 首先应该在编写具体的…
简单而言,BDD是一系列基于TDD的工具和方法集发展而来的开发模式,一般不认为是一种新的开发模式,而是作为TDD的补充.因此,首先对TDD的概念进行进行. 测试驱动开发(TDD) TDD模式采取的是迭代式的开发流程.软件的每个功能特性的开发都是从编写一个针对性的测试开始.一开始测试无法通过,然后开发人员通过以下步骤进行迭代: 1.编写测试,观察是否未通过: 2.实现早期版本,以便通过测试: 3.如果需要,重构部分代码.继续编写其他测试. 简单示例(基于Ruby) 假设我们要开发一个用户管理的功能…
http://www.oschina.net/translate/django-1-6-test-driven-development 测试驱动开发(TDD)是一个迭代的开发周期,强调编写实际代码之前编写自动化测试. 这个过程很简单: 先编写测试. 查看测试失败的地方 编写足够的代码以使测试通过. 再次测试. 代码重构 . 重复以上操作. 目录 这是一个长的帖子,为了您的方便所以提供了目录: 什么是TDD 第一次测试 安装Django 功能测试 管理员登录 设置联系人应用程序 5.单位测试 主界…
测试驱动开发是敏捷开发的一部分,它一般有“red-green- refactor”步骤 iOS测试驱动开发的工具 一. OCUnit 是Xcode自带的测试工具 其使用步骤分为 1 建立测试的Target 对于测试的Target可分为两种:logic test 和application test ,其中逻辑测试可独立执行,应用测试需要启动App. 对于应用测试需要Builder Setting配置好Bundle Loader 和Test Host的值,以便改Target可以用到. Set the…
测试是保证软件质量必不可少的一环.测试有很多形式:手动.自动.单元测试等等.这里我们只聊使用Mocha这个框架在Nodejs中实现单元测试.单元测试是测试等重要组成,这样的测试只对于一个方法,这样的一小段代码,实施有针对的测试. 这里会逐步深入的讲解单元测试.首先是最简单的单元测试,没有外部依赖,只有简单的输入.接着是实用Sino框架实现stub等有依赖的测试.最后讲解如何单元测试异步代码. 安装Mocha 和Chai 安装Mocha: npm install mocha -g Mocha和其他…
第一章 1.编写functional_tests.py from selenium import webdriver browser = webdriver.Firefox() browser.get('http://localhost:8000') assert 'Django' in browser.title 2.运行Django,再运行functional_tests.py,测试成功 第二章 functional_tests.py 用unittest 扩展功能测试 from seleni…
在Visual Studio 2015中集成的MSTest可以用于单元测试. 在项目中,选中需要测试的方法,点击鼠标右键,选择弹出菜单中的[创建单元测试],按照默认设置,即可自动新建一个测试项目. 需要注意的是,只能对puglic的方法进行测试. 但是,我还是比较喜欢NUnit的测试框架,毕竟从JUnit到NUnit,使用起来还是那种熟悉的味道比较好一些.下面介绍一下如何在VS2015中集成NUnit测试框架. 还是先下载NUnit的Nuget包,下载的方法可以看我前面介绍过的文章. 安装NUn…
构建简单的Maven工程很简单,这里写这篇随笔的原因是希望自己能记住几个小点. 一.安装Maven 1.下载maven:https://maven.apache.org/download.cgi 2.解压压缩包到指定路径,如E:/Java/maven.得到文件夹apache-maven-3.3.9. 3.以第二步得到的目录E:/Java/maven/apache-maven-3.3.9作为Maven的根目录,配置Maven的环境变量.注意因为maven是Java语言开发的所以需要依赖JDK,所以…
测试驱动开发(TDD) 1.测试驱动开发,即Test-Driven Development(TDD),测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码. 2.TDD有广义和狭义之分,广义的 TDD 是 ATDD(Acceptance Test Driven Development),包括 BDD和 Consumer-Driven Contracts Development 等.这里说的是狭…
前段时间在design+code购买了一个学习iOS设计和编码在线课程,使用Sketch设计App,然后使用Swift语言实现Designer News客户端.作者Meng To已经开源到Github:MengTo/DesignerNewsApp · GitHub.虽然实现整个Designer News客户端基本功能,但是采用臃肿MVC(Model-View-Controller)架构,不易于代码的测试和复用,于是使用ReactiveCocoa实现MVVM(Model-View-View Mod…
使用IdleTest进行TDD单元测试驱动开发演练(2)   [前言] 1. 有关上篇请参见<使用IdleTest进行TDD单元测试驱动开发演练(1)>,有关本篇用到Entity Framework Code First请参见<使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First>,而用的个人类库参照IdleTest.2. 本文只用了简单的Entity Framework演练单元测试,着重于Testing,而不是实现,并不会涉及事务.…
BDD脱胎于TDD 行为驱动开发(Behavior-Driven Development,简称BDD),是在测试驱动开发(Test-Driven Development,TDD)基础上发展而来的一种软件开发方法.TDD最大的弊端,是面对一大堆的功能需求和用例时,往往会感到无从下手.另一方面,由于TDD更侧重于测试本身,因此容易忽视对业务需求的表达,最终沉溺于琐碎细节而无法自拔. BDD避免了信息丢失 与传统的软件开发方法相比,BDD的本质在于尽可能避免在需求描述.用例撰写.代码实现.测试等各环节…
1.什么是测试驱动开发? 测试驱动开发(TDD)是迭代和敏捷XP方法提倡的优秀实践,该实践为测试测试优先开发.不仅包含单元测试. 2.为什么测试驱动开发? 1).最大提升代码稳定性 2).澄清接口和行为细节.如:考虑方法名称.输入参数.返回参数 3).可证明.可再现.自动验证. 3.如何测试驱动开发? 例如:使用junit和TDD测试Sale类. 第一步:创建Sale类,而且只是创建类,没有属性.方法. 第二步:创建SaleTest类: 1).创建测试固件(Sale) 2).执行测试方法(思考并…
相信大部分开发团队都在使用TDD,并且还有很多开发团队都 对外声明 在使用 TDD 开发模式. 之所以说是“对外声明”,是因为很多开发团队虽然号称使用的是 TDD 开发模式,实际开发过程中却无法满足 TDD 的要求. 实际上,测试驱动的开发模式确实有效,它将可能发生的问题用测试代码预先解决,只有通过测试代码后的代码才是可以接受.当前有很多公司都在应用 TDD,但 TDD 并不是一个开发者友好的开发模式,只是一个理想化的开发模式. 为什么 TDD 不是一个开发者友好的开发方式? 大家都知道 TDD…
测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着功能的开发完成,测试代码也会对应的完成, 很显然,这是一个全新的开发模式, 在一定程度上,可以完全的提高软件的质量,以及开发可以对自己写的代码进行一个全面的评估和测试. TDD 模式是一个很大的概念,在这里, 我重点介绍下测试驱动模式与自动化的融合以及精简自动化的测试代码.下面我们来看一个登录的案例…
说实话,作为一个Domino开发者,像測试驱动开发(Test-driven development).功能驱动开发(Feature-driven development)之类软件开发的高大上的方法论(Methodology),仅仅是偶尔在用其它语言开发的文章和程序猿那里看到和听到过,Domino独特的体系架构使得这些方法论都不太适用.只是依据我近期參与的某国外大型Java产品的经验(也在聊天中得到了朋友的印证),在现实中不管是用什么语言开发什么样的项目,都普遍存在一种方法论,而且还没有得到理论家…
如今,随着移动互联网的浪潮越翻越涌,移动APP测试工作的现状已经成了那本"家家难念"的经.不管公司大小,不管测试哪种类型的APP,让广泛测试者苦不堪言的就属重复性最多,测试工作量最大的功能测试.而这个系列文章将逐一解构一些问题. 笔者通过对目前大型的安卓市场和APPstore进行调查,其实我们可以发现每天都不乏有有创意的,能够针对市场需求的APP上线,但不管当时这些APP是不是排在榜单前列,过不了多久,它们便在应用市场中销声匿迹,变成所谓的"僵尸"应用. 面对这些如…