彩票走势图

什么是左移测试?

原创|行业资讯|编辑:郑恭琳|2020-11-25 14:00:45.950|阅读 255 次

概述:您越早发现代码中的问题,其影响就越小。处理它们的成本也更低。在此文中,我们探讨了左移方法以及如何在组织中进行左移。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

您越早发现代码中的问题,其影响就越小。处理它们的成本也更低。在此文中,我们探讨了左移方法以及如何在组织中进行左移。

左移测试方法

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

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

错误何时输入代码?

左移测试策略在Capers Jones的一些著名图表中得到了很好的说明,该图表显示了在软件开发的每个阶段,引入到软件中的错误/缺陷的成本不断增加。图表的第一部分显示了大部分错误是在编码阶段出现的,这是可以预料的。


无论他们是犯了实际的错误,还是误解了要求,还是不考虑特定代码的后果,开发人员都会在代码生成时引入缺陷。

当需要将各个部分组合在一起时,缺陷也会引入到应用程序中,尤其是在涉及多个团队的情况下(以及随着微服务之类的现代体系结构变得更加复杂)。

何时发现这些错误?

当我们在所引入的错误图表上方覆盖显示缺陷所在位置的线时,它开始变得有趣起来。

请注意,它基本上与第一行相反:

当然,这并不奇怪,因为通常在开始测试时就会发现错误,并且如果没有适当的基础架构就很难在一切准备就绪之前就开始进行测试(稍后会进行更多介绍)。我们在这里看到的是,大多数错误是在编码过程中引入的,但在该阶段几乎没有发现。

修复错误要花多少钱?

由于大多数错误是在编码过程中引入的,但直到下一个阶段才被发现,因此了解每个开发阶段修复缺陷所花费的差异就变得很重要。如下所示:

现在,它开始变得非常有趣,因为我们看到了令人讨厌的成本进步,一旦发现缺陷,成本就会急剧增加。让错误潜入系统测试的成本是在编码期间发现该错误的成本的40倍,或者比在单元测试期间发现该错误的成本高10倍。当您查看让错误渗透到实际部署中的数量时,它的成本简直荒唐可笑。

成本上升的原因包括:

  • 跟踪问题所需的时间和精力。测试用例越复杂(越大),就越难确定其中哪一部分是真正的麻烦制造者。

  • 由于引入了诸如数据库或第三方API之类的从属系统,在开发人员的桌面上再现缺陷的挑战。(在这种情况下,组织在缺陷检测和缺陷修复之间经历数周的延迟是很常见的。)

  • 修复缺陷所需的更改的影响。如果是简单的错误,那就没关系了。但是,如果您在很多地方都做过,或者使用了错误的框架,或者所构建的代码的可伸缩性不足以承受预期的负载,或者无法确保代码的安全性……

尽早测试,经常测试(左移方法)

现在,观看下图中添加的橙色线,因为它说明了基于较早测试(左移)的建议的缺陷检测周期:

您可以看到橙色检测曲线在便宜的一面变大了,而在昂贵的一面变小了,这大大降低了我们的成本。

左移依赖于更成熟的开发实践,例如基于软件测试金字塔的开发实践(开发人员创建了一组可以很好地覆盖代码的单元测试,而功能测试人员和API测试人员则尽其所能并最小化依靠后期测试,因此您只有足够的手动/UI测试来证明一切正常。这样,后期测试就可以证明其功能,而不是发现错误。尽早测试,经常测试是左移的口头禅。

向左移动

一些向左移动的组织此时停止。但是当您进一步向左推动编码本身时,您将获得更多价值。毕竟,这是引入错误的地方——因此,让我们在开发仍在进行的同时开始寻找它们。这是我们从静态代码分析中受益的地方-通过查找最左端的缺陷来修复缺陷,其中最便宜的缺陷是:

通过静态分析,您可以在实际的编码阶段开始寻找错误,这时发现错误的成本会尽可能地降低。

正如您可以清楚地看到的那样,在“测试”开始之前先找到东西是最划算的。这也是最省时的方法,因为它不会使开发人员在尝试重现错误或理解故障方面有任何问题。能够将缺陷修复周期从数天或数周缩短到数小时或数分钟,这是非常有用的。

谨防只是将负担转移给开发人员

但是此步骤存在一个危险,即偶然地给软件开发人员带来了过多的测试负担。查看图表时要记住的重要一点是,尽管随着正确的选择缺陷修复的成本急剧增加,但是左侧的资源可能是软件生命周期中成本最高的–更不用说您使他们不再专注于开发功能。

因此,您必须做正确的事,并将所有这些提升到一个新的水平。您不只是想早发现缺陷,实际上还想减少要放在应用程序中的缺陷数量。参见下图,左侧气泡减少了。

但是,等等,有一个陷阱!如果您因发现和修复错误而奖励别人,现在他们会发现的数量更少,这实际上是您想要的,但前提是您确实减少了最初要引入的错误的数量。测量进入现场的缺陷数量可能是一个更有用的指标。

那你怎么左移呢?

好的,这是我们在Parasoft所做的一切工作的核心。但是为了简洁起见,左移测试方法分为两个主要活动。

应用开发测试最佳实践

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

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

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

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

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

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

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

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

您可以随心所欲地推动系统运行,并尽早实施。(了解有关如何左移性能测试的更多信息。

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

总结

经过数十年实践证明有效的质量保证流程可用于显着提高质量,同时节省时间和金钱。

当您利用现代软件测试技术向左移动时,您可以获得安全、可靠和保障的软件。通过将测试向左移动,您可以通过在价格便宜的情况下尽早发现错误来降低测试成本,同时还可以减少首先放入代码中的错误数量。



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP