# Jog System P0/P1 自动化测试自测与问题清单 文档日期:2026-05-18 测试范围:`doc/jog-system-cursor-automated-test-spec.md` 中已选取并落地的 P0/P1 条目(首批) ## 1. 本次新增自动化测试用例 ### 1.1 认证与注册(`jog-module-system`) 文件:`jog-module-system/src/test/java/fun/nojava/module/system/service/impl/AuthServiceImplP0P1Test.java` - `TC-AC-USER-LOGIN-01`(P0):账号密码正确登录成功并记录成功日志 - `TC-AC-USER-LOGIN-03`(P0):密码错误登录失败并记录失败日志 - `TC-AC-USER-REG-02`(P0):重复邮箱注册拒绝 - `TC-NF-SEC-01`(P0):注册密码编码后入库 - `TC-AC-ADM-LOGIN-01`(P1):普通用户调用管理员登录被拒绝 - `TC-AC-USER-LOGIN-06`(P0):rememberMe 会话有效期接近 14 天 - `TC-AC-USER-LOGIN-03`(P0):已锁定账号拒绝登录 - `TC-AC-ADM-LOGIN-02`(P0,Disabled):连续 3 次错密后验证码 - `TC-AC-ADM-LOGIN-03`(P0,Disabled):连续 5 次错密锁定 ### 1.2 文章列表与可见性(`jog-module-blog`) 文件:`jog-module-blog/src/test/java/fun/nojava/module/blog/service/impl/ArticleServiceImplP0P1Test.java` - `TC-AC-BLOG-LIST-01`(P0):公开文章列表基本分页流程 - `TC-AC-BLOG-PUB-04`(P0):文章不存在时返回 `ARTICLE_NOT_FOUND` - `TC-AC-BLOG-LIST-06`(P0):详情访问会递增浏览量 - `TC-AC-BLOG-PUB-04`(P0,Disabled):私密文章访问控制 - `TC-AC-BLOG-LIST-06`(P0,Disabled):作者访问不应累计浏览量 - `TC-AC-BLOG-PUB-06`(P0,Disabled):标签数量 >5 应拒绝 ## 2. 自测执行与结果 执行命令: `mvn -pl jog-module-system,jog-module-blog test` 结果汇总: - `AuthServiceImplP0P1Test`:`Tests run: 9, Failures: 0, Errors: 0, Skipped: 2` - `ArticleServiceImplP0P1Test`:`Tests run: 6, Failures: 0, Errors: 0, Skipped: 3` - 总体:构建成功;已落地测试全部通过;实现缺口用例以 `@Disabled` 标注并进入问题清单 ## 3. P0/P1 问题修复结果 > 本节为本轮修复后的状态更新。 ### 已修复(P0) 1. **连续失败后验证码流程(FR-ADM-LOGIN-03)** - 修复:当失败次数达到阈值后,登录必须携带验证码参数;缺失返回 `CAPTCHA_REQUIRED`,错误返回 `CAPTCHA_INVALID`。 2. **连续失败后账号锁定(FR-ADM-LOGIN-03 / FR-USER-LOGIN-04)** - 修复:登录失败计数写入用户,达到阈值后按角色锁定(管理员 30 分钟、用户 15 分钟),锁定到期自动解锁。 3. **私密/仅粉丝文章访问控制(FR-BLOG-PUB-04)** - 修复:详情访问增加可见性校验;私密仅作者可见;仅粉丝可见需存在关注关系。 4. **作者本人浏览不累计阅读量(FR-BLOG-LIST-07)** - 修复:浏览量递增逻辑增加访问者上下文,作者本人访问不增加 `view_count`。 5. **标签数量上限未限制为 5(FR-BLOG-PUB-06)** - 修复:创建/编辑文章时统一校验 `tagIds`,超过 5 个返回 `TAG_LIMIT_EXCEEDED`。 ### 已修复(P1) 6. **密码规则与规范不一致(FR-USER-REG-02)** - 修复:登录/注册密码校验调整为 8~32 位,且至少包含四类中的三类(大写、小写、数字、特殊字符)。 7. **登录日志字段映射不完整(FR-ADM-LOGIN-05)** - 修复:补齐日志字段映射(`ip_address`、`device_fingerprint`),并按用户类型正确写入 `login_type`。 ### 当前遗留 - 本轮已跟踪的 7 项问题均已完成修复并由自动化测试覆盖通过。 ## 4. 原始问题记录(归档) ### P0 1. **未实现连续失败后验证码流程(FR-ADM-LOGIN-03)** - 现状:登录逻辑未包含“3 次失败后需验证码”的状态机与校验。 - 影响:无法满足管理员登录安全基线。 - 对应用例:`TC-AC-ADM-LOGIN-02`(Disabled)。 2. **未实现连续失败后账号锁定(FR-ADM-LOGIN-03 / FR-USER-LOGIN-04)** - 现状:登录失败仅返回错误,未维护失败计数/锁定时长。 - 影响:暴力破解风险增加。 - 对应用例:`TC-AC-ADM-LOGIN-03`(Disabled)。 3. **私密/仅粉丝文章访问控制缺失(FR-BLOG-PUB-04)** - 现状:公开详情查询流程未基于 `visibility` 与访问者关系做权限拦截。 - 影响:私密内容可能被未授权用户访问。 - 对应用例:`TC-AC-BLOG-PUB-04`(Disabled)。 4. **作者本人浏览仍会累计阅读量(FR-BLOG-LIST-07)** - 现状:浏览量递增逻辑无“作者本人不加”分支。 - 影响:阅读量统计失真。 - 对应用例:`TC-AC-BLOG-LIST-06`(Disabled)。 5. **标签数量上限未限制为 5(FR-BLOG-PUB-06)** - 现状:创建/编辑文章时未校验 `tagIds` 上限。 - 影响:与发布规则不一致,可能导致前后端行为分裂。 - 对应用例:`TC-AC-BLOG-PUB-06`(Disabled)。 ### P1 6. **密码规则与规范不一致(FR-USER-REG-02)** - 现状:注册/登录 DTO 使用 6~20 位校验,且未体现“三类字符”强度规则。 - 影响:低于测试规范要求(规范要求 8~32 且至少三类字符)。 7. **登录日志字段映射不完整(FR-ADM-LOGIN-05)** - 现状:登录日志实体中的 `userAgent` 未持久化映射,且登录类型写死为用户类型。 - 影响:审计维度不完整,管理员/用户登录区分不准确。 ## 5. 数据清理说明 - 本次新增测试均为 Mockito 单元测试,不直接连接数据库,不会新增真实库数据。 - 后续若补充集成测试(落库场景),将统一采用“事务回滚 + 必要时显式删除”策略,确保每条用例结束后清理测试数据。