此版本包括以下功能增强:

发布日期:2021 年 11 月 2 日

Azure DevOps 和 GitLab 集成

添加可帮助您简化 CI 系统工作流程的增强功能。现在,您可以直接在 Azure Pipelines 或 GitLab 中查看 Jtest 报告的结果。

Azure DevOps 集成

新增用于 Azure DevOps 的 Jtest 扩展,实现 Jtest 与 Azure DevOps 管道的集成。该扩展提供了一项任务,用于使用 Jtest 运行分析,并以 Azure DevOps 专用的 SARIF 格式生成 Jtest 报告。之后,每次管道执行时,分析结果便会显示在构建结果中。详细信息,请参阅 https://marketplace.visualstudio.com/items?itemName=parasoft.jtest-azure-devops

GitLab 集成

现在,您可以通过修改您的 GitLab 工作流程来与 GitLab 集成,以使用 Jtest 运行分析,并以 SAST 格式生成分析报告。这样,您就可以在 GitLab 中查看 Jtest 报告的代码漏洞结果。详细信息,请参阅 https://gitlab.com/parasoft/jtest-gitlab

增强单元测试助手

引入新特性,增强现有功能,帮助您简化测试创建过程和轻松配置 UTA 选项。

新增和增强的 UTA 功能

新增覆盖率选项

现在,UTA 可以为每个方法创建多个测试用例,以覆盖被测方法中不同的代码分支。您可以创建针对以下目标优化的测试套件:

  • 最大代码覆盖率 – UTA 将创建测试,以最少的测试数量覆盖尽可能多的执行路径。
  • 测试套件可维护性 – UTA 将创建较少的测试,覆盖主要执行路径,从而降低测试的复杂性并提高可维护性。

详细信息,请参阅创建测试套件

自动添加断言

现在,UTA 在批量创建测试时,会使用创建测试套件(原添加测试用例)为生成的测试添加断言;请参阅 UTA 的其他变更。  生成测试后,UTA 运行测试并捕获被测代码的行为,添加验证被测方法返回值(如果有的话)的断言和被测类中发生变更的字段。请参阅创建测试套件

UTA 功能增强

  • 添加测试套件选项已重命名为创建测试套件并且对话框中的选项已简化为仅显示最常用的选项。所有其他选项都已移至首选项中。请参阅 UTA 的其他变更
  • UTA 现在支持使用 Lombok 框架的项目。
  • 针对期望抛出异常的代码,测试用例现在被配置为期望该异常被抛出。
  • 添加对 @InjectMocks 的增强支持。
  • 优化字符串初始化,使用能够覆盖被测方法中特定代码块的值。
  • 优化传递给工厂方法的值的初始化方式,以覆盖被测方法中特定代码块。

UTA 的其他变更

功能更新参考
批量创建测试用例
  • 添加测试用例选项已重命名为创建测试套件
  • 使用创建测试套件选项创建的测试现在会自动运行,通过跟踪和做出断言功能添加断言。
创建参数化测试
  • 创建参数化测试现在必须在 UTA 首选项中启用和配置。
  • 参数化测试不再使用创建测试套件(原添加测试用例)选项创建。您只能使用单元测试助手视图中的参数化选项来创建参数化测试。
  • 配置参数化测试的选项已从批量创建对话框移至 UTA 首选项中。
创建 Spring 测试
  • 现在必须在 UTA 首选项中启用和配置创建 Spring 测试。
  • Spring 测试不再使用创建测试套件(原添加测试用例)选项创建。  您只能使用单元测试助手视图中的 Spring 选项之一来创建 Spring 测试。
  • 配置参数化测试的选项已从批量创建对话框移至 UTA 首选项中。
首选项

配置选项呈现方式更加合理、直观,方便您快速配置 UTA。

测试执行超时配置测试的超时 (单位: 毫秒) 选项已从批量创建对话框移至首选项页面。
断言模板

启用生成示例断言选项后,使用创建测试套件(原添加测试用例)选项创建测试时,不再向测试代码添加断言模板。

通过 Docker 容器运行 Jtest

现已支持在 Docker 容器镜像中部署 Jtest。通过 Docker 容器运行 Jtest 使您可以在容器化环境中利用 Jtes 的功能,以确保整个团队和多个开发周期的一致性。请参阅在 Docker 容器中部署 Jtest

扩展 Java 支持

Jtest 现已支持分析 Java 16 和 17 编写的代码。

IDE 支持

新增对以下 IDE 的支持:

  • IntelliJ 2021.1
  • Eclipse 2021-03 (4.19)
  • Eclipse 2021-06 (4.20)
  • Eclipse 2021-09 (4.21)1

1 此 IDE 运行 Java 16,可能会影响测试影响分析。相关解决办法,请参阅已知局限性

Cucumber 支持

您现在可以将 Jtest 与 Cucumber(读取用自然语言编写的可执行规范的工具)集成。与 Cucumber 集成后,Jtest 可以报告结果并收集 Cucumber 测试的覆盖率数据。请参阅与 Cucumber 集成

扩展 Security Compliance Pack

扩展 Security Compliance Pack,添加对 CWE 和 OWASP Top 10 最新版本的支持。请参阅新增和更新的测试配置部分。

新增和更新的测试配置

添加以下测试配置:

  • CWE 4.5
  • CWE Top 25 2021
  • CWE Top 25 + On the Cusp 2021
  • OWASP Top 10-20211

 1 此为该测试配置的预览版本,并非 Parasoft Compliance Pack 解决方案的一部分。不支持使用 DTP 上的合规性扩展检查违规。

删除的测试配置

  • CWE 4.4
  • CWE Top 25 2020
  • CWE Top 25 + On the Cusp 2020

新增和更新的静态分析规则

添加以下规则:

规则 ID标题
SECURITY.WSC.IDP避免将写或执行文件权限设置给非指定的用户

更新以下规则:

  • BD.SECURITY.TDRESP
  • SECURITY.WSC.MCNC
  • UC.UIMPORT

接受 Parasoft 最终用户许可协议

您必须接受 Parasoft 最终用户许可协议(EULA)才能使用 Jtest。Parasoft EULA(最终用户许可协议)可在 Jtest 安装目录和 https://www.parasoft.com/license 中获取。

要同意 EULA 的条款,请在您的 jtestcli.properties 配置文件中启用以下设置:parasoft.eula.accepted=true。

如果在 IDE 中安装 Parasoft 插件,安装向导会提示您接受 EULA,并且 EULA 接受设置将自动添加到 jtestcli.properties 文件中。

其他功能增强

  • 新增对 Gradle 7.0 的支持。
  • 新增对 Lombok 1.18.20 的支持。
  • 现在,您可以通过 HTTPS 协议连接 Jtest 覆盖率代理。请参阅通过 HTTPS 连接覆盖率代理

解决的 Bug 和 FR

Bug/FR ID说明
FA-8624BD.EXCEPT.NP 误报。BD.EXCEPT.NP 针对在 for 循环中被赋值为非空值的变量触发报告。
FA-8650尝试简化链式强制转换后 CFG 不正确
JT-73624 关闭数据库时出现异常
JT-73664SECURITY.WSC.MCNC 规则中的 NPE
JT-73698执行分析时能否跳过 Lombok 自动生成的代码?
JT-73720UC.UIMPORT 误报
UTA-5250支持 Lombok 框架
XT-39322 在轻量级 Parasoft 插件中请求许可证时,代理设置未生效

有关此版本的信息,请参阅 https://docs.parasoft.com/display/JTEST20212/Updates+in+2021.2