b0f91d74f5
修复前端签名生成中bodyString硬编码问题 添加start-frontend.sh脚本启动前端服务 统一manage-app和gateway的JWT密钥配置 修复Repository扫描路径问题 更新测试配置和依赖 重构表名映射为sys_user和sys_role 完善用户实体类字段映射 添加集成测试配置和测试用例
5.3 KiB
5.3 KiB
Novalon管理系统自动化流程测试报告
测试时间: 2026-04-02
测试人员: 张翔
测试环境: 开发环境
测试概述
本次测试旨在全面验证Novalon管理系统的所有业务流程,包括用户管理、角色管理、菜单管理等核心功能。
测试结果总结
| 测试项 | 状态 | 通过率 |
|---|---|---|
| 登录功能 | ✅ 通过 | 100% |
| 仪表板加载 | ✅ 通过 | 100% |
| 用户管理 | ❌ 失败 | 0% |
| 角色管理 | ❌ 失败 | 0% |
| 菜单管理 | ❌ 失败 | 0% |
| 字典管理 | ❌ 失败 | 0% |
| 系统配置 | ❌ 失败 | 0% |
| 文件管理 | ❌ 失败 | 0% |
| 通知管理 | ❌ 失败 | 0% |
| 审计日志 | ❌ 失败 | 0% |
总体通过率: 18.18% (2/11)
详细测试结果
1. 登录功能测试 ✅
测试步骤:
- 访问登录页面
- 输入用户名: admin
- 输入密码: admin123
- 点击登录按钮
测试结果: 通过
- Token成功保存到localStorage
- 页面成功跳转到仪表板
2. 仪表板加载测试 ✅
测试步骤:
- 登录后访问仪表板页面
- 验证页面元素加载
测试结果: 通过
- 页面成功加载
- 统计数据正确显示
- 所有API请求返回200(除/api/logs/login/recent返回500)
3. 用户管理测试 ❌
测试步骤:
- 访问用户管理页面
- 验证页面加载
测试结果: 失败
- 页面被重定向到登录页
- Token被清空
- API请求返回401错误
根本原因:
- 请求缺少
X-User-Id和X-Usernameheader - JwtAuthenticationFilter未正确添加这些header
- RbacAuthorizationFilter因缺少X-User-Id header而返回401错误
4. 其他模块测试 ❌
所有其他模块(角色管理、菜单管理等)都遇到相同的问题:
- 页面被重定向到登录页
- Token被清空
- API请求返回401错误
问题分析
核心问题
JwtAuthenticationFilter未正确工作
JwtAuthenticationFilter应该:
- 验证JWT Token
- 从Token中提取userId和username
- 添加
X-User-Id和X-Usernameheader到请求中
但实际上,这些header没有被添加,导致RbacAuthorizationFilter无法获取用户ID,返回401错误。
可能的原因
- 过滤器执行顺序问题: JwtAuthenticationFilter可能没有在RbacAuthorizationFilter之前执行
- 过滤器注册问题: JwtAuthenticationFilter可能没有正确注册到Spring Cloud Gateway
- Token解析问题: JwtUtil可能无法正确解析Token
- 配置问题: application.yml中的过滤器配置可能有问题
验证发现
- 前端请求正确: 所有请求都包含Token和签名头
- 签名验证通过: SignatureFilter正常工作
- 部分API成功: Dashboard的API请求(如/api/users/count)返回200成功
- 权限API失败: 需要特定权限的API(如/api/users/page)返回401错误
建议修复方案
方案1: 检查JwtAuthenticationFilter配置
- 确认JwtAuthenticationFilter是否正确注册为Spring Bean
- 检查application.yml中的default-filters配置
- 验证过滤器的执行顺序
方案2: 添加调试日志
- 在JwtAuthenticationFilter中添加详细的调试日志
- 记录Token验证过程
- 记录header添加过程
方案3: 简化权限验证
临时禁用RbacAuthorizationFilter,验证JwtAuthenticationFilter是否正常工作:
default-filters:
- name: JwtAuthentication
# - name: RbacAuthorization # 临时注释
方案4: 检查权限配置
检查数据库中admin用户的权限配置,确保有访问所有API的权限。
测试文件整理
已将所有测试文件整理到test-suite目录:
test-suite/
├── tests/
│ ├── e2e/
│ │ ├── test_comprehensive_workflow.py # 全面业务流程测试
│ │ ├── test_signature.py # 签名测试
│ │ ├── check_*.py # 各种调试脚本
│ │ └── debug_*.py # 调试脚本
│ ├── integration/ # 集成测试
│ ├── performance/ # 性能测试
│ ├── security/ # 安全测试
│ └── uat/ # UAT测试
├── api/ # API客户端
├── utils/ # 测试工具
└── config/ # 测试配置
下一步行动
- 优先级高: 修复JwtAuthenticationFilter问题
- 优先级高: 验证RbacAuthorizationFilter的权限配置
- 优先级中: 完善测试脚本,添加更多业务场景
- 优先级低: 优化测试报告格式
附录
测试环境信息
- 操作系统: macOS
- 前端服务: http://localhost:3002
- API网关: http://localhost:8080
- 后端应用: http://localhost:8084
- 数据库: PostgreSQL
测试数据
- 用户名: admin
- 密码: admin123
- 用户ID: 1064
API请求示例
成功的请求:
GET /api/users/count
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
X-Signature: ...
X-Timestamp: ...
X-Nonce: ...
失败的请求:
GET /api/users/page?page=0&size=10
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
X-Signature: ...
X-Timestamp: ...
X-Nonce: ...
X-User-Id: 缺失 ❌
X-Username: 缺失 ❌