一文搞定微服务测试本质

 最近几年微服务架构越来越火爆,逐渐被企业所采用。随着软件架构的变化,对应的软件测试策略需要作何调整呢?在这里我来先介绍一下微服务的相关概念以及微服务的主流框架SpringCloud,让大家对微服务有一个整体的认识,然后我再对如何进行微服务测试进行概要讲解。相信大家认真阅读本文后,对服微务一定会有从0到1的突破!

目前创新互联已为近千家的企业提供了网站建设、域名、虚拟空间、网站托管、企业网站设计、孝义网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

微服务概念

微服务英文名称Microservice,微服务架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。

要点

  • 微服务的基本思想在于考虑围绕着业务领域组件来创建应用;
  • 微服务主要框架包括:Dubbo、Spring Cloud、 Istio ;
  • 对于互联网谈到微服务架构一定会谈到Devops即开发测试和部署运维的一体化;
  • 微服务简化了开发,它将创建复杂系统的任务切分为数十乃至上百个小服务,这些小服务易于被小型的软件工程师团队所理解和修改。但是微服务并未真正地消除复杂性,而是将复杂性迁移到对大量服务的连接、管理和监控上;
  • 微服务与SOA,微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式;

传统服务与微服务的区别

大家可以看到,传统服务是所有的功能都部署在一台机器上(上图左),通过增加服务器数量来扩容!而微服务是以业务为单位进行部署,不同的业务部署在不同的服务器上,业务使用频繁的还可以使用更多的资源进行部署(上图右侧,橘黄色部署了5个单元,而玫红色只部署了一个单元),这样就可以更合理的利用资源了!

传统设计与微服务在数据库方面设计的区别

大家可以看到传统服务的所有功能对应一个DB (上图左),而微服务可以根据不同的业务设计不同的DB (上图右,可以一个业务对应一个独立的DB)

微服务架构设计核心

1:我们把整个系统根据业务拆分成几个子系统。

2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。

3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。

5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

7:还需要一个监控功能,监控每个服务调用花费的时间等

SpringCloud

Spring Cloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。

官网:https://springcloud.cc/

特点:

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • service - to - service调用
  • 负载均衡
  • 断路器
  • 分布式消息传递

SpringCloud包括的主要组件如下图:

一个Spring Cloud 工程的pom配置文件如下,大家可以简单的理解为在SpringCloud

工程的pom.xml中,你需要什么功能,把它直接引入工程就可以了

在这里由于我们主要介绍微服务概念,所以就不过多解释springcloud相关的开发内容了。

微服务测试

  • 前端UI

与传统测试没有区别,因为你只做功能那么你感受不到架构的变化!

  • 服务端

微服务通常使用通过HTTP的REST来暴露,因此微服务的测试等价于接口测试。对微服务提供的接口进行功能、性能、安全测试,具体测试方法如下:

1.通过构建请求调用各个微服务接口,可以通过编码或者工具模拟的方式完成。

编码:python(unittest+requests);Java(junit4+httpclient)

工具模拟:jMeter、soupUI、postman等

2.请求的验证:除了验证接口的返回值外,还要关注负载均衡(请求是否分发到多点应用)

3.监控:通过工具 SpringCloud Sleuth、 Turbine、Prometheus进行监控

4.日志:通过ELK( ElasticStack )来集中化管理日志

  • 重点:

微服务架构下,既需要保障各服务内部每个模块的完整性,又需要关注模块间、服务间的交互。

  • 难点:

1.关联性:微服务通常情况下会与多个微服务进行交互。当某服务发生变化时,会直接影响到依赖的其他服务。

2.可靠性:为了尽可能降低微服务间通信对网络情况的高度依赖,降低因网络不稳定引起的故障率,设计微服务架构时会设计隔离机制。

3.数据一致性:微服务是基于分布式系统设计的,这就需要考虑分布式系统数据一致性的问题。

文章题目:一文搞定微服务测试本质
文章位置:http://www.gawzjz.com/qtweb2/news40/10740.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联