BDD - BDD Automation Framwork 自动化框架

article/2025/9/25 11:02:47

BDD - BDD Automation Framwork 自动化框架

  • 引言
  • BDD 测试框架
  • Jenkins 集成
  • Framework Components 框架组件
  • IDEs 集成开发环境
    • Notepad++
    • Eclipse
    • JetBrains IntelliJ IDEA
    • Microsoft Visual Studio

引言

BDD 自动化框架使得 QA 工程师很容易将 Gherkin Scenarios 转换成自动化测试用例。BDD 自动化有一个优势,就是测试用例能立马运行起来。当然用 BDD Dirver 运行 Gherkin Scenarios 很容易失败,直到 Feauter 文件中所有的步骤都被代码实现了。这也使得测试驱动自动化 shift-left 左移,在写 Gherkin Scenarios 时,如不能及时实现代码自动化,它可以在晚些时候再实现自动化。

BDD 测试框架

Cucumber 是主要的 BDD 测试框架,它支持大部分主流的编程语言。建议选择和所测试的产品一致的开发平台和编程语言,方便测试和开发的技术交流和问题定位。

常见的 BDD 测试框架:

编程语言推荐框架其他框架
C#​SpecFlow​​LightBDD Concordion.Net NSpec XBehave NBehave
​JavaCucumber-JVM​JBehave Spock Scalatest JGiven
JavaScript​Cucumber.js​​Yadda Jasmine Mocha Vows
Python​Behave​​​​Lettuce Freshen pytest-bdd pyspecs

Cucumber-JVM, Cucumber.js 是宿主 Cucumber 实现的
在这里插入图片描述
Behave, SpecFlow 使用 Cucumber 组件基础上进行的二次开发
在这里插入图片描述

Jenkins 集成

BDD 自动化框架也可以从 Jenkins 启动,Java Maven 项目启动 BDD 自动化测试可视为 Maven build 的一部分。其它类型项目则需要用命令启动。例如 Cucumber-JVM,可以用 Cucumber Reports Plugin,汇报测试结果。而其它 Frameworks 没有对应的 Jenkins 插件(像 SpecFlow)。为了汇报结果,可将报告转换成其它格式,像 JUnit 或 MsTest。也可以通过 Jenkins 用 HTML Publisher 插件,提供基于 HTML 格式的报告,但是 HTML Publisher 插件出于安全考虑默认是禁止 JavaScript,造成报告显示不全。

Framework Components 框架组件

任何一个 BDD 自动化框架主要有 4 部分:

  1. Gherkin Feature 文件
    文本文件主要包含 Gherkin Scenarios
    文件扩展名是 “.feature
  2. Step Definitions
    用编程语言 (.java, .cs, etc.) 编写的源代码文件
    利用某种运行工具(像 Junit,SpecRun)将 Gherkin Scenarios “given-when-then” 步骤映射到测试执行的代码
    是基于被测产品真正执行的测试
  3. Shared Libraries 共享库
    用编程语言 (.java, .cs, etc.) 编写的源代码文件
    包含基于被测产品的测试逻辑
    被 step definitions 调用
    跟 BDD 或 Gherkin 是没有关系的
    通常是 page objects(UI) 或 Utils 或 配置文件,或 Request Build (API)
  4. BDD Driver
    可执行的文件(像 Junit,SpecRun 等测试工具运行的执行文件)用来运行作为测试用例的 BDD Scenarios
    解析 Feature 文件,并将他们跟 step definitions 对应 Glues 起来执行测试
    运行完成汇报测试结果

尽量做到代码共享,尽管可以将所有的测试代码放在 step definitions,但强烈建议将测试代码写成共享库。Step definitions 应该尽可能最小化来达成最大化代码重复利用和最小化定位测试失败,此外 BDD 步骤可能需要执行类似的操作。

IDEs 集成开发环境

因为 Gherkin 是一个特定领域语言 domain-specific language, 尽量使用灵活实用的编辑器和集成开发工具,像其它编程语言一样。

Notepad++

Notepad++ 当作自定义语言一样可以处理 Gherkin Feature 文件。首先需要下载 Gherkin User-Defined Language 文件,然后在 Notepad++,通过导航 Language -> Define your language…导入下载的语言文件。当你打开一下 “.feature” 文件,就会高亮显示语法了(如果不行,检查一下语言定义设置,也可直接通过 Language 菜单关联找到 Gherkin)

Eclipse

Eclipse 可利用 Natural​ plugin​ 来支持 Cucumber.

JetBrains IntelliJ IDEA

IntelliJ IDEA 有 Cucumber 和 Behave 对应的插件,IDEA 运行 BDD Scenarios 不同于用命令行运行,需要额外的设置,更多细节可参考 Cucumber Document

Microsoft Visual Studio

Visual Studio 有 SpecFlow 插件,项目使用 SpecFlow 需要加额外的 NuGet 依赖包,更多细节,可阅读 SpecFlow documentation


http://chatgpt.dhexx.cn/article/ZEfIYsbo.shtml

相关文章

zipkin

zipkin zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。 architecture 如图,在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢? 日志: 通…

Cucumber之二Gherkin语言学习

在本教程中,我们将向您介绍Gherkin - BDD语言(业务驱动开发)。我们将尽力详细回答这些问题原文点击这里 免费英语视频教程可见微信公众号:【软测小生】里面,请关注公号更新相关文章和视频资源。 另外有一个中国团队在做类似的事情&#…

Artifactory 简介

产品特点 http://www.jfrogchina.com/artifactory/features/ 产品对比 https://binary-repositories-comparison.github.io/

pom文件里的groupId和artifactId是什么

在学习maven项目的时候发现所有pom文件里的<dependency>下有都有两个带Id的东东&#xff1a; 它们是什么&#xff1a; groupId&#xff1a;存储的包的路径&#xff0c;一般分为多段&#xff0c;第一段为域&#xff0c;第二段为公司名。。。。。。如图&#xff0c;org是域…

artifactId到底什么意思?

打开https://repo1.maven.org/maven2/org/apache/flink/flink-table-common/1.11.2/ 会看到: 对应的依赖是: <dependency><groupId>org.apache.flink</groupId><artifactId>flink-table-common</artifactId><version>1.11.2</version…

maven项目的groupId和artifactId什么意思?

首先要知道groupId和artifactId的存在是为了定位到你的项目&#xff0c;所以它们充当着坐标的角色。 groupId&#xff1a;group意思为组&#xff0c;所以理解为是组织Id&#xff0c;也是公司Id&#xff0c;通常它的写法与公司域名类似。一般分三段&#xff0c;即“域.公司名称.…

maven中的ArtifactId和groupId是什么

文章目录 1、了解2、举例3、说明 1、了解 之前建项目、用maven时常遇到GroupID和ArtifactID&#xff0c;一直说要弄清楚却迟迟拖延&#xff0c;今天查了一下&#xff0c;在这里做个小结。 最简单的来说&#xff1a;GroupID被俗称为包结构 ArtifactID被俗称为项目名 GroupId和…

maven中的groupId和artifactId是指什么?

groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的&#xff0c;如果你要把你项目放到maven本地仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。   groupId一般分为多个段&#xff0c;这里我只说两段&#xff0c;第一段为域&#xff0c;第二…

关于idea配置Spring后,在pom.xml中“<artifactId>spring-boot-maven-plugin</artifactId>”出现报红现象

(1&#xff09;出现问题&#xff0c;如图 当我们出现问题时&#xff0c;解决问题要从根源解决&#xff01; 介绍一个神奇的方法&#xff08;不建议使用&#xff09; 在<artifactId>spring-boot-maven-plugin</artifactId>下一行加上<version>2.3.5.RELEASE&l…

简单分享Maven中的groupId和artifactId

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

<artifactId>spring-boot-maven-plugin</artifactId>报错问题

刚创建好项目就报错了&#xff0c;进入到maven库中Reposiory\org\springframework\boot\spring-boot-maven-plugin\下查看发现存在相关插件&#xff0c; 这种情况可以在pom.xml文件中补充上相应的版本号<version>2.3.5.RELEASE</version>&#xff0c;不知道应该补充…

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格&#xff0c;他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础&#xff0c;…

<artifactId>mysql-connector-java</artifactId>

// 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver");// 建立连接 String url "jdbc:mysql://localhost/database_name"; String username "username"; String password "password"; Connection conn DriverManager.…

Maven中的GroupID和ArtifactID指的是什么?

最近用Maven创建工程&#xff0c;一直搞不懂Maven中的GroupID和ArtifactID是什么&#xff0c;直到看了网上的一篇文章才明白&#xff0c;在此与大家分享分享 本文转载于一问网友的回答&#xff08;略修改&#xff09; 地址&#xff1a;https://zhidao.baidu.com/question/1639…

maven中groupId和artifactId的含义

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。 GroupId是项目组织的唯一标识符&#xff0c;在实际开发中对应JAVA的包的结构&#x…

Maven项目中依赖的groupId和artifactId标签的含义?

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。groupId是项目组织唯一的标识符&#xff0c;实际对应java包的结构&#xff0c;是main目…

<artifactId>spring-boot-maven-plugin</artifactId>爆红

加版本号&#xff0c;我的版本号如下 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.12.RELEASE</version> 加完后就不会报错 怎么找自己对应的版本号呢&#xff1f; …

maven中的GROUPID和ARTIFACTID是什么?作用是啥?

最近在学用springboot做前后端分离的项目&#xff0c;发现maven的pom.xml文件中有很多依赖&#xff0c;其中用groupId和artifactId。 心血来潮整理下groupId和artifactId的作用&#xff1a; 什么是groupId和artifactId&#xff1f; 我们在创建一个springboot项目时&#xff0…

什么是groupid和artifactId?

什么是groupid和artifactId&#xff1f; groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的&#xff0c;如果你要把你项目弄到maven本地仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。 groupId和artifactId是maven管理项目包时用作区分的字段…