EDAS 3.0 微服务测试最佳实践

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本文主要为大家介绍微服务测试:基于服务契约信息,降低云上微服务测试成本。

该文章是基于阿里云商业化产品 EDAS 3.0的微服务实践,如果您的团队具备较强的微服务测试能力,那么希望我们在微服务测试方面的实践和背后的思考,可以为您提供一些参考。

前言

随着云原生时代的到来,越来越多的应用生在云上,长在云上,且随着越来越多的企业开始上云,云原生也是企业落地微服务的最佳伴侣。但云上应用易测性受到了很大的挑战,如何提高云上应用易测性,增强DevOps能力,是微服务测试要解决的核心问题。
在详细讲述微服务测试之前,先给大家讲一个场景。
1.png

上图是一个典型的企业微服务应用架构图,为了考虑安全性,云上应用通常部署在云上虚拟局域网内,统一通过网关对外暴露服务。对于负责 Product Service 应用的同学来说,我只想测试一下该应用对应的服务是否可用,他会怎么做呢?
方案一:进入该应用部署所在的机器(ECS)或者容器(Pod),通过 curl 命令验证该服务是否可用。
方案二:将该应用暴露给公网访问,通过本地命令行工具或者 Postman 工具验证该服务是否可用。
方案三:拉一条网络专线,打通云上专有网络VPC与办公网网络,通过本地命令行工具或者 Postman 工具验证该服务是否可用。

从以上场景,我们可以总结出云上微服务测试几点问题:
• 云上网络拓扑复杂
• 暴露公网访问,会出现黑客攻击,引发安全风险
• 拉一条网络专线,浪费资源成本
明明只想要一个简单的测试能力,成本缺如此之高。上述场景还仅仅是一个简单的调试功能,如果是压测、自动化回归、巡检等其他测试及稳定性保障手段,不仅仅要解决上述场景遇到的问题,还需要自建工具,脑补一下,都觉得成本太高,因此,我们需要微服务测试来帮助我们解决这些问题,进一步加速软件交付效率。

为什么我们需要微服务测试

产品能力

提供测试、压测、自动化回归、巡检等能力,形成一个微服务测试解决方案:
2.png

试想一下,研发同学提交代码并部署,可以使用测试工具,验证服务逻辑正确性;可以使用压测工具,验证服务性能指标;验证通过后,开始进行冒烟测试,可以使用自动化回归工具,编写冒烟用例;冒烟通过后,开始进行历史功能回归,可以使用自动化回归工具,编写回归用例;回归通过后,提交测试验收,测试只需要验证新功能,新功能验证通过后,即可提交发布。发布后,进行线上环境验证,需要回归历史功能主流程,可以使用自动化回归工具,编写主流程回归用例,新功能手工验证;主流程回归通过且新功能验证通过,代表发布完成;研发同学,可以使用巡检工具,配置线上巡检;一旦巡检告警,即可先于用户发现问题,并解决问题。我们是将阿里巴巴沉淀的测试解决方案产品化输出,帮助云上业务实现高质量地实现快速交付。

易用且安全

开箱即用,无需关注专有网络VPC下的网络拓扑;安全可靠,拥有在办公网下的测试体验。
试想一下,企业为了安全隔离,研发环境、测试环境、预发环境、生产环境部署在不同的专有网络VPC内,如果用户自建测试工具,需要解决测试工具到不同环境的网络互通问题,企业IT人员明明只想要一个简单的测试工具,却因为上云之后,要解决复杂的云上网络拓扑,远远没有结束,为了能够在办公网使用该测试工具,还需要保证该测试工具能够被办公网访问,此时又面临着网络安全的考验。我们希望有一个能够开箱即用且安全可靠的方案,能够让上云的企业IT人员拥有在办公网测试体验的测试工具。
3.png

低成本

弹性拉起测试机/施压机,用完销毁,能够大幅度降低构建测试工具需要的机器资源及人力成本。
试想一下,企业上云是为了降低成本,应用托管极大地降低了资源成本和运维成本,但测试成本并没有降低。企业IT人员自建测试工具需要准备测试机/施压机,该部分机器长期占用且存在闲置,资源成本开销大,尤其是在性能压测场景,资源成本开销会更大。除了资源成本外,企业IT人员还需要研发测试工具,人力成本及时间成本非常高,基本上每个企业都需要一套测试工具。我们希望有一个低成本的方案,不仅提高企业的资源利用率,同时降低企业IT人员开发和维护测试工具的成本。
4.png

微服务生态

云上已提供了大量的微服务产品,解决了微服务应用的托管、治理、诊断,微服务测试补齐微服务能力。
试想一下,如何测试一个微服务接口,需要了解接口入参和出参,如果是研发同学-服务提供者,可能比较熟悉该接口,如果是测试同学,甚至是其他研发同学,可能就需要文档,甚至是口口相传,微服务治理已经可视化应用的服务契约信息,结合服务契约信息,只需按照测试需要,选择应用->框架->服务->方法,配置测试参数,即可进行测试,降低了服务契约同步的成本。
结合上述4点,测试同学只需负责用例编写+测试验收,接口调试、接口性能水位、用例自动化均可赋能给研发同学,就像早期DevOps一样,降低研发运维之间的反馈回路,提高软件交付效率,DevTest,降低研发测试之间的反馈回路,在保证交付质量的前提下,进一步提升软件交付效率,同时主动创建巡检任务,定时监控线上服务可用率,先于用户发现问题,解决问题。

EDAS3.0 微服务测试实践

前提条件:微服务应用已接入EDAS3.0
下面我们来体验一下,EDAS上如何使用微服务测试的能力。

服务测试

  1. 登录EDAS控制台,在页面左上角选择地域;
  2. 左侧导航栏选择:微服务治理 -> Spring Cloud -> 服务测试 -> 查询服务;
  3. 单击某个服务的详情 -> 展示元数据列表;
  4. 单击某个方法的测试 -> 进入测试页面(已帮助用户填充参数模板);
  5. 点击执行即可。

5.png
6.png
7.png

服务压测

  1. 登录EDAS控制台,在页面左上角选择地域;
  2. 左侧导航栏选择:微服务治理 -> Spring Cloud -> 服务压测 -> 创建场景;
  3. 选择需要压测的应用 -> 选择框架 -> 选择服务 -> 选择方法;
  4. 填写压测参数,点击确认;
  5. 进入压测场景列表页,点击详情;
  6. 进入压测详情页,点击启动,等待施压机准备就绪;
  7. 点击详情,进入压测性能数据报告页,实时查看性能数据;

8.png
9.png
10.png

自动化回归

1、登录EDAS控制台,在页面左上角选择地域;
2、左侧导航栏选择:微服务治理 -> Spring Cloud -> 自动化回归 -> 创建用例;
3、添加步骤
a. 选择应用 -> 选择框架 -> 选择服务 -> 选择方法;
b. 填写参数;
c. 断言/出参提取;
4、可以添加多个步骤;
5、保存用例;
6、点击执行;
7、通过执行历史,查看用例是否通过;
11.png
12.png
13.png

服务巡检

1、登录EDAS控制台,在页面左上角选择地域;
2、左侧导航栏选择:微服务治理 -> Spring Cloud -> 服务巡检 -> 创建巡检任务;
3、选择需要巡检的应用 -> 选择框架 -> 选择服务 -> 选择方法;
4、填写巡检参数及断言内容,点击确认;
5、进入巡检任务列表页,点击启动,即开始巡检;
6、巡检失败时,可以通过失败记录进行查看,也可以添加告警,通过钉钉、短信、邮件的方式告警;
14.png
15.png

微服务测试实现细节

工具能力

将阿里巴巴集团内实践的测试工具产品化输出,压测、自动化回归、巡检,降低用户研发工具的成本。

网络互通

利用阿里云现有网络打通技术方案(ENI挂载),打通云产品专有网络VPC与用户专有网络VPC
应用安装微服务 Agent 时,主动将该应用所在的网络信息(专有网络VPC,虚拟交换机VSwitch,安全组SecurityGroup)上报至服务端,根据应用所在的网络信息,即可打通云产品专有网络VPC与用户专有网络VPC,实现云产品服务直接访问用户专有网络VPC部署的服务。

弹性资源

云产品使用自己的资源账号购买弹性机器,安装测试工具。

服务契约

微服务治理已经可视化服务契约信息,微服务测试直接查询服务契约信息即可

不止是微服务测试

本文介绍了微服务测试的几个能力,补齐了微服务生态测试的能力,即将推出智能流量测试:提供微服务架构下的流量生产录制生产回放、生产录制线下回放、测试用例自动化生成、回归测试场景自动化覆盖等能力,助力您的应用以更低的成本轻松完成测试验证,欢迎前来体验。

除了EDAS(企业级分布式应用服务),微服务测试能力已被MSE(微服务引擎)集成,还将被AHAS、CSB、SAE等云产品集成。将微服务测试能力作为一个基础能力被更多云产品集成,另外,将跟更多微服务产品 ARMS (应用实时监控服务)、ACM(应用配置管理)等形成联动,助力保障云上业务稳定性,让业务永远在线。

微服务测试交流群
如果您在EDAS使用微服务测试过程中有任何疑问,欢迎您使用钉钉扫描下方的二维码或搜索钉钉群号 31180380 加入钉钉群进行反馈。
14.png

相关实践学习
使用DAS实现数据库自动SQL优化
本场景介绍如何使用DAS实现数据库自动SQL优化。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas 
相关文章
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
3月前
|
监控 JavaScript 测试技术
从单体应用迁移到微服务的最佳实践
【8月更文第29天】随着软件架构的发展,越来越多的企业开始考虑从传统的单体应用迁移到微服务架构。虽然迁移可以带来诸如更好的可扩展性、更高的灵活性等优势,但这一过程也可能充满挑战。本文将详细介绍如何顺利地进行这一转变,并提供一些实用的步骤和示例代码。
132 0
|
4月前
|
机器学习/深度学习 监控 算法
自动化测试框架的演进与最佳实践
随着软件行业的迅猛发展,自动化测试已成为确保软件质量的关键手段。本文将深入探讨自动化测试框架的历史演进、当前趋势以及面临的挑战,并结合实际案例分析,提出一系列的最佳实践策略,旨在帮助读者构建更加高效、稳定的自动化测试体系。
|
4天前
|
监控 Cloud Native 持续交付
云原生架构下微服务的最佳实践与挑战####
【10月更文挑战第20天】 本文深入探讨了云原生架构在现代软件开发中的应用,特别是针对微服务设计模式的最优实践与面临的主要挑战。通过分析容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,阐述了如何高效构建、部署及运维微服务系统。同时,文章也指出了在云原生转型过程中常见的难题,如服务间的复杂通信、安全性问题以及监控与可观测性的实现,为开发者和企业提供了宝贵的策略指导和解决方案建议。 ####
24 5
|
4天前
|
Kubernetes Cloud Native 持续交付
云原生架构下的微服务设计原则与最佳实践##
在数字化转型的浪潮中,云原生技术以其高效、灵活和可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务设计的关键原则与实施策略,旨在为开发者提供一套系统性的方法论,以应对复杂多变的业务需求和技术挑战。通过分析真实案例,揭示了如何有效利用容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,构建高性能、易维护的云原生应用。文章还强调了文化与组织变革在云原生转型过程中的重要性,为企业顺利过渡到云原生时代提供了宝贵的见解。 ##
|
6天前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
28 2
|
13天前
|
安全 Java 测试技术
最佳实践:通义灵码生成单元测试,让单测更简单
本文首先讲述了什么是单元测试、单元测试的价值、一个好的单元测试所具备的原则,进而引入如何去编写一个好的单元测试,通义灵码是如何快速生成单元测试的。
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
37 2
|
2月前
|
监控 安全 测试技术
提升软件测试效率:探索持续集成的最佳实践
在现代软件开发过程中,持续集成(CI)已成为提高软件质量和测试效率的关键实践。通过将代码库的每次提交自动构建和测试,CI 帮助团队及时发现问题,减少手动测试的负担。本文探讨了如何有效实施持续集成来优化软件测试流程,并提供了一些实用的策略和工具建议,以帮助开发团队更高效地运作。
66 2
|
2月前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。