feat: 添加系统配置、审计中心、通知中心、文件管理模块
This commit is contained in:
@@ -0,0 +1,707 @@
|
||||
# E2E测试用例设计文档
|
||||
|
||||
## 项目概述
|
||||
|
||||
本项目是一个基于Spring Boot 3.5.9 + WebFlux的响应式管理系统API,采用PostgreSQL数据库,支持用户、角色、字典等核心业务功能。
|
||||
|
||||
## 测试目标
|
||||
|
||||
1. 验证关键用户场景的端到端流程
|
||||
2. 确保API接口的正确性和稳定性
|
||||
3. 验证认证授权机制
|
||||
4. 测试数据一致性和完整性
|
||||
5. 验证错误处理和边界条件
|
||||
|
||||
## 测试环境
|
||||
|
||||
- **测试框架**: Python + Playwright
|
||||
- **API基础URL**: http://localhost:8080
|
||||
- **测试数据库**: PostgreSQL (Test环境)
|
||||
- **测试数据**: 自动化准备和清理
|
||||
|
||||
## 测试用例设计
|
||||
|
||||
### 1. 认证授权测试
|
||||
|
||||
#### 1.1 用户登录流程
|
||||
**用例ID**: TC-AUTH-001
|
||||
**优先级**: P0
|
||||
**前置条件**: 系统已启动,数据库中存在测试用户
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/auth/login`
|
||||
2. 提供正确的用户名和密码
|
||||
3. 验证返回的access_token和refresh_token
|
||||
4. 验证token格式正确性
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回包含accessToken和refreshToken
|
||||
- token格式符合JWT标准
|
||||
|
||||
**测试数据**:
|
||||
```json
|
||||
{
|
||||
"username": "admin",
|
||||
"password": "admin123"
|
||||
}
|
||||
```
|
||||
|
||||
#### 1.2 Token刷新流程
|
||||
**用例ID**: TC-AUTH-002
|
||||
**优先级**: P0
|
||||
**前置条件**: 已获得有效的refresh_token
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/auth/refresh`
|
||||
2. 提供有效的refresh_token
|
||||
3. 验证返回新的access_token
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回新的accessToken
|
||||
- refreshToken保持不变或更新
|
||||
|
||||
#### 1.3 用户登出流程
|
||||
**用例ID**: TC-AUTH-003
|
||||
**优先级**: P1
|
||||
**前置条件**: 已登录,持有有效token
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/auth/logout`
|
||||
2. 在Header中携带Authorization: Bearer {token}
|
||||
3. 验证登出成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回成功消息
|
||||
- token被加入黑名单
|
||||
|
||||
#### 1.4 无效登录测试
|
||||
**用例ID**: TC-AUTH-004
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 使用错误的用户名或密码登录
|
||||
2. 验证错误响应
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 401
|
||||
- 返回认证失败消息
|
||||
|
||||
### 2. 用户管理测试
|
||||
|
||||
#### 2.1 创建用户
|
||||
**用例ID**: TC-USER-001
|
||||
**优先级**: P0
|
||||
**前置条件**: 已登录,具有ADMIN权限
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/users`
|
||||
2. 提供用户信息
|
||||
3. 验证用户创建成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 201
|
||||
- 返回创建的用户信息
|
||||
- 用户ID已生成
|
||||
- 密码已加密
|
||||
|
||||
**测试数据**:
|
||||
```json
|
||||
{
|
||||
"username": "testuser",
|
||||
"password": "password123",
|
||||
"email": "test@example.com",
|
||||
"roleId": 2,
|
||||
"status": 1
|
||||
}
|
||||
```
|
||||
|
||||
#### 2.2 查询单个用户
|
||||
**用例ID**: TC-USER-002
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/users/{id}`
|
||||
2. 验证返回正确的用户信息
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回完整的用户信息
|
||||
|
||||
#### 2.3 查询所有用户
|
||||
**用例ID**: TC-USER-003
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/users`
|
||||
2. 验证返回用户列表
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回用户数组
|
||||
- 包含分页信息(如已实现)
|
||||
|
||||
#### 2.4 更新用户
|
||||
**用例ID**: TC-USER-004
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送PUT请求到 `/api/users/{id}`
|
||||
2. 提供更新的用户信息
|
||||
3. 验证更新成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回更新后的用户信息
|
||||
|
||||
#### 2.5 删除用户
|
||||
**用例ID**: TC-USER-005
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送DELETE请求到 `/api/users/{id}`
|
||||
2. 验证删除成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 204
|
||||
- 用户已被物理删除
|
||||
|
||||
#### 2.6 逻辑删除用户
|
||||
**用例ID**: TC-USER-006
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送DELETE请求到 `/api/users/{id}/logical`
|
||||
2. 验证逻辑删除成功
|
||||
3. 查询已删除用户(带includeDeleted=true)
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 用户被标记为已删除
|
||||
- 可以通过includeDeleted参数查询到
|
||||
|
||||
#### 2.7 恢复已删除用户
|
||||
**用例ID**: TC-USER-007
|
||||
**优先级**: P1
|
||||
**前置条件**: 用户已被逻辑删除
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/users/{id}/restore`
|
||||
2. 验证恢复成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 用户状态恢复正常
|
||||
|
||||
#### 2.8 用户名唯一性检查
|
||||
**用例ID**: TC-USER-008
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/users/check/username?username=existing`
|
||||
2. 验证返回true
|
||||
3. 使用不存在的用户名验证返回false
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回正确的布尔值
|
||||
|
||||
#### 2.9 邮箱唯一性检查
|
||||
**用例ID**: TC-USER-009
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/users/check/email?email=existing@example.com`
|
||||
2. 验证返回true
|
||||
3. 使用不存在的邮箱验证返回false
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回正确的布尔值
|
||||
|
||||
### 3. 角色管理测试
|
||||
|
||||
#### 3.1 创建角色
|
||||
**用例ID**: TC-ROLE-001
|
||||
**优先级**: P0
|
||||
**前置条件**: 已登录,具有ADMIN权限
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/roles`
|
||||
2. 提供角色信息
|
||||
3. 验证角色创建成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 201
|
||||
- 返回创建的角色信息
|
||||
|
||||
**测试数据**:
|
||||
```json
|
||||
{
|
||||
"name": "TEST_ROLE",
|
||||
"description": "测试角色",
|
||||
"permissions": "READ,WRITE"
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.2 查询角色
|
||||
**用例ID**: TC-ROLE-002
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/roles/{id}`
|
||||
2. 验证返回正确的角色信息
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回完整的角色信息
|
||||
|
||||
#### 3.3 按名称查询角色
|
||||
**用例ID**: TC-ROLE-003
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/roles/name/{name}`
|
||||
2. 验证返回正确的角色信息
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回指定名称的角色
|
||||
|
||||
#### 3.4 查询所有角色
|
||||
**用例ID**: TC-ROLE-004
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/roles`
|
||||
2. 验证返回角色列表
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回角色数组
|
||||
|
||||
#### 3.5 更新角色
|
||||
**用例ID**: TC-ROLE-005
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送PUT请求到 `/api/roles/{id}`
|
||||
2. 提供更新的角色信息
|
||||
3. 验证更新成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回更新后的角色信息
|
||||
|
||||
#### 3.6 删除角色
|
||||
**用例ID**: TC-ROLE-006
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送DELETE请求到 `/api/roles/{id}`
|
||||
2. 验证删除成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 204
|
||||
|
||||
#### 3.7 逻辑删除角色
|
||||
**用例ID**: TC-ROLE-007
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送DELETE请求到 `/api/roles/{id}/logical`
|
||||
2. 验证逻辑删除成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 角色被标记为已删除
|
||||
|
||||
#### 3.8 恢复已删除角色
|
||||
**用例ID**: TC-ROLE-008
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/roles/{id}/restore`
|
||||
2. 验证恢复成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 角色状态恢复正常
|
||||
|
||||
#### 3.9 角色名唯一性检查
|
||||
**用例ID**: TC-ROLE-009
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/roles/check/name?name=existing`
|
||||
2. 验证返回true
|
||||
3. 使用不存在的角色名验证返回false
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回正确的布尔值
|
||||
|
||||
### 4. 字典管理测试
|
||||
|
||||
#### 4.1 创建字典
|
||||
**用例ID**: TC-DICT-001
|
||||
**优先级**: P0
|
||||
**前置条件**: 已登录,具有ADMIN权限
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/dictionaries`
|
||||
2. 提供字典信息
|
||||
3. 验证字典创建成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 201
|
||||
- 返回创建的字典信息
|
||||
|
||||
**测试数据**:
|
||||
```json
|
||||
{
|
||||
"type": "USER_STATUS",
|
||||
"code": "ACTIVE",
|
||||
"name": "激活",
|
||||
"value": "1",
|
||||
"remark": "用户激活状态",
|
||||
"sort": 1
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.2 查询字典
|
||||
**用例ID**: TC-DICT-002
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/dictionaries/{id}`
|
||||
2. 验证返回正确的字典信息
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回完整的字典信息
|
||||
|
||||
#### 4.3 按类型查询字典
|
||||
**用例ID**: TC-DICT-003
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/dictionaries/type/{type}`
|
||||
2. 验证返回指定类型的字典列表
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回指定类型的字典数组
|
||||
- 按sort字段排序
|
||||
|
||||
#### 4.4 查询所有字典
|
||||
**用例ID**: TC-DICT-004
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/dictionaries`
|
||||
2. 验证返回字典列表
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回字典数组
|
||||
|
||||
#### 4.5 更新字典
|
||||
**用例ID**: TC-DICT-005
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送PUT请求到 `/api/dictionaries/{id}`
|
||||
2. 提供更新的字典信息
|
||||
3. 验证更新成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回更新后的字典信息
|
||||
|
||||
#### 4.6 删除字典
|
||||
**用例ID**: TC-DICT-006
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 发送DELETE请求到 `/api/dictionaries/{id}`
|
||||
2. 验证删除成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 204
|
||||
|
||||
#### 4.7 字典类型和编码唯一性检查
|
||||
**用例ID**: TC-DICT-007
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/dictionaries/check/exists?type=TYPE&code=CODE`
|
||||
2. 验证返回true或false
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回正确的布尔值
|
||||
|
||||
### 5. OAuth2客户端管理测试
|
||||
|
||||
#### 5.1 创建OAuth2客户端
|
||||
**用例ID**: TC-OAUTH2-001
|
||||
**优先级**: P1
|
||||
**前置条件**: 已登录,具有ADMIN权限
|
||||
**测试步骤**:
|
||||
1. 发送POST请求到 `/api/oauth2/clients`
|
||||
2. 提供客户端信息
|
||||
3. 验证客户端创建成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 201
|
||||
- 返回创建的客户端信息
|
||||
- clientSecret已加密
|
||||
|
||||
**测试数据**:
|
||||
```json
|
||||
{
|
||||
"clientId": "test-client",
|
||||
"clientSecret": "secret123",
|
||||
"clientName": "Test Client",
|
||||
"webServerRedirectUri": "http://localhost:8080/callback",
|
||||
"scope": "read,write",
|
||||
"authorizedGrantTypes": "authorization_code,refresh_token",
|
||||
"accessTokenValiditySeconds": 7200,
|
||||
"refreshTokenValiditySeconds": 2592000,
|
||||
"autoApprove": false,
|
||||
"enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
#### 5.2 查询OAuth2客户端
|
||||
**用例ID**: TC-OAUTH2-002
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/oauth2/clients/{id}`
|
||||
2. 验证返回正确的客户端信息
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回完整的客户端信息
|
||||
|
||||
#### 5.3 按clientId查询OAuth2凭证
|
||||
**用例ID**: TC-OAUTH2-003
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/oauth2/clients/client-id/{clientId}`
|
||||
2. 验证返回正确的客户端信息
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回指定clientId的客户端
|
||||
|
||||
#### 5.4 查询所有OAuth2客户端
|
||||
**用例ID**: TC-OAUTH2-004
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送GET请求到 `/api/oauth2/clients`
|
||||
2. 验证返回客户端列表
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回客户端数组
|
||||
|
||||
#### 5.5 更新OAuth2客户端
|
||||
**用例ID**: TC-OAUTH2-005
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送PUT请求到 `/api/oauth2/clients/{id}`
|
||||
2. 提供更新的客户端信息
|
||||
3. 验证更新成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 返回更新后的客户端信息
|
||||
|
||||
#### 5.6 删除OAuth2客户端
|
||||
**用例ID**: TC-OAUTH2-006
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送DELETE请求到 `/api/oauth2/clients/{id}`
|
||||
2. 验证删除成功
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 204
|
||||
|
||||
### 6. 权限验证测试
|
||||
|
||||
#### 6.1 无token访问受保护资源
|
||||
**用例ID**: TC-PERM-001
|
||||
**优先级**: P0
|
||||
**测试步骤**:
|
||||
1. 不携带token访问需要认证的API
|
||||
2. 验证返回401
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 401
|
||||
- 返回认证失败消息
|
||||
|
||||
#### 6.2 使用过期token访问
|
||||
**用例ID**: TC-PERM-002
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 使用已过期的token访问API
|
||||
2. 验证返回401
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 401
|
||||
- 返回token无效消息
|
||||
|
||||
#### 6.3 使用已登出的token访问
|
||||
**用例ID**: TC-PERM-003
|
||||
**优先级**: P1
|
||||
**前置条件**: token已被登出
|
||||
**测试步骤**:
|
||||
1. 使用已加入黑名单的token访问API
|
||||
2. 验证返回401
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 401
|
||||
- 返回token无效消息
|
||||
|
||||
#### 6.4 无权限访问资源
|
||||
**用例ID**: TC-PERM-004
|
||||
**优先级**: P1
|
||||
**前置条件**: 用户没有访问资源的权限
|
||||
**测试步骤**:
|
||||
1. 使用普通用户token访问需要ADMIN权限的资源
|
||||
2. 验证返回403
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 403
|
||||
- 返回权限不足消息
|
||||
|
||||
### 7. 边界条件和异常测试
|
||||
|
||||
#### 7.1 创建重复用户名
|
||||
**用例ID**: TC-EDGE-001
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 创建用户A
|
||||
2. 使用相同的用户名创建用户B
|
||||
3. 验证返回错误
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 400或409
|
||||
- 返回用户名已存在错误
|
||||
|
||||
#### 7.2 创建重复邮箱
|
||||
**用例ID**: TC-EDGE-002
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 创建用户A
|
||||
2. 使用相同的邮箱创建用户B
|
||||
3. 验证返回错误
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 400或409
|
||||
- 返回邮箱已存在错误
|
||||
|
||||
#### 7.3 查询不存在的资源
|
||||
**用例ID**: TC-EDGE-003
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 查询不存在的用户ID
|
||||
2. 验证返回404
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 404
|
||||
- 返回资源未找到消息
|
||||
|
||||
#### 7.4 无效的请求参数
|
||||
**用例ID**: TC-EDGE-004
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 发送缺少必填字段的请求
|
||||
2. 验证返回400
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 400
|
||||
- 返回参数验证错误
|
||||
|
||||
#### 7.5 超长字段输入
|
||||
**用例ID**: TC-EDGE-005
|
||||
**优先级**: P2
|
||||
**测试步骤**:
|
||||
1. 发送超长用户名或邮箱
|
||||
2. 验证返回400
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 400
|
||||
- 返回字段长度超限错误
|
||||
|
||||
### 8. 性能测试
|
||||
|
||||
#### 8.1 并发登录测试
|
||||
**用例ID**: TC-PERF-001
|
||||
**优先级**: P2
|
||||
**测试步骤**:
|
||||
1. 模拟100个并发登录请求
|
||||
2. 验证所有请求都能正常响应
|
||||
3. 记录响应时间
|
||||
|
||||
**预期结果**:
|
||||
- 所有请求成功
|
||||
- 平均响应时间 < 500ms
|
||||
- 无错误发生
|
||||
|
||||
#### 8.2 批量查询性能测试
|
||||
**用例ID**: TC-PERF-002
|
||||
**优先级**: P2
|
||||
**测试步骤**:
|
||||
1. 创建1000个测试用户
|
||||
2. 查询所有用户
|
||||
3. 记录响应时间
|
||||
|
||||
**预期结果**:
|
||||
- HTTP状态码: 200
|
||||
- 响应时间 < 1000ms
|
||||
- 返回完整数据
|
||||
|
||||
### 9. 数据一致性测试
|
||||
|
||||
#### 9.1 缓存一致性测试
|
||||
**用例ID**: TC-CONSIST-001
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 查询用户A(首次查询,从数据库)
|
||||
2. 更新用户A
|
||||
3. 再次查询用户A(应从缓存获取)
|
||||
4. 验证返回更新后的数据
|
||||
|
||||
**预期结果**:
|
||||
- 第二次查询返回更新后的数据
|
||||
- 缓存被正确失效
|
||||
|
||||
#### 9.2 审计日志测试
|
||||
**用例ID**: TC-CONSIST-002
|
||||
**优先级**: P1
|
||||
**测试步骤**:
|
||||
1. 创建用户
|
||||
2. 更新用户
|
||||
3. 删除用户
|
||||
4. 查询审计日志
|
||||
5. 验证所有操作都被记录
|
||||
|
||||
**预期结果**:
|
||||
- 所有操作都被记录
|
||||
- 审计日志包含完整的变更信息
|
||||
|
||||
## 测试执行计划
|
||||
|
||||
### 测试优先级
|
||||
- P0: 核心功能,必须全部通过
|
||||
- P1: 重要功能,应该全部通过
|
||||
- P2: 辅助功能,尽量通过
|
||||
|
||||
### 测试顺序
|
||||
1. 认证授权测试
|
||||
2. 用户管理测试
|
||||
3. 角色管理测试
|
||||
4. 字典管理测试
|
||||
5. OAuth2客户端管理测试
|
||||
6. 权限验证测试
|
||||
7. 边界条件和异常测试
|
||||
8. 性能测试
|
||||
9. 数据一致性测试
|
||||
|
||||
### 测试数据准备
|
||||
- 自动化创建测试用户、角色、字典数据
|
||||
- 测试完成后自动清理
|
||||
- 使用事务回滚确保测试隔离
|
||||
|
||||
## 测试报告
|
||||
|
||||
测试报告应包含以下内容:
|
||||
1. 测试执行摘要
|
||||
2. 通过/失败用例统计
|
||||
3. 失败用例详情
|
||||
4. 性能指标
|
||||
5. 缺陷列表
|
||||
6. 测试覆盖率
|
||||
|
||||
## 缺陷分类
|
||||
|
||||
- 严重: 系统崩溃、数据丢失
|
||||
- 高: 核心功能不可用
|
||||
- 中: 功能部分不可用
|
||||
- 低: 界面、文案问题
|
||||
Reference in New Issue
Block a user