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.
6.5 KiB
6.5 KiB
回归测试结果
本 effort(ticket 05-10)修复
tmp/缺陷报告-线索模块-A2-A7-3-1.md的 22 项缺陷中判为"真实缺陷/实现遗漏"的 14 项。 验证范围 = 用户拍板深度:单元测试(mvn test)+ BOM 扫描 + 接口模拟(降级说明见 §三)。
一、全量单元测试
执行命令
mvn test
结果:BUILD SUCCESS
| 模块 | 测试类数 | 测试用例数 | Failures | Errors | 状态 |
|---|---|---|---|---|---|
| crm-base | 4 | 33 | 0 | 0 | ✅ |
| crm-file | 9 | 84 | 0 | 0 | ✅ |
| crm-auth | 15 | 196 | 0 | 0 | ✅ |
| crm-dict | — | — | 0 | 0 | ✅ |
| crm-rule | 3 | 30 | 0 | 0 | ✅ |
| crm-preference | 1 | 7 | 0 | 0 | ✅ |
| crm-lead | 9 | 97 | 0 | 0 | ✅ |
| 合计 | 0 | 0 | 全绿 |
前后对比(本 effort 新增)
| 模块 | 基线测试类数 | 当前测试类数 | 新增类 | 新增用例(估) |
|---|---|---|---|---|
| crm-lead | 6 | 9 | PoolChangedEventListenerTest / LeadMaintenanceJobTest / ClaimLimitCheckerTest | +约 50(59→含新增 createLead/claimLead/deleteLead 守卫测试) |
| crm-rule | 3 | 3 | (无新增类,LeadPoolServiceImplTest 18→22) | +4 |
受影响三模块测试明细
crm-rule(30 tests):
| 测试类 | 用例数 | 本 effort 变化 |
|---|---|---|
| RegionDataInitializerTest | 4 | 无变化 |
| LeadPoolBatchDeleteTest | 4 | 无变化 |
| LeadPoolServiceImplTest | 22 | ticket 05 +4(删除守卫)→ ticket 10 +4(P2-4 角色拦截)→ 适配 1(mockStatic) |
crm-lead(97 tests):
| 测试类 | 用例数 | 本 effort 变化 |
|---|---|---|
| LeadServiceImplTest | 59 | ticket 06 额度校验 + ticket 07 createLead 角色分支/选人即分配 + ticket 08 草稿清理/删除权限 |
| LeadViewQueryImplTest | 8 | ticket 07 混合展示 + ticket 09 countStats GROUP BY 聚合 |
| LeadTransitionImplTest | 7 | 无变化(已有守卫测试足够) |
| ClaimLimitCheckerTest | 7 | 新增(ticket 06)— 持有/每日上限边界 |
| LeadBatchServiceTest | 7 | 无变化 |
| PoolChangedEventListenerTest | 4 | 新增(ticket 09)— dept 联动 + deadline 重算 |
| LeadMaintenanceJobTest | 1 | 新增(ticket 09)— 串行 expire→recycle |
| LeadHistoryRecorderImplTest | 2 | 无变化 |
| OwnerSnapshotResolverImplTest | 2 | 无变化 |
二、BOM 扫描
执行方式
PowerShell 逐文件检查前 3 字节是否为 EF BB BF(UTF-8 BOM 前缀)。
结果:ALL CLEAN
| 扫描范围 | 文件数 | BOM 文件数 | 状态 |
|---|---|---|---|
| 本 effort 修改/新建的 .java 文件 | 19 | 0 | ✅ |
| 全库 .java 文件(不含 target/) | — | — | ⚠️ 超时未完成(见说明) |
说明:全库扫描因文件数量大(7 模块 × 数百文件)在 120s 内未完成。本 effort 修改的 19 个文件已逐个验证无 BOM。未修改的文件在本 effort 之前已通过 mvn compile(javac 对 BOM 报 illegal character),可推定无 BOM。
本 effort 修改文件清单(19 个)
crm-rule(5 个):
LeadPoolServiceImpl.java/LeadPoolDTO.java/LeadPool.java/PoolLeadOccupationPort.java/LeadPoolServiceImplTest.java
crm-lead(14 个):
LeadServiceImpl.java/LeadViewQueryImpl.java/LeadController.java/LeadConstants.java/PoolChangedEventListener.java/LeadMaintenanceJob.java/LeadTransition.java/PoolLeadOccupationAdapter.java/ClaimLimitChecker.java- 测试:
PoolChangedEventListenerTest.java/LeadMaintenanceJobTest.java/LeadViewQueryImplTest.java/ClaimLimitCheckerTest.java/LeadServiceImplTest.java
删除文件(2 个,ticket 09):
LeadExpireJob.java/LeadRecycleJob.java(合并为LeadMaintenanceJob.java)
三、接口模拟(降级说明)
降级原因
本 effort 执行环境为沙箱,无法启动完整的 Spring Boot 服务(依赖 MySQL / Redis / MinIO / kkFileView 等外部服务)。按 ticket 11 验收条款"环境起不来时降级为单测覆盖说明 + 明确标注降级,不假装验证过",本节降级为单测覆盖映射。
P0 场景 → 单测映射
| # | P0 场景 | 对应单测 | 测试类 | ticket |
|---|---|---|---|---|
| 1 | 池下有活跃线索 → 删除被拒(64005) | deletePool_hasActiveLeads_rejected |
LeadPoolServiceImplTest | 05 |
| 1a | 占用端口不可用 → 拒删(fail-safe) | deletePool_portUnavailable_rejected |
LeadPoolServiceImplTest | 05 |
| 1b | 批量删除部分失败 → HAS_ACTIVE_LEAD | deletePoolBatch_partialFailureWithActiveLeads |
LeadPoolServiceImplTest | 05 |
| 2 | 达持有上限 → 领取被拒 | claim_exceedsHoldLimit_rejected |
ClaimLimitCheckerTest | 06 |
| 2a | 达每日上限 → 领取被拒 | claim_exceedsDailyLimit_rejected |
ClaimLimitCheckerTest | 06 |
| 2b | 分配给超限销售被拒 | assignTo_exceedsHoldLimit_rejected |
ClaimLimitCheckerTest | 06 |
| 3 | 勾"是否领取"超限 → 新增整体失败 | createLead_claimExceedsLimit_throws |
LeadServiceImplTest | 06/07 |
| 4 | claim_rule=仅管理员 → 销售自领被拒 | claimLead_adminOnlyPool_rejected |
LeadServiceImplTest | 06 |
| 5 | 非管理员/非创建人删除线索被拒 | deleteLead_notOwnerNotAdmin_rejected |
LeadServiceImplTest | 08 |
| 6 | 公海列表含已领取/跟进中行 | pageLeads_publicPoolView_includesClaimedAndFollowing |
LeadViewQueryImplTest | 07 |
覆盖率:ticket 11 要求的 6 个 P0 场景均有对应单测覆盖。单测使用纯 Mockito(@Mock + mockStatic SecurityUtils),不依赖外部服务,可在 CI 中重复执行。
未覆盖项(需集成环境验证)
以下场景需启动完整服务后用 Bruno / curl 验证,本 effort 未覆盖:
- JWT 认证链路(登录 → 获取 token → 携带 token 调接口)
- @DataScope 数据范围拦截器实际 SQL 注入(单测用 mock 模拟,未走真实 MyBatis 拦截器链)
- PoolChangedEvent 跨模块事件实际发布/消费(单测用 mock ApplicationEventPublisher)
- 定时任务 LeadMaintenanceJob 实际 @Scheduled 触发(单测直接调
execute())
四、结论
- 全量单测:
mvn testBUILD SUCCESS,9 模块全绿,受影响三模块(crm-rule 30 / crm-lead 97 / crm-base 33)零失败零错误。 - BOM 扫描:本 effort 修改的 19 个 .java 文件全部无 BOM;全库扫描因文件量大超时,未修改文件可由既有
mvn compile通过推定无 BOM。 - 接口模拟:降级为单测覆盖映射。6 个 P0 场景均有对应单测覆盖,集成环境验证留作后续。