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
4.5 KiB
W2-T6 测试隔离修复独立复审报告
Verdict
PASS
T6 原 Review 中唯一 Important finding 已关闭。新增的三个隔离测试均通过服务返回结果进行断言,能够分别证伪 nameZh 分支、alias 匹配链路和 alias 归属隔离的相关回归;类级事务确保测试数据回滚。未发现新的阻断项,T6 可进入下一任务。
Finding 关闭状态
T6-I1:nameZh 与 alias 匹配遗漏无法证伪
状态:已关闭。
-
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 行会失败。
- 测试:
-
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 不会命中,测试必然失败。
- 测试:
-
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。