测试人员,今天再不懂BDD就晚了!
首先,测试人员应该参与软件开发的全流程,这一点已经是软件行业的共识了。
其次,新技术、新框架、新思路不断涌现的今天,测试人员除了传统的功能测试,也要不断与时俱进,主动承担起自动化测试、性能测试等。除了更多参与软件流程,测试人员更要以自己的技术能力证明自己的价值!
再次,随着敏捷开发模式的不断迭代发展,敏捷开发的技术和管理模式,已经深入到传统和新兴的各个软件公司。
敏捷开发,除了快速迭代的项目管理模式,还带来了一系列技术实践层面的新思想、新概念。而且,新思路、新概念、新模式也在敏捷开发的一次一次迭代中不断推陈出席!
早期的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就晚了!相关推荐
- 作为测试人员,不能不懂的adb命令和操作
刚从web转到app测试,很多知识需要补充,记录一下 1.概念 其实我们口中所讲的adb是个泛指,这其中有两个工具--Fastboot和ADB fastboot 快速启动,usb链接数据线的一种刷机方 ...
- Get技能 | 敏捷测试:测试人员不能不懂的迭代复盘
1 敏捷测试的定义 什么是敏捷测试 "敏捷测试"既不是一种测试方法,也不是一种测试方式,而是为了适应敏捷开发而特别设计的一套完整的软件测试解决方案.这个解决方案应该能够支持持续交付 ...
- 测试人员常见面试题(持续更新)
1.如何保证产品质量 前言:产品质量与团队中的每个人都息息相关,光靠测试难以保障,下面从流程,团队,技术手段,其他四个方面说明 (1)流程:制定出统一的产品迭代流程,不符合公司流程的一律打回,常见流程 ...
- 草根测试人员的成长之路 ----------吴老 敬仰吴老
草根测试人员的成长之路 ---------- 吴老 个人 qq : 1824971629 第一章 毕业和无业 一转眼工作了 13 年,弹指一挥间已经从一个毛头小伙子变成了一个中年大叔了,虽然 现在已经 ...
- 浮躁的国内测试界-2006年测试人员招聘感悟
浮躁的国内测试界-2006年测试人员招聘感悟 作者:陈大卫 来源:希赛网软件测试频道 我面试的测试应聘人员大多是有一定从业经验的测试人员,其中不乏优秀者,但是也有相当多的应聘人员反映出这样那样的问题, ...
- 优美的测试代码 - 行为驱动开发(BDD)
可理解的代码非常重要,测试代码也是如此.在我看来,优秀的测试代码,必须做到一个重要的事情就是保持测试逻辑的清晰.一个完整的测试案例通常包括三个部分: 1. SetUp 2. Exercise 3. V ...
- python做测试需要哪些技能_测试人员需要具备哪些基本技能
测试人员需要具备哪些基本技能或者素质.这个问题在几年前常见于软件测试工程师笔试题上.对这个问题,我觉得应该有新的解读.现在我们日常工作中需要应对的是,测试和开发的交叉领域,测试和运维的交叉领域.而不再 ...
- 开发人员与测试人员关系的理解
在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于 ...
- 测试人员如何管理项目与风险预警
在很多时候不少项目上线后出现的问题,或是项目没有按时完成时,测试人员是很容易背锅的.通常项目在实施过程中,如果需求变动了,开发技术变更等影响项目进度的时候,也往往会压缩测试时间的.这样的事情造成测试工 ...
最新文章
- 基于canvas绘制的一个跟随鼠标变幻的动态背景线条
- Python在window平台打包工具pyinstaller (三十五)
- requestAnimationFram
- springboot+mybatis-plus实例demo
- 网际控制报文协议icmp_网络中的ICMP(Internet控制消息协议)
- 柯尼卡美能达打印机c226使用说明_高效便捷柯尼卡美能达C226复印机优惠中-柯尼卡美能达 C226_西安复印机行情...
- [求助]请教一个问题!
- IObit Uninstaller Pro 10.0.2.20 便携版 — 卸载工具
- 微信小程序阻止事件冒泡【看这里】
- Dubbo 的集群容错模式:Failsafe Cluster
- 大型分布式网站架构如何设计
- Docker 容器内操作宿主机
- SQL注入-04-(最后有实战教学)关系注入逻辑注入
- 企业面试遇到的问题02
- 将中文字符串转为拼音
- “强者恒强”,零食江湖来到新赛点
- GPU 利用率低常见原因分析及优化
- 神秘代码让iPhone微信闪退的解决方法
- win32中如何区别“鼠标单击”和 “鼠标双击”
- 大一上学期计算机考试笔记,上大一波学霸笔记曝光 笔记本里的青春 有着努力的痕迹...
热门文章
- Python生成器和类
- Blazor 状态管理
- 使用Web API和React创建用户注册和登录
- php中,多维数组是什么意思,在PHP中回显多维数组
- c语言计算日期天数,关于计算两个日期间天数的代码,大家来看看
- vs2017中配置openGL环境
- 学习oracle的感悟,随笔:最近关于Oracle学习思考的一些感悟
- java机器PDF_机器人制作入门(第3版)PDF 下载
- php7链接数据库报错The server requested authentication method unknown to the client
- 计算机应用基础工作页,计算机应用基础工作页