测试用例补充并修复问题
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
# 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 单元测试,不直接连接数据库,不会新增真实库数据。
|
||||
- 后续若补充集成测试(落库场景),将统一采用“事务回滚 + 必要时显式删除”策略,确保每条用例结束后清理测试数据。
|
||||
Reference in New Issue
Block a user