传统测试与微服务测试的区别
传统测试模型抽象
上图中的服务器端包括n个功能,传统服务是所有的功能都部署在一台机器上,通过增加服务器数量来扩容!参考下图(每一种颜色代表一个功能,部署了四套同样的服务)
微服务测试模型抽象
微服务不同于传统测试,它往往没有UI页面,我们需要通过构建请求(通过编码或者工具模拟)调用各个服务接口。微服务是以业务为单位进行部署的,上图中的每一个服务代表一个功能,不同的业务部署在不同的服务器上,业务使用频繁的还可以使用更多的资源进行部署(下图中橘黄色部署了5个单元,而玫红色只部署了1个单元),这样就可以更合理的利用资源了。
微服务的主要测试内容
其中,集成测试、组件测试和契约测试是我们的测试重点,而上述三种测试,我们可以理解为接口测试(关于什么是接口测试这里就不再详细介绍了)。即每个服务提供对外接口,然后我们通过这个接口对服务进行调用,最后验证其返回值是否达到预期!我们可以通过编码或者工具来构建接口并向接口发起请求,然后按照接口文档来校验响应是否符合预期。
微服务测试注意事项
微服务可以分为无依赖的服务和有依赖的服务。
图a
图b
在微服务测试中mock的服务又是什么呢?举个例子,我们把支付功能做成微服务,该服务负责处理支付的逻辑,而在最后付款时,我们需要调用支付宝来完成付款。那么这个场景该如何处理呢?简单方式,我们花一分钱真实的购买服务。那么假设我们要验证10000元购买服务呢?或者当支付宝出错时,我们的程序又该如何处理呢?在这里我们就可以把支付宝作为一个mock服务,核心实现思路如下:
对应用的请求进行解析,并返回预先定义好的响应值,具体如下:
1.支付请求校验正确,返回支付成功;
2.支付请求校验失败,返回支付失败;
3.关掉支付宝mock服务,可以模拟支付宝异常
我们可以使用wiremock来搭建自己的mock服务器,简单原理如下图所示:
我们需要在配置文件中设置预定义的请求,如果应用的请求符合预定义请求则返回预定义的响应。然后启动wiremock来实现请求的处理,wiremock就是一个web服务器!具体详情请参考:https://github.com/tomakehurst/wiremock
微服务测试总结
1. 如果你只做UI功能测试,那么微服务测试与传统测试没有区别,因为你只你感受不到架构的变化。
2.对各个微服务提供的接口测试本质上等价于接口测试。需要按照微服务的接口说明文档进行接口功能以及性能和安全的测试。
3.必要时需要通过mock方式来模拟微服务所依赖的服务来提升被测服务的可测性。
4.要关注负载均衡,测试请求是否分发到多点应用。参考文章:微服务性能测试的关键——IP欺骗技术
5.通过工具 SpringCloud Sleuth、 Turbine、Prometheus对各个服务消耗的资源(包括:cpu、内存、磁盘,网络)进行监控;
6.通过ELK( ElasticStack )来集中化管理日志。参考文章:微服务测试的关键——通过ELK查询日志
7.理解微服务的核心概念。参考文章:一文搞定微服务测试本质
本文我们来看看,如果大量客户端对NameNode发起高并发(比如每秒上千次)访问来修...
如果读者对基本的 Python语法已经有一些了解,那么这篇文章可能会给你一些启发。...
作者 | 沧东 来源 | 阿里技术公众号 如今在 Web 端使用 WebGL 进行高性能计算已...
资源类型ALIYUN::ECS::InstanceGroup用于批量创建ECS实例。 创建ECS实例时,您可...
dubbogo 项目已进入第六个年头。dubbogo 项目初期的使命就是 bridging the gap b...
问题现象 正常登录系统,在主机运维或应用运维列表,单击 “登录” ,不能正常跳...
调用GetTrigger接口获取触发器信息。 请求头 该接口使用公共请求头,无特殊请求...
客户介绍 世纪联华是一家门店超过 170 余家,具备全国网点布局,在快速消费品连...
本文转载自微信公众号「石杉的架构笔记」,作者崔皓。转载本文请联系石杉的架构...
一、引言 云原生多模数据库Lindorm,支持海量数据的低成本存储和弹性按需付费,...