内容简介:集成测试(Integration Test) : 将所有模块按照设计要求组装成为子系统或系统,进行集成测试。在微服務的架構下,我們可以使用集成測試來保證在整个微服务调用链中,从本服务开始,到所有被调用的微服务之间,业务逻辑是正确的。举个例子,我们有三个微服务,一个是Gateway, 一个是ServiceA, 一个是ServiceB,它们的调用关系如下图。 现在要上线的是ServiceA,我们需要保证的是从ServiceA开始,到ServiceB的调用都是正常的。在此处即ServiceA调用ServiceB
集成测试(Integration Test)
集成测试(Integration Test) : 将所有模块按照设计要求组装成为子系统或系统,进行集成测试。
在微服務的架構下,我們可以使用集成測試來保證在整个微服务调用链中,从本服务开始,到所有被调用的微服务之间,业务逻辑是正确的。
测试方案
举个例子,我们有三个微服务,一个是Gateway, 一个是ServiceA, 一个是ServiceB,它们的调用关系如下图。 现在要上线的是ServiceA,我们需要保证的是从ServiceA开始,到ServiceB的调用都是正常的。在此处即ServiceA调用ServiceB是正常的。
针对集成测试可以使用 RestAssured 来实现。
这个方案乍看起来是没什么问题的,但仔细推敲就会发现,RestAssured是对已部署的rest接口进行测试,但是真正在项目mvn test阶段项目还没有部署。就会陷入一个鸡下蛋,蛋生鸡的问题。项目还没部署,无法测试,未测试通过,项目不能部署。解决方案是通过Maven的插件,修改微服务上线的流程为如下:
mvn clean install // skip the IT tests at this phase //deploy service... mvn test // execute the IT tests
项目代码
依旧拿之前在SmoketTest中的例子,有一个下单的流程,我们有4个微服务,分别是ms-gateway, ms-service, ms-product, ms-order. 其中
ms-gateway | 负责gateway功能,所有微服务在一个子网,保证只有gateway可以与外网交互 |
ms-service | 负责业务逻辑的处理 |
ms-product | 负责产品信息的维护和库存的维护 |
ms-order | 负责订单信息的维护 |
具体的调用时序图如下:
现在我们要部署ms-service项目,并且相对其进行集成测试。那我们要保证的就是ms-service, ms-product, ms-order之间的正常调用。
ms-sercice项目controller层代码如下:
测试代码
那么我们就可以使用 RestAssured 对这个项目进行测试,如下
pom.xml
<dependency> <groupId>com.jayway.restassured</groupId> <artifactId>rest-assured</artifactId> <version>2.9.0</version> </dependency>
ITServiceTest.java
完整代码
请参照 GITHUB ms-service
參考資料
集成测试 : https://baike.baidu.com/item/%E9%9B%86%E6%88%90%E6%B5%8B%E8%AF%95/1924552
RestAssured : http://rest-assured.io/
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 微服务架构下的测试之(二)-单元测试
- 『互联网架构』软件架构-rocketmq之性能测试(63)
- 开发转测试七年,我从测试策略到测试架构(Test architecture)
- 搭建数据驱动测试框架构
- SELENIUM 的自动化测试架构
- 性能测试流程5步走:BS架构和CS架构性能指标大对比
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。