测试左移_安全左移什么意思

测试左移_安全左移什么意思测试左移一词(shift-lefttesting)可能最早出现在测试行业大佬ArthurHicken的博客里,在他的博客中提到了测试左移的看法。他提到bug的产生,其中85%的缺陷产生于编码阶段,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

测试左移一词(shift-left testing)可能最早出现在测试行业大佬Arthur Hicken的博客里,在他的博客中提到了测试左移的看法。他提到bug的产生,其中85%的缺陷产生于编码阶段,这是可以预期的:

 测试左移_安全左移什么意思

无论是开发编码错误,或者对需求理解有误,或者没有遵守特别的代码规范等等,各种原因,无可否认都会在编码阶段引入缺陷。
尤其是如果将各个应用组合在一起时,缺陷也会被引入到应用中,尤其在涉及到多团队配合时。(譬如目前流行的微服务架构)。
那么这些缺陷什么时候能被发现呢?请观察下面一张图中橙色的折线:

测试左移_安全左移什么意思

看起来就很因吹思婷了,因为在第一阶段(coding)时几乎很难发现缺陷,当然,这在目前研发流程中也是常见的,因为一般测试都是从单元测试阶段(unit test)甚至功能测试(functional test)才开始介入的。两张折线对比就能很明显发现,缺陷大部分在编码阶段被引入,却几乎没有被发现!!!
那么解决缺陷的成本是多少呢?下面这张图会让人们非常惊讶:

测试左移_安全左移什么意思

编码阶段修复缺陷的成本与编码本身成本相当,这很容易理解。但是在研发迭代周期中,缺陷发现的越晚,修复的成本将会急剧增加。譬如功能测试阶段修复缺陷的成本是10倍,系统测试阶段则是40倍,实际部署阶段剧增到640倍的成本,真的是可笑又可怕。举一个真实案例,当年微软的windows系统某版本发布时,因为一个ui bug在oem阶段才被发现导致数百万张光盘被迫收回并销毁,损失至少千万美元,而这个ui bug如果在coding阶段发现的话,可能只需要几秒钟就能修复!!!
大佬Arthur Hicken认为有以下原因导致成本上升:
跟踪问题所需的时间和精力。 测试用例越复杂(越大),就越难确定哪个部分是真正的缺陷原因。
由于引入了诸如数据库或第三方API之类的相关系统,在开发人员的电脑上则很难将缺陷复现。(在这种情况下,组织在缺陷检测和缺陷修复之间通常会经历数周的延迟。)
修复缺陷所需的更改的影响。 如果是简单的错误,那就没关系了。 但是,如果您在很多地方都做过此事,或者使用了错误的框架,或者所构建的代码的可伸缩性不足以承受预期的负载,或者无法确保代码的安全性…
笔者理解,其实不需要罗列很多成本上升的原因。因为在长久的研发过程中,所有it从业者或多或少都会有自己的心得体会。
因此Arthur Hicken大佬提出了一种测试左移的方法论,尽早尽可能多的介入测试。这样做的好处就是将尽可能多的缺陷提早发现,基于缺陷修复成本曲线,这些缺陷发现的越早组织消耗的成本越少。实践这些的前提是,组织具有成熟的研发体系,比如完善的单元测试架构。
有些组织左移到了单元测试就停止了,但是如果可以进一步左移到编码阶段,其实能够获得更高价值, 毕竟,这是引入错误的地方。因此,如果组织能让在开发仍在进行的同时就开始寻找它们(缺陷),这就是组织从静态代码分析中受益的地方:通过查找最左侧的缺陷来修复缺陷。
通过静态分析,可以在实际的编码阶段开始寻找错误,这时发现错误的成本将尽可能降低。可以清楚地看到的那样,在“测试”开始之前先找到东西是最具成本效益的。 这也是最省时的方法,因为它不会使开发人员在尝试重现错误或理解故障方面有任何问题。 能够将缺陷修复周期从数天或数周缩短到数小时或数分钟。

看完点个赞呗,难道想白嫖不成?更多内容请访问微信公众号 :三国测,扫码关注哟!

测试左移_安全左移什么意思

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167309.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python&R LEfSe 分析

    Python&R LEfSe 分析软件安装与路径添加 在涉及到物种或基因组间差异分析的方法中,LEfSe是目前常见的方法。LEfSe实现的方式主要有在线分析和本地分析,在线分析会受到网络及其他因素影响,因而速度可能极慢。本地分析可基于Windows或Linux系统,调参更加灵活。本文以Windows系统为例,向大家展示如何在自己的本本上运行LEfSe,再也不用去求公司了…… 首先,我们要安装好Pyhthon(2.7版本)和R(…

    2022年4月29日
    48
  • mongodb菜鸟教程_mongodb怎么用

    mongodb菜鸟教程_mongodb怎么用MongoVUE是一个关于mongodb数据库管理的工具,并且免费,但超过15天后功能受限。我们可以通过删除mongodb相应的注册表项来解除限制。其步骤如下:1.运行‘win+R’;2.输入‘regedit’,如下图所示:3.进入注册表编辑器,找到与mongodb相关的注册表项,并将里面的注册表项全部删除,如下所示:4.最后可以发现mongovue可以正常使用了,mongovue被激活成功教程了。5.细…

    2022年8月21日
    11
  • CANoe/CANalyzer诊断功能的深入理解以及CAPL诊断编程实现

    CANoe/CANalyzer诊断功能的深入理解以及CAPL诊断编程实现之前和大家分享了CANoe的基础使用(分析、仿真、测试、诊断),这篇文章将继续深入探讨如何使用CANoe/CANalyzer中的诊断功能。诊断用于在将ECU安装到系统之前或之后配置,维护,支持,控制和扩展ECU,例如,一辆车。诊断通常在请求-响应方案中执行:测试仪(客户端)向…

    2022年6月30日
    95
  • 整理了十五道为数不多的tomcat面试题,错过就没了!

    整理了十五道为数不多的tomcat面试题,错过就没了!当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)在servlet注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。

    2022年6月6日
    29
  • String数组初始化

    String数组初始化在java中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。如下,1,2,3可以通过编译,4,5不行。而String是Object的子类,所以上述BCF均可定义一个存放50个String类型对象的数组。1.Stringa[]=newString[50];2.Stringb[];3.charc[];4.Stringd[50];5.char…

    2022年7月18日
    16
  • Nginx出现403 forbidden

    Nginx出现403 forbiddennginx访问时报403,于是查看nginx日志,路径为/var/log/nginx/error.log。打开日志发现报错Permissiondenied,详细报错如下:1.open()"/data/www/1.txt"failed(13:Permissiondenied),client:192.168.1.194,server:www.web1.com,re…

    2022年6月11日
    158

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号