测试左移和测试右移,我们为何要“上下求索”?

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/7b9ad46d.html

你好,我是测试蔡坨坨。

今天,我们来聊一聊测试左移和测试右移。

传统测试流程与敏捷测试

在探讨测试左移和测试右移之前,我们先来聊一下传统的软件测试流程(瀑布模型)和目前很多公司在用的测试流程(敏捷模型)的区别。

软件测试作为软件研发的一部分,有什么样的开发模式,就有与之对应测试模式。因此就有了适合传统瀑布开发模式的传统测试和适合敏捷开发模式的敏捷测试。

测试左移和测试右移,我们为何要“上下求索”?

测试左移和测试右移,我们为何要“上下求索”?
  • 传统测试是在程序开发完成之后,更强调测试的独立性,将开发和测试两个角色分的比较清楚,而敏捷测试更强调整个团队对测试负责。
  • 传统测试具有明显的阶段性,而敏捷测试更强调持续测试和持续质量反馈。
  • 传统测试强调测试的计划性,而敏捷测试强调测试的速度和适应性,需要不断调整测试计划以适应需求的变更。
  • 传统测试更关注测试文档,如测试计划、测试用例、测试缺陷和测试报告等,而敏捷测试更关注产品本身以及交付的客户价值,强调面对面的沟通协作,持续质量反馈和缺陷预防。
  • 传统测试鼓励自动化,但成功与否没有致命的影响,而敏捷测试需要由良好的自动化测试框架支撑,因为在敏捷模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个变化过程,测试人员如何快速响应并保证产品在上线后的质量能够满足客户要求,如何保证在上线一个新功能的同时快速对旧功能进行回归,保证旧功能不被新功能影响而出现严重的Bug,自动化测试无疑是一个不错的选择。

从两者的区别,我们可以看出传统测试最明显的弊端就是介入晚以及没有持续测试。

所以,为了从根本上解决这类问题,于是开始推广并实践测试左移和测试右移。

测试左移

测试左移,顾名思义就是测试要在提测之前介入软件研发流程,及时发现错误,避免将许多本可以规避的问题带到测试阶段才发现,导致修复成本过高,甚至导致项目延期无法按时交付。提倡预防缺陷胜于发现缺陷,需要把质量构建推向源头,也就是产品需求,因为最严重的错误不外乎是系统不能满足用户需求。

测试左移通过持续对产品需求和设计进行评审,在需求评审时不只是简单了解需求,而是要去评估需求的质量,分析需求的完整性以及合理性,及时发现需求和设计中的问题,从而可以更好地避免由于产品文档不完善导致需求不明确的问题。

测试左移还包括代码评审,以及让开发做更多的测试,加强单元测试,开发自测,持续集成等。在开发阶段参与设计方案的设计,了解开发的实现方式和代码框架,从而可以更好地评估改动范围、需要回归的内容以及是否有遗漏的模块和系统。测试还可以通过提供测试用例或自动化测试脚本的方式给开发,让开发在设计时考虑更全面,同时方便开发自测,有助于提高产品质量,避免在收到提测包时冒烟测试主流程都没通过,导致测试效率低下。

测试还需要不断培养产品、开发同学的质量意识,提倡团队对质量负责,同时提供必要的技术支持,协助产品、开发更好地进行测试,比如:公共测试用例、测试工具、测试脚本等。

这样一来,你会发现提测的质量会大大提高,原本要花一天时间冒烟的功能很快就能通过。

测试右移

测试右移指的是在软件发布之后关注线上环境,持续监控软件的线上质量,以验证产品在用户的实际环境、数据、场景下,功能和性能是否符合用户预期,而不是项目发布完成就万事大吉了。

比如以下测试右移的活动:

  • 通过监控预警系统,及时发现问题并跟进解决,将影响范围降到最小。监控预警系统对IT基础设施,以及业务系统中的大量数据进行采集处理,监测系统运行状况,通过可视化看板展示系统及服务的运行状态、资源使用情况,当发生异常时,能及时告警,并帮助运维人员快速定位问题。
  • 对各种IT系统设施进行监控,比如:操作系统、服务器、虚拟机、容器和网络通信信息,CPU、内存、磁盘等资源的使用情况;对中间件监控,比如:数据库中间件、MQ消息队列、Web服务器等系统,监控一段时间的请求量、响应时间以及访问日志信息;对应用监控,比如:服务依赖关系和接口性能监控;对业务监控,例如:关注线上业务及用户使用情况,使用场景,多关注用户价值高、使用率高的功能,在用例中补充遗漏的场景,尽量多地进行覆盖;对用户体验监控,比如:加载时长、卡顿率等。
  • 数据采集处理包括数据收集、数据处理、数据应用,处理后的数据可以在监控面板上以曲线图、饼状图和仪表盘等直观的方式展示,同时根据设定的阈值和告警规则监控各项指标和数据状态,当符合告警规则时,系统通过邮件、短信等方式通知相关人员,以达到及时响应的效果。
  • 在线性能测试
  • 全链路压测
  • 在线性能监控
  • 流量回放技术
  • 安全性监控 在研发阶段进行代码的静态分析、安全性功能验证和渗透测试等,以发现代码和系统级别的安全漏洞。在产品上线后,通过监控和检查,发现系统的安全漏洞并及时修正。比如:身份认证、授权、访问控制和不可抵赖等是否已经整合到系统内;对用户名、访问时间、操作和资源地址进行审计,判断是否符合规范和要求;入侵检测,检测一些用户是否越过访问控制机制进入系统内部,对访问频率过高的情况进行警报并暂时冻结等。
  • A/B测试 把新旧两个版本同时推送给不同的客户,通过对比实验进行科学验证,从而判断这些变化是否产生了更积极并符合预期的影响力,为下一步的决策或改进提供依据。
  • 混沌工程 对于大规模、高复杂的服务系统来说,仅在测试环境进行测试已经无法满足质量需求,在生产环境下进行测试必将会在现在及未来云时代中占据重要地位,而混沌工程及其基于故障注入的测试提供了在生产环境中进行科学实验的方法和技术。

总结

不得不承认测试左移和测试右移的提出,对于测试角色来说,无疑是一个很大的进步。

但是,这也反映出了一些问题。测试左移在一定程度上代表着测试人员对即将拿到一个什么样的半成品充满了担忧,所以我们迫不及待想做些什么,于是我们拼命地往左边挤,力求尽快发现一些错误,将这些问题扼杀在摇篮里,避免自己接到一手烂摊子而焦头烂额。测试右移在一定程度上是测试人员对自己测试的不自信,因为有时候我们绞尽脑汁设计测试用例,通过多轮反复验证,满怀期待的上线,但是用户总会以某个不可思议的角度狠狠地敲你一棒子,于是我们通过测试右移,持续测试,关注线上环境,赶在客户发飙之前悄悄地把缺陷解决。

同时也反映了测试人员对质量的影响是很小的,单纯在测试阶段执行测试是不够的,所以我们不得不”上下求索”,以求一份安心,不应该把提测认为测试活动的开始,把上线认为是测试活动的结束,更不要认为质量只是测试人员需要关注的,因为质量不是被测试出来的而是被设计出来的,应该伴随整个软件的生命周期。

Original: https://www.cnblogs.com/caituotuo/p/16513977.html
Author: 测试蔡坨坨
Title: 测试左移和测试右移,我们为何要“上下求索”?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599379/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 牛客SQL刷题第一趴——非技术入门基础篇

    id device_id gender age university province 1 2138 male 21 北京大学 Beijing 2 3214 male 复旦大学 S…

    数据库 2023年6月16日
    0100
  • Redis-缓存雪崩,击穿,穿透

    小结 布隆过滤器 工作原理:布隆过滤器是一个由初值为0的长度为L的bit数组和N个哈希函数组成。当有向数据库写入操作时,对键进行N次哈希值计算,并对计算后的值取L的模,对数组相应位…

    数据库 2023年6月11日
    065
  • 翻译|是否应该在 Kubernetes 上运行数据库?

    数据库如何在 Kubernetes 上运行?如果可以,哪些类型的数据库和数据最适合使用 K8s?让我们一起来看看。 Kubernetes 是用于自动部署、扩展和管理容器化应用程序的…

    数据库 2023年5月24日
    088
  • 【数据结构】跳表

    一、基本概念 1.1 定义 跳表(SkipList):增加了向前指针的链表叫做指针。跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。…

    数据库 2023年6月11日
    092
  • 云数据库技术|“重磅升级”后再测 TDSQL-C

    标题 1.摘要 前段时间,测试了国内主要云原生数据库 PolarDB、TDSQL-C、GaussDB 的性能,参考:《再测云原生数据库性能》。在上次测试结果中,由于地域版本差异,腾…

    数据库 2023年6月11日
    085
  • 聊斋-河间生

    人的善恶在转瞬之间就可以改变,发现错误时往往已经差之千里了,但是发现错误及时改正这不也是很美好的一件事情么?河间生就是讲了这么一件事情。 主角简介:河间某生,家里比较富裕,烧火用的…

    数据库 2023年6月6日
    0106
  • Linux–>软件包管理

    rpm用于互联网下载包的打包和安装工具,它包含在某些Linux分发版本中。 它生成具有.RPM扩展名的文件。 RPM是RedHat Package Manager(RedHat软件…

    数据库 2023年6月14日
    082
  • jar工具常用命令

    参考链接:https://www.ibm.com/developerworks/cn/java/j-jar/index.html Original: https://www.cnb…

    数据库 2023年6月9日
    074
  • python中的cls和self区别

    self:Always use self for the first argument to instance methods self是作为类进行实例化传递的第一个参数,也就是我…

    数据库 2023年6月6日
    067
  • Java8 Stream

    什么是Stream Java8 API添加了一个新的抽象称为流Stream,可以以一种声明的方式处理数据,给我们操作集合(Collection)提供了极大的便利。Stream将要处…

    数据库 2023年6月6日
    087
  • 一次线上MySQL死锁告警原因排查

    项目场景:一次线上MySQL死锁告警原因排查最近处理了一次在线数据警报,记录下来。 [En] Recently handled an online data alarm, reco…

    数据库 2023年5月24日
    058
  • element-ui 提示框 确认按钮在左 取消按钮在右

    添加 //取消按钮 样式 cancelButto…

    数据库 2023年6月16日
    076
  • Java代码如何创建GUID字符串呢?

    随机字符串是我们日常开发中,经常使用的一种字符串,那么下文将讲述具有代表性的字符串GUID GUID字符串是全球唯一标识,是我们经常使用的一种唯一标识 如:分布式系统中使用其作为表…

    数据库 2023年6月11日
    090
  • 位图的简单操作

    class BitMap { private byte[] words;//用一个字节数&#x7…

    数据库 2023年6月14日
    0138
  • 23种设计模式之分类总结

    关于设计模式的学习要告一段落了,学习的这一路上,也收到了不少小伙伴的留言,以及点赞给了我莫大的鼓励,我在这里谢谢大家的鼓励。。。 我会再接再厉,嘿嘿。。。 以上的话虽是真心话,但是…

    数据库 2023年6月6日
    0280
  • 员工离职困扰?来看AI如何解决,基于人力资源分析的 ML 模型构建全方案 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 机器学习实战系列:https://www.s…

    数据库 2023年6月14日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球