为什么说左移测试能有效降低软件开发风险?

标签: 测试 有效 软件开发 | 发表时间:2021-01-04 09:09 | 作者:Elyn95605
出处:https://juejin.cn/backend

为什么说左移测试能有效降低软件开发风险?

所有企业都希望(或应该)减少与软件开发相关的风险。但是对于为安全至关紧要的行业和金融行业服务的企业,需要尽可能消除风险,并在所有其他情况下将风险降至最低。

左移测试可以降低以下关键领域的风险,下面将详细说明:

  • 安全性
  • 可见性
  • 法规和OEM合规性
  • 可靠性
  • 应用变更
  • 外包开发

什么是“左移”?

“左移”是将关键的测试实践移至开发生命周期的早期。这个术语尤其在敏捷、持续和DevOps计划中屡见不鲜。那么,为什么需要执行早期软件测试?

许多测试活动发生在周期的后期,需要花费更长的时间才能找出问题所在,并且需要更多的修复成本。左移是关于将缺陷的识别和预防移到较早的阶段。如果你不这样做,并在开发周期的稍后阶段等待执行测试实践,到那时,特别是非功能性业务需求(即安全性和性能测试)在代码中已根深蒂固,以至于你只能不停地打补丁而无法正确地修复它们。那么,将测试“左移”如何对软件的关键领域有所帮助?

安全性

受损的应用程序安全性会导致信息泄漏、停机、污损和恶意软件安装。根据Web Hacking事件数据库,这些后果占安全相关结果的61.6%。

传统的安全性方法是通过猜测和经验的结合来模拟直接攻击。传统方法由于过分依赖运气而无效且过时。使用左移测试,可以在开发时就避免这些安全风险。

可见性

组织面临的最大风险之一是缺乏决策依据。开发进度是否能按时完成?产品符合要求吗?现在是否需要采取任何措施来利用机会或减轻即将来临的客户问题的影响?

Parasoft的左移测试平台通过将来自每个软件开发基础架构的数据捆绑在一起,并根据已定义的公司策略应用上下文智能,从而为组织提供了前所未有的、无与伦比的、完整的可见性,从而推动了自动化的预防和控制流程,提供最高管理级别所需的商业智能。

法规和OEM合规性

不遵守安全关键性法规,政府或OEM法规可能导致召回、使合同无效、制定处罚或采取法律行动。尽管总金额因行业和项目而异,但它们通常是可观的。通过静态分析、覆盖率分析、过程定义和常规测量的组合,左移测试方法将合规性系统化为一个自动化的、气密性的过程,以确保控制风险。

可靠性

软件可靠性仍然是最显而易见的问题之一,可以通过左移测试轻松解决。崩溃、停机时间和缺少SLA的症状会严重影响公司在市场中的地位。通过将预防、检测和验证结合到一个持续改进的过程中,左移测试将确保减少或消除可靠性风险。

应用变更

在开发人员中,有一个老话:“如果调试是消除bug的过程,那么开发必须是将它们放入其中的过程。”用业务术语来说,每次代码更改都是一种风险。

左移测试通过执行可防止开发人员工作时出现结构和设计问题的编码策略,消除了引入新缺陷的风险。此外,左移测试策略将允许自动生成、执行和管理回归测试以及详细的覆盖率分析,从而消除损害现有功能的风险。自动化的同行评审分配可提供降低风险的最后一层,以确保适当的团队专家可以检查100%的代码。

外包开发

随着企业从高科技领域中廉价、缺乏经验的劳动力的风险中吸取教训,外包正逐渐消失。但是,许多企业拥有活跃的离岸开发和测试团队,并将继续沿这一道路前进。尽管策略各不相同,但成功的外包商会在现场和非现场建立多个缓解风险的门槛,以防范风险注入。左移测试很自然地适合在每个缓解风险的门口建立和实施编码标准,单元测试覆盖率以及同行评审的政策。

那你怎么左移呢?

为简洁起见,左移测试方法分为两个主要活动:

应用开发测试最佳实践

进行早期阶段的开发实践,例如静态代码分析和单元测试,有助于在过程中尽早发现并防止缺陷。

重要的是要记住,目标不是发现错误,而是减少错误的数量(尤其是那些会发布到版本中的错误)。最终,与发现更多的bug相比,首先创建更少的bug有价值得多,而且价格便宜得多。因此,通过标记可能“有效”但仍不安全的代码,采用一种主动预防性的安全关键编码标准。

编码标准是等同于工程标准的软件,它们是减少错误数量(除了更早发现错误),支持并从左移计划中获得最大价值的关键。编码标准是软件工程知识的体现,可以帮助你避免错误/危险/不安全的代码。要使用它们,你需要应用静态代码分析。

为了软件安全,这对于成功强化软件尤为重要。你想在代码中构建安全性,而不是对其进行测试。编码标准可让你从一开始就构建更安全的应用程序(即通过设计确保安全性),如果你受制于诸如 GDPR法规之类的要求,这会是一个好主意。

利用服务虚拟化实现连续测试

接下来,你必须接受在开发过程的所有阶段(包括后期)创建的测试,并不断进行下去。对于采用敏捷开发实践以在整个开发过程中提供连续反馈的团队来说,这一点至关重要。单元测试可以轻松地连续执行,但是由于外部系统的依赖性,通常很难将后期功能测试的执行转移到左手,在这里你可以利用服务虚拟化来进行连续测试。

服务虚拟化使你可以模拟可用性可能受限的相关系统,例如大型机、访问费、第三方服务或可能尚未准备就绪的系统。通过模拟它们,你可以在没有整个系统可用的情况下执行功能测试,并且可以将测试执行完全转移到开发桌面。

在性能测试方面,服务虚拟化使你可以在一切准备就绪之前进行测试,而无需对系统中的所有内容进行完整的实验。你甚至可以运行各种假设分析场景,例如,如果应用服务器运行速度快而数据库运行缓慢(在现实世界中很难实现),该怎么办。或者,如果我的服务器开始抛出一些有趣的错误,例如500错误,那将如何影响系统性能呢?

你可以随心所欲地推动系统运行,并尽早实施。

同样,你可以更早地开始进行安全测试。与物理系统解耦使你可以做一些更有趣的事情,这就是使模拟系统以不可思议的方式运行。现在,你可以真正进行安全测试了……你不仅可以在系统上查看受污染的数据和DDoS,还可以使系统充满数据包,发送格式错误的数据或攻击者常用的许多其他利用方法。因此,不仅可以进行更早的测试(左移),而且还可以比测试实验室或生产系统进行更深入的测试。

相关 [测试 有效 软件开发] 推荐:

为什么说左移测试能有效降低软件开发风险?

- - 掘金 后端
所有企业都希望(或应该)减少与软件开发相关的风险. 但是对于为安全至关紧要的行业和金融行业服务的企业,需要尽可能消除风险,并在所有其他情况下将风险降至最低. 左移测试可以降低以下关键领域的风险,下面将详细说明:. “左移”是将关键的测试实践移至开发生命周期的早期. 这个术语尤其在敏捷、持续和DevOps计划中屡见不鲜.

从 TikTok“重 QA 轻测试”来看中美软件开发之间的差异

- -
感觉整个一个高级黑啊,看起来像夸实际上是在吐槽. 完全就是靠堆人力成本来弥补软件工程上的不足. 原始视频链接:http://t.cn/A6671nbi. 第一点:很多西方企业都会写单元测试,每个人都知道这是非常基本的事情. 但这里的中国工程师们不需要编写单元测试. 每项代码提交都指望 QA 部门的手动测试,团队在提交之前手动测试每个 code commit 提交.

软件开发的核心

- - 博客园_知识库
  「我们一直这样做开发,时间做久了,便忘了当初的本意.   有关软件系统开发,我们谈些什么.   我们谈过程,编码规范、开发流程、同行评审、结对编程、持续集成,从瀑布到敏捷再到极限编程.   我们谈架构,企业级、J2EE、容器化、SOA(面向服务架构)、Microservices(微服务化).   我们谈规模,大容量、高并发、大数据.

软件开发的“三重门”

- - 酷壳 - CoolShell.cn
自从上次写了“ 程序员技术练级攻略” 以来,就觉得似乎还有很多东西没有谈到,但当时没有继续思考了. 而春节前有人问我,是做底层技术,还是做业务. 这问题让我思考了很多,不由自主地回顾了一 下我这十多年的软件开发经历,并顺着整理分类了一下自己解决过的若干问题,还发散想了很多,经过了一个春节假期的发酵,产生了下面这篇文章.

软件开发的人文关怀

- - 博客园_知识库
  几年前,我从温伯格的《技术领导之路》中学到一点:技术人员往往更喜欢和机器打交道,因为他们“认为”自己更适合和机器打交道;但是,优秀的技术人员必须(也必然)具备好的沟通能力. 所以,温伯格鼓励各位技术人员多加练习和其他人打交道的能力. 温伯格的这个观点我是非常赞成的,好的技术人员一定需要“勇敢”面对他人,不能被“自实现的预言”局限在机器的世界里.

软件吞噬软件开发

- - PingWest中文网
软件蚕食世界,自互联网特别是移动互联网连接线上线下服务后,已成为不可逆的趋势. 每一项实用的服务可以由小团队来完成. 以WhatsApp为例,这款被高调收购的IM应用,拥有4.5亿月活跃用户,70%的日活跃率,至今还保持每天新增用户1000万的速度. 但这些服务居然由32名工程师支撑下来了,所以有了业界八卦“每位员工价值20亿”的说法.

软件开发中的两种态度

- - 外刊IT评论网
一种态度认为,应该对程序员在软件开发中的行为进行约束( DirectingAttitude). 持这种态度的人认为大部分的程序员水平都不高(谣传说有50%的人低于平均水平),所以应该对他们所做的事情进行管教约束. 要防止他们做一些可能会给他们正在开发的系统带来危害的事情. 通常,这种态度体现在一些系统设计和工具中时,你会发现它们会试图阻止程序员去做某些事情,限制程序员的一些做法,以此避免他们陷入过于复杂的境况.

软件开发的人文关怀

- - 极客公园-GeekPark
我是极客公园黑板报认证值日生. [核心提示]软件可以没有活力,而软件开发却不能没有活力;程序可以像机器一样,程序员却不能像机器一样. 要改变这种状态,就应当增添更多的人文关怀,把开发人员当成活生生的人,而不是视为程序或者工具. 编辑注记:本文来自余晟的博客 乱象,印记. 作者从自己的经验出发,提出了一些给软件开发人员提供人文关怀的可行措施.

软件开发模型综述

- - CSDN博客推荐文章
                     软件开发模型概述. 最早出现的软件开发模型是1970年W·Royce提出的瀑布模型. 软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架. 软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段.

防火长城内的软件开发

- - Solidot
对于软件开发者来说,防火长城不只是屏蔽网站过滤流量这么简单——它是痛苦之源,尤其是如果你想开发针对中国市场之外的软件或想利用广泛使用的服务和软件库的话. 上海聊天机器人创业公司Rikai Labs的创始人DC Collier认为,中国的软件开发者写代码的时候一只手是绑在背后的. 防火长城的屏蔽范围日益扩大,这意味着越来越多的服务被永久性或不定期的屏蔽.