Commit c9cbceaa4c8478cb2b4a973960419f7c9b236dc4
1 parent
78ddc80a
docs(verify:REQ-USR-001): 证据验证
Showing
1 changed file
with
94 additions
and
0 deletions
docs/superpowers/reviews/2026-06-01-REQ-USR-001-verify.md
0 → 100644
| 1 | +# REQ-USR-001 增加用户 — 功能测试证据(verify, round 0) | ||
| 2 | + | ||
| 3 | +> 阶段:后端(backend)。本证据由 verify 子代理通过 Bash 后台分离子进程(`run_in_background`)派发测试执行后,按结构化结果渲染。**主会话从不内联跑测试,也不自由编写证据。** | ||
| 4 | +> 上游 spec:`docs/superpowers/specs/2026-06-01-REQ-USR-001.md` | ||
| 5 | +> 被测提交:`78ddc80`(HEAD)`test(usr): 新增用户端到端验收回归 REQ-USR-001` | ||
| 6 | +> 验证时间:2026-06-01 13:40 CST | ||
| 7 | +> 运行环境:JDK 17(`openjdk version "17.0.19"`,JAVA_HOME 固定 `/opt/homebrew/Cellar/openjdk@17/17.0.19/...`;系统默认 JDK 25,按项目目标降级至 17);Maven `/opt/homebrew/bin/mvn`;数据库 `xlyweberp_vibe_erp_test`,Flyway 已 apply 至 V1("Schema is up to date")。 | ||
| 8 | + | ||
| 9 | +--- | ||
| 10 | + | ||
| 11 | +## 1. 总判定 | ||
| 12 | + | ||
| 13 | +**GREEN — 全部通过。** `exit_code = 0`,`failed = 0`,`failed_list = 空`。 | ||
| 14 | + | ||
| 15 | +| 指标 | 值 | | ||
| 16 | +|---|---| | ||
| 17 | +| 测试类总数 | 9 | | ||
| 18 | +| 测试用例总数 | 24 | | ||
| 19 | +| 通过 | 24 | | ||
| 20 | +| 失败(failures) | 0 | | ||
| 21 | +| 错误(errors) | 0 | | ||
| 22 | +| 跳过(skipped) | 0 | | ||
| 23 | +| 失败清单 | 无 | | ||
| 24 | + | ||
| 25 | +> 24 = 19(Surefire 单元 / 集成 `*Test`)+ 5(`UsrUserCreateIT` 端到端验收回归),与上游 TDD 摘要一致。 | ||
| 26 | + | ||
| 27 | +--- | ||
| 28 | + | ||
| 29 | +## 2. 派发命令与结构化结果 | ||
| 30 | + | ||
| 31 | +测试经独立后台分离子进程执行(独立于主会话推理循环),主会话仅消费结构化结果(`command / exit_code / passed / failed / failed_list`)。`pom.xml` 未配置 Failsafe 插件,Surefire 默认包含模式(`*Test` / `Test*` / `*Tests`)不匹配 `*IT` 后缀,故 `*IT` 端到端用例由第二条命令以 `-Dtest` 显式驱动执行,以覆盖 AC1/2/4/5/7。 | ||
| 32 | + | ||
| 33 | +### 命令 1 — 锁定单元闸(docs/04 § 零 `unit`) | ||
| 34 | + | ||
| 35 | +```json | ||
| 36 | +{ | ||
| 37 | + "command": "mvn -q -B test", | ||
| 38 | + "exit_code": 0, | ||
| 39 | + "passed": 19, | ||
| 40 | + "failed": 0, | ||
| 41 | + "skipped": 0, | ||
| 42 | + "failed_list": "" | ||
| 43 | +} | ||
| 44 | +``` | ||
| 45 | + | ||
| 46 | +### 命令 2 — 端到端验收回归(@SpringBootTest) | ||
| 47 | + | ||
| 48 | +```json | ||
| 49 | +{ | ||
| 50 | + "command": "mvn -q -B test -Dtest=UsrUserCreateIT -DfailIfNoTests=false", | ||
| 51 | + "exit_code": 0, | ||
| 52 | + "passed": 5, | ||
| 53 | + "failed": 0, | ||
| 54 | + "skipped": 0, | ||
| 55 | + "report_present": true | ||
| 56 | +} | ||
| 57 | +``` | ||
| 58 | + | ||
| 59 | +--- | ||
| 60 | + | ||
| 61 | +## 3. 逐类明细(Surefire 报告解析) | ||
| 62 | + | ||
| 63 | +| 测试类 | 用例 | 失败 | 错误 | 跳过 | 耗时(s) | 覆盖 plan 任务 | | ||
| 64 | +|---|---|---|---|---|---|---| | ||
| 65 | +| `com.xly.erp.ErpApplicationTests` | 1 | 0 | 0 | 0 | 2.553 | T1 contextLoads(Flyway apply V1) | | ||
| 66 | +| `com.xly.erp.common.response.ResultTest` | 2 | 0 | 0 | 0 | 0.021 | T2 Result/ResultCode | | ||
| 67 | +| `com.xly.erp.common.exception.GlobalExceptionHandlerTest` | 1 | 0 | 0 | 0 | 0.000 | T2 全局异常处理 | | ||
| 68 | +| `com.xly.erp.common.security.JwtUtilTest` | 1 | 0 | 0 | 0 | 0.086 | T3 JWT 工具 | | ||
| 69 | +| `com.xly.erp.common.config.SecurityConfigTest` | 1 | 0 | 0 | 0 | 0.187 | T3 Security/BCrypt/无状态 | | ||
| 70 | +| `com.xly.erp.modules.usr.dto.CreateUserDTOValidationTest` | 3 | 0 | 0 | 0 | 0.019 | T4 Bean Validation | | ||
| 71 | +| `com.xly.erp.modules.usr.service.UsrUserServiceImplTest` | 7 | 0 | 0 | 0 | 0.135 | T5+T6 查重/哈希/审计/关联校验/批量授权 | | ||
| 72 | +| `com.xly.erp.modules.usr.controller.UsrUserControllerTest` | 3 | 0 | 0 | 0 | 0.222 | T7 Controller 管理员前置/@Valid | | ||
| 73 | +| `com.xly.erp.modules.usr.UsrUserCreateIT` | 5 | 0 | 0 | 0 | 4.622 | T8 端到端 AC1/2/4/5/7 | | ||
| 74 | +| **合计** | **24** | **0** | **0** | **0** | — | T1–T8 | | ||
| 75 | + | ||
| 76 | +--- | ||
| 77 | + | ||
| 78 | +## 4. 验收标准(AC)覆盖核对 | ||
| 79 | + | ||
| 80 | +| AC | 描述 | 覆盖测试 | 状态 | | ||
| 81 | +|---|---|---|---| | ||
| 82 | +| AC1 | 正常新增:`code=0`、`data.id` 正整数、BCrypt 哈希落库、`iIsVoid=0`、审计字段已填 | `UsrUserCreateIT` + `UsrUserServiceImplTest` | 通过 | | ||
| 83 | +| AC2 | 重复用户名 → `40901`,事务回滚无新增 | `UsrUserCreateIT` + `UsrUserServiceImplTest`(并发 DuplicateKey 兜底) | 通过 | | ||
| 84 | +| AC3 | 参数非法 → `40001`,无副作用 | `CreateUserDTOValidationTest` + `UsrUserControllerTest` | 通过 | | ||
| 85 | +| AC4 | 权限组授权批量插入 + 去重 | `UsrUserCreateIT` + `UsrUserServiceImplTest` | 通过 | | ||
| 86 | +| AC5 | 越权访问 → `40301` / 401,不创建记录 | `UsrUserCreateIT` + `UsrUserControllerTest` | 通过 | | ||
| 87 | +| AC6 | 默认密码 `666666` 哈希入库 | `UsrUserServiceImplTest` | 通过 | | ||
| 88 | +| AC7 | 响应不含密码(仅 `data.id`) | `UsrUserCreateIT`(`sPassword @JsonIgnore`) | 通过 | | ||
| 89 | + | ||
| 90 | +--- | ||
| 91 | + | ||
| 92 | +## 5. 结论 | ||
| 93 | + | ||
| 94 | +`exit_code = 0`,`failed = 0`,24/24 用例全绿,无失败、无错误、无跳过;AC1–AC7 均有测试覆盖且通过。工作树在被测提交 `78ddc80` 处干净,未触碰 `frontend/`。**判定 GREEN,可进入 review。** |