BDD课题研究之测试思想和方法总结

  前段时间和文朗做了BDD课题的研究,现将部分总结报告发出来与大家共享,欢迎指正批评,欢迎交流经验。

  此次研究的课题是BDD,主要涉及两个方面:测试的思想和方法、技术框架。这里做测试思想和方法的总结。

  BDD是什么

  全称:Behaviour Driven Development(行为驱动开发)。

  BDD改变了我对软件测试的认识。先前我对测试的认识是:从大的角度来讲,软件测试就是对一个软件系统从功能上进行确认测试和验证测试,从性能上进行压力测试和负载测试,以及对系统的配置测试和兼容性测试等,从类别上又有单元测试,集成测试,回归测试,所有的这些测试工作都有一个目的:交付一套高质量的软件系统。我们软件测试人员的工作就是:尽可能早的找出软件缺陷,并确保其得以修复。顺理成章的,在我们的思维中是:我们先拿到系统的既成品,然后开展测试工作,而BDD恰好颠覆了我们的思维。

  回到BDD正题,BDD中有两个大的概念:测试先行和系统设计。

  测试先行:BDD提倡我们在开发者的编码工作开展之前,先写测试用例,然后由测试来推动着开发的工作,具体解释为:在设计如何实现一个功能前,先考虑如何测试这个功能,测试的代码完成后,再编写功能实现代码,并且使得该测试用例通过,即完成了系统的一个功能模块。

  系统设计:在系统功能实现代码编写之前,我们需要先编写测试代码,在我们的测试代码中实现对系统行为的描述,这个描述其实就是用一种接近自然语言的方式对系统进行详细的设计,并且使项目相关人员,即使是非技术人员也能很容易看懂。关于系统行为,举例说明:用户在一个特定的条件下对系统做请求,系统在该条件下做什么样的处理,这就是系统的一个行为。

  总结一下BDD的概念:在项目之初,由客户、开发人员、测试人员一起通过充分的沟通对系统的行为进行设计,由测试人员以接近自然语言的方式编写可以描述系统行为的测试用例,然后由开发人员编写相关的实现代码,并确保该测试用例通过。循环这个过程实现整个系统的功能。

  BDD的测试思想

  先前在写日报的过程中,以关键字的形式来描述,这里用同样的方式来表达。

  关键字:TDD,代码即文档,系统设计,合作。

  ◆ TDD

  全称:Test Driven Development(测试驱动开发)。

  BDD是基于TDD发展起来的,BDD中测试先行的理念也是来自于TDD,测试驱动开发,由测试来推动着开发的工作,在具体的项目实施中,测试的工作先行,在功能代码编写前,先编写测试代码,再编写功能实现代码,并且使得该测试用例测试通过,循环这个过程,来实现系统的其他功能。在一个项目的开发过程中,针对于每一个阶段,都可用TDD的思想来开展工作。

  BDD对TDD理念进行了扩展。TDD要求用测试来驱动开发,其重点偏向开发,测试用例是在约束开发者,使开发者的目标明确,设计出满足需求的系统。BDD要求在设计测试用例时对系统进行定义,倡导我们在测试用例中用通用语言把系统的行为描述出来,把测试代码作为系统的定义文档,将系统的设计和测试用例结合起来,进而驱动开发工作。

  ◆ 代码即文档

  很多软件项目的失败源于项目团队人员对文档理解的差错。文档用来约束一个项目团队成员,使得大家的目标保持一致,总之:文档很重要。

  我们用需求文档管理需求,但是这些文档本身都因为容易变更,加上团队人员主观上的理有误,最终做出不能满足产品需求的产品。

  BDD的思想是:将我们的产品设计写在我们的测试用例中。把传统的产品说明书的内容写在测试用例中,在测试用例中描述软件系统的具体行为,体现着系统的设计,而且这是一份“活”的的文档,因为这是可以运行的测试用例,我们由这些测试用例来驱动开发者的编码工作,开发者必须使这个测试用例通过,才算满足最基本工作。假如用例不通过,显然我们的系统就存在缺陷,没有满足用户的需求。这样,就算是开发人员对文档理解有误,也会满足系统的需求。

BDD课题研究之测试思想和方法总结(一)相关推荐

  1. 计算机应用在学科整合中的课题研究,多媒体计算机技术与学科教学的整合(课题研究阶段总结)...

    多媒体计算机技术与学科教学的整合 2014.12~2015.5 子长县职业教育中心 白勰 在承担课题研究任务以来.由于领导的高度重视,学校采取了切实可行的工作措施,同时也做了大量务实的工作,使课题研究 ...

  2. 移动应用专项测试思路和方法

    在之前的文章简单介绍了移动端应用类型及特点https://blog.csdn.net/dou_being/article/details/119304770,这篇文章主要介绍Web  App.Nati ...

  3. 课题申报撰写方法详解,课题研究立项、科研成果

    撰写课题申报书 下面这5点一定要注意! 首先,课题申报书是由课题主办方提供模板.对于申报人来说,主要填写的内容分别是选题.课题组以及课题论证. 其中,课题选题需要课题负责人进行选择和确定,且要符合选题 ...

  4. 小学计算机的一些课题,小学计算机课题研究价值主要体现在什么方面

    小学计算机课题研究价值主要体现在什么方面 分类:课题申报常见问题 发表时间:2017-01-24 小学计算机课题研究价值主要体现在什么方面 小学计算机课题研究中要主要的方面有很多如:课题立项.课题开题 ...

  5. 程序设计思想与方法 笔记

    程序设计思想与方法 问题求解中的计算思维 第一章 计算与计算思维 1.3 初识Python 查看Mac中Python安装目录: 终端开启Python → import sys → print sys. ...

  6. 在数学建模中微型计算机,“在数学建模中培养学生思维能力的研究”课题研究情况汇报...

    自2006年9月本课题开展以来,学校领导高度重视本课题的研究和进展情况,全体课题组成员也积极投入到课题的研究实践中,课题得以顺利地按计划进行,并取得了阶段性的成果.现将本课题实验的进展情况汇报如下: ...

  7. java 慕课 结题报告_[转载]微课组:小课题研究结题报告

    一.课题背景及界定 近两年,各种微课大赛和培训活动此起彼伏,微课热让我们不得不对传统教学资源进行反思.传统教学资源如教案.课件.习题等,这些资源以整节课或单元为组织单位,重点从辅助教师"教& ...

  8. 计算机技术简介研究目的和意义,《计算机教学改革与实践研究》开题报告_课题研究的目的、意义(精选).docx...

    <计算机教学改革与实践研究>开题报告一,课题研究的目的.意义 近几年,职业学校毕业生的数量急剧增加,但距离企业的要求似 乎越来越远. 工程教育的非工程化现象严重,网络专业毕业的学生不会做网 ...

  9. 人工神经网络研究综述,人工神经网络分析方法

    1.人工神经网络的发展趋势 人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式.语音识别.非结构化信息处理方面的缺陷,使之在神经专家系统.模式识别.智能控制.组合优化. ...

最新文章

  1. 03.Python基础--控制流语句-顺序结构-判断结构-循环语句
  2. 亚马逊Corretto 8
  3. 软件测试基础:自动化测试、安全测试、性能测试
  4. Vue数据更新视图不更新的几种解决方案
  5. UGUI是如何频繁访问Image/Text等组件的raycastTarget的(读源码有感)
  6. 动态添加gridview行【转:http://www.cnblogs.com/oec2003/articles/1069796.html】
  7. 基于Unity引擎的RPG3D项目开发笔录
  8. 《介绍几个常见常用的字符函数》(包括isdigit,isupper,islower,isalpha,isalnum,toupper,tolower)
  9. 【多字典公共键】快速找到多个字典的公共键及非公共键
  10. beyong compare激活
  11. 【LED灯屏控制器】AG10K 烧录程序(2)
  12. ELK日志平台---老男孩教育笔记
  13. apache rewrite规则全攻略
  14. Python玫瑰花绘制
  15. 计算两个矩形的IOU交并比_Python
  16. DoNet学习-WebForm视频教程(30集)
  17. linux进程线程同步之 - POSIX线程互斥锁
  18. python制作个人名片_python制作名片
  19. CF 221 C Circling Round Treasures - dp - 状压
  20. cfa三级真题和mock_cfa mock和真题哪个难(cfa mock和真题差别)

热门文章

  1. RobotFramework自动化测试框架-MongoDBLibrary库的使用
  2. windows7系统无法连接服务器,Win7系统玩LOL提示无法连接服务器的解决办法
  3. sftp工具都有哪些_古钱币收藏过程中必不可少的工具都有哪些?(建议收藏)...
  4. Pytorch教程(四):训练分类器TRAINING A CLASSIFIER
  5. intext php,信息素养
  6. 解决ubuntu插入耳机,两只耳机有一只没有声音或者声音偏小的问题
  7. 今天看了这个测试,居然测试得很准……
  8. 第五人格怎么维护服务器,第五人格怎么知道自己在那个服务器 | 手游网游页游攻略大全...
  9. python pandas判断excel某处存在空值,并处理该空值
  10. php正则教程,PHP 正则表达式