发布时间:2026-08-31 10: 42: 00
Parasoft Jtest执行Java单元测试并采集代码覆盖率后,可以把测试结果上传到Parasoft DTP,由DTP把不同构建的代码变化、测试执行结果和Coverage数据关联起来,判断哪些测试受到代码修改影响。变更影响分析结果偏少时,通常不是单纯的代码差异识别问题,更常见的是Baseline与Target选择错误、Coverage Image不一致,或者同一次构建的数据被分散到了不同Build ID中。
一、Parasoft旗下Jtest怎么进行变更影响分析
Jtest负责准备单元测试和Coverage数据,DTP再根据两个Build之间的变化执行Test Impact Analysis。开始分析前,需要保证基线版本已经具备测试与覆盖率数据。
1、上传Baseline Build数据
①切换到准备作为基线的Java代码版本。
②使用Jtest运行当前JUnit测试。
③确认测试执行过程中已经采集代码覆盖率。
④打开Jtest使用的配置文件。
⑤设置【build.id】,给本次构建指定明确的Build标识。
⑥设置【report.coverage.images】,例如使用统一的【Unit Tests】Coverage Image。
⑦通过【session.tag】区分当前测试会话。
⑧确认结果上传到正确的【DTP Project】。
⑨执行测试后进入DTP检查当前Build。
⑩确认该Build同时存在Test和Coverage数据。
Baseline需要包含Coverage和动态测试数据。只上传Coverage或者只有测试结果,都不能建立完整的测试与代码关联。
2、上传修改后的Target Build
①切换到完成代码修改后的版本。
②给新构建设置新的【build.id】。
③保持【DTP Project】与Baseline一致。
④继续使用与Baseline对应的【report.coverage.images】。
⑤重新执行Jtest测试和Coverage采集。
⑥把结果上传到DTP。
⑦进入DTP的【Build Administration】。
⑧找到刚上传的Target Build。
⑨确认Coverage数据已经出现。
⑩如果同时上传了Test Run,再检查Test Details是否完整。
Target Build必须具备Coverage。如果已经带有测试运行数据,却没有Test Details,部分测试状态和Retest判断可能无法正确显示。
3、配置Test Impact Analysis
①进入Parasoft DTP Dashboard。
②添加【Tests Impacted by Change】Widget。
③在【Filter】中选择当前Jtest项目对应的Filter。
④在【Baseline Build】中选择修改前Build。
⑤在【Target Build】中选择修改后Build。
⑥在【Coverage Image】中选择Jtest上传的Unit Test覆盖率。
⑦保存Widget设置。
⑧点击分析结果进入【Files Impacted by Change】。
⑨查看修改文件对应的【Pass】【Fail】【Incomplete】和【Retest】数据。
⑩点击【Retest】可以继续进入Test Explorer查看需要重新执行的测试。
二、Jtest变更影响分析结果不完整如何检查
分析结果比预期少时,先去Build Administration看数据,而不是直接调整Widget。DTP默认选择的最近两个Build,不一定都包含Test和Coverage数据。
1、检查Baseline和Target是否选错
①打开【Build Administration】。
②找到当前Widget配置的Baseline。
③确认它确实来自代码修改前版本。
④查看该Build是否同时存在Test和Coverage。
⑤再打开Target Build。
⑥确认它对应本次修改后的代码。
⑦检查Target是否包含Coverage。
⑧如果最近两个Build中有一个只运行了静态分析,就不要直接拿它参与影响分析。
⑨回到Widget重新选择正确的两个Build。
2、检查Coverage Image是否一致
①在Baseline Build中查看Coverage表。
②记录Jtest数据对应的【Coverage Image】名称。
③打开Target Build检查相同项目。
④确认两次构建都存在同名Coverage Image。
⑤返回【Tests Impacted by Change】。
⑥重新选择正确的【Coverage Image】。
⑦刷新Widget。
⑧再次检查受影响文件和Retest数量。
Coverage Image是DTP聚合覆盖率的重要标识。Baseline使用Unit Tests,而Target上传到另一套Coverage Image时,两边数据就无法按预期对应。
3、检查Jtest上传参数
①打开Jtest配置文件。
②检查【dtp.project】。
③检查【build.id】。
④检查【report.coverage.images】。
⑤检查【session.tag】。
⑥如果同一次构建被拆成多个CI任务,确保这些任务使用相同build.id。
⑦需要合并到同一套Coverage时,保持Coverage Image名称一致。
⑧重新上传缺失的数据。
⑨回到Build Administration确认数据已经合并。
同一个Build被误用多个Build ID,会让每个构建只保留部分测试或Coverage,看起来就像变更影响结果缺失。
三、数据齐全但影响结果仍然偏少怎么继续检查
Build和Coverage Image都正确以后,可以继续从Test Details和历史覆盖关系检查。DTP只能根据已有Coverage判断测试与代码的关系,没有覆盖记录的代码无法直接推算出对应测试。
1、检查Test Details
①进入Target Build。
②打开【Test Explorer】。
③检查目标JUnit测试是否存在。
④确认测试名称和状态能够正常显示。
⑤存在Test Run但缺少Test Details时,重新检查Jtest结果上传。
⑥重新运行一小组JUnit测试。
⑦上传后再检查Test Explorer。
⑧重新打开影响分析Widget。
2、检查修改文件原本是否被测试覆盖
①进入【Files Impacted by Change】。
②找到发生修改的Java文件。
③查看该文件对应的测试数量。
④没有关联测试时,进入Coverage视图。
⑤检查Baseline中该文件是否有覆盖数据。
⑥Coverage为0时,先运行能够覆盖该代码的JUnit测试。
⑦重新上传测试和Coverage。
⑧再次执行影响分析。
3、检查两个Build是否来自同一分支
①确认Baseline使用的源码分支。
②确认Target使用的源码分支。
③如果一个来自main,一个来自development,重新选择同一分支上的Build。
④确认两次构建仍使用相同Filter。
⑤重新配置Baseline和Target。
⑥再次查看Retest结果。
DTP当前的Test Impact Analysis不支持直接比较不同分支上的测试数据,跨分支选择Build可能造成测试关系无法正确对应。
总结
Jtest变更影响分析依赖DTP中的构建、测试和覆盖率关联,结果不完整时应优先检查Baseline、Target、Coverage Image和Jtest上传参数,再确认修改文件在基线版本中是否已有测试覆盖。把同一次构建的数据归到一致的Build和Coverage范围后,Test Impact Analysis才能正确识别需要重新执行的JUnit测试。如需进一步了解Parasoft Jtest变更影响分析、测试覆盖关联与结果缺失排查方法,欢迎联系咨询。
展开阅读全文
︾