• 测试环境不稳定&复杂的必然性及其对策


    这篇文章想要讲的,的确是两件事情:

    1. 为什么测试环境的不稳定是必然的,怎么让它尽量稳定一点?
    2. 为什么测试环境比生产环境更复杂,怎么让它尽量简单一点?

    此外,还会谈一谈对测试环境和生产环境的区别的理解。

    这里是本文的主要观点:

    1. 测试环境与生产环境是两个不同的场景,测试环境的不稳定是必然的,在没有实现TiP(Test in Production)之前,当前我们能做的是尽量让它稳定一点;
    2. 测试环境比生产环境更为复杂,最核心的是要解决共振问题,即做好隔离能力,Mesh 是解决隔离问题的一个未来方向;

    DevOps 领域,测试环境其实是介于 Dev 和 Ops 中间重叠的部分,一提到测试环境,打开就会说测试环境不够用、测试环境不稳定,尤其是在微服务化了之后,对测试环境的诉求与挑战也愈发明显。

    从软件研发过程的角度来说(如上图),从左往右呈现一个漏斗模型,随着研发的阶段推进,复杂度和稳定性都在逐步收敛:

    1. 在开发和集成阶段,代码等变更是非常频繁的,在这个阶段里研发人员在不断的迭代、联调、验证等,从本质上来说,高复杂度和低稳定性是必然的,对于依赖的中间件等基础设施的不稳定,这是偶然的;
    2. 到了预发、灰度和发布阶段,变更已经趋于稳定,经过了前面阶段的洗礼,复杂度是相对低的,稳定性也能得到保证;

    另一方面,如上图所示,生产环境只有一套,链路和应用间的调用关系比较清晰,但在测试环境中,因为涉及到多个项目的自测、联调、验证等,相当于千军万马过独木桥,很容易产生共振效应,影响所有人的研发,在这方面来讲,测试环境比生产环境要复杂很多,亟需解决隔离、低成本以及稳定的依赖这几个重要的问题。

    测试环境不稳定的必然性

    测试环境和生产环境的区别是什么?有的人说线下的容量没有线上大,有的人说线下没有真实用户,有的人说线下缺少生产的真实数据,等等,各种答案都有。在我看来,测试环境和生产环境的本质区别是:它们是两个不同的场景。对于生产环境,准确与稳定性最重要;对于测试环境,隔离、低成本和稳定的依赖最重要。

    在日常的研发中,会面临诸多场景,涉及的测试环境总结如下:

    • 开发环境(dev):开发或测试同学自己的电脑或服务器,非 Aone 管理的应用服务器
    • 项目环境(project):关联到某个变更的环境,仅部署该变更对应的分支
    • 单应用测试
    • 多应用联调
    • 性能测试:对该变更对应的分支做性能测试
    • 日常集成环境(daily):我们最熟悉的 daily
  • 相关阅读:
    pdf文件属性的删除
    [go]golang中“var“与“:=“的区别
    SpringBoot项目创建失败或无法启动,启动报错时的常见问题及解决方案
    随手记录用的笔记本,记录一些常见成语和古文
    网络层五大核心知识点
    【Arduino24】8*8点阵实验
    C++调用lua脚本,包括全局函数绑定、类绑定,十分钟快速掌握
    20231027 基于STM32mp157a 的内核与应用层通过子系统控制led灯,以及计时器功能
    7天入门python系列之爬取热门小说项目实战,互联网的东西怎么算白嫖呢
    【2021最新版】RabbitMQ面试题总结(32道题含答案解析)
  • 原文地址:https://blog.csdn.net/weixin_43970890/article/details/126604956