Files
novalon-manage-system/test-suite/TEST_REPORT.md
T
张翔 b0f91d74f5 feat: 统一JWT密钥配置并修复签名验证问题
修复前端签名生成中bodyString硬编码问题
添加start-frontend.sh脚本启动前端服务
统一manage-app和gateway的JWT密钥配置
修复Repository扫描路径问题
更新测试配置和依赖
重构表名映射为sys_user和sys_role
完善用户实体类字段映射
添加集成测试配置和测试用例
2026-04-02 12:28:49 +08:00

5.3 KiB
Raw Blame History

Novalon管理系统自动化流程测试报告

测试时间: 2026-04-02
测试人员: 张翔
测试环境: 开发环境

测试概述

本次测试旨在全面验证Novalon管理系统的所有业务流程,包括用户管理、角色管理、菜单管理等核心功能。

测试结果总结

测试项 状态 通过率
登录功能 通过 100%
仪表板加载 通过 100%
用户管理 失败 0%
角色管理 失败 0%
菜单管理 失败 0%
字典管理 失败 0%
系统配置 失败 0%
文件管理 失败 0%
通知管理 失败 0%
审计日志 失败 0%

总体通过率: 18.18% (2/11)

详细测试结果

1. 登录功能测试

测试步骤:

  1. 访问登录页面
  2. 输入用户名: admin
  3. 输入密码: admin123
  4. 点击登录按钮

测试结果: 通过

  • Token成功保存到localStorage
  • 页面成功跳转到仪表板

2. 仪表板加载测试

测试步骤:

  1. 登录后访问仪表板页面
  2. 验证页面元素加载

测试结果: 通过

  • 页面成功加载
  • 统计数据正确显示
  • 所有API请求返回200(除/api/logs/login/recent返回500

3. 用户管理测试

测试步骤:

  1. 访问用户管理页面
  2. 验证页面加载

测试结果: 失败

  • 页面被重定向到登录页
  • Token被清空
  • API请求返回401错误

根本原因:

  • 请求缺少X-User-IdX-Username header
  • JwtAuthenticationFilter未正确添加这些header
  • RbacAuthorizationFilter因缺少X-User-Id header而返回401错误

4. 其他模块测试

所有其他模块(角色管理、菜单管理等)都遇到相同的问题:

  • 页面被重定向到登录页
  • Token被清空
  • API请求返回401错误

问题分析

核心问题

JwtAuthenticationFilter未正确工作

JwtAuthenticationFilter应该:

  1. 验证JWT Token
  2. 从Token中提取userId和username
  3. 添加X-User-IdX-Username header到请求中

但实际上,这些header没有被添加,导致RbacAuthorizationFilter无法获取用户ID,返回401错误。

可能的原因

  1. 过滤器执行顺序问题: JwtAuthenticationFilter可能没有在RbacAuthorizationFilter之前执行
  2. 过滤器注册问题: JwtAuthenticationFilter可能没有正确注册到Spring Cloud Gateway
  3. Token解析问题: JwtUtil可能无法正确解析Token
  4. 配置问题: application.yml中的过滤器配置可能有问题

验证发现

  1. 前端请求正确: 所有请求都包含Token和签名头
  2. 签名验证通过: SignatureFilter正常工作
  3. 部分API成功: Dashboard的API请求(如/api/users/count)返回200成功
  4. 权限API失败: 需要特定权限的API(如/api/users/page)返回401错误

建议修复方案

方案1: 检查JwtAuthenticationFilter配置

  1. 确认JwtAuthenticationFilter是否正确注册为Spring Bean
  2. 检查application.yml中的default-filters配置
  3. 验证过滤器的执行顺序

方案2: 添加调试日志

  1. 在JwtAuthenticationFilter中添加详细的调试日志
  2. 记录Token验证过程
  3. 记录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/                                  # 测试配置

下一步行动

  1. 优先级高: 修复JwtAuthenticationFilter问题
  2. 优先级高: 验证RbacAuthorizationFilter的权限配置
  3. 优先级中: 完善测试脚本,添加更多业务场景
  4. 优先级低: 优化测试报告格式

附录

测试环境信息

测试数据

  • 用户名: 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: 缺失 ❌