You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

4.5 KiB

W2-T6 测试隔离修复独立复审报告

Verdict

PASS

T6 原 Review 中唯一 Important finding 已关闭。新增的三个隔离测试均通过服务返回结果进行断言,能够分别证伪 nameZh 分支、alias 匹配链路和 alias 归属隔离的相关回归;类级事务确保测试数据回滚。未发现新的阻断项,T6 可进入下一任务。

Finding 关闭状态

T6-I1:nameZh 与 alias 匹配遗漏无法证伪

状态:已关闭。

  1. nameZh-only 隔离成立

    • 测试:matchesOnlyNameZhForV36JavaWhenOtherIdentityFieldsDoNotMatch
    • 位置:D:\1\zhi\zhilai\mydreamjob-server\src\test\java\com\mydreamjob\skill\SkillMatchServiceTest.java:237-252
    • 第 239 行先将 V36 Java 的 code 改为 JAVA_NAME_ZH_ISOLATED。
    • Java 的 V36 nameZh 为 Java,nameEn 为 Java (computer programming),alias 为 Java (computer programming);学生输入仅为 Java。
    • 因此学生输入只能匹配 nameZh。删除生产代码的 nameZh 分支后,Java 必然进入 missingSkills,方法第 246-251 行会失败。
  2. alias-only 隔离成立

    • 测试:matchesOnlyInsertedAliasForV36JavaWhenAliasIsTheOnlyIdentityMatch
    • 位置:SkillMatchServiceTest.java:254-272
    • 第 256-259 行插入 Java 专属 alias ONLY.ALIAS-JVM-XYZ,与目标技能的 nameZh、nameEn、skillCode 均不相同。
    • 学生输入只有该 alias,并直接断言服务返回的 matchedSkills 包含 Java、missingSkills 包含 Python。
    • 删除 alias 查询或 alias 匹配分支后,Java 不会命中,测试必然失败。
  3. alias 归属隔离成立

    • 测试:doesNotApplyAliasOwnedByAnotherTopSkillToV36Java
    • 位置:SkillMatchServiceTest.java:274-292
    • 第 276-279 行将唯一 alias 关联到技能 2(Python),学生只输入该 alias。
    • 断言要求技能 2 命中、技能 1 缺失;若 alias 被错误共享给其他 TOP 技能,技能 1 也会命中,分数的断言会失败。

事务与回滚

状态:满足要求。

  • SkillMatchServiceTest 在类级使用 @Transactional:SkillMatchServiceTest.java:51-52。
  • 未发现 @Commit 或 @Rollback(false)。
  • 三个新增测试的 JDBC 插入/更新和 service.match(...) 调用均在测试事务内执行,测试结束后由 Spring Test 默认回滚,不会污染共享 H2 或 V36 数据。

服务结果断言

状态:满足要求。

  • 三个新增测试均直接对 SkillMatchResponse 的 matchScore()、matchedSkills() 和 missingSkills() 做断言,不是仅验证 helper。
  • alias-only 测试还会在第 265-271 行同时校验命中与缺失列表,能够发现“匹配分数正确但技能集合错误”的实现偏差。

独立测试结果

工作目录:D:\1\zhi\zhilai\mydreamjob-server

环境:

  • JAVA_HOME=D:\java\jdk
  • Maven:D:\maven\apache-maven-3.9.7\bin\mvn.cmd

执行命令:

$env:JAVA_HOME='D:\java\jdk'
& 'D:\maven\apache-maven-3.9.7\bin\mvn.cmd' '-Dtest=SkillTaxonomyMigrationTest,SkillCloudSeedDataIntegrationTest,SkillTaxonomyRepositoryTest,SkillCloudQueryServiceTest,SkillMatchServiceTest' test

结果:

Tests run: 40, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
Total time: 47.828 s

测试组成:

测试类 数量 Failures Errors
SkillTaxonomyMigrationTest 2 0 0
SkillCloudSeedDataIntegrationTest 8 0 0
SkillTaxonomyRepositoryTest 6 0 0
SkillCloudQueryServiceTest 8 0 0
SkillMatchServiceTest 16 0 0

回归与范围核验

  • T6 原有 13 项行为测试全部保留,新增 3 项隔离测试,专项测试总数为 16。
  • nameEn、skillCode、去重、TOP10、分母、非法 JSON、空数据、排序和跨职位隔离等既有测试均通过。
  • git diff --name-only -- mydreamjob-server/src/main/java/com/mydreamjob/skill/SkillMatchService.java mydreamjob-server/src/main/java/com/mydreamjob/skill/SkillNameNormalizer.java 无输出,生产实现相对当前审阅基线未被本次测试修复修改。
  • 源码搜索未发现 LearningPath、SkillCloudController、SkillMatchController 或相关接口实现;T7/T8 未实现。
  • git diff --check 未报告代码差异错误;输出中的无关 .trae 文档警告不属于 T6 范围。

剩余阻断项

无。

结论

T6-I1 已关闭,T6 测试隔离修复满足可证伪性、事务隔离和服务结果断言要求。允许 T6 进入后续流程,但在流程门禁正式记录 PASS 前不得启动 T7。