首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >聊聊测试左移右移及适应场景

聊聊测试左移右移及适应场景

原创
作者头像
漫谈测试
发布2025-12-26 10:45:30
发布2025-12-26 10:45:30
1140
举报
文章被收录于专栏:漫谈测试漫谈测试

持续测试的核心思想是对每一步都进行测试活动,这里涉及了测试左移、右移的概念。

什么是测试左移?

测试左移的核心思想是越早发现不合理的地方,生产系统出问题的概率就越低。因此,测试工程师在需求分析阶段就要参与到产品研发的活动中,在需求提出的时候,测试工程师就进行需求分析,将不合理的缺陷在开发阶段前就提出来,减少无效的成本投入。

同时,在开发工程师进行编码时,测试工程师并行地按照业务流程设计测试用例,帮助开发工程师在编码完成前识别出部分缺陷。在左移的过程中,测试部门不仅需要做好技术上的支撑,还需要围绕质量意识在IT团队中进行宣讲,将质量保障核心目标渗透到每个人的思维中,促使团队成员积极合作。

什么是测试右移

测试右移是在生产环境中进行一系列测试活动,这些测试活动不仅包括测试的执行,还包括对生产环境中用户体验指标的数据收集,并对数据进行整合分析,为测试过程提供更好的参考依据。

收集的手段不限于基础资源监控、业务监控、日志监控、可观测平台等。在生产环境中,测试团队同样可以进行测试操作,即前文提到的生产压测技术。传统性能测试在测试环境中进行。由于软硬件的差异,测试环境无法完全模拟真实业务场景,难以展现复杂业务链路下的性能瓶颈,得出的性能数据跟真实情况是有偏差的。

而生产压测技术实现了生产环境端到端高仿真度压测,能识别场景链路中的性能瓶颈并屏蔽性能风险,成为容量评估与稳定性保障的重要手段。其核心思想是借助流量打标、数据隔离等技术,避免压测流量对生产业务数据的污染,同时复用生产软硬件资源实施压测。

涉及的主要技术能力

全链路流量染色能力。通过压测平台对输出的压力请求打上标识,在业务系统中提取压测标识,确保完整的调用链路上下文都持有该标识。

全链路数据隔离能力。数据隔离的手段有多种,比如影子数据、影子表、影子库,这3种方案的隔离粒度有差异,相应的仿真程度和维护复杂度也有差异。

全链路日志监控隔离能力。当应用系统向磁盘或日志分析系统输出日志时,若流量是被标记的压测流量,则将日志隔离输出,避免影响生产日志分析。

全链路风险控制能力。需要跟生产监控系统自动联动,当达到容量瓶颈或出现预期外情况时,从压端到被压端都可以自动熔断。还应具备压测数据偏移机制、压测流量准入机制、压测流量灰度验证机制、压测接口白名单机制等,避免意外风险。

测试左移和测试右移的优缺点

测试左移和测试右移是软件开发过程中两种不同的测试策略,它们各自有不同的应用场景、优点以及潜在的缺点。下面我将分别介绍这两种策略的特点:

测试左移

定义:测试左移是指在软件开发生命周期的早期阶段就开始进行测试活动,通常是在需求分析或设计阶段就开始介入。

测试左移的优点:

早期发现问题:可以在项目初期就发现并修复缺陷,从而减少后期修复的成本。

提高质量:通过尽早地关注质量,可以确保最终产品更加符合预期。

促进沟通:增强了开发人员与测试人员之间的沟通合作,有助于形成更清晰的需求理解。

加速交付:减少了返工的可能性,使得整个开发过程更加高效。

测试左移的缺点:

资源消耗:需要更多的前期投入,包括时间、人力等资源。

技能要求:可能需要团队成员具备跨职能的知识和技能,比如开发人员要了解测试技术,反之亦然。

灵活性降低:如果需求频繁变更,则可能会导致过多的前期工作被废弃。

测试右移

定义:测试右移强调的是在软件发布后继续监控其表现,并根据实际使用情况调整测试策略,甚至是在生产环境中直接进行测试。

测试右移的优点:

真实环境验证:能够基于真实的用户行为和数据来评估系统性能,提供更准确的反馈。

快速响应变化:对于敏捷开发来说尤其重要,因为它允许团队对市场变化做出快速反应。

持续改进:鼓励了持续学习和改进的文化,帮助产品不断优化。

测试右移的缺点:

风险增加:直接在生产环境中测试可能会给用户体验带来负面影响,特别是当出现严重问题时。

成本较高:维护一个能够安全执行生产环境测试的基础设施可能需要额外的投资。

复杂度提升:管理不同环境下的测试(如预生产、生产)增加了整体流程的复杂性。

测试左移更适合的场景

测试左移强调在开发早期介入测试,以预防缺陷为主。

1. 复杂度高、架构迭代频繁的项目

微服务/分布式系统:依赖复杂,接口众多,需在设计阶段验证架构合理性。

长期演进的产品:早期缺陷可能导致后续代码“债务”累积,左移可降低重构成本。

2. 对质量与安全要求极高的领域

金融、医疗、航空航天等:合规性要求严格,需通过需求评审、静态代码分析等提前排除风险。

涉及用户隐私或数据安全的系统:安全测试需融入设计阶段(如威胁建模)。

3. 敏捷/DevOps 团队追求高速交付

持续集成流水线成熟:单元测试、代码检查等自动化流程可快速反馈。

开发人员测试能力强:可推动开发自测、测试驱动开发(TDD)。

4. 需求变动频繁的创新型产品

快速验证产品假设:通过原型测试、用户故事验证降低需求理解偏差。

减少后期返工:前端(UI/UX)测试左移,避免开发完成后大规模修改。

测试右移更适合的场景

测试右移关注上线后的质量监控与用户反馈,以快速响应生产环境问题。

1. 用户量大的在线服务或互联网产品

电商、社交、SaaS 平台:需监控真实用户行为、性能瓶颈(如并发峰值)。

A/B 测试驱动优化:通过生产环境数据验证功能效果。

2. 难以在测试环境复现的问题

依赖外部生态的系统(如支付、地图API):生产环境兼容性问题。

硬件/网络环境敏感的场景(如物联网、移动端):真实用户设备多样性。

3. 需要快速验证业务价值的场景

灰度发布与渐进式交付:通过监控用户反馈决定功能全量或回滚。

数据驱动的产品迭代:收集用户行为日志分析使用路径和痛点。

4. 维护期或遗留系统

旧系统重构风险高:通过生产监控保障稳定性。

第三方集成系统:依赖外部接口变更,需实时监控异常。

需根据团队成熟度、产品阶段和业务目标动态调整左右移的投入比例,最终目标是构建高效、韧性的质量保障体系。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是测试左移?
  • 什么是测试右移
  • 涉及的主要技术能力
  • 测试左移和测试右移的优缺点
    • 测试左移
    • 测试右移
  • 测试左移更适合的场景
    • 1. 复杂度高、架构迭代频繁的项目
    • 2. 对质量与安全要求极高的领域
    • 3. 敏捷/DevOps 团队追求高速交付
    • 4. 需求变动频繁的创新型产品
  • 测试右移更适合的场景
    • 1. 用户量大的在线服务或互联网产品
    • 2. 难以在测试环境复现的问题
    • 3. 需要快速验证业务价值的场景
    • 4. 维护期或遗留系统
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档