在此版本中,我们专注于扩展 Jtest 的单元测试功能并增强安全合规性解决方案。
IDE 支持
新增对以下 IDE 的支持:
- Eclipse 2019-06 (4.12)
- Eclipse 2019-09 (4.13)
增强单元测试
支持 Junit 5
Jtest 现已支持 JUnit 5。您可以在桌面和命令行执行 JUnit 5 测试并收集覆盖率信息。此外,桌面版用户可以使用单元测试助手创建和增强 Junit 5 测试,以及在 Eclipse 或 IntelliJ IDEA 中执行测试影响分析。
新增的 JUnit 5 Best Practices 测试配置可帮助您处理同时包含 JUnit 4 和 JUnit 5 测试的项目,也可帮助您将测试从旧版框架迁移到 JUnit 5 中;请参阅内建测试配置。
与在旧版框架(如 Junit 3 或 JUnitParams 10.0.4)中创建的测试相关联的历史结果在 DTP 中可能不再可用。
扩展 Security Compliance Pack
增加对最新版通用弱点枚举(CWE)的支持。新增静态分析规则并扩展部分现有规则,实现对 CWE 3.4 的支持,包括 CWE Top 25 2019 和 On the Cusp 指南;请参阅下面的新增和更新的测试配置部分。
新增和更新的测试配置
添加以下测试配置:
- CWE 3.4
- CWE Top 25 2019
- CWE Top 25 + On the Cusp 2019
JUnit 4 Best Practices
JUnit 5 Best Practices
TDD 测试配置已重命名为“TDD Best Practices”。
删除的测试配置
- CWE 3.2
- CWE-SANS Top 25 2011
- CWE SANS Top 25 2011 + On the Cusp
- Unit Test Assistant
- Unit Testing Best Practices
其他变更
- 添加
-project.jsonpath
选项。手动创建 .json 文件(使用-project.*
选项)时,您可以通过配置此选项来自定义文件的默认名称和位置;请参阅创建自定义 .json 数据文件。 - 改变覆盖率数据文件的结构,增强静态和动态覆盖率的匹配机制。因此,Jtest 不再允许分析 Jtest 旧版本生成的覆盖率数据文件。要收集和合并覆盖率数据,需确保您的基础架构中所有 Jtest 实例的版本一致。
- 将
License.network.enabled
选项重命名为license.network.use.specified.server
;请参阅设置许可证。 - 优化内存使用以提高性能。
新增和更新的静态分析规则
添加以下规则:
规则 ID | 标题 |
---|---|
BD.SECURITY.TDCODE | 在用于生成代码的方法之前,验证可能受污染的数据 |
BD.SECURITY.TDSESSION | 不要在 HTTP 会话中存储不可信的数据 |
FORMAT.MCH | 在每个源文件中包含有意义的文件头注释 |
JUNIT.AUL | 避免在 JUnit 测试中使用循环 |
JUNIT.IGNORE | 确保使用 @Ignore 的 JUnit 5 测试类使用 @ExtendWith(IgnoreCondition.class) 或者 @EnableJUnit4MigrationSupport 进行注解 |
JUNIT.RPL5 | 在将测试迁移到 JUnit 5 时不要使用 JUnit 4 注解 |
JUNIT.TDIR | 不要在 JUnit 5 测试中使用 TemporaryFolder 规则 |
SECURITY.UEHL.DCEMSL | 使用 Seam 日志 API 记录消息时,避免不可信的输入 |
SECURITY.WSC.BUSSB | 防止外部进程阻塞输出或错误流 |
SECURITY.WSC.PBRTE | 始终指定执行命令的绝对路径 |
SERIAL.VOBD | 在反序列化之前验证对象 |
SPRING.DCSRFJAVA | 不要禁用 CSRF 保护 |
SPRING.DCSRFXML | 不要禁用 CSRF 保护 |
SPRING.REQMAP | 确保使用 @RequestMapping 注解的方法指定 它们调用的 HTTP 请求方法 |
此外还添加了 NOMCIM 指标来计算方法中的方法调用次数。
更新以下静态分析规则以优化分析结果:
- BD.SECURITY.TDFNAMES
- CODSTA.BP.NTX
- FORMAT.CBRACE
- FORMAT.LL
- GC.OSTM
- GLOBAL.ACD
- JUNIT.AEAT
- JUNIT.ANAT
- JUNIT.ANBA
- JUNIT.ASAT
- JUNIT.ASSERT
- JUNIT.AST
- JUNIT.CBA
- JUNIT.DIR
- JUNIT.ETCTA
- JUNIT.FAIL
- JUNIT.FICB
- JUNIT.ISMTC
- JUNIT.MAIN
- JUNIT.OSIC
- JUNIT.OSUM
- JUNIT.OTDM
- JUNIT.SIA
- JUNIT.SIFN
- JUNIT.TATC
- JUNIT.TEST
- JUNIT.UPJT
- NAMING.NTEST
- PB.TYPO.EB
- SECURITY.WSC.ASAPI
- SECURITY.WSC.DMDS
- SECURITY.WSC.ICA
- SECURITY.WSC.SL
- SECURITY.WSC.STREP
- TRS.ISTART
- TRS.UCM
更改以下规则的严重等级:
- SECURITY.WSC.ASAPI - 从严重度 5 提高至严重度 3
更新以下规则的输出消息,因此,与这些规则有关的 DTP 抑制可能不再可用:
- BD.PB.CHECKRET
JUNIT.AEAT
JUNIT.ANAT
JUNIT.ASAT
- JUNIT.FAIL
- JUNIT.OSUM
- JUNIT.OTDM
- SECURITY.WSC.ASAPI
- TRS.ISTART
解决的 Bug 和 FR
Bug/FR ID | 说明 |
---|---|
JT-70763 | 在 Jtest 10.x 中实现 FORMAT.MCH 规则的请求 |
JT-70857 | 已弃用规则的文档 |
JT-71241 | 审查报告不存在的退出码 137 的原因 |
JT-71244 | 作为虚拟文件夹导入时未找到依赖项 |
JT-71273 | 使用“Create separate module per source set”选项导入到 IntelliJ 的项目,测试范围为空 |
JT-71381 | 预/后分析脚本启动失败时,Parasoft 控制台缺少问题详细信息 |
JT-71382 | Jtestcli.bat 通过 Eclipse Runner 执行时无法从 DTP 获取许可证 |
JT-71397 | 扩展 FORMAT.LL 规则,使用与编辑器一致的方式处理制表符 |
JT-71592 | Project.location 路径不存在时出现错误消息 |
JT-71830 | GLOBAL.ACD 规则在 ACD.java 中发生 NumberFormatException 异常 |
JT-71831 | PB.EB 规则中出现 ArrayIndexOutOfBoundsException: 0 |
UTA-3956 | 因命名冲突未能创建测试类 |
UTA-4459 | Spring MVC 测试使用常量名称而不是值。 |
UTA-4511 | 不应模拟对 getClass 或 toString 的调用 |
UTA-4529 | dumb 模式导致建议不稳定。 |
UTA-4529 | UTA 语法树不完全支持注解值。 |
UTA-4554 | 测试用例创建期间反编译类出现性能问题。 |
XT-36609 | 密码中的 £ 字符会阻止 Parasoft 工具连接到 DTP |
XT-36611 | 使用‘min’选项发布 sim-link 源代码失败 |
XT-36843 | 尝试获取许可证时,使用 cpptestcli 的并发构建不等待超时 |
XT-36950 | 从 XML Graphics Project 更新存在漏洞的库 |
XT-37358 | 100% 成功通过测试时,报告中不会显示 100% |