在此版本中,我们专注于优化安全合规性解决方案,增强单元测试助手的功能。
扩展 Java 支持
添加 Java 11 支持。
扩展 IDE 和构建系统支持
现已支持:
- Eclipse 4.9, 4.10, 和 4.11
- IntelliJ 2018.3 和 2019.1
- Maven 3.6.0
平台支持
现已支持:
- Windows Server 2019
不再支持以下操作系统:
- Windows 8
- Windows Server 2008
Security Compliance Pack
在此版本中,我们引入了 Security Compliance Pack,您可以即时获取能够帮助您严格遵循安全标准与实践的测试配置。Security Compliance Pack 包含以下测试配置:
- CERT for Java
- CWE 3.2
- CWE SANS Top 25 2011
- CWE SANS Top 25 2011+On the Cusp
- OWASP Top 10-2017
- PCI DSS 3.2
- UL 2900
详细信息,请参阅内建测试配置:Security Compliance Pack。
Security Compliance Pack 需要激活专用的许可证功能。有关许可的更多详细信息,请联系 Parasoft 支持。
单元测试助手功能增强
此版本改进了测试创建过程,优化了测试执行后显示的建议。
新增和优化建议
- 添加抛出 NullPointerException 建议类型,帮助您避免抛出 NullPointerException 异常;请参阅抛出 NullPointerException。
- 优化异常和断言错误建议,包括用于帮助您处理异常和自动更新测试代码的操作链接;请参阅异常和断言错误。
- 扩展未覆盖的代码建议,针对未被任何测试覆盖的异常捕获代码块显示;请参阅未覆盖的代码。
增强单元测试助手创建
现在您可以:
- 在为 Spring 类创建测试时创建标准 JUnit 测试或使用 Spring 框架的测试;请参阅创建 Spring 单元测试和创建测试套件。
- 为更多 Spring 组件创建测试:@Component、@Controller、@RestController、@Repository 以及 @Service;请参阅创建 Spring 单元测试。
- 将 UTA 配置为通过在类级别添加 @InjectMocks 和 @Mock 注解来初始化模拟;配置模拟初始化。
我们还优化了深度初始化模式,从而在创建测试时自动初始化不可访问的字段和父类中的字段。
测试影响分析优化
- 测试与代码之间的关联信息现在可以在 IDE 重启后保留。
- 现在可以通过“受影响的单元测试”视图的上下文菜单导航至测试代码并运行所选测试。
详细信息,请参阅测试影响分析。
新增和更新的测试配置
添加以下测试配置:
- CWE 3.2
- CWE SANS Top 25 2011+On the Cusp
- CWE SANS Top 25 2011
- OWASP Top 10-2017
- PCI DSS 3.2
- UL 2900
以下测试配置已从 Static Analysis 类别移至 Security Compliance Pack 类别下(请参阅 Security Compliance Pack):
- CERT for Java
更新以下测试配置以优化分析结果:
- Demo Configuration
- Flow Analysis Aggressive
有关 Jtest 提供的测试配置列表,请参阅内建测试配置。
弃用的测试配置
- CWE-SANS Top 25 2011 – 已弃用,并由 CWE SANS Top 25 2011 测试配置替代
PCI Data Security Standard – 已弃用,并由 PCI DSS 3.2 测试配置替代。
- UL 2900 – 已弃用,并由新增的 UL 2900 测试配置(包括 CWE SANS Top 25 2011 on the Cusp 和 OWASP Top 10 2017 规则)替代。
- OWASP Top 10 2017 – 已弃用,并由 OWASP Top 10-2017 测试配置替代
已弃用的测试配置默认不可用,只能用作用户自定义的测试配置。现在,这些配置位于 Jtest 安装目录的以下位置:[INSTALL_DIR]\configs\Deprecated。
新增的静态分析规则
添加以下静态分析规则:
规则 ID | 标题 |
---|---|
BD.PB.CHECKRET | 持续检查非 void 方法的返回值 |
BD.PB.INTOVERF | 避免整数溢出 |
BD.SECURITY.TDPASSWD | 防止使用未受保护的凭据 |
CODSTA.ORG.TODOJAVA | 确保注释不包含 task 标签 |
CODSTA.ORG.TODOPROP | 确保注释不包含 task 标签 |
CODSTA.ORG.TODOXML | 确保注释不包含 task 标签 |
SECURITY.IBA.AUXD | 避免使用 XMLDecoder 解析不受信任的数据 |
SECURITY.IBA.DXXE | 禁用 XML 外部实体注入 |
SECURITY.IBA.RUIM | 确保正确的会话有效期 |
SECURITY.IBA.SC | 禁用 LDAP 反序列化 |
SECURITY.UEC.STTL | 确保在 'web.xml' 中将 session 配置为超时 |
SECURITY.WSC.ACMD | 避免使用自定义 MessageDigest 实现类 |
SECURITY.WSC.AISSAJAVA | 避免使用不安全的加密算法对 Spring 进行数据加密 |
SECURITY.WSC.AISSAXML | 避免在 Spring XML 配置中使用不安全的加密算法 |
SECURITY.WSC.AUNC | 避免使用非测试类中的 javax.crypto.NullCipher 类 |
SECURITY.WSC.DMDS | 避免在生产代码中使用 DriverManagerDataSource 类 |
SECURITY.WSC.EWSSEC | 避免从 Spring 安全框架到日志的调试信息 |
SECURITY.WSC.HGRSI | 避免使用 HttpServletRequest 类中的 'getRequestedSessionId()' 方法 |
SECURITY.WSC.HV | 确保 HostnameVerifier.verify() 方法验证证书 |
SECURITY.WSC.MCMDU | MessageDigest 对象必须使用 'update' 方法处理数据 |
SECURITY.WSC.MDSALT | 使用具有 salt 的 hash 函数 |
SECURITY.WSC.PBFA | 确保有提供对多次身份验证尝试失败的保护 |
SECURITY.WSC.SCHTTP | 标记 cookies 为 HttpOnly |
SECURITY.WSC.SIKG | 初始化 KeyGenerator 实例 |
SECURITY.WSC.VSI | 正确验证服务器标识 |
更新的静态分析规则
更新以下规则的输出消息,因此,与这些规则有关的 DTP 抑制可能不再可用:
- PB.IKICO
- PB.NUM.UBD
- SECURITY.ESD.SIO
- SECURITY.UEHL.LGE
- SECURITY.WSC.ICA
- SERIAL.RWAF
- SECURITY.WSC.UOSC
- PB.API.MASP
解决的 Bug 和 FR
Bug/FR ID | 说明 |
---|---|
JT-49237 | json 测试和资源路径不存在 |
JT-70472 | ‘Flow Analysis Aggressive’测试配置在本地复制后无法编辑 |
JT-70473 | PB.NUM.UBD 只检查 float 或 double 变量 |
JT-70475 | PB.IKICO 误报 |
JT-70584 | jtest-monitor 目标无法在附加项目上生成 coverage.xml 文件 |
JT-70618 | 无法收集目标项目的应用程序覆盖率 |
JT-70653 | 在 html 报告中运行 jtest 后出现 Spring Security 类型 |
JT-70653 | 在 html 报告中运行 jtest 后出现 Spring Security 类型 |
JT-70817 | 通过 CLI 进行分析时无法解析导入 javafx.application |
JT-70827 | 将“.”作为 project.location 参数提供无法按预期生效 |
UTA-3675 | 使用 Mockito 注解时的模拟建议。 |
UTA-4019 | 没有为参数化的 Spring 测试模拟方法 |
XT-36321 | 在各种版本的 IntelliJ 中创建空 PDF 报告。 |
XT-36478 | 无法从 IntelliJ IDE 获取 Jtest 运行所需的许可证。 |
XT-36549 | IDE 中设置的用户名可以覆盖系统用户吗? |
XT-36671 | 在 Eclipse 中执行影响测试时,JUnit 视图乱码。 |
XT-36705 | 基于变更的测试在日语环境中不起作用。 |
UTA-3675 | 使用 Mockito 注解时的模拟建议。 |
UTA-4019 | 没有为参数化的 Spring 测试模拟方法 |