最近几年微服务架构越来越火爆,文搞逐渐被企业所采用。定微随着软件架构的服务变化,对应的测试软件测试策略需要作何调整呢?在这里我来先介绍一下微服务的相关概念以及微服务的主流框架SpringCloud,让大家对微服务有一个整体的本质认识,然后我再对如何进行微服务测试进行概要讲解。文搞相信大家认真阅读本文后,定微对服微务一定会有从0到1的服务突破! 微服务概念 微服务英文名称Microservice,微服务架构模式就是测试将整个Web应用组织为一系列小的Web服务。这些小的本质Web服务可以独立地编译及部署,并通过各自暴露的文搞API接口相互通讯。它们彼此相互协作,定微作为一个整体为用户提供功能,服务却可以独立地进行扩展。测试 要点 传统服务与微服务的区别 大家可以看到,传统服务是所有的功能都部署在一台机器上(上图左),通过增加服务器数量来扩容!而微服务是以业务为单位进行部署,不同的业务部署在不同的服务器上,业务使用频繁的还可以使用更多的资源进行部署(上图右侧,橘黄色部署了5个单元,而玫红色只部署了一个单元),这样就可以更合理的利用资源了! 传统设计与微服务在数据库方面设计的区别 大家可以看到传统服务的所有功能对应一个DB (上图左),而微服务可以根据不同的业务设计不同的DB (上图右,云南idc服务商可以一个业务对应一个独立的DB) 微服务架构设计核心 1:我们把整个系统根据业务拆分成几个子系统。 2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。 3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。 4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。 5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。 6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。 7:还需要一个监控功能,监控每个服务调用花费的时间等 SpringCloud Spring Cloud是基于SpringBoot的服务器托管一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。 官网:https://springcloud.cc/ 特点: SpringCloud包括的主要组件如下图: 一个Spring Cloud 工程的pom配置文件如下,大家可以简单的理解为在SpringCloud 工程的pom.xml中,你需要什么功能,把它直接引入工程就可以了 在这里由于我们主要介绍微服务概念,所以就不过多解释springcloud相关的开发内容了。 微服务测试 与传统测试没有区别,因为你只做功能那么你感受不到架构的变化! 微服务通常使用通过HTTP的REST来暴露,因此微服务的测试等价于接口测试。对微服务提供的接口进行功能、性能、安全测试,具体测试方法如下: 1.通过构建请求调用各个微服务接口,可以通过编码或者工具模拟的方式完成。 编码:python(unittest+requests);Java(junit4+httpclient) 工具模拟:jMeter、soupUI、postman等 2.请求的验证:除了验证接口的返回值外,还要关注负载均衡(请求是否分发到多点应用) 3.监控:通过工具 SpringCloud Sleuth、 Turbine、Prometheus进行监控 4.日志:通过ELK( ElasticStack )来集中化管理日志 微服务架构下,既需要保障各服务内部每个模块的完整性,又需要关注模块间、服务间的交互。 1.关联性:微服务通常情况下会与多个微服务进行交互。当某服务发生变化时,会直接影响到依赖的其他服务。 2.可靠性:为了尽可能降低微服务间通信对网络情况的高度依赖,降低因网络不稳定引起的故障率,设计微服务架构时会设计隔离机制。 3.数据一致性:微服务是基于分布式系统设计的,这就需要考虑分布式系统数据一致性的问题。