微服务架构下的测试之(五)-行为驱动开发(Behavior Driven Development)

栏目: 后端 · 发布时间: 7年前

内容简介:行为驱动开发(Behavior Driven Development) : 行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。行为驱动开发有以下两个特点:在微服務的架構下,我們可以使用BDD来保证从根微服务开始,甚至是从UI页面开始,整个业务逻辑的调用都是正确的,前提是我们在践行BDD,即先写测试,然后开发,或者测试和开发同时由不同的人进行。

行为驱动开发(Behavior Driven Development)

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

行为驱动开发有以下两个特点:

  • 用自然的语言去描述Feature和场景进行测试
  • 根据定义好的Feature驱动开发

在微服務的架構下,我們可以使用BDD来保证从根微服务开始,甚至是从UI页面开始,整个业务逻辑的调用都是正确的,前提是我们在践行BDD,即先写测试,然后开发,或者测试和开发同时由不同的人进行。

更多的BDD信息可以参考 行为驱动开发(BDD)全面介绍

测试方案

举个例子,我们有三个微服务,一个是Gateway, 一个是ServiceA, 一个是ServiceB,它们的调用关系如下图。 现在三个微服务都已经上线了,我们要对整体的微服务进行测试,可以创建一个BDD项目,专门进行BDD测试。如果前面还有UI组件,我们也可以通过Selenium脚本在BDD项目中针对UI进行测试。

微服务架构下的测试之(五)-行为驱动开发(Behavior Driven Development)

在 java 中针对BDD可以使用 Cucumber 来实现。

项目代码

依旧拿之前的例子,有一个下单的流程,我们有4个微服务,分别是ms-gateway, ms-service, ms-product, ms-order. 其中

ms-gateway 负责gateway功能,所有微服务在一个子网,保证只有gateway可以与外网交互
ms-service 负责业务逻辑的处理
ms-product 负责产品信息的维护和库存的维护
ms-order 负责订单信息的维护

具体的调用时序图如下:

微服务架构下的测试之(五)-行为驱动开发(Behavior Driven Development)

现在四个微服务都部署好之后,我们可以启动我们的BDD项目来对整个微服务调用链进行测试。

测试代码

那么我们就可以使用 Cucumber 对整个微服务调用链进行测试,如下

pom.xml

<dependency>
	<groupId>info.cukes</groupId>
	<artifactId>cucumber-core</artifactId>
	<version>1.2.4</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>info.cukes</groupId>
	<artifactId>cucumber-java</artifactId>
	<version>1.2.4</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>info.cukes</groupId>
	<artifactId>cucumber-junit</artifactId>
	<version>1.2.4</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>info.cukes</groupId>
	<artifactId>cucumber-spring</artifactId>
	<version>1.2.4</version>
	<scope>test</scope>
</dependency>

CreateOrderTest.java

完整代码

请参照 GITHUB ms-bdd

參考資料

BDD : https://baike.baidu.com/item/BDD/10735732?fr=aladdin

Cucumber


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Head First JavaScript Programming

Head First JavaScript Programming

Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99

This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换