测试左移方法有助于用更小的测试窗口满足更快迭代周期的需求。团队需要采用适当的工具和过程来获得收益。
在部署之前,测试代码是软件开发生命周期的一个关键方面。随着开发速度的提高,产生高效结果的高效测试的重要性也在增加。
正如Capers Jones在他关于应用软件管理的书中所阐述的那样,高达85%的缺陷是在开发的编码阶段引入的。当开发人员在流程的早期执行更多的测试时,他们可以提高代码质量,并减少在部署代码的后期修复缺陷的时间。成本也扮演着重要的角色:与开发人员在开发中识别和纠正缺陷相比,发现和修复产品中的缺陷所花费的成本要高得多。
有了正确的工具和测试方法,开发团队可以使用测试左移来简化开发过程,提高代码质量并降低成本。当团队以低级功能为目标,利用特定的测试方法并强调标准和沟通时,左移测试可以成为开发周期中有价值的补充。
测试左移工具如何改进结果
软件产品由无数的小部件组成:模块、编码、算法和接口。开发人员分别构建每个部分,有时在不同的团队中;对这些部分进行集成;并对它们进行广泛的测试。
测试左移在检查代码结构和功能/函数问题时是最有效的。
测试左移方法侧重于团队在过程早期完成的项目部分的测试,例如软件的模块和其他子组件。测试左移在检查函数级别,代码架构,以及模块之间问题时是最有效的。
当开发人员发现并修复低级错误时,项目可以进入测试的中期到后期阶段——例如集成和用户验收测试——从而获得更大的信心和更快的结果。
最适合测试左移的工具在检查更细粒度的低级代码功能问题优势更明显。其他用于集成、用户验收测试和性能基准测试的工具在它们的角色中是有用的,并且与其他测试类型一起属于构成测试的所有工作。
测试左移的类型
实现测试左移方法更多的是工作流程和时间的问题,而不是技术或工具的大转变。许多流行的测试概念适合早期、频繁和低级的功能测试。与左移测试相关的测试类型包括:
静态测试。静态测试在构建代码库之前检查代码库。一个或多个代码检查器(也称为linter)分析代码的不同方面的问题,如漏洞、不正确的参数类型和不正确的接口使用。甚至ide也提供关于代码结构、内容和常见编码标点/拼写错误的实时反馈。有很多静态代码检查器可用,比如ESLint和Apache Yetus,大多数编程语言都至少有一个静态代码检查器。
单元测试。单元测试为小段代码(如模块或例程)提供功能测试。开发人员在这些代码片段成为应用程序的一部分之前对它们进行测试。因此,单元测试工具非常适合测试左移方法。
测试驱动开发(TDD)。使用TDD,开发人员在开发代码之前编写测试。然后,开发人员根据测试运行完成的代码以验证代码。
行为驱动开发(BDD)。作为TDD的扩展,BDD建立了一种公共设计语言,以促进开发人员和其他软件项目涉众之间的协作和理解。当每个人都使用相同的术语和概念时,沟通会更好。更少的误解会导致更少的代码缺陷。
工具很少以左移的方式单独工作。成功向左转移的开发团队实现了经过深思熟虑和验证的编码标准。编码标准包括组织编写代码和模块的通用需求和规则,变量或子程序的命名约定以及其他指导。当所有开发人员以相同的方式编写代码时,他们可以减少导致错误和缺陷的不一致。
测试左移工具
由于左移是一个概念,而不是一种特定的技术,组织可以根据他们的左移测试目标从无数的测试工具中进行选择。他们工具包中的某些现有工具可能已经支持左移测试计划。许多工具迎合了左移运动:
* Katalon Studio。用于连续测试的低代码测试自动化工具。
* Ranorex Studio。一个无代码的测试自动化工具,支持多语言的左移测试。
* Sauce Labs。一个通过或失败的测试工具,适用于每个框架、浏览器、操作系统、移动设备和API。
* TestLeft。SmartBear的一个工具,目标是在任何IDE下进行左移自动测试。
* Testsigma。一个基于云的测试自动化工具,用于web, Android和iOS应用程序和api。
左移方法必须适合DevOps或其他CI/CD范例。因此,工具选择应该包括对自动化和工作流支持的评估,以及与其他CI/CD管道工具的集成。
测试左移的好处
一个有效实现的左移计划可以对开发人员环境产生一些影响,包括更快的测试、高质量的代码和开发人员的参与。
更快的整体测试。甚至CI/CD管道在迭代周期的测试阶段也会经历延迟。开发人员构建代码,在代码上运行测试,然后团队收集结果并根据需要进行更改。在开发过程中尽早完成更多的测试,将测试分配给开发人员和专门的测试人员,并在团队运行广泛/完整的测试套件之前捕获错误。
更好的代码质量。通过将更多的测试转移到周期的早期部分,开发人员可以减少错误,并且可以对交付的代码更有信心。另外,因为更多的开发人员正在编写测试,所以左shift会创建大量不同的测试来验证代码库。
更多的开发人员参与。测试是一项开发人员的活动,但它通常由选定的人员执行。左shift将更多的测试责任放在编码人员身上,这可以创建对测试活动和编码标准更敏感的更好的编码人员。
测试左移需要关注测试开发和维护。对于编写测试的开发人员,测试逻辑和测试数据的管理是至关重要的。团队应该将测试评审和维护任务添加到现有的开发周期中,以确保他们不会忽略测试需求中的变化。