首先,测试人员应该参与软件开发的全流程,这一点已经是软件行业的共识了。

其次,新技术、新框架、新思路不断涌现的今天,测试人员除了传统的功能测试,也要不断与时俱进,主动承担起自动化测试、性能测试等。除了更多参与软件流程,测试人员更要以自己的技术能力证明自己的价值!

再次,随着敏捷开发模式的不断迭代发展,敏捷开发的技术和管理模式,已经深入到传统和新兴的各个软件公司。

敏捷开发,除了快速迭代的项目管理模式,还带来了一系列技术实践层面的新思想、新概念。而且,新思路、新概念、新模式也在敏捷开发的一次一次迭代中不断推陈出席!

早期的TDD

(Test Driven Development),

测试驱动开发,就是敏捷开发带来的软件开发新实践。TDD让测试人员更深入地参与到了软件开发生命周期中。

TDD推出了几年之后,新的敏捷开发迭代,还在持续着。

新迭代的产物,是软件开发更加贴近业务逻辑的“行为驱动开发”,缩写为BDD。

BDD(Behavior Driven Development),行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。

BDD的开发流程,像下面这样:

BDD最初是由Dan North在2003年命名,2009年在伦敦发表的“敏捷规格,BDD和极限测试交流”中,Dan North对BDD给出了如下定义:

BDD是第二代的、由外及内的、基于拉(pull)的、多方利益相关者的(stakeholder)、多种可扩展的、高自动化的敏捷方法。它描述了一个交互循环,可以具有带有良好定义的输出(即工作中交付的结果):已测试过的软件。

Dan North创造了首个BDD框架:JBehave。之后是Ruby语言的基于故事的RBehave,后来被纳入了RSpec项目。RSpec中第一个基于故事的框架,后来被主要由Aslak Hellesøy开发的Cucumber取代。

Cucumber框架可以说是BDD的代名词了。官网:https://cucumber.io

Cucumber支持的语言也非常多,比如:

• Java Virtual Machine: Cucumber-JVM

• .NET (Microsoft.NET and Mono): IronRuby and .NET, IronRuby and Mono

• Adobe Flex: FunFX, Melomel

• Python

• Perl: Test::BDD::Cucumber

• Erlang: cucumberl kucumberl

• PHP: Behat (使用 Mink 进行浏览器测试

下面以JAVA为例,简单描述一下Cucumber进行BDD的过程。

1. 安装 cucumber-archetype Maven插件;

2. 在命令行建立一个项目

mvn archetype:generate

-DarchetypeGroupId=io.cucumber

-DarchetypeArtifactId=cucumber-archetype

-DarchetypeVersion=4.2.6.1

-DgroupId=hellocucumber

-DartifactId=hellocucumber

-Dpackage=hellocucumber

-Dversion=1.0.0-SNAPSHOT

-DinteractiveMode=false

3. 进入目录 src/test/resources/hellocucumber,创建行为特征文件,包含场景、动作和响应。

Feature: Is it Friday yet?

Everybody wants to know when it's Friday

Scenario: Sunday isn't Friday

Given today is Sunday

When I ask whether it's Friday yet

Then I should be told "Nope"

Feature、Scenario、Given、When、Then这些都是关键字。

特征文件,需要用英文,这个不要尝试用汉字。

到这一步,行为驱动测试的第一部分的“B”,就写完了。是不是很自然?上手很快?

剩下的工作,测试人员就要跟开发人员紧密配合了。

有兴趣的小伙伴,多看看Cucumber官网,很详细的步骤和文档。

Python小伙伴们,除了Cucumber框架,我们还有Lettuce框架,可以选择。后者是一个纯Python解决。

如同TDD,BDD也在中国大陆的软件圈子里逐步热闹起来。

小伙伴们,赶快行动起来吧!

作  者:Testfan   Arthur

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

转载于:https://www.cnblogs.com/testfan2019/p/11245162.html

测试人员,今天再不懂BDD就晚了!相关推荐

  1. 作为测试人员,不能不懂的adb命令和操作

    刚从web转到app测试,很多知识需要补充,记录一下 1.概念 其实我们口中所讲的adb是个泛指,这其中有两个工具--Fastboot和ADB fastboot 快速启动,usb链接数据线的一种刷机方 ...

  2. Get技能 | 敏捷测试:测试人员不能不懂的迭代复盘

    1 敏捷测试的定义 什么是敏捷测试 "敏捷测试"既不是一种测试方法,也不是一种测试方式,而是为了适应敏捷开发而特别设计的一套完整的软件测试解决方案.这个解决方案应该能够支持持续交付 ...

  3. 测试人员常见面试题(持续更新)

    1.如何保证产品质量 前言:产品质量与团队中的每个人都息息相关,光靠测试难以保障,下面从流程,团队,技术手段,其他四个方面说明 (1)流程:制定出统一的产品迭代流程,不符合公司流程的一律打回,常见流程 ...

  4. 草根测试人员的成长之路 ----------吴老 敬仰吴老

    草根测试人员的成长之路 ---------- 吴老 个人 qq : 1824971629 第一章 毕业和无业 一转眼工作了 13 年,弹指一挥间已经从一个毛头小伙子变成了一个中年大叔了,虽然 现在已经 ...

  5. 浮躁的国内测试界-2006年测试人员招聘感悟

    浮躁的国内测试界-2006年测试人员招聘感悟 作者:陈大卫 来源:希赛网软件测试频道 我面试的测试应聘人员大多是有一定从业经验的测试人员,其中不乏优秀者,但是也有相当多的应聘人员反映出这样那样的问题, ...

  6. 优美的测试代码 - 行为驱动开发(BDD)

    可理解的代码非常重要,测试代码也是如此.在我看来,优秀的测试代码,必须做到一个重要的事情就是保持测试逻辑的清晰.一个完整的测试案例通常包括三个部分: 1. SetUp 2. Exercise 3. V ...

  7. python做测试需要哪些技能_测试人员需要具备哪些基本技能

    测试人员需要具备哪些基本技能或者素质.这个问题在几年前常见于软件测试工程师笔试题上.对这个问题,我觉得应该有新的解读.现在我们日常工作中需要应对的是,测试和开发的交叉领域,测试和运维的交叉领域.而不再 ...

  8. 开发人员与测试人员关系的理解

    在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于 ...

  9. 测试人员如何管理项目与风险预警

    在很多时候不少项目上线后出现的问题,或是项目没有按时完成时,测试人员是很容易背锅的.通常项目在实施过程中,如果需求变动了,开发技术变更等影响项目进度的时候,也往往会压缩测试时间的.这样的事情造成测试工 ...

最新文章

  1. 基于canvas绘制的一个跟随鼠标变幻的动态背景线条
  2. Python在window平台打包工具pyinstaller (三十五)
  3. requestAnimationFram
  4. springboot+mybatis-plus实例demo
  5. 网际控制报文协议icmp_网络中的ICMP(Internet控制消息协议)
  6. 柯尼卡美能达打印机c226使用说明_高效便捷柯尼卡美能达C226复印机优惠中-柯尼卡美能达 C226_西安复印机行情...
  7. [求助]请教一个问题!
  8. IObit Uninstaller Pro 10.0.2.20 便携版 — 卸载工具
  9. 微信小程序阻止事件冒泡【看这里】
  10. Dubbo 的集群容错模式:Failsafe Cluster
  11. 大型分布式网站架构如何设计
  12. Docker 容器内操作宿主机
  13. SQL注入-04-(最后有实战教学)关系注入逻辑注入
  14. 企业面试遇到的问题02
  15. 将中文字符串转为拼音
  16. “强者恒强”,零食江湖来到新赛点
  17. GPU 利用率低常见原因分析及优化
  18. 神秘代码让iPhone微信闪退的解决方法
  19. win32中如何区别“鼠标单击”和 “鼠标双击”
  20. 大一上学期计算机考试笔记,上大一波学霸笔记曝光 笔记本里的青春 有着努力的痕迹...

热门文章

  1. Python生成器和类
  2. Blazor 状态管理
  3. 使用Web API和React创建用户注册和登录
  4. php中,多维数组是什么意思,在PHP中回显多维数组
  5. c语言计算日期天数,关于计算两个日期间天数的代码,大家来看看
  6. vs2017中配置openGL环境
  7. 学习oracle的感悟,随笔:最近关于Oracle学习思考的一些感悟
  8. java机器PDF_机器人制作入门(第3版)PDF 下载
  9. php7链接数据库报错The server requested authentication method unknown to the client
  10. 计算机应用基础工作页,计算机应用基础工作页