6.7 KiB
6.7 KiB
风控检测系统测试文档
概述
本文档详细说明了风控检测系统的测试用例、测试方法和使用说明。测试覆盖了任务创建、查看报告等核心功能。
测试文件结构
/backend/app/tests/
├── conftest.py # 测试配置和共享fixtures
├── test_revenue_integrity.py # 收入完整性算法测试
├── test_task_manager.py # 任务管理器测试
├── test_detection_report.py # 检测报告查看测试
└── test_risk_detection_api.py # API端点测试
测试范围
1. 任务管理器测试 (test_task_manager.py)
测试类: TestTaskManager
覆盖场景:
- ✅ 创建按需检测任务(ON_DEMAND)
- ✅ 创建定期检测任务(PERIODIC)
- ✅ 创建批量检测任务(BATCH)
- ✅ 查询任务列表(支持状态、类型过滤)
- ✅ 获取任务详情
- ✅ 执行检测任务
- ✅ 任务不存在错误处理
- ✅ 任务执行失败处理
测试类: TestDetectionScheduler
覆盖场景:
- ✅ 调度定期检测任务
- ✅ 调度按需检测任务
- ✅ 调度批量检测任务
- ✅ 检查待执行任务
- ✅ 重试失败任务
- ✅ 清理旧任务
2. 检测报告查看测试 (test_detection_report.py)
测试类: TestDetectionReport
覆盖场景:
- ✅ 按任务ID查询检测结果
- ✅ 按实体ID查询检测结果
- ✅ 按风险等级查询检测结果
- ✅ 多条件组合查询
- ✅ 获取检测结果详情
- ✅ 获取检测结果汇总
- ✅ 空结果处理
- ✅ 风险分布统计
- ✅ 证据链结构验证
- ✅ 风险数据结构验证
3. API端点测试 (test_risk_detection_api.py)
测试类: TestRiskDetectionAPI
覆盖场景:
- ✅ 创建任务API
- ✅ 执行任务API
- ✅ 查询任务列表API
- ✅ 获取任务详情API
- ✅ 即时检测API
- ✅ 查询检测结果API
- ✅ 获取结果详情API
- ✅ 获取检测汇总API
- ✅ 获取算法列表API
- ✅ 获取规则列表API
- ✅ 参数验证错误处理
- ✅ 资源不存在错误处理
核心功能测试
1. 任务创建流程
测试步骤:
- 创建按需检测任务
- 验证任务创建成功
- 任务ID生成
- 任务状态为PENDING
- 实体数量正确
- 参数保存正确
- 执行检测任务
- 验证执行结果
- 任务状态更新为COMPLETED
- 执行进度更新
- 结果统计正确
2. 报告查看流程
测试步骤:
- 查询检测结果(支持多条件过滤)
- 获取结果详情
- 获取汇总报告
运行测试
1. 安装依赖
cd /backend
source venv/bin/activate
pip install -r requirements.txt
2. 运行所有测试
# 运行所有测试
pytest app/tests/ -v
# 运行特定测试文件
pytest app/tests/test_task_manager.py -v
pytest app/tests/test_detection_report.py -v
pytest app/tests/test_risk_detection_api.py -v
# 运行特定测试类
pytest app/tests/test_task_manager.py::TestTaskManager -v
# 运行特定测试方法
pytest app/tests/test_task_manager.py::TestTaskManager::test_create_task_on_demand -v
3. 生成覆盖率报告
# 安装coverage
pip install coverage
# 运行测试并生成覆盖率报告
coverage run -m pytest app/tests/
coverage report
# 生成HTML覆盖率报告
coverage html
主要测试用例
任务管理器测试用例
# 创建按需检测任务
test_create_task_on_demand()
# 创建定期检测任务
test_create_task_periodic()
# 创建批量检测任务
test_create_task_batch()
# 查询任务列表
test_list_tasks()
# 执行检测任务
test_execute_task_success()
# 任务不存在处理
test_execute_task_not_found()
# 任务执行失败处理
test_execute_task_with_failure()
检测报告测试用例
# 条件过滤查询
test_list_results_with_task_filter()
test_list_results_with_entity_filter()
test_list_results_with_risk_level_filter()
# 结果详情
test_get_result_detail()
test_get_result_not_found()
# 汇总报告
test_get_detection_summary()
test_get_detection_summary_no_results()
test_get_detection_summary_critical_risk()
# 数据结构验证
test_result_evidence_structure()
test_result_risk_data_structure()
API端点测试用例
# 任务管理
POST /api/v1/risk-detection/tasks
POST /api/v1/risk-detection/tasks/{task_id}/execute
GET /api/v1/risk-detection/tasks
GET /api/v1/risk-detection/tasks/{task_id}
# 即时检测
POST /api/v1/risk-detection/execute
# 结果查询
GET /api/v1/risk-detection/results
GET /api/v1/risk-detection/results/{result_id}
# 汇总报告
GET /api/v1/risk-detection/summary
# 算法和规则
GET /api/v1/risk-detection/algorithms
GET /api/v1/risk-detection/rules
错误处理测试
场景1:任务不存在
with pytest.raises(ValueError, match="任务不存在"):
await task_manager.execute_task("task_not_exist")
场景2:结果不存在
with pytest.raises(HTTPException) as exc_info:
await get_result(result_id=9999)
assert exc_info.value.status_code == 404
场景3:参数验证错误
response = client.post("/api/v1/risk-detection/tasks", json={})
assert response.status_code == 422
性能测试
测试指标
-
任务创建速度
- 单实体:< 100ms
- 批量实体(100个):< 1s
- 批量实体(1000个):< 5s
-
任务执行速度
- 简单算法:< 500ms/实体
- 复杂算法:< 2s/实体
-
查询响应时间
- 任务列表:< 200ms
- 结果查询:< 300ms
- 汇总报告:< 500ms
最佳实践
1. 测试命名规范
- 测试文件名:
test_<module>.py - 测试类名:
Test<ClassName> - 测试方法名:
test_<scenario>_<expected_behavior>
2. 测试数据管理
- 使用fixtures共享测试数据
- 确保测试数据独立性
- 及时清理测试数据
3. Mock使用指南
- 只Mock外部依赖
- 保持Mock逻辑简单
- 验证Mock调用
4. 断言建议
- 使用具体断言而非通用断言
- 验证关键字段而非全部字段
- 提供清晰的错误消息
总结
本测试套件全面覆盖了风控检测系统的核心功能:
- 任务管理:创建、查询、执行、调度
- 报告查看:结果查询、详情获取、汇总分析
- API端点:完整的RESTful API测试
- 错误处理:各种异常场景测试
- 性能测试:响应时间和并发能力
通过这些测试用例,可以确保:
- 功能正确性
- 数据一致性
- 错误处理健壮性
- API接口稳定性
- 性能达标
建议定期运行测试,特别是:
- 代码提交前
- 发布前
- 性能调优后
- 依赖更新后
更新日期: 2024-11-30 版本: v1.0 维护者: 风控检测开发团队