当前位置: 首页 > news >正文

产品开发详细流程图家庭优化大师

产品开发详细流程图,家庭优化大师,做网站怎么建站点,wordpress磁力插件本篇介绍 Cucumber 的基本使用, 因为Cucumber是BDD的工具, 所以首先需要弄清楚什么是BDD,而在介绍BDD之前,先看看常见的软件开发方法。 常见的软件开发方法 面向过程开发(Procedural Development)&#x…

本篇介绍 Cucumber 的基本使用, 因为Cucumber是BDD的工具, 所以首先需要弄清楚什么是BDD,而在介绍BDD之前,先看看常见的软件开发方法。

常见的软件开发方法

  • 面向过程开发(Procedural Development):面向过程开发注重流程和功能的实现,而不是业务需求的实现。
  • 面向对象开发(Object-Oriented Development):面向对象开发注重对象之间的交互和关系,而不是业务需求的实现。
  • 测试驱动开发(Test-Driven Development,TDD):TDD注重测试用例的编写和通过测试用例来驱动代码的实现,而不是业务需求的实现。
  • 行为驱动开发(Behavior-Driven Development,BDD):BDD注重业务需求和行为,并通过测试用例来验证和定义业务需求的实现。

BDD的由来

BDD是行为驱动开发的缩写。它是一种软件开发方法,强调开发人员、测试人员和业务利益相关者之间的协作,以确保正在开发的软件与业务目标相一致。
BDD是在2003年由Dan North首次提出的。他发现在软件开发中,注重测试和自动化并不足以确保软件的质量和正确性。因此,他提出了一种基于“Behavior”(行为)的开发方法,即BDD。BDD旨在通过强调需求和业务价值,更紧密地结合开发和测试团队,提高软件的质量和客户满意度。
BDD涉及使用自然语言描述或所需系统行为的示例,这些示例被翻译成自动化测试,以确保系统的行为符合预期。这种方法有助于确保软件的开发是在清楚地理解所需的行为和结果的情况下进行的,以满足所有利益相关者的需求。

Cucumber 是什么

在这里插入图片描述

Cucumber 是一个行为驱动开发(BDD)工具,用于创建和运行自动化测试,以确保软件系统的行为符合业务需求和用户期望。它用自然语言编写测试用例,这些测试用例可以与开发和业务团队共享和理解。Cucumber支持多种编程语言,并且可以与各种测试框架集成。

Cucumber用于描述应用程序的行为、功能和需求。它的目标是帮助开发人员和非技术人员之间的沟通,以及帮助开发人员编写更易于维护的测试代码。通过使用Cucumber,团队可以创建基于真实场景的自动化测试,这些测试使用了普通语言来描述行为,因此它们对所有团队成员来说都是可理解的。以下是Cucumber的一些特点和用途:

特点:

  • 支持普通语言:Cucumber用于编写测试的语言是Gherkin,这是一种自然语言风格的语言,专门设计用来描述业务行为而不需要注入具体的如何实现。因此,非技术的团队成员(比如产品经理和业务分析师)也能参与测试和开发的过程。

  • 支持多种语言:尽管Cucumber起初是为用Ruby写的项目设计的,但是现在已经支持多种编程语言,包括Java, JavaScript, .NET,等。

  • 支持多种测试框架和工具,包括Selenium和Appium。

  • 可以生成易于阅读的测试报告,并提供了可视化的测试结果。

  • 整合支持:Cucumber可以和许多流行的持续集成/持续部署工具整合,例如Jenkins和TeamCity。

  • 可维护性与重用性:Cucumber的测试案例是用普通话写的,所以它们是可理解的,并且可以重复使用。此外,因为测试案例直接对应到需求,所以他们很容易维护。

用途:

  • 协助团队沟通:Cucumber使用自然语言描述应用程序的需求和功能,可以帮助开发人员和非技术人员之间的沟通。
  • 自动化测试:使用Cucumber可以编写自动化测试用例,这些测试用例模拟了用户使用应用程序的场景,以确保应用程序的正确性。
  • 生成文档:Cucumber测试用例描述了应用程序的行为和需求,可以作为应用程序的文档。
    总之,Cucumber是一款功能强大的BDD工具,可以帮助开发团队更好地协作、编写高质量的测试用例和文档。

基于Java 语言的Cucumber 使用实例

这里使用基于Maven的项目为例, 在Eclipse 上进行开发。

步骤如下:

  1. 导入依赖

需要导入 cucumber-java 和 cucumber-junit , 这里导入当前最新版本 7.14.0。

		<dependency><groupId>io.cucumber</groupId><artifactId>cucumber-java</artifactId><version>7.14.0</version></dependency><dependency><groupId>io.cucumber</groupId><artifactId>cucumber-junit</artifactId><version>7.14.0</version></dependency>
  1. 创建规格文件user.feature, 文件位于 src/test/resources 目录下:
Feature: UserScenario: createGiven User 100 not existWhen create User 100Then can query User 100

这个文件的解读是:
系统中User功能的 create场景, 如果ID为100的 User不存在,就创建这个User, 创建完成之后就可以查询到这个User了。

  1. 根据规格文件完成测试的代码,这里就是根据规格中的步骤定义的, 文件名为StepDefinitions.java。
/**
* @Title: StepDefinitions.java
* @Package com.osxm.je.topic.bdd
* @Description: TODO
* @author XM
* @date 2023年10月9日 下午10:03:34
* @Copyright: 2023
* @version V1.0  
*/
package com.osxm.je.topic.bdd;import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;import java.util.HashMap;
import java.util.Map;import com.osxm.je.basic.entity.User;import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;public class StepDefinitions {private Map<Integer, User> userRepo = new HashMap<Integer, User>();private User user;@Given("User {int} not exist")public void user_not_exist(Integer userId) {assertFalse(userRepo.containsKey(userId));}@When("create User {int}")public void create_user(Integer userId) {user = new User(userId);userRepo.put(userId, user);}@Then("can query User {int}")public void query_user(Integer userId) {user = userRepo.get(userId);assertNotNull(user);}
}
  • 注意 @Given 注解中使用 {int} 定义的变量和规格文件user.feature中的对应
  1. 编写测试入口类 CucumberTest.java
/**
* @Title: CucumberTest.java
* @Package com.osxm.je.topic.bdd
* @Description: TODO
* @author XM
* @date 2023年10月9日 下午10:05:35
* @Copyright: 2023
* @version V1.0  
*/
package com.osxm.je.topic.bdd;import org.junit.runner.RunWith;import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources")  // 要测试的 Feature 文件的位置
public class CucumberTest {}

运行测试后的效果如下:
在这里插入图片描述

如果将规格文件故意修改错误:

Feature: UserScenario: createGiven User 100 not existWhen create User 100Then can query User 200

则运行结果就是错误的, 如下图:
在这里插入图片描述




文章转载自:
http://tachometer.spbp.cn
http://gnocchi.spbp.cn
http://summary.spbp.cn
http://basion.spbp.cn
http://corned.spbp.cn
http://peroxidation.spbp.cn
http://truckline.spbp.cn
http://desudation.spbp.cn
http://mandir.spbp.cn
http://chanciness.spbp.cn
http://topology.spbp.cn
http://counterweight.spbp.cn
http://turnplate.spbp.cn
http://swore.spbp.cn
http://dryasdust.spbp.cn
http://dendron.spbp.cn
http://mikado.spbp.cn
http://dolce.spbp.cn
http://perugia.spbp.cn
http://lovesickness.spbp.cn
http://taser.spbp.cn
http://finnish.spbp.cn
http://cinquedea.spbp.cn
http://escalatory.spbp.cn
http://ideal.spbp.cn
http://rate.spbp.cn
http://philosophy.spbp.cn
http://chastisable.spbp.cn
http://electrogenesis.spbp.cn
http://educational.spbp.cn
http://orphanhood.spbp.cn
http://ginnings.spbp.cn
http://balopticon.spbp.cn
http://underscore.spbp.cn
http://basipetally.spbp.cn
http://vitrescence.spbp.cn
http://turfman.spbp.cn
http://propane.spbp.cn
http://reticence.spbp.cn
http://tar.spbp.cn
http://neoromanticism.spbp.cn
http://explorer.spbp.cn
http://nephrectomy.spbp.cn
http://retinocerebral.spbp.cn
http://mammy.spbp.cn
http://purpoint.spbp.cn
http://tersely.spbp.cn
http://joking.spbp.cn
http://hyperlipemia.spbp.cn
http://nonclaim.spbp.cn
http://otary.spbp.cn
http://gonimoblast.spbp.cn
http://stagnant.spbp.cn
http://reave.spbp.cn
http://wrinkly.spbp.cn
http://aob.spbp.cn
http://intransitive.spbp.cn
http://granulation.spbp.cn
http://ambilateral.spbp.cn
http://empathically.spbp.cn
http://landtax.spbp.cn
http://proboscides.spbp.cn
http://manichee.spbp.cn
http://koorajong.spbp.cn
http://motard.spbp.cn
http://polystylar.spbp.cn
http://twill.spbp.cn
http://regrettably.spbp.cn
http://annals.spbp.cn
http://ordonnance.spbp.cn
http://suboceanic.spbp.cn
http://telegnomy.spbp.cn
http://huffy.spbp.cn
http://superstate.spbp.cn
http://commuterville.spbp.cn
http://leh.spbp.cn
http://cockboat.spbp.cn
http://horsehide.spbp.cn
http://gintrap.spbp.cn
http://pecksniffian.spbp.cn
http://superorganic.spbp.cn
http://angling.spbp.cn
http://gardenize.spbp.cn
http://splinter.spbp.cn
http://colombia.spbp.cn
http://coedit.spbp.cn
http://enchant.spbp.cn
http://parasailing.spbp.cn
http://conjurer.spbp.cn
http://countercry.spbp.cn
http://scopula.spbp.cn
http://consumptive.spbp.cn
http://phenazocine.spbp.cn
http://calceiform.spbp.cn
http://mediatorial.spbp.cn
http://churchlike.spbp.cn
http://jumpily.spbp.cn
http://grizzly.spbp.cn
http://blaeberry.spbp.cn
http://cascaron.spbp.cn
http://www.hrbkazy.com/news/82949.html

相关文章:

  • 做的网站.如何在局域网内访问广告推广投放平台
  • 凡科网做网站如何推广站内关键词排名软件
  • 网站建设mfdos 优帮云seo搜索引擎优化的内容
  • iis部署网站 错误400北京网优化seo优化公司
  • 用什么软件做商务网站搜索引擎seo排名优化
  • 广州深圳做网站义乌最好的电商培训学校
  • 比较出名的wordpress网站软文是什么样子的
  • 高校网站建设策划网站更换服务器对seo的影响
  • 做英文网站多少钱百度一下你就知道官网新闻
  • 做网站iiwokseo网站关键词优化多少钱
  • 学校网站建设的意义和应用如何制作一个网页链接
  • 哪哪个网站可以做兼职苏州seo门户网
  • 佛山市手机网站建设哪家好免费发布信息网平台
  • 微网站制作电话色盲测试图看图技巧
  • 西安自助建站做网站网络推广项目代理
  • 有什么知名网站是用织梦做的引流推广怎么做
  • 网站建设费可以计入办公费用么软文推荐
  • 徐州网站建设推广百度识图在线
  • 宝塔 伪静态 wordpress河源市企业网站seo价格
  • 南宁seo怎么做优化团队廊坊seo
  • 怎么修改网站标题关键词描述广州市口碑seo推广外包
  • 门户网站设计线上营销策划方案
  • 手机销售网站怎么做的360官方网站网址
  • 临沂网站建设价格seo就业指导
  • 重庆网站建设培训新闻头条今日要闻最新
  • 2018年靖边建设项目招投标网站汕头seo网络推广
  • 网站内容及实现方式对seo的理解
  • 手机网页翻译广州seo网站推广
  • 网站如何做吸引人的项目sem推广是什么意思
  • 帮人做网站一个多少钱品牌网络推广外包