您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

左移测试教程:最佳实践综合指南

发表于:2023-06-05 作者:李睿 来源:51CTO技术栈

译者 | 李睿

审校 | 重楼

“本指南探讨了左移测试方法,以及如何使用这种方法提高软件产品的质量。”  

左移测试方法包括将测试活动“左移”或在开发周期中相对早期地移动。因此,测试人员在软件开发生命周期中参与得越早,使他们能够在更早的阶段识别缺陷和瓶颈。除了提高代码质量和减少完成周期所需的时间之外,它还有助于确保在生产中引入更少的缺陷。

很多企业不断面临着在敏捷环境中更快行动的挑战。通常情况下,这需要缩短交付时间,同时以更低的成本提高每个后续版本的质量。

敏捷开发计划优先考虑更短的sprints,并计划尽可能快地将客户反馈合并到功能中。然而,这样的进步如果遇到了严重的质量问题,将让客户感到不满。在此之后,测试和质量出现了漂移,“快速移动和突破”不再可持续,测试成为了一个重要的绊脚石。  

在传统模式中,测试人员通常在开发之后开始测试。为此,出现了一种被称为左移测试的质量保证技术,它具有诸如节省成本和提前检测缺陷等优点。  

一、左移测试的由来

左移方法促使人们重新思考如何处理软件质量改进。早些时候,在瀑布方法中,开发人员和质量保证专家在具有不同角色和职责的团队中工作。即使在敏捷方法中,测试也通常排在最后。

左移测试的思想旨在将测试阶段引入软件开发生命周期(SDLC)的早期阶段。因此,团队可以更有效地协同工作,并定期相互沟通。因此,左移是早期将测试和开发结合在一起的常见术语。  

可以考虑一个一切都是由开发人员完成的这样一个场景。他们将工作移交给测试团队,从系统测试开始,然后开发团队开始开发新的项目。在质量保证(QA)测试期间,测试中出现的错误必须在发布到生产环境之前加以修复。在这种情况下,开发人员继续完成当前的任务,并集中精力修复上一个项目中的缺陷和错误,以缓解最后交付期限,否则部署将不得不等到新的发布周期。而这是额外的时间投资!

左移方法旨在通过在生命周期的早期将任务移到左边来提高质量。它在软件开发生命周期的早期通过重复测试和检测问题以及早期最小化风险来整合测试。因此,与在开发结束时开始测试的典型测试方法相比,测试可能是一种更现实的检测产品缺陷的方法。

 

图片

二、SDLC后期测试的影响

在生命周期后期发现的缺陷更为复杂且修复成本更高。这就是在瀑布式方法结束时将测试视为一个顺序阶段被认为是软件测试的一个主要陷阱的原因。

以下是开发周期进行后期测试的影响:

•测试人员可能较少参与初始计划,导致分配的测试资源不足。  

•许多需求、架构和设计缺陷直到在实施上花费了大量精力才被发现和纠正。

•随着越来越多的软件被创建和集成,调试变得越来越困难。  

•测试自动化的时间更短,这最终会导致缺陷回归。

•封装使得白盒测试和在测试期间实现高水平的代码覆盖率变得更加困难。  

•修复在测试中发现的缺陷的时间更少,增加了在以后的系统升级中被推迟的可能性。  

•延迟测试影响开发和维护成本,导致错过最后期限和项目延迟,并由于残留缺陷而降低质量。  

•由于软件存在缺陷,客户最终用户体验不佳。

三、为什么进行左移测试

在传统的瀑布模型中,在开发周期结束时进行测试,一些严重的缺陷经常被忽略。在开发流程结束时修复这些关键的缺陷是困难和昂贵的。随着漏洞的发现,修复它们的成本呈指数级增长。

然而,通过让测试人员更早地参与到开发周期中进行左测试有助于减少与发现和修复缺陷相关的成本。因此,对项目的可交付成果没有延迟或影响,并且提高了客户满意度。

以下是导致左移快速发展的一些因素:

•通过将编码和测试结合起来,左移方法减少了代码的不安全性。同时也提高了工程师的工作效率。  

•左移方法使工程师能够通过持续集成(CI)和测试自动化来快速测试代码。这允许团队朝着持续测试和CI/CD管道开发他们的软件开发生命周期(SDLC)。  

•在产品开发生命周期中几乎立即发现缺陷。  

•通过几乎立即识别缺陷来减少处理缺陷的成本。  

•在产品开发生命周期中几乎立即发现缺陷。  

•DevOps中的左移测试带来了一个更重要的项目。这就建立了消费者的忠诚度并提高了业务成果。

•由于代码包含较少的缺陷修复和代码修复,因此可以获得更重要的项目。

•减少项目超出事件评估过程的可能性。  

•由于代码稳定并在财务计划中传达,因此提高了消费者忠诚度。  

•保持更大的代码库。

•通过在开发周期之前的测试,团队可以更快地发现代价昂贵的问题。这样可以节省时间和成本。  

•左移方法允许团队更有可能为他们的企业设计整个测试扩展。 

四、在测试中左移的好处

左移不仅能更早地找到缺陷,它还可以帮助团队更好地与所有利益相关者合作,提高集体能力,并制作更现实的测试用例,以确保无缺陷的交付。左移测试带来了一些企业文化上的好处,因为它强调了敏捷宣言中众所周知的原则: 

•根据计划应对变化。

•客户协作优先于合同谈判。  

•工作软件胜过全面的文档。  

•流程和测试工具之上的交互和个体。

以下是左移测试的几个显著优点:  

•改进了客户和用户体验:左移促进高质量的代码和按时交付,减少修复缺陷,创建一个更集中的以客户需求为中心的环境,从而带来更好的产品设计和用户体验。  

•早期缺陷检测:早期的、渐进的、持续的测试可以在缺陷导致生产问题之前减少它们的数量。  

•增强覆盖范围:左移测试的额外优势是增加了测试覆盖范围。如果有更多的人更频繁地创建测试并更早地开始,那么测试将对软件进行更大比例的评估。  

•显著的成本节约:早期检测显著地提高了效率,减少了技术债务,降低了修复缺陷所需的工作量、时间和成本。

•改进了软件团队文化、能力、士气和员工忠诚度:让交付团队中的每个人都参与测试活动需要左移。企业团队不再在发布前的最后一刻匆忙讨论和执行测试。

•帮助重塑产品开发:测试中的左移并不意味着没有在生产中进行测试,也不意味着测试完全转移到软件开发生命周期的设计阶段。左移将测试注入到每个sprint中。一些测试仍然应该在最后进行,但应该是剩余的一些。 

五、当左移时会发生什么?

在左移方法中,测试人员直接了解测试版本的最终标准。例如,测试人员可能会意识到,当他们了解产品规格说明时,与组件和系统开发人员密切合作会更有效。他们可以提出探索性的问题,与API开发人员沟通,并为新服务创建测试存根。当测试人员积极参与这些早期阶段时,他们最终会“向左移动”。  

 

图片

 

以下看看当在测试中采用左移方法时会发生什么。  

1.设计阶段

传统上,产品设计团队会等到他们有了大量的新功能,然后开始漫长的设计过程。在此之前,测试人员可能对新功能正在进行开发的事实并不关心。在现代软件开发中,可以通过引入以下问题来测试新的功能想法。  

•该功能的用途是什么?它为客户解决了哪些问题?

•如何知道这个功能成功地满足了客户的需求?  

•可以构建并用作“学习版本”以确保其交付价值的功能的最小部分是什么?  

•当人们使用这个功能时,最糟糕和最好的事情是什么?

2.持续使用测试来指导开发

这是一个典型的“左移”场景:一家企业的团队决定构建一个功能,并且正在与交付团队在计划会议中进行规范讨论。只是问“我们将如何测试这个?”这样的问题就会引发富有成效的讨论,因为它可以帮助人们理解这一功能,并可能导致在单元、集成、系统级别/API、用户界面(UI)或其他适用级别为这些故事进行测试。 

3.设计测试计划

与正式的测试计划不同,团队可以在创建每个故事时捕获一些期望的和不希望的行为实例。然后,把它们变成测试。团队可以运行它并帮助开发。

这些测试将成为详细的文档,说明该功能在生产环境中是如何工作的,自动化的回归测试可以确保未来的更改不会破坏它。增加团队准确交付客户所需的机会的一种方法是,在构建每个功能时,考虑更多的测试用例来自动化或人工探索。  

尽早且经常进行测试,尽早且经常自动执行

敏捷开发的好处是可以随时实现自动化。可以为一个功能编写最基本的测试,即使还没有完全开发它。也可以为该功能向产品和测试代码中添加增量测试。可能需要更多的返工,更多的关于如何编写可维护的测试的知识,当测试人员、开发人员和其他团队成员协作在编码过程中自动化测试时,需要等待更多的问题得到回答,而这与瀑布过程的交接有很大的偏差。

4.不仅仅是与测试人员有关  

左移方法是软件团队都参与其中的一种技术。以下是每个角色需要做出的一些调整:

•测试人员:积极参与设计阶段。要构建测试,不应该等待代码。尝试将这些代杩分成几个可测试的小块,以保证测试的成功。  

•开发人员:参与关于测试策略和计划的讨论。企业投入可能有助于减轻测试团队的负担,并降低技术债务。将企业的自动化测试套件作为代码库的重要组成部分进行维护。  

•产品经理:确保企业的团队能够获得合适的资源来进行合作并获得反馈。设定与左移策略相一致的目标和期望。这可能需要为整个团队设定质量目标,并减少每个sprint的功能工作。

基础设施和部署团队:企业的部署管道需要尽早可用,并且具有高容量,以便测试套件能够快速运行,因为测试需要频繁和早期地发生。

六、左移测试的类型

有四种不同类型的左移方法,每种方法提供不同的价值。

1.传统的方法

要理解传统的左移方法,首先理解软件开发生命周期中的传统V模型是很重要的。SDLC V-Model是基于每个开发阶段的测试阶段的瀑布模型的扩展。它也被称为验证和确认模型。下图显示了一个典型的V型模型。

 

图片

 

传统的左移方法减少了测试次数,从而将其移到V型模型右侧的左侧。单元测试和集成测试是传统左移方法的主要关注点。这种测试是使用API测试和Selenium完成的。然而,验收测试和系统测试并没有得到高度重视。

2.增量方法  

这种左移策略最适合开发复杂和大型软件系统的项目。同时管理所有任务和可交付成果有时变得很困难,因此它们被分成更小的块。这些组件构建在彼此之上,并且软件随每个增量一起交付给客户。在每次交付之后,开发和测试都被移到左边。这有利于测试团队测试每个组件。  

因此,它通过增量开发周期来进行增量测试。下图显示了该过程的一个示例。

 

图片

3.敏捷/DevOps方法  

这种左移测试方法通常在几个sprint中执行。它侧重于通过由各种较小的sprint组成的进化生命周期进行持续测试。它主要用于开发测试,而不是在系统操作化之后进行的操作测试。 

 

图片

4.基于模型的方法  

左移方法的主要目标是尽早发现缺陷。然而,在上面讨论的三个模型中,测试将在开发周期的早期开始。因此,在需求收集期间遗漏了一些关键问题,这些问题在开发周期完成后才会被发现。

 

图片

七、左移的关键策略

以下是一些可以实现的关键策略,以将软件测试向左转移。

•计划:这是左移战略的一个重要方面,因为它是测试生命周期任务的跳板。测试人员可以通过与管理层和运营利益相关者合作,更好地理解未来的需求。有了这种洞察力,就可以计划并确认预算、资源分配和测试策略。  

•静态测试:它在项目的早期阶段完成,包括需求和设计验证。使用静态测试,可以在项目生命周期的早期发现问题,以免它们变得过于昂贵而无法修复。

•统一的测试策略:使用统一的测试策略,企业可以评估自动化、存根、环境和测试数据上的限制,保证各自的团队能够满足需求。一般来说,这是端到端测试的高级方法,从单元测试到用户验收测试(UAT),再到操作准备测试(ORT)和部署后测试(PDT)。这一策略将涵盖所有质量保证(QA)职责和步骤。  

•基于风险的分析:软件风险分析决定了每个测试用例的结果和失败的概率。功能测试、非功能测试和回归测试都可以使用这种方法进行。

八、如何实施左移战略?  

左移不仅仅是帮助测试团队尽早发现缺陷,现在了解他们需要做些什么来开始左移测试:

1.确定并计划测试生命周期

计划是左移方法不可或缺的一部分。当测试分析人员在实际开发过程开始之前确定并计划整个测试生命周期时,它的效果最好。这为测试生命周期中的所有活动提供了一个强有力的起点,并将帮助所有业务和运营利益相关者、开发人员和测试人员理解项目的任务、目标和预期结果。  

这样做的一种方法是从项目计划和需求规范阶段确定测试需求。测试计划包括预算、资源、测试策略和其他项目需求。这有助于团队从项目的第一天开始就关注质量,而不是等到软件开发生命周期的后期才发现缺陷。

2.引入基于开发人员的测试方法

开发人员的主要角色是根据需求编写新功能或增强功能。然而,测试不再是由测试人员完成的任务。  

由于开发人员最熟悉他们的代码,他们可以严格测试自己编写的代码以排除任何缺陷,并检查应用程序的功能。确保新代码在与应用程序的现有功能集成时不会产生任何缺陷也是至关重要的。

因此,一旦开发出代码进行测试,可以确保更快地识别缺陷。它加快了暴露和修复编码错误的速度。它有助于减少单元中的不确定性。开发测试的目的是在代码传递给质量保证(QA)团队之前消除编码错误。基于开发人员的测试和基于质量保证(QA)的测试的完美结合将确保轻松识别缺陷和发布高质量的功能。

3.代码评审质量检查

合作是成功的关键。为了确保更高的代码质量,所有开发人员必须同意遵守相同的编码标准。  

随着开发人员为测试工作做出贡献,测试人员可以专注于为开发人员的脚本定义质量检查,并专注于探索性、安全性和性能测试。

4.使用相同的工具

测试团队面临的一个重要问题是无法使用开发人员使用的相同工具创建自动化测试。这成为测试人员创建自动化框架的障碍。最佳实践是使用开发人员使用的相同技术堆栈。

5.功能测试

它是对软件进行更改以添加新功能或修改现有功能的过程。测试这些功能是非常重要的,并且逐步交付软件需要开发和质量保证(QA)团队协同工作来交付构建。

在每次签入之后,就可以知道系统在缺陷方面的实际状态。通过严格的代码质量检查,可以在早期阶段检测到缺陷,因此更容易修复,从而提高每个功能的质量。

6.采用测试自动化技术  

在这种DevOps驱动的环境中,强烈建议采用测试自动化技术,以最大限度地提高左移测试的可用性。通过测试自动化,开发人员和测试人员可以在软件开发的所有阶段自动化整个从构建到测试的过程。

为了降低测试成本,需要始终使用基于云的测试平台,以便企业的质量保证(QA)团队可以访问不同的浏览器、设备和平台。

九、左移测试的挑战  

正如人们所看到的,左移策略带来了许多好处。然而,每件事都有它的挑战。这是左移测试的一个限制。

1.文化认可

清单上的第一个是认可。左移测试需要企业文化的重大转变。习惯于传统工作流程的开发人员和测试人员可能会发现左移是一个偏差。它可能会打乱工作、工具和所需技能的流程。如何克服? 内化左移测试的重要性是很重要的。此外,倡导优先事项的学习会议有助于确保顺利过渡到新方法。

2.精力浪费

只有一些内容可以尽早测试。如果仍然需要打下基础,左移测试可能需要投入大量的精力和时间。在开发图形用户界面(GUI)之前编写测试的情况下,图形用户界面(GUI)功能很有可能在完全开发时需要更多的增强,因此大部分精力都被浪费了。

如何克服?如果需要在早期测试特定的测试,则必须更早完成开发。例如,如果API测试对企业的项目至关重要,并且正试图进行左移测试,那么需要尽早开发API。  

3.测试范围

测试范围都涵盖了吗?需要多少自动化?准备好全套服务了吗?回答这些问题的答案可能会让人头疼。  

定义智能测试策略是自动化测试成功的关键。以下是可以帮助确定是否应该自动化测试用例的因素列表。

•自动化的复杂性  

•平均脚本创建时间  

•期望的回归速度  

•发布的频率  

•构建的稳定性  

•测试用例的变更/增加率  

十、左移测试的最佳实践

本节将讨论在实现左移方法时应该遵循的一些最佳实践:  

提供持续的反馈  

持续的反馈可以快速地修正误差和间隙。此外,它可以更好地了解每个参与者,并改进未来的项目。  

为了实现有效的持续反馈循环,应该:

•为会议设定目标。  

•详细记录反馈。  

•确保有效的沟通渠道。

1.早期测试

早期的测试不应该意味着测试不会发生在软件开发生命周期(SDLC)的后期阶段。早期测试本质上允许通过早期缺陷检测来降低风险。这并不意味着缺陷不能在后期出现。因此,质量保证(QA)专家和项目经理应该准备好并利用持续测试。  

质量保证(QA)专家应该列出代码预期的价值、执行和操作成就的程度,以便运行测试的开发人员了解应该搜索哪些缺陷。  

2.自动化测试  

每次更新、发布、定制和集成都会对系统的整体质量造成新的威胁。另外,人工测试不能满足更快、更高质量的软件开发的需求。  一个可行的方法是使用测试自动化,这为测试人员节省了大量的时间。

3.静态代码分析

静态代码分析是在不执行代码的情况下分析代码。它检查了基本的代码结构,并保证代码与各种规范和规则保持一致。在这一分析中,将根据指导方针和标准检查代码。静态代码分析的另一个好处是可以实现自动化。但是应该在软件开发生命周期(SDLC)的早期做这样的分析。  

十一、结论

在持续开发周期的所有阶段都参与测试可能会让人望而生畏。尽管如此,来自测试社区的许多成功案例表明,无论成为什么角色,这都是可能的。

一些专家表示,向开发人员展示如何进行测试的最佳方式是成为一名具有测试经验的开发人员。也有人说在项目的每个阶段都要“停下来思考和测试/审查”。如果有一些编码经验或对学习感兴趣,那么将其测试专业知识与实际开发工作相结合是一个很好的选择。  

无可争辩的是,测试人员都将负责创建高质量的交付。如果企业的项目或团队正试图左移,那么这一指南可能是一个很好的手册,可以帮助他们以更快的速度交付优秀的产品。

原文标题:

Shift Left Testing Tutorial: Comprehensive Guide With Best Practices,作者:Rhea Dube

原文链接:

https://dzone.com/articles/shift-left-testing-tutorial-comprehensive-guide-wi