当前位置: 首页 > 科技观察

一篇文章搞定微服务测试精髓

时间:2023-03-12 03:51:59 科技观察

近年来,微服务架构越来越火,逐渐被企业采用。随着软件架构的变化,相应的软件测试策略应该做哪些调整?这里先介绍一下微服务的相关概念和微服务的主流框架SpringCloud,让大家对微服务有一个整体的认识,然后再给大家介绍一下如何测试微服务。相信仔细看完这篇文章,微服务会有从0到1的突破!微服务的概念,英文叫做Microservice。微服务架构模型是将整个Web应用程序组织成一系列小型的Web服务。这些小型网络服务可以独立编译和部署,并通过它们暴露的API接口相互通信。它们相互协作,为用户提供整体功能,但又可以独立扩展。要点微服务的基本思想是考虑围绕业务领域组件创建应用程序;微服务的主要框架包括:Dubbo、SpringCloud、Istio;说起互联网的微服务架构,就不能不说Devops,它是开发测试和部署运维的一体化一小群软件工程师很容易理解和修改。但是,微服务并没有真正消除复杂性,而是将复杂性迁移到大量服务的连接、管理和监控上;微服务与SOA,微服务是SOA发展的产物,是一种比较现代的Fine-grainedSOA实现;可见传统服务和微服务的区别。传统的服务都是功能全部部署在一台机器上(上图左边),通过增加服务器数量来扩容!微服务是以业务为单位部署的,不同的业务部署在不同的服务器上。频繁的业务使用可以使用更多的资源进行部署(上图右侧橙色部署5个Unit,而玫红只部署1个Unit),这样可以更合理的使用资源!传统设计和微服务数据库设计的区别可以看到传统服务的所有功能都对应一个DB(上图左边),而微服务可以根据不同的业务设计不同的DB(上图右边,一个业务可以对应一个独立的DB)微服务架构设计核心1:我们把整个系统按照业务拆分成几个子系统。2:每个子系统可以部署多个应用,多个应用之间采用负载均衡。3:需要一个服务注册中心,所有的服务都注册到注册中心,通过注册到注册中心的服务也是通过一定的策略来实现负载均衡的。4:所有客户端通过同一个网关地址访问后台服务。通过路由配置,网关确定哪个服务处理URL请求。将请求转发到服务时也使用负载平衡。5:服务有时需要互相访问。例如,有一个用户模块。其他服务在处理一些业务时,需要获取用户服务的用户数据。6:需要一个断路器,及时处理服务调用超时和错误,防止因为其中一个服务出现问题导致整个系统瘫痪。7:还需要一个监控功能,监控每次服务调用的耗时等。SpringCloudSpringCloud是一套基于SpringBoot实现微服务的框架。他提供微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。官网:https://springcloud.cc/特点:分布式/版本化配置服务注册和发现路由服务-to-service调用负载均衡断路器分布式消息传递SpringCloud包括以下主要组件:一个SpringCloud项目pom配置文件如下。你可以简单的理解为在SpringCloud项目的pom.xml中,你需要哪些功能?只需将其直接导入到项目中即可。这里由于主要介绍微服务的概念,所以对于springcloud就不做过多的解释了。开发内容。微服务测试前端UI和传统测试没什么区别,因为你只做功能,感觉不到架构的变化!服务器端微服务通常使用RESToverHTTP暴露,因此微服务测试等同于接口测试。对微服务提供的接口进行功能、性能和安全测试。具体测试方法如下:1.通过构建请求调用各个微服务接口,可以通过编码或工具模拟完成。编码:python(unittest+requests);Java(junit4+httpclient)工具模拟:jMeter、soupUI、postman等2、请求校验:除了校验接口的返回值外,还要注意负载均衡(请求是否分发到多个点Application)3.监控:通过工具SpringCloudSleuth、Turbine、Prometheus进行监控4.日志:通过ELK(ElasticStack)集中管理日志重点:微服务架构下,需要保证每个服务内部各个模块的完整性,也需要注意模块和服务之间的交互。难点:1.关联性:微服务通常与多个微服务进行交互。当一个服务发生变化时,会直接影响其他依赖的服务。2.可靠性:为了尽可能降低微服务间通信对网络条件的高度依赖,降低网络不稳定导致的故障率,在设计微服务架构时会设计隔离机制。3、数据一致性:微服务是基于分布式系统设计的,这就需要考虑分布式系统中的数据一致性。