📜  左移测试方法

📅  最后修改于: 2022-05-13 01:56:59.927000             🧑  作者: Mango

左移测试方法

软件测试是必须的。它确保产品无故障地发布给最终客户。作为一个广泛讨论的话题,有很多方法可以测试软件。

一些公司支持产品设计的“瀑布方法”。在这里,软件是按顺序设计的。它严格经历以下开发周期:

1. Requirements/Gathering
2. Design
3. Development
4. Deployment 

测试被委托给产品设计的最后阶段(部署阶段之前)。这通常称为“右移测试”。

在最后阶段进行测试——一种劣势策略:
所有代码都容易出现错误。根据错误的类型,错误可能是次要(低风险)或主要(高风险)。

越早发现这些错误越好。它让开发团队有时间毫不拖延地修复软件,并避免长时间的最终测试阶段。当没有同时出现太多错误时,修复错误软件也更容易。这就是右移策略在大多数情况下无效的原因。

实际上,遍历最终产品的每条编码行都令人筋疲力尽——只是为了找到一两个错误。最好在开发代码时修复每个单元。这就是左移的用武之地!

  1. 改进的代码质量:
    越早发现错误越好。它允许测试和开发团队之间更好的沟通。它允许两个团队一一解决每个错误。

    将其与右移方法进行对比。在这里,一次解决所有错误。许多可能会被遗忘或忽略(由于时间或预算限制)。

  2. 多种测试类型:
    在每个设计阶段测试代码时,可以应用多种测试类型。

    例如,单元测试是一种可能的左移方法。在这里,每个组件都被单独测试以检查单个错误。此外,集成测试可以在设计阶段频繁进行。这确保了错误不会随着不同的单元一起分配而发展。

    将其与右移策略进行对比,后者仅允许进行系统测试。即使这样也不准确,也不能有效地发现所有错误。

    发现设计缺陷和架构问题:
    有时,错误不是问题。正在实施的可能有缺陷的主要方面(或想法)。这些缺陷(可能会干扰其他代码)应该尽早发现。否则,过多的时间会浪费在实施不可行的主要设计计划上。

    这是左移测试的另一个附加优点。毕竟,较小的单元测试是自动化的,并且它们的测试用例很容易设计。

    与系统测试相比——这需要时间,并且必须手动完成。也不能经常重复。正是这种可重复性使左移方法变得更好。它允许产品具有更好的代码质量,减少高风险错误的机会!

  3. 降低开发和测试成本:
    早期发现的错误可以减少副作用的机会。

    由于需要担心的副作用更少,因此可以按时完成产品发布。最终代码可以交付给最终客户,而无需未来的修复。在这里,建议在每次构建后进行错误测试。这允许更好的自动化连续测试,这对于大错误大小是不可能的。

    此外,左移方法减少了对系统测试的需求。事实上,如果经常进行测试,这可能会完全消除。

    未来版本的问题更少:
    许多软件都设计有在线功能。它们的设计也是为了修补未来的版本。如果以前的版本有未修复的错误,则无法添加这些未来版本。

    这会导致“弓波”效应,其中可能会叠加多个错误副作用。结果是,某些错误变得无法修复。

  4. 让所有项目利益相关者了解:
    使用左移方法,在软件开发的每个关键阶段进行测试。结果,测试团队最终(必然)参与了项目的规划。他们还了解其业务目标。

    这使他们能够更好地了解软件的用途。它使他们能够在测试过程中找到创造性的想法和解决方案。另外,它使他们保持动力。因为测试团队了解他们的努力从长远来看会做出什么贡献。

  5. 让开发团队保持认真:
    许多设计项目将开发人员置于创建代码的位置。但是在写每一行的时候检查质量呢?

    通过鼓励频繁的测试,这种思维方式在开发人员中根深蒂固。而且由于测试需要耗时的修改,它可以确保开发人员在编写代码时最大限度地减少错误。

    通过左移方法,鼓励开发人员更加负责。它还提高了他们的技能和熟练程度!

  6. 改进的测试协作:
    左移方法利用了频繁的“自动化”。它使他们可以执行连续测试以减少时间。但是,这仍然留下了设计这些测试的问题。这通常留给测试团队来解决。

    此外,这里的问题是,设计最好的测试需要了解产品的目的,以及它的业务目标。

    使用左移方法,由于开发人员和测试团队一起工作——他们可以根据彼此的输入设计自动化测试。这导致开发在发现错误和问题时真实且准确的测试场景。

选择适合您的方法:
左移方法可以通过多种方式进行练习。它们适合各种规模的软件(从大型在线平台到小型移动应用程序)。结果,您会发现您的设计截止日期因项目而异。因此,您选择的方法会有所不同。

  • 基于模型:
    至少有一半给定软件的错误出现在需求收集阶段。在那个阶段发现错误可以减少以后修复错误的需要。另外,他们让测试团队了解项目的基本目标。
  • 传统测试:
    在这里,重点是通过单元和集成测试进行持续测试。它尽可能关注自动化,从而节省时间和开发成本。

    这种形式的测试倾向于忽略验收和系统测试(其结果或多或少通过频繁的单元/集成测试得到保证)。

  • 增量测试:
    这试图模仿传统的测试模型——但它是针对大型项目的。测试被分解成小块,其中一组代码被测试。将代码集成在一起后,会再次对其进行测试以确保没有错误。
  • DevOps/易碎测试:
    这种测试形式的执行频率低于传统模型,适用于期限紧迫的小型项目。