930 lines
33 KiB
JSON
930 lines
33 KiB
JSON
{
|
||
"start_time": "2025-07-16T23:00:00.897018",
|
||
"end_time": "2025-07-16T23:00:00.960285",
|
||
"duration_seconds": "0.06",
|
||
"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-16T23:00:00.910356",
|
||
"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.030138,
|
||
"start_time": "2025-07-16T23:00:00.910384",
|
||
"end_time": "2025-07-16T23:00:00.940522",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0022443750058300793,
|
||
"timestamp": "2025-07-16T23:00:00.912835",
|
||
"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.0014686670037917793,
|
||
"timestamp": "2025-07-16T23:00:00.914547",
|
||
"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.0015354999923147261,
|
||
"timestamp": "2025-07-16T23:00:00.916135",
|
||
"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.0018828750180546194,
|
||
"timestamp": "2025-07-16T23:00:00.918114",
|
||
"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.0015902500017546117,
|
||
"timestamp": "2025-07-16T23:00:00.919808",
|
||
"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.001082582981325686,
|
||
"timestamp": "2025-07-16T23:00:00.921047",
|
||
"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.0010189999884460121,
|
||
"timestamp": "2025-07-16T23:00:00.922146",
|
||
"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.0010123340180143714,
|
||
"timestamp": "2025-07-16T23:00:00.923204",
|
||
"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.001090959005523473,
|
||
"timestamp": "2025-07-16T23:00:00.924475",
|
||
"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.004790083999978378,
|
||
"timestamp": "2025-07-16T23:00:00.929312",
|
||
"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.0014722920022904873,
|
||
"timestamp": "2025-07-16T23:00:00.930893",
|
||
"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.0012294999905861914,
|
||
"timestamp": "2025-07-16T23:00:00.932236",
|
||
"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.001124625006923452,
|
||
"timestamp": "2025-07-16T23:00:00.933441",
|
||
"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.001276958006201312,
|
||
"timestamp": "2025-07-16T23:00:00.934759",
|
||
"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.0013757919950876385,
|
||
"timestamp": "2025-07-16T23:00:00.936178",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0011790000135079026,
|
||
"timestamp": "2025-07-16T23:00:00.937407",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.001041792012983933,
|
||
"timestamp": "2025-07-16T23:00:00.938493",
|
||
"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.0009048329957295209,
|
||
"timestamp": "2025-07-16T23:00:00.939447",
|
||
"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.00099908301490359,
|
||
"timestamp": "2025-07-16T23:00:00.940489",
|
||
"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-16T23:00:00.940605",
|
||
"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-16T23:00:00.940617",
|
||
"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-16T23:00:00.940627",
|
||
"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-16T23:00:00.940637",
|
||
"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.019498,
|
||
"start_time": "2025-07-16T23:00:00.940648",
|
||
"end_time": "2025-07-16T23:00:00.960146",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009971669933293015,
|
||
"timestamp": "2025-07-16T23:00:00.941843",
|
||
"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.0011993749940302223,
|
||
"timestamp": "2025-07-16T23:00:00.943211",
|
||
"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.0012242500088177621,
|
||
"timestamp": "2025-07-16T23:00:00.944474",
|
||
"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.0009042920137289912,
|
||
"timestamp": "2025-07-16T23:00:00.945445",
|
||
"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.0009384579898323864,
|
||
"timestamp": "2025-07-16T23:00:00.946465",
|
||
"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.0007920830103103071,
|
||
"timestamp": "2025-07-16T23:00:00.947392",
|
||
"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.0007891660206951201,
|
||
"timestamp": "2025-07-16T23:00:00.948250",
|
||
"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.0007657079841010273,
|
||
"timestamp": "2025-07-16T23:00:00.949051",
|
||
"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.0007524579996243119,
|
||
"timestamp": "2025-07-16T23:00:00.949944",
|
||
"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.001130833028582856,
|
||
"timestamp": "2025-07-16T23:00:00.951109",
|
||
"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.0011291249829810113,
|
||
"timestamp": "2025-07-16T23:00:00.952309",
|
||
"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.0009257080091629177,
|
||
"timestamp": "2025-07-16T23:00:00.953334",
|
||
"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.0008372919983230531,
|
||
"timestamp": "2025-07-16T23:00:00.954230",
|
||
"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.0010261660208925605,
|
||
"timestamp": "2025-07-16T23:00:00.955305",
|
||
"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.0009143339993897825,
|
||
"timestamp": "2025-07-16T23:00:00.956254",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009617499890737236,
|
||
"timestamp": "2025-07-16T23:00:00.957250",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"details": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.000882416992681101,
|
||
"timestamp": "2025-07-16T23:00:00.958170",
|
||
"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.0008466659928672016,
|
||
"timestamp": "2025-07-16T23:00:00.959061",
|
||
"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.0010115420154761523,
|
||
"timestamp": "2025-07-16T23:00:00.960110",
|
||
"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-16T23:00:00.960228",
|
||
"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-16T23:00:00.960240",
|
||
"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-16T23:00:00.960249",
|
||
"end_time": null,
|
||
"executed_test_cases": []
|
||
}
|
||
],
|
||
"stage_results": [],
|
||
"api_call_details_summary": []
|
||
} |