微服务架构下的测试之(三)-冒烟測試

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

内容简介:冒烟測試(Smoke Test) : 这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。在软件中,冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。在微服務的架構下,我們可以使用冒烟測試來保證单个微服务在不依赖其他服务(其他服务在此处包含其他微服务或者其他的中间件)的前提下,其本身是正常运行的。举个例子,我们有三个微服务,一个是Gateway, 一个是ServiceA, 一个是ServiceB,它们的调用关系如下图。 现

冒烟測試(Smoke Test)

冒烟測試(Smoke Test) : 这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。在软件中,冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。

在微服務的架構下,我們可以使用冒烟測試來保證单个微服务在不依赖其他服务(其他服务在此处包含其他微服务或者其他的中间件)的前提下,其本身是正常运行的。

测试方案

举个例子,我们有三个微服务,一个是Gateway, 一个是ServiceA, 一个是ServiceB,它们的调用关系如下图。 现在要上线的是ServiceA,我们需要保证的是在不依赖ServiceB的情况下,ServiceA可以正常启动,部署和运行。

微服务架构下的测试之(三)-冒烟測試

针对冒烟测试可以搭配使用 MockMvcWireMock 来实现。

项目代码

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

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

具体的调用时序图如下:

微服务架构下的测试之(三)-冒烟測試

现在我们要部署ms-service项目,并且相对其进行冒烟测试。

项目controller层代码如下:

项目service层代码如下:

测试代码

那么我们就可以使用 MockMVCWireMock 对这个项目进行测试,如下

pom.xml

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>com.github.tomakehurst</groupId>
	<artifactId>wiremock</artifactId>
	<version>2.1.12</version>
	<scope>test</scope>
</dependency>

ProductControllerSmokeTest.java

完整代码

请参照 GITHUB ms-service

參考資料

冒烟测试 : https://baike.baidu.com/item/%E5%86%92%E7%83%9F%E6%B5%8B%E8%AF%95/2166486?fr=aladdin

MockMvc : https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html

WireMock : http://wiremock.org/


以上所述就是小编给大家介绍的《微服务架构下的测试之(三)-冒烟測試》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Linux内核设计与实现(原书第3版)

Linux内核设计与实现(原书第3版)

Robert Love / 陈莉君、康华 / 机械工业出版社华章公司 / 2011-4-30 / 69.00元

《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的设计与实现。内核代码的编写者、开发者以及程序开发人员都可以通过阅读本书受益,他们可以更好理解操作系统原理,并将其应用在自己的编码中以提高效率和生产率。 《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的主要子系统和特点,包括Linux内核的设计、实现和接口。从理论到实践涵盖了Linux内核的方方面面,可以满......一起来看看 《Linux内核设计与实现(原书第3版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试