转载

Parasoft Jtest——如何征服遗留代码

Parasoft Jtest 是一款能够无缝集成 Parasoft SOAtest 的Java自动化测试工具,重点应用于针对Java代码的静态分析、代码审查、单元测试和运行时错误检测。当您处理遗留代码时,通常需要一种可持续的方式来管理代码的变更。您可以通过利用适当的技术来克服遗留代码给敏捷和DevOps所带来的阻碍

Parasoft Jtest——如何征服遗留代码

什么是遗留代码

许多人使用遗留代码来表示旧代码,但旧和遗留在一些层面上有一定的区别。本文用遗留代码定义团队里知识有限的任何现有代码。

由于以下几个原因,有关代码的知识可能不完整,例如:

  • 团队从该组织的另一部分获得了一个项目。
  • 原作者离开了团队,很有可能一起带走了只有他才了解的那部分代码。
  • 代码提供的功能不再是保持不变的业务优先级,导致忘记了代码的详细信息。

首先要明确一点,遗留代码是规则而不是例外。当今世界上的许多软件基础架构都运行在遗留代码上。那么当我们需要进行更改时,如何降低与遗留代码相关的风险变得至关重要。

传统代码是敏捷和DevOps的障碍

遗留代码的问题不在于它存在的时间,而是您不了解更改它会如何影响现有功能。如果您正在转换到新的开发方法,例如敏捷或DevOps,那么与遗留代码相关的知识差距可能会成为障碍。

敏捷和DevOps已经成为创建软件的主要方法,因为它们可以帮助团队在最小的市场特性准备就绪后快速迭代和发布应用程序。短暂而频繁的开发周期是迭代开发方法的标志,但是当您处理遗留代码时,这些方法不会为减轻可能存在问题留出空间,尝试快速迭代您不理解的代码可能会引入新问题。

现实情况是,在开始新项目时,这些技术更容易应用。对于已经存在一段时间的项目而言,团队通常使用涉及遗留代码的系统。开发人员可能不知道现有代码库如何工作,但仍必须修复缺陷或扩展功能而不会引入新问题。看似微小的变化也会对应用程序产生重大影响。

更新旧代码的3个步骤

创建基线并将质量活动的范围缩小到受计划更改影响的代码区域,而不是尝试在宏观层面上工作。在进行测量以评估代码的范围和状态之后,您应该创建捕获当前行为的测试,以便团队可以了解更改如何影响现有功能。

然后您可以利用一系列技术来帮助您在重构遗留代码时收集分析,并确保您对代码更改的投入可以提高遗留系统的安全性、保密性和可靠性。

1、定义范围

了解如何影响系统行为至少需要一个数据点,首先选择基线构建并开始跟踪指标,设置范围并查看遗留代码的三个特征:

  • 静态分析违规程度。
  • 目前的测试覆盖范围。
  • 清理代价

Parasoft Jtest 提供了一个功能强大的分析平台,用于捕获、关联和分析报告代码中的违规、测试结果、覆盖率和其他软件质量数据。该平台超越了静态报告,它还应用了额外的分析来帮助您识别受变更影响的应用程序部分。

利用资源组的概念,您可以识别一组特定的文件或目录、覆盖范围、静态分析违规以及指向这些特定资源的指标数据。此信息可帮助您在代码库的这些部分进行更改之前为代码库区域创建基线。

2、捕获行为

有了初始数据点的帮助,下一步通过创建测试开始捕获系统的当前行为。构建高质量的回归套件不仅可以捕获现有行为,还可以提高覆盖率,作为确保更改不会破坏功能的安全网。

Parasoft Jtest 可以使您能够基于现有代码批量创建JUnit测试的基线和断言。Jtest还包括创建直接访问私有方法的测试的能力,以便在遗留代码最初编写时不考虑可测试性。

最好通过有意义的测试来扩展覆盖范围。在分析覆盖差距期间,Jtest可以识别现有代码中未经测试的克隆和变异的部分。Parasoft在创建现有测试方面做了大量工作,Jtest中的克隆和变异功能增加了创建测试投资的回报。

3、改进隔离的遗留代码

通过捕获系统的行为,您可以开始修复违规、解决PR或应用您想要关注的更改,同时将破坏现有功能的风险降至最低。Parasoft可以帮助您管理现有的技术债务,并将数据(如静态分析违规)放入适当的工作流程中,以便轻松地重新确定优先级,抑制或解决这些数据,从而提高应用程序的整体质量。

解决遗留代码中技术债务的最佳时机是在进行更改时。报告的数据应包括在有关项目的整体统计信息中。技术债务可能不会立即对应用程序产生影响,但您应该应用最佳实践来系统地包含和管理它。您需要在进行更改时重构遗留代码,将有助于您逐步减少技术债务。

确保修改代码的覆盖范围

此过程有助于确保更改范围不会对现有功能产生负面影响,但您还需要确保团队遵循前进的良好实践。随着代码的发展,继续保持高水平的覆盖率并编写或更新测试需要在知识层面上获得支持。

通过分析指定基线构建之间的变化,您可以专注于监控整个代码库中的变化。在整个代码库中实现100%的覆盖率是不切实际的,但通过监控修改后的代码的覆盖范围,团队可以专注于正在积极处理的代码部分,并确保所有更改都经过测试。

总结

世界的软件运行目光正在从团队传递到团队的代码上,处理遗留代码是一种常见的需求。关于代码的知识差距提示了潜在的风险,因为开发人员需要进行更改以维护或扩展功能,而本文提及的 Parasoft Jtest 对遗留代码的处理流程和技术可以帮助用户获得推进团队中任何代码库的信心。

原文  https://juejin.im/post/5c36fe1251882533e05ed1de
正文到此结束
Loading...