930 lines
33 KiB
JSON
930 lines
33 KiB
JSON
{
|
||
"start_time": "2025-07-16T22:58:43.019455",
|
||
"end_time": "2025-07-16T22:58:43.099656",
|
||
"duration_seconds": "0.08",
|
||
"overall_summary": {
|
||
"total_endpoints_defined": 10,
|
||
"endpoints_tested": 10,
|
||
"endpoints_passed": 2,
|
||
"endpoints_failed": 0,
|
||
"endpoints_error": 0,
|
||
"endpoints_skipped": 8,
|
||
"endpoints_partial_success": 0,
|
||
"endpoint_success_rate": "100.00%",
|
||
"total_test_cases_applicable": 190,
|
||
"total_test_cases_executed": 38,
|
||
"test_cases_passed": 26,
|
||
"test_cases_failed": 12,
|
||
"test_cases_error": 0,
|
||
"test_cases_skipped_in_endpoint": 0,
|
||
"test_case_success_rate": "68.42%",
|
||
"total_stages_defined": 0,
|
||
"total_stages_executed": 0,
|
||
"stages_passed": 0,
|
||
"stages_failed": 0,
|
||
"stages_error": 0,
|
||
"stages_skipped": 0,
|
||
"stage_success_rate": "N/A"
|
||
},
|
||
"errors": [],
|
||
"endpoint_results": [
|
||
{
|
||
"endpoint_id": "POST_/api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Create lujing_test",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.038812",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"endpoint_name": "List lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.034614,
|
||
"start_time": "2025-07-16T22:58:43.038838",
|
||
"end_time": "2025-07-16T22:58:43.073452",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.003914708009688184,
|
||
"timestamp": "2025-07-16T22:58:43.042983",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID; 缺少必需的请求头 X-Data-Domain; 缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0017850839940365404,
|
||
"timestamp": "2025-07-16T22:58:43.044951",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "缺少必需的请求头 X-Tenant-ID",
|
||
"details": {
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "缺少必需的请求头 X-Data-Domain",
|
||
"details": {
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "缺少必需的请求头 Authorization",
|
||
"details": {
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.001427250012056902,
|
||
"timestamp": "2025-07-16T22:58:43.046427",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0016378749860450625,
|
||
"timestamp": "2025-07-16T22:58:43.048153",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"details": {
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"duration_seconds": 0.0015438749978784472,
|
||
"timestamp": "2025-07-16T22:58:43.049814",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"details": {}
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"details": {
|
||
"keys": [
|
||
"code",
|
||
"data",
|
||
"message"
|
||
]
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.00137570797232911,
|
||
"timestamp": "2025-07-16T22:58:43.051338",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"details": {
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"method": "POST",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.001307708997046575,
|
||
"timestamp": "2025-07-16T22:58:43.052731",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"details": {
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"segment": "1.0.0"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.00122808400192298,
|
||
"timestamp": "2025-07-16T22:58:43.054004",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010727079934440553,
|
||
"timestamp": "2025-07-16T22:58:43.055235",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "字段'code'在schema中未标记为必填(required)",
|
||
"details": {
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "字段'message'在schema中未标记为必填(required)",
|
||
"details": {
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "字段'data'在schema中未标记为必填(required)",
|
||
"details": {
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"details": {
|
||
"status_code": "200"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.004427542007761076,
|
||
"timestamp": "2025-07-16T22:58:43.059706",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。",
|
||
"duration_seconds": 0.0017635409894865006,
|
||
"timestamp": "2025-07-16T22:58:43.061618",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。",
|
||
"details": {
|
||
"field": "data[].update_date"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0013132920139469206,
|
||
"timestamp": "2025-07-16T22:58:43.063037",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 正确以'/api/'开头",
|
||
"details": {
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 包含版本标识: 'v1'",
|
||
"details": {
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0010133750038221478,
|
||
"timestamp": "2025-07-16T22:58:43.064107",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"details": {
|
||
"status_code": 200
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0021466670150402933,
|
||
"timestamp": "2025-07-16T22:58:43.066290",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0021092919923830777,
|
||
"timestamp": "2025-07-16T22:58:43.068448",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0013950419961474836,
|
||
"timestamp": "2025-07-16T22:58:43.069890",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0013098749914206564,
|
||
"timestamp": "2025-07-16T22:58:43.071243",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010896250023506582,
|
||
"timestamp": "2025-07-16T22:58:43.072386",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009959999879356474,
|
||
"timestamp": "2025-07-16T22:58:43.073419",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"details": {}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "GET_/api/dms/wb_ml/v1/lujing_test/1.0.0/{id}",
|
||
"endpoint_name": "Read lujing_test",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.073536",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "PUT_/api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Update lujing_test",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.073548",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "DELETE_/api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Delete lujing_test",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.073558",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "POST_/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"endpoint_name": "Create wb_dr_pro_daily_report",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.073567",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0",
|
||
"endpoint_name": "List wb_dr_pro_daily_report",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.02594,
|
||
"start_time": "2025-07-16T22:58:43.073577",
|
||
"end_time": "2025-07-16T22:58:43.099517",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0014978749968577176,
|
||
"timestamp": "2025-07-16T22:58:43.075266",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID; 缺少必需的请求头 X-Data-Domain; 缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.00172545897657983,
|
||
"timestamp": "2025-07-16T22:58:43.077162",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "缺少必需的请求头 X-Tenant-ID",
|
||
"details": {
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "缺少必需的请求头 X-Data-Domain",
|
||
"details": {
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "缺少必需的请求头 Authorization",
|
||
"details": {
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010862920025829226,
|
||
"timestamp": "2025-07-16T22:58:43.078283",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.000992874993244186,
|
||
"timestamp": "2025-07-16T22:58:43.079340",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"details": {
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"duration_seconds": 0.0011194160033483058,
|
||
"timestamp": "2025-07-16T22:58:43.080534",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"details": {}
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"details": {
|
||
"keys": [
|
||
"code",
|
||
"data",
|
||
"message"
|
||
]
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0012399579863995314,
|
||
"timestamp": "2025-07-16T22:58:43.082172",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"details": {
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0",
|
||
"method": "POST",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.00352362499688752,
|
||
"timestamp": "2025-07-16T22:58:43.086037",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"details": {
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0",
|
||
"segment": "1.0.0"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0011125830060336739,
|
||
"timestamp": "2025-07-16T22:58:43.087194",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009679580107331276,
|
||
"timestamp": "2025-07-16T22:58:43.088310",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "字段'code'在schema中未标记为必填(required)",
|
||
"details": {
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "字段'message'在schema中未标记为必填(required)",
|
||
"details": {
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "字段'data'在schema中未标记为必填(required)",
|
||
"details": {
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"details": {
|
||
"status_code": "200"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009803329885471612,
|
||
"timestamp": "2025-07-16T22:58:43.089326",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。",
|
||
"duration_seconds": 0.0009343750134576112,
|
||
"timestamp": "2025-07-16T22:58:43.090330",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。",
|
||
"details": {
|
||
"field": "data[].update_date"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0011188329954165965,
|
||
"timestamp": "2025-07-16T22:58:43.091687",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 正确以'/api/'开头",
|
||
"details": {
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
},
|
||
{
|
||
"passed": true,
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 包含版本标识: 'v1'",
|
||
"details": {
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.001335583016043529,
|
||
"timestamp": "2025-07-16T22:58:43.093309",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"details": {
|
||
"status_code": 200
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0011536669917404652,
|
||
"timestamp": "2025-07-16T22:58:43.094502",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0011374590103514493,
|
||
"timestamp": "2025-07-16T22:58:43.095678",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010767499916255474,
|
||
"timestamp": "2025-07-16T22:58:43.096792",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009483750036451966,
|
||
"timestamp": "2025-07-16T22:58:43.097775",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008304169750772417,
|
||
"timestamp": "2025-07-16T22:58:43.098648",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008013329934328794,
|
||
"timestamp": "2025-07-16T22:58:43.099488",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"details": {}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "GET_/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}",
|
||
"endpoint_name": "Read wb_dr_pro_daily_report",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.099590",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "PUT_/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"endpoint_name": "Update wb_dr_pro_daily_report",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.099600",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
},
|
||
{
|
||
"endpoint_id": "DELETE_/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"endpoint_name": "Delete wb_dr_pro_daily_report",
|
||
"overall_status": "跳过",
|
||
"duration_seconds": 0.0,
|
||
"start_time": "2025-07-16T22:58:43.099610",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
}
|
||
],
|
||
"stage_results": [],
|
||
"api_call_details_summary": []
|
||
} |