6.5 KiB
6.5 KiB
批次组织权限范围API测试文档
📋 测试信息
| 项目 | 信息 |
|---|---|
| 测试接口 | /stuColBatchClass/stuColBatchClass/getBatchAuthScope/{batchId} |
| 测试模块 | 学生信息收集批次管理 |
| 测试时间 | 2025-01-27 |
| 测试人员 | cursor |
| 测试版本 | V1.0.0 |
🎯 测试目标
验证批次组织权限范围API接口的功能正确性,确保:
- 用户只能看到有权限访问的组织结构
- 组织树过滤逻辑正确
- 返回的树形结构保持层级关系完整
- 异常情况处理正确
🔧 测试环境
- 后端服务: http://localhost:8080
- 认证方式: Bearer Token (Sa-Token)
- 测试工具: Postman / API测试脚本
- 数据库: MySQL 8.0
📊 测试用例
1. 正常功能测试
1.1 全校学生管理员权限测试
测试步骤:
- 使用全校学生管理员账号登录
- 调用接口
GET /stuColBatchClass/stuColBatchClass/getBatchAuthScope/1 - 验证返回结果
预期结果:
- 返回完整的组织树结构
- 只包含批次1配置的班级及其上级节点
- 所有节点的disabled字段正确设置
测试请求:
curl -X GET "http://localhost:8080/stuColBatchClass/stuColBatchClass/getBatchAuthScope/1" \
-H "Authorization: Bearer {token}" \
-H "clientid: e5cd7e4891bf95d1d19206ce24a7b32e" \
-H "referer: http://localhost"
1.2 普通管理员权限测试
测试步骤:
- 使用普通管理员账号登录
- 调用接口测试不同批次ID
- 验证权限过滤效果
预期结果:
- 只返回用户有权限的组织部分
- 权限范围外的节点被正确过滤
- 保持父子节点关系完整
1.3 班主任权限测试
测试步骤:
- 使用班主任账号登录
- 调用接口测试
- 验证只返回所带班级的相关信息
预期结果:
- 只返回班主任所带班级的组织树
- 包含班级的完整上级层级
- 其他班级信息被过滤
2. 边界情况测试
2.1 无效批次ID测试
测试数据:
- 不存在的批次ID: 99999
- 无效格式: "abc"
- 空值: null
预期结果:
- 返回空列表或适当的错误信息
- 不会抛出异常
2.2 批次无权限配置测试
测试条件: 批次存在但未配置任何班级权限
预期结果:
- 返回空列表
- 响应码200,消息正常
2.3 用户无权限测试
测试条件: 用户对指定批次没有任何权限
预期结果:
- 返回空列表
- 不暴露其他用户的权限信息
3. 性能测试
3.1 大数据量测试
测试条件:
- 批次配置包含大量班级(100+)
- 用户权限范围较大
性能指标:
- 响应时间 < 2秒
- 内存使用合理
- 无内存泄漏
3.2 并发测试
测试条件: 多用户同时调用接口
预期结果:
- 并发处理正常
- 数据隔离正确
- 无数据混乱
4. 数据验证测试
4.1 树形结构验证
验证项目:
- 父子节点关系正确
- 节点ID唯一性
- 层级深度合理
- children数组结构正确
4.2 字段完整性验证
验证字段:
- id: 非空,数字类型
- label: 非空,字符串类型
- parentId: 数字类型或null
- deptCategory: 枚举值有效
- weight: 数字类型
- disabled: 布尔类型
- children: 数组类型
📝 测试结果记录
测试执行记录
| 测试用例 | 执行状态 | 结果 | 备注 |
|---|---|---|---|
| 全校管理员权限 | ⭕ 待执行 | - | - |
| 普通管理员权限 | ⭕ 待执行 | - | - |
| 班主任权限 | ⭕ 待执行 | - | - |
| 无效批次ID | ⭕ 待执行 | - | - |
| 无权限配置 | ⭕ 待执行 | - | - |
| 性能测试 | ⭕ 待执行 | - | - |
问题记录
| 问题ID | 问题描述 | 严重级别 | 状态 | 解决方案 |
|---|---|---|---|---|
| - | - | - | - | - |
🚀 自动化测试脚本
import requests
import json
class BatchAuthScopeAPITest:
def __init__(self, base_url, token):
self.base_url = base_url
self.headers = {
'Authorization': f'Bearer {token}',
'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
'referer': 'http://localhost',
'Content-Type': 'application/json'
}
def test_get_batch_auth_scope(self, batch_id):
"""测试获取批次组织权限范围"""
url = f"{self.base_url}/stuColBatchClass/stuColBatchClass/getBatchAuthScope/{batch_id}"
try:
response = requests.get(url, headers=self.headers)
print(f"Status Code: {response.status_code}")
print(f"Response: {json.dumps(response.json(), indent=2, ensure_ascii=False)}")
# 验证响应结构
if response.status_code == 200:
data = response.json()
assert 'code' in data
assert 'data' in data
# 验证树形结构
if data['data']:
self.validate_tree_structure(data['data'])
print("✅ 测试通过")
else:
print(f"❌ 测试失败: {response.status_code}")
except Exception as e:
print(f"❌ 测试异常: {str(e)}")
def validate_tree_structure(self, tree_data):
"""验证树形结构"""
for node in tree_data:
assert 'id' in node
assert 'label' in node
assert 'children' in node
assert isinstance(node['children'], list)
# 递归验证子节点
if node['children']:
self.validate_tree_structure(node['children'])
# 使用示例
if __name__ == "__main__":
# 替换为实际的token
token = "your_actual_token_here"
tester = BatchAuthScopeAPITest("http://localhost:8080", token)
# 测试不同批次ID
test_batch_ids = [1, 2, 99999] # 包含有效和无效ID
for batch_id in test_batch_ids:
print(f"\n🧪 测试批次ID: {batch_id}")
tester.test_get_batch_auth_scope(batch_id)
📈 测试报告
总体评估
- 测试覆盖率: 待完成
- 功能完整性: 待验证
- 性能表现: 待测试
- 安全性: 待评估
改进建议
- 增加缓存机制提升性能
- 完善错误信息的友好性
- 考虑添加批量查询接口
- 优化大数据量场景的处理
文档更新时间: 2025-01-27 22:15:00
下次更新计划: 测试执行完成后更新结果