zoukankan      html  css  js  c++  java
  • 如何降低微服务测试成本?我的经验之谈

    简介: 本文为大家介绍微服务治理+测试:基于服务契约信息,降低云上微服务测试成本。如果您的团队具备较强的微服务治理+测试能力,那么希望我们在微服务治理+测试方面的实践和背后的思考,可以为您提供一些参考。

    前言

    随着云原生时代的到来,越来越多的应用生在云上,长在云上,云原生是企业落地微服务的最佳伴侣。但云上应用易测性受到了很大的挑战,如何提高云上应用易测性,增强 DevOps 能力,是微服务测试要解决的核心问题,直播回放:

    在详细讲述微服务测试之前,先给大家讲一个场景。

    上图是一个典型的企业微服务应用架构图,为了考虑安全性,云上应用通常部署在云上虚拟局域网内,统一通过网关对外暴露服务。对于负责 Product Service 应用的同学来说,我只想测试一下该应用对应的服务是否可用,他会怎么做呢?

    方案一

    进入该应用部署所在的机器(ECS)或者容器(Pod),通过 curl 命令验证该服务是否可用

    方案二

    将该应用暴露给公网访问,通过本地命令行工具或者 Postman 工具验证该服务是否可用

    方案三

    拉一条网络专线,打通云上专有网络VPC与办公网网络,通过本地命令行工具或者 Postman 工具验证该服务是否可用

    从以上场景,我们可以总结出云上微服务测试几点问题:

    • 云上网络拓扑复杂
    • 暴露公网访问,会出现黑客攻击,引发安全风险
    • 拉一条网络专线,浪费资源成本

    明明只想要一个简单的测试能力,成本却如此之高。上述场景还仅仅是一个简单的调试功能,如果是压测、自动化回归、巡检等其他测试及稳定性保障手段,不仅仅要解决上述场景遇到的问题,还需要自建工具,脑补一下,都觉得成本太高,因此,我们需要微服务测试来帮助我们解决这些问题,进一步加速软件交付效率。

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

    产品能力

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

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

    易用且安全

    开箱即用,无需关注专有网络VPC下的网络拓扑;安全可靠,拥有在办公网下的测试体验。

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

    低成本

    弹性拉起测试机/施压机,用完销毁,能够大幅度降低构建测试工具需要的机器资源及人力成本。

    试想一下,企业上云是为了降低成本,应用托管极大地降低了资源成本和运维成本,但测试成本并没有降低。企业IT人员自建测试工具需要准备测试机/施压机,该部分机器长期占用且存在闲置,资源成本开销大,尤其是在性能压测场景,资源成本开销会更大。

    除了资源成本外,企业IT人员还需要研发测试工具,人力成本及时间成本非常高,基本上每个企业都需要一套测试工具。我们希望有一个低成本的方案,不仅提高企业的资源利用率,同时降低企业IT人员开发和维护测试工具的成本。

    微服务生态

    云上已提供了大量的微服务产品,解决了微服务应用的托管、治理、诊断,微服务测试补齐微服务能力。

    试想一下,如何测试一个微服务接口,需要了解接口入参和出参,如果是研发同学-服务提供者,可能比较熟悉该接口,如果是测试同学,甚至是其他研发同学,可能就需要文档,甚至是口口相传,微服务治理已经可视化应用的服务契约信息,结合服务契约信息,只需按照测试需要,选择应用->框架->服务->方法,配置测试参数,即可进行测试,降低了服务契约同步的成本。

    结合上述4点,测试同学只需负责用例编写+测试验收,接口调试、接口性能水位、用例自动化均可赋能给研发同学,就像早期DevOps一样,降低研发运维之间的反馈回路,提高软件交付效率,DevTest,降低研发测试之间的反馈回路,在保证交付质量的前提下,进一步提升软件交付效率,同时主动创建巡检任务,定时监控线上服务可用率,先于用户发现问题,解决问题。

    MSE 微服务测试实践

    前提条件:微服务应用已接入MSE

    下面我们来体验一下,MSE上如何使用微服务测试的能力。

    服务测试

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

    服务压测

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

    自动化回归

    1、登录MSE控制台,在页面左上角选择地域;

    2、左侧导航栏选择:微服务治理 -> 微服务测试 -> 自动化回归 -> 创建用例;

    3、添加步骤

    选择应用 -> 选择框架 -> 选择服务 -> 选择方法;填写参数;断言/出参提取;
    4、可以添加多个步骤;

    5、保存用例;

    6、点击执行;

    7、通过执行历史,查看用例是否通过;

    服务巡检

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

    微服务测试实现细节

    工具能力

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

    网络互通

    利用阿里云现有网络打通技术方案(ENI挂载),打通云产品专有网络VPC与用户专有网络VPC

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

    弹性资源

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

    服务契约

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

    不止是微服务测试

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

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

    作者:中间件小哥

    原文链接 

    本文为阿里云原创内容,未经允许不得转载

  • 相关阅读:
    poj 2728 Desert King
    uva 439 Knight Moves
    hdu 1875 畅通工程再续
    scau实验题 8600 骑士周游问题(有障碍物)
    scau实验题 8596 Longest Ordered Subsequence
    poj 1679 The Unique MST
    uva 527 Oil Deposits
    poj 2533 Longest Ordered Subsequence
    .net 程序员 java 开发入门
    Collation conflict occur at operation on User define funtion & table's column
  • 原文地址:https://www.cnblogs.com/yunqishequ/p/14270965.html
Copyright © 2011-2022 走看看