`
kuwoleft
  • 浏览: 1078549 次
文章分类
社区版块
存档分类
最新评论

行为驱动开发之一,推广篇

 
阅读更多

原文:http://www.cnblogs.com/jarodzz/archive/2011/03/16/1986551.html


敏捷的历史

  上上个周四,我在组里做了个内部演讲,题目是“使用Cucumber实现行为驱动开发”。考虑到组内成员并不系统的敏捷背景,我是从历史开始的。扯软件开发的历史是我最喜欢的项目之一,大部分搞软件的读书读到历史基本都跳过去,我却很喜欢看看那些过往的小故事。所以每次跟人聊起来,我都尽量吹他个昏天黑地,反正也没人知道对错。
  我所介绍的软件开发的历史主线如下:

  1. 1956年,缺陷(Bug)这个概念产生,寻找缺陷的过程包括了测试和调试两部分;
  2. 1979年,测试与调试分离,Glenford J. Myers等推动了这个运动,GM同时也是“软件测试艺术”一书的作者。此运动的直接导致了测试与开发的分离,测试开始有自己的职位招聘与组织结构,研发与测试开始分支,背靠背工作,靠文档进行沟通。
  3. 1990年,轻量级软件测试发展,以减少传统软件测试的浪费为目的
  4. 1995年,轻量级开发方法登上舞台,Scrum/XP/Lean Development
  5. 2001年,轻量级开发方法的倡导者走到一起,敏捷宣言诞生

W瀑布模型

  介绍了历史,我们一起看了下传统软件开发的基石,W模型,并以此为基础,讨论了下其中的浪费:

  • 重复
    • 需求文档(Requirement)与验收性测试用例(Acceptance Test)的重复
    • 功能文档(Function Specification)与系统测试用例(System Test)的重复
    • 设计文档(Design)-即每个模块的功能与模块测试/集成测试(Integration Test)用例重复
    • 文档本身也包含着Bug
  • 始终保持着一个组空闲
    • 在W模型的左边,属于开发周期,研发人员忙碌
    • 在W模型的右边,属于测试周期,测试人员忙碌
  • 文档无用
    • 高质量的代码,可以提供设计模式参考与复用,文档则不行
    • 为了保持文档与代码的同步,需要花很大力气
    • 如,测试用例的文档描述与自动化代码的同步,设计文档与实施代码的同步等
  • 瀑布模型导致修改困难
    • W模型越靠后,修改所带来的代价越高

BDD的概念

  接下来,我们集体讨论了如何使用BDD的由外向内(outside-in)方法,来避免这些浪费。

  • 使用自动化验收性测试用例来代替需求文档
  • 使用自动化系统测试用例代替功能文档
  • 使用自动化模块测试用例代替设计文档
  • 当模块通过单元测试后,可以陆续进行自动化的模块/集成测试,系统测试,以及验收测试。

  这就需要自动化测试用例与自然语言的融合,只有用自然语言把用例描述清楚,才能保证文档与代码的统一,设计与测试的统一。我在此也进行了Cucumber的一个小的演示,用的是项目里的一个真实的例子。使用了数据驱动后,一周内自动化了77个情景Scenario,并发现了一个Bug。

问答:

  • 问:如果由外向内开发,那么我每次仅提交一行代码,也要经过漫长的测试,才能知道结果么?
  • 答:将需求切分成小的story后,每实现一个story,即进入单元测试。单元测试通过后,提交代码,此时为了证明有了新代码的系统可以提供给用户所有老功能以及新功能,确实需要进行模块/集成测试,系统测试,验收测试,只有通过了所有测试,才能保证当前有了新代码进入的系统是可以交付使用的系统。即使测试时间较长,也必定小于手动测试所需的反馈时间。
  • 问:Given/When/Then可以覆盖所有情景么?
  • 答:在Robert. C. Martin, "Clean Code"的作者的网站上,我找到了这样一篇论述“the truth about BDD",并深以为然。 从Bob大叔的观点来看,GIven,When,Then刚好符合测试方法中的状态表法(state transistion),Given代表第一态,Then代表第二态,When则是从第一态至第二态转变的原因。在”software testing - a craftman“一书中,开篇也有类似的论述:以编程语言的原理来说,所有程序都可以被描述成有向连通图,每张图都有一个入口和一个出口。把Given看作起始点A,Then看作结束点Z,When是导致A向Z这个方向进行的动作,那么将这张图分解成无数小状态转换的话,就成为了若干Scenario。
  • 问:由外向内的开发,如果后期出现底层API改变,会否引起变化过多?对于常变的项目,可以先手动,再稳定后,再自动
  • 答:从传统项目开发的瀑布流程看,确实如此,因为传统开发,需求分析2-3个月,设计2-3个月,编码2-3个月。如果按照此流程书写大批量的BDD测试用例,那么一旦底层遇到实现难题,需要转换方式,确实会导致浪费。但是敏捷开发中,每个story的周期都很短,大约一周,只要能将story分好,那么在一周内的改变,都可以通过研发与测试的协同工作完成。
分享到:
评论

相关推荐

    软件开发类投标项目全套解决方案模板

    2. 识别项目的驱动、约束和自由程度 171 3. 定义产品发布标准 171 4. 沟通承诺 171 5. 计划中,在质量控制活动后应该有修改工作 171 6. 为过程改进安排时间 172 7. 管理项目的风险 172 8. 根据工作计划而不是...

    新版Android开发教程.rar

    这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...

    flink实时规则营销系统教程(第39期,2023版)

    一、《flink实时规则营销系统》项目背景 ...因而,擅长用键鼠改变世界的攻城狮们,决定为公司的推广、运营部门开发一个应对上述场景的自动化、智能的、实时、规则动态可变的营销利器 —— 《实时动态规则智能运营系统》

    asp.net知识库

    Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...

    微翼微信公众管理系统源代码 v3.0.zip

    微翼微信开源管理系统是目前内容最丰富,功能最强大的微信营销系统,同时也是中国开发最早营销力最强的多用户微信公众系统,自系统面世以来一直保持着微信营销软件使用率第一。微翼是国内最著名的多用户微信营销系统...

    100份 TCG 标准规范文档

    可信计算组(Trusted Computing Group,TCG)是一家非营利组织,旨在为可互操作的可信计算平台开发、定义和推广基于硬件信任根的供应商无关的全球行业规范和标准。TCG的核心技术包括可信平台模块(Trusted Platform ...

    街道综合门户平台解决方案.doc

    数据驱动:通过收集和分析用户数据,了解用户需求和行为习惯,为平台优化和功能升级提供数据支持。 创新发展:持续关注行业动态和技术发展趋势,不断引入新技术和理念,推动平台的创新发展。同时,鼓励用户提出意见...

    硬件市场状况调研报告.doc

    我国的软件产业从80年代中期开始发展,现已成为一个重要产业部门,是高新技术 产业部门的主要生力军之一。我国软件业发展主要表现为:软件开发研究已从软件人员 独立进行步入到软件开发组协作开发的阶段;软件项目已...

    WSTMall 开源多用户商城系统 v1.9.5.zip

    良好的扩展机制:WSTMall 支持包括类库扩展、驱动扩展、应用扩展、模型扩展、控制器扩展、标签库扩展、模板引擎扩展、Widget扩展、行为扩展和模式扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足和无所适从...

    iter8:带有文档的主要iter8存储库

    使用Iter8的AI驱动的实验功能来安全地在Kubernetes和OpenShift集群上对您的应用程序和ML模型的新版本进行实验,通过在生产或暂存环境中的实际用户请求获得对它们行为的关键见解,逐步转移流量,并向赢家推广统计上...

    数字孪生校园建设方案.pptx

    数字孪生校园建设方案旨在通过整合现代信息技术,构建一个高度智能化、可视化和数据驱动的校园环境。以下是该方案的主要内容和步骤: 一、总体目标与规划 明确数字孪生校园建设的总体目标,包括提升校园管理效率、...

    增程式电动汽车动力系统电磁兼容研究

    从整体入手研究复杂系统的演化行为特点,根据理论推出简单有效的数学模型,把研究成果推广,基于协同学的思想去拓宽适用范围,从而为开辟理论适用的新领域提供现实、快捷、方便之路。协同学认为,慢驰豫参量决定了...

    大数据平台引领服务模式大变革.docx

    传漾科技以业界领先的广告发布和数据解析技术为驱动,高效整合媒体资源,充分掌握网络受众行为,将数字营销从精准、高效提升至全程、智能,帮助客户在数字营销领域更智能、更简捷。 自2009年成立以来,传漾科技始终...

    《程序员》杂志2012年第1期.pdf (免费积分下载)

    Engadget评论这是有史以来最激动人心和有趣的CEO备忘录之一。其中他向芬兰的同事们宣布,已经决定与微软战略结盟,并同时将Symbian、MeeGo和Qt三大拥趸颇众的平台打成遗留系统。还记得他是怎么说的吗? “设备之间...

    VC++6.0核心编程源码.rar

    我之所以将这一章放在本书的开头,是因为我考虑到Unicode是开发任何应用程序时要采用的基本步骤。关于Unicode的问题,我在本书的每一章中几乎都要讲到,而且本书中给出的所有示例应用程序都是...

Global site tag (gtag.js) - Google Analytics