BDD行为驱动开发+Python案例解析

2023-05-16

简介:BDD(Behavior-Driven Development,行为驱动开发)是一种敏捷软件开发方法,它强调软件应该按照预期的行为来开发。BDD的核心理念是使用自然语言编写的可读性强、易于理解的用户故事(User Stories)和验收标准来驱动开发过程。BDD建立在TDD(测试驱动开发)的基础之上,将测试的重点从代码级别的单元测试转移到更高层次的端到端测试,关注整个系统的行为。通过遵循BDD的原则和方法,可以提高软件开发的质量、效率和可维护性,并促进团队间的沟通与协作。

历史攻略:

TDD测试驱动开发+Python案例解析

BDD流程:

图片

BDD的精髓:

1、提高沟通效率:使用自然语言描述的用户故事和验收标准,有助于团队成员(如开发者、测试人员和业务人员)之间的沟通和理解。
2、关注系统行为:BDD强调从用户和业务需求的角度出发,关注整个系统的行为,而非局限于代码层面的实现。
3、可读性强的测试用例:编写易于理解的测试用例,使其成为项目的一部分,有助于项目的维护。

BDD的主要作用:

1、促进团队合作:BDD鼓励多个角色(如开发者、测试人员和业务人员)共同参与,提高团队协作效率。
2、提高软件质量:通过编写行为测试用例,有助于确保软件符合预期的行为和业务需求。
3、改进需求分析:通过用户故事和验收标准,更好地理解业务需求,减少需求歧义。

安装和使用BDD的方法因编程语言和测试框架的不同而异。

示例:基于Python语言和Behave测试框架

1、安装Behave:

pip install behave

2、创建项目结构:创建一个名为features的文件夹,用于存放.feature文件和steps文件夹。在steps文件夹中,编写实现测试步骤的Python代码。

3、编写.feature文件:在features文件夹中创建一个名为example.feature的文件,编写一个简单的用户故事和验收标准。

Feature: Addition
  As a user
  I want to add two numbers
  So that I can get the sum

  Scenario: Add two numbers
    Given I have two numbers 1 and 2
    When I add the numbers
    Then I should get 3 as the sum

4、编写实现代码:在steps文件夹中创建一个名为example_steps.py的文件,编写相应的实现代码。

from behave import given, when, then

@given('I have two numbers {num1} and {num2}')
def step_given_two_numbers(context, num1, num2):
    context.num1 = int(num1)
    context.num2 = int(num2)

@when('I add the numbers')
def step_when_add_numbers(context):
    context.sum = context.num1 + context.num2

@then('I should get {result} as the sum')
def step_then_get_sum(context, result):
    assert context.sum == int(result), f"Expected {result}, but got {context.sum}"

5、运行测试:在命令行中运行behave命令,执行.feature文件中定义的用户故事和验收标准。

behave

运行结果:

图片

注意事项:

1、编写简洁明了的用户故事和验收标准,避免过于复杂的逻辑。
2、用户故事和验收标准应尽量覆盖所有可能的场景,包括正常情况、边界情况和异常情况。
3、保持团队间的沟通和协作,确保各个角色(如开发者、测试人员和业务人员)对需求有清晰的理解。
4、在编写实现代码时,关注代码质量和可维护性,遵循编程最佳实践。

体验感受:很不符合开发习惯,并且非常啰嗦繁琐。体验还没TDD好。

图片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BDD行为驱动开发+Python案例解析 的相关文章

随机推荐

  • WSL无法使用npm

    报错信息 root 64 DESKTOP U2RC2DU npm bash mnt c Program Files nodejs npm bin sh M bad interpreter No such file or directory
  • HDU 3700 Line belt

    Line belt Time Limit 2000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 3669 Accepted Su
  • Ubuntu中使用framebuffer的方法

    打开 etc initramfs tools modules文件 xff0c 在末尾加上 xff1a fbcon vesafb 打开 etc modprobe d blacklist framebuffer xff0c 找到 blackli
  • html5.超链接标签,图片标签

    lt a gt 超链接标签 a标签常用的属性 xff1a href 用于指定链接的资源 target 设置打开新资源的目标 Blank 在独立的窗口上打开新资源 self 在当前窗口打开新资源 file file协议 xff08 文件协议
  • ubuntu22.04 搭建 Pytorch环境

    关于电脑 第一步 安装anaconda 1 进入官网 链接 anaconda 2 下载linux的sh版 3 在对应位置输入 span class token function sh span 文件名 sh 4 选择 yes 5 选择no
  • opencv的ORB特征(slambook2 orb_cv.cpp代码详解)

    ORB特征提取与匹配 slambook2 ch7 orb cv cpp 1 头文件 span class token macro property span class token directive hash span span clas
  • Debian安装nodejs

    安装指定版本nodejs xff0c 以18 X版本为例 1 通过curl命令向系统中添加NodeSource存储库 curl sL https deb nodesource com setup 18 x bash xff08 如果提示 c
  • pip安装第三方库全攻略:普通安装、安装whl后缀文件、使用国内镜像安装

    简介 xff1a pip 是 Python 的包安装程序 其实 xff0c pip 就是 Python 标准库 xff08 The Python Standard Library xff09 中的一个包 xff0c 只是这个包比较特殊 xf
  • Python:处理cv2模块putText中文无法识别问题

    简介 xff1a 在cv2中 xff0c 目前putText函数中文是无法直接使用的 xff0c 需要进行一点的转换 解决办法为通过PIL模块重新封装一个函数 xff0c 直接调用 如图 xff1a 通过PIL模块改造 xff1a new
  • VLC播放电视直播rtmp流地址

    简介 xff1a RTMP是Real Time Messaging Protocol xff08 实时消息传输协议 xff09 的首字母缩写 该协议基于TCP xff0c 是一个协议族 xff0c 包括RTMP基本协议及RTMPT RTMP
  • Python:global的使用

    简介 xff1a 1 global是Python中的全局变量关键字 2 全局变量是编程术语中的一种 xff0c 源自于变量之分 3 变量分为局部与全局 xff0c 局部变量又可称之为内部变量 4 由某对象或某个函数所创建的变量通常都是局部变
  • Python:opencv画点、圆、线、多边形、矩形

    简介 xff1a 机器学习视觉方向一般都需要在图像中添加标注框 xff0c 标注框有着很大的用处 xff0c 特别是对图像中某些需要关注的特征起到圈定的效果 xff0c 方便对特征选择进行处理 相关攻略 xff1a 机器学习 xff1a 基
  • adb重启或关机手机命令

    简介 xff1a 在某些特殊场景中 xff0c 例如手机真机不在身边 xff0c 但已通过adb进行连接 xff0c 可以使用命令进行远程关机或者重启 相关攻略 xff1a adb xff1a 常用命令 adb xff1a win10系统下
  • docker:更换镜像源

    简介 xff1a 因为国内的网络访问问题 xff0c 为加快拉取镜像速度 xff0c 建议设置docker国内镜像源 相关攻略 xff1a win10 xff1a 安装docker和测试安装redis centos7 6 xff1a 安装d
  • 七大顶级Linux桌面比较

    1七大顶级Linux桌面 xff1a Unity 对于开源Linux平台来说 xff0c 如何选择就是首要解决的问题 通常Linux发行版都有默认的桌面成为你的首选 xff0c 但目前可供选择的桌面环境种类繁多 特别是Ubuntu系统一个平
  • Linux:安装go环境

    简介 xff1a Go xff08 又称 Golang xff09 是 Google 的 Robert Griesemer xff0c Rob Pike 及 Ken Thompson 开发的一种静态强类型 编译型语言 Go 语言语法与 C
  • docker应用:搭建私有云盘

    简介 xff1a NextCloud是一个开源的云存储解决方案 xff0c 可以在自己的服务器上搭建个人云存储系统 它提供了与市面上主流云存储服务 xff08 如Dropbox Google Drive xff09 相似的功能 xff0c
  • Flask+A-Frame:交互式全景图展示网站

    简介 xff1a 通过结合 Flask 轻量级 Web 框架与 A Frame 3D 和 VR 技术 xff0c 实现了一个可交互的全景图展示功能 xff0c 用户可以在浏览器中自由观看 旋转和缩放全景图片 项目的核心是使用 Flask 搭
  • OpenCV合成全景图

    简介 xff1a OpenCV 利用特征提取 特征匹配 齐次估计 图像配准和图像融合等技术 xff0c 将一系列图像合成为全景图 OpenCV 和 Pillow 是两个功能强大的 Python 图像处理库 xff0c 但它们在处理全景图拼接
  • BDD行为驱动开发+Python案例解析

    简介 xff1a BDD xff08 Behavior Driven Development xff0c 行为驱动开发 xff09 是一种敏捷软件开发方法 xff0c 它强调软件应该按照预期的行为来开发 BDD的核心理念是使用自然语言编写的