3373 lines
132 KiB
JSON
3373 lines
132 KiB
JSON
{
|
||
"start_time": "2025-07-11T17:53:11.349827",
|
||
"end_time": "2025-07-11T17:53:11.559561",
|
||
"duration_seconds": "0.21",
|
||
"overall_summary": {
|
||
"total_endpoints_defined": 10,
|
||
"endpoints_tested": 10,
|
||
"endpoints_passed": 8,
|
||
"endpoints_failed": 2,
|
||
"endpoints_error": 0,
|
||
"endpoints_skipped": 0,
|
||
"endpoints_partial_success": 0,
|
||
"endpoint_success_rate": "80.00%",
|
||
"total_test_cases_applicable": 200,
|
||
"total_test_cases_executed": 200,
|
||
"test_cases_passed": 112,
|
||
"test_cases_failed": 50,
|
||
"test_cases_error": 0,
|
||
"test_cases_skipped_in_endpoint": 38,
|
||
"test_case_success_rate": "56.00%",
|
||
"total_stages_defined": 1,
|
||
"total_stages_executed": 2,
|
||
"stages_passed": 0,
|
||
"stages_failed": 2,
|
||
"stages_error": 0,
|
||
"stages_skipped": 0,
|
||
"stage_success_rate": "0.00%"
|
||
},
|
||
"errors": [],
|
||
"endpoint_results": [
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Create lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.029874,
|
||
"start_time": "2025-07-11T17:53:11.364902",
|
||
"end_time": "2025-07-11T17:53:11.394776",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.003496749995974824,
|
||
"timestamp": "2025-07-11T17:53:11.368582",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0015044999890960753,
|
||
"timestamp": "2025-07-11T17:53:11.370127",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0013611250033136457,
|
||
"timestamp": "2025-07-11T17:53:11.371528",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0013770829973509535,
|
||
"timestamp": "2025-07-11T17:53:11.372943",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0013291250070324168,
|
||
"timestamp": "2025-07-11T17:53:11.374315",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0011955830123042688,
|
||
"timestamp": "2025-07-11T17:53:11.375549",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"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' 的最后一个路径分段 'lujing_test' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.001131332988734357,
|
||
"timestamp": "2025-07-11T17:53:11.376740",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"segment": "lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0009604170045349747,
|
||
"timestamp": "2025-07-11T17:53:11.377745",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0010929589916486293,
|
||
"timestamp": "2025-07-11T17:53:11.378882",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.002545082999859005,
|
||
"timestamp": "2025-07-11T17:53:11.381474",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0012277920031920075,
|
||
"timestamp": "2025-07-11T17:53:11.382748",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0012191669957246631,
|
||
"timestamp": "2025-07-11T17:53:11.384017",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009828749898588285,
|
||
"timestamp": "2025-07-11T17:53:11.385057",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0009679159993538633,
|
||
"timestamp": "2025-07-11T17:53:11.386066",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0019712920038728043,
|
||
"timestamp": "2025-07-11T17:53:11.388077",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0012011670041829348,
|
||
"timestamp": "2025-07-11T17:53:11.389311",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0014247500075725839,
|
||
"timestamp": "2025-07-11T17:53:11.390770",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0016533329908270389,
|
||
"timestamp": "2025-07-11T17:53:11.392461",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.001225582993356511,
|
||
"timestamp": "2025-07-11T17:53:11.393729",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0009758749947650358,
|
||
"timestamp": "2025-07-11T17:53:11.394749",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"endpoint_name": "List lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.019269,
|
||
"start_time": "2025-07-11T17:53:11.394847",
|
||
"end_time": "2025-07-11T17:53:11.414116",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0008837909990688786,
|
||
"timestamp": "2025-07-11T17:53:11.395904",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.000979125004960224,
|
||
"timestamp": "2025-07-11T17:53:11.396923",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
},
|
||
{
|
||
"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.0009080410090973601,
|
||
"timestamp": "2025-07-11T17:53:11.397860",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0010182499972870573,
|
||
"timestamp": "2025-07-11T17:53:11.398909",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"duration_seconds": 0.0010275829990860075,
|
||
"timestamp": "2025-07-11T17:53:11.399979",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
},
|
||
{
|
||
"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.0008981669961940497,
|
||
"timestamp": "2025-07-11T17:53:11.400908",
|
||
"validation_points": [
|
||
{
|
||
"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.0008331659919349477,
|
||
"timestamp": "2025-07-11T17:53:11.401779",
|
||
"validation_points": [
|
||
{
|
||
"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": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0008517910027876496,
|
||
"timestamp": "2025-07-11T17:53:11.402668",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0008034169877646491,
|
||
"timestamp": "2025-07-11T17:53:11.403518",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0010000420006690547,
|
||
"timestamp": "2025-07-11T17:53:11.404557",
|
||
"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."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0009811659983824939,
|
||
"timestamp": "2025-07-11T17:53:11.405581",
|
||
"validation_points": [
|
||
{
|
||
"field": "data[].update_date"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0008070839976426214,
|
||
"timestamp": "2025-07-11T17:53:11.406428",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.000979332995484583,
|
||
"timestamp": "2025-07-11T17:53:11.407451",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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.000818417000118643,
|
||
"timestamp": "2025-07-11T17:53:11.408308",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0009297499927924946,
|
||
"timestamp": "2025-07-11T17:53:11.409269",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010168330045416951,
|
||
"timestamp": "2025-07-11T17:53:11.410320",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.001065582997398451,
|
||
"timestamp": "2025-07-11T17:53:11.411419",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0008190420048777014,
|
||
"timestamp": "2025-07-11T17:53:11.412273",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。",
|
||
"duration_seconds": 0.0008561249997001141,
|
||
"timestamp": "2025-07-11T17:53:11.413171",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0008800830109976232,
|
||
"timestamp": "2025-07-11T17:53:11.414086",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}",
|
||
"endpoint_name": "Read lujing_test",
|
||
"overall_status": "失败",
|
||
"duration_seconds": 0.001713,
|
||
"start_time": "2025-07-11T17:53:11.414187",
|
||
"end_time": "2025-07-11T17:53:11.415900",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "失败",
|
||
"message": "期望状态码 200,但收到 404。",
|
||
"duration_seconds": 0.0009933749970514327,
|
||
"timestamp": "2025-07-11T17:53:11.415417",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 404,
|
||
"request_url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id",
|
||
"response_body_sample": "{\"code\": 404, \"message\": \"资源 'lujing_test' with ID 'param_id' 未找到.\"}"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 9.16598946787417e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415460",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.541995728388429e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415486",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.20900425221771e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415509",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.874994141981006e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415532",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.917005521245301e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415555",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.7920045694336295e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415578",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791990017518401e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415600",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041991921141744e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415623",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.874994141981006e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415645",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.7920045694336295e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415667",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791000487282872e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415689",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.958987796679139e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415714",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.750008419156075e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415742",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.83299799170345e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415770",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.95799826644361e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415794",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.0829992182552814e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415817",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.9580128183588386e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415840",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.999995093792677e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415863",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.042006473056972e-06,
|
||
"timestamp": "2025-07-11T17:53:11.415885",
|
||
"validation_points": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "PUT /api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Update lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.023612,
|
||
"start_time": "2025-07-11T17:53:11.415953",
|
||
"end_time": "2025-07-11T17:53:11.439565",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0011297500022919849,
|
||
"timestamp": "2025-07-11T17:53:11.417249",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0011232090037083253,
|
||
"timestamp": "2025-07-11T17:53:11.418409",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0009828329930314794,
|
||
"timestamp": "2025-07-11T17:53:11.419420",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0013300419959705323,
|
||
"timestamp": "2025-07-11T17:53:11.420782",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0011165420000907034,
|
||
"timestamp": "2025-07-11T17:53:11.421952",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0010662920103641227,
|
||
"timestamp": "2025-07-11T17:53:11.423058",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"method": "PUT",
|
||
"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": "跳过检查:PUT 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.0009410829952685162,
|
||
"timestamp": "2025-07-11T17:53:11.424045",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:PUT 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.001037249996443279,
|
||
"timestamp": "2025-07-11T17:53:11.425129",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009387909958604723,
|
||
"timestamp": "2025-07-11T17:53:11.426112",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009481669985689223,
|
||
"timestamp": "2025-07-11T17:53:11.427098",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0010380830062786117,
|
||
"timestamp": "2025-07-11T17:53:11.428170",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0009382080024806783,
|
||
"timestamp": "2025-07-11T17:53:11.429148",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010049160046037287,
|
||
"timestamp": "2025-07-11T17:53:11.430198",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.000985666993074119,
|
||
"timestamp": "2025-07-11T17:53:11.431224",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010839580063475296,
|
||
"timestamp": "2025-07-11T17:53:11.432340",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0015084580081747845,
|
||
"timestamp": "2025-07-11T17:53:11.433885",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0018942909955512732,
|
||
"timestamp": "2025-07-11T17:53:11.435831",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0012192499998491257,
|
||
"timestamp": "2025-07-11T17:53:11.437092",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0012040419969707727,
|
||
"timestamp": "2025-07-11T17:53:11.438346",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0011256669968133792,
|
||
"timestamp": "2025-07-11T17:53:11.439520",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "DELETE /api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Delete lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.023387,
|
||
"start_time": "2025-07-11T17:53:11.439710",
|
||
"end_time": "2025-07-11T17:53:11.463097",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0013346670020837337,
|
||
"timestamp": "2025-07-11T17:53:11.441315",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0009839999984251335,
|
||
"timestamp": "2025-07-11T17:53:11.442337",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.000902915999176912,
|
||
"timestamp": "2025-07-11T17:53:11.443267",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0009899169963318855,
|
||
"timestamp": "2025-07-11T17:53:11.444286",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0009340410033473745,
|
||
"timestamp": "2025-07-11T17:53:11.445262",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0008903749985620379,
|
||
"timestamp": "2025-07-11T17:53:11.446183",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"method": "DELETE",
|
||
"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": "跳过检查:DELETE 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.0008418750076089054,
|
||
"timestamp": "2025-07-11T17:53:11.447063",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.001004040997941047,
|
||
"timestamp": "2025-07-11T17:53:11.448125",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009037499985424802,
|
||
"timestamp": "2025-07-11T17:53:11.449072",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009570410038577393,
|
||
"timestamp": "2025-07-11T17:53:11.450097",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.001007083003059961,
|
||
"timestamp": "2025-07-11T17:53:11.451139",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0009646249964134768,
|
||
"timestamp": "2025-07-11T17:53:11.452148",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.001003833007416688,
|
||
"timestamp": "2025-07-11T17:53:11.453194",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.001483250001911074,
|
||
"timestamp": "2025-07-11T17:53:11.454721",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0016864580102264881,
|
||
"timestamp": "2025-07-11T17:53:11.456447",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。",
|
||
"duration_seconds": 0.0016451669944217429,
|
||
"timestamp": "2025-07-11T17:53:11.458143",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 404,
|
||
"response_body": {
|
||
"code": 404,
|
||
"data": false,
|
||
"message": "未找到要删除的资源"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.001581959004397504,
|
||
"timestamp": "2025-07-11T17:53:11.459767",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0011151670041726902,
|
||
"timestamp": "2025-07-11T17:53:11.460972",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0011113750078948215,
|
||
"timestamp": "2025-07-11T17:53:11.462125",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0009074580011656508,
|
||
"timestamp": "2025-07-11T17:53:11.463073",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.023672,
|
||
"start_time": "2025-07-11T17:53:11.463154",
|
||
"end_time": "2025-07-11T17:53:11.486826",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0010356249986216426,
|
||
"timestamp": "2025-07-11T17:53:11.464352",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0011809169955085963,
|
||
"timestamp": "2025-07-11T17:53:11.465571",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.001064041003701277,
|
||
"timestamp": "2025-07-11T17:53:11.466664",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0012730830057989806,
|
||
"timestamp": "2025-07-11T17:53:11.467988",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0011972089996561408,
|
||
"timestamp": "2025-07-11T17:53:11.469240",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0009734170016599819,
|
||
"timestamp": "2025-07-11T17:53:11.470256",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"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' 的最后一个路径分段 'wb_dr_pro_daily_report' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.0010390829993411899,
|
||
"timestamp": "2025-07-11T17:53:11.471335",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"segment": "wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0010626669973134995,
|
||
"timestamp": "2025-07-11T17:53:11.472445",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009378329996252432,
|
||
"timestamp": "2025-07-11T17:53:11.473422",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0011607500055106357,
|
||
"timestamp": "2025-07-11T17:53:11.474624",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0011389160063117743,
|
||
"timestamp": "2025-07-11T17:53:11.475803",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0011143750016344711,
|
||
"timestamp": "2025-07-11T17:53:11.477134",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010990419978043064,
|
||
"timestamp": "2025-07-11T17:53:11.478284",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0009723750117700547,
|
||
"timestamp": "2025-07-11T17:53:11.479295",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0011439590016379952,
|
||
"timestamp": "2025-07-11T17:53:11.480475",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0011147920013172552,
|
||
"timestamp": "2025-07-11T17:53:11.481619",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0012044589966535568,
|
||
"timestamp": "2025-07-11T17:53:11.482859",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0013410410028882325,
|
||
"timestamp": "2025-07-11T17:53:11.484240",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.001321333009400405,
|
||
"timestamp": "2025-07-11T17:53:11.485618",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0011231659882469103,
|
||
"timestamp": "2025-07-11T17:53:11.486798",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.020798,
|
||
"start_time": "2025-07-11T17:53:11.486886",
|
||
"end_time": "2025-07-11T17:53:11.507684",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0009555829892633483,
|
||
"timestamp": "2025-07-11T17:53:11.488004",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0009991659899242222,
|
||
"timestamp": "2025-07-11T17:53:11.489036",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
},
|
||
{
|
||
"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.0009551249968353659,
|
||
"timestamp": "2025-07-11T17:53:11.490024",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0009227499976987019,
|
||
"timestamp": "2025-07-11T17:53:11.490978",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"duration_seconds": 0.0009283749968744814,
|
||
"timestamp": "2025-07-11T17:53:11.491952",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
},
|
||
{
|
||
"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.0010170830064453185,
|
||
"timestamp": "2025-07-11T17:53:11.493000",
|
||
"validation_points": [
|
||
{
|
||
"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.0010011249978560954,
|
||
"timestamp": "2025-07-11T17:53:11.494051",
|
||
"validation_points": [
|
||
{
|
||
"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": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0008163339953171089,
|
||
"timestamp": "2025-07-11T17:53:11.494913",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0007821249892003834,
|
||
"timestamp": "2025-07-11T17:53:11.495733",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"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.",
|
||
"duration_seconds": 0.0009810000046854839,
|
||
"timestamp": "2025-07-11T17:53:11.496753",
|
||
"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."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0008438749937340617,
|
||
"timestamp": "2025-07-11T17:53:11.497633",
|
||
"validation_points": [
|
||
{
|
||
"field": "data[].update_date"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0008865419949870557,
|
||
"timestamp": "2025-07-11T17:53:11.498557",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
},
|
||
{
|
||
"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-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008278750028694049,
|
||
"timestamp": "2025-07-11T17:53:11.499426",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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.0008350410062121227,
|
||
"timestamp": "2025-07-11T17:53:11.500301",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0009679590002633631,
|
||
"timestamp": "2025-07-11T17:53:11.501303",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0009666669939178973,
|
||
"timestamp": "2025-07-11T17:53:11.502300",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.000942333004786633,
|
||
"timestamp": "2025-07-11T17:53:11.503273",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0020194160024402663,
|
||
"timestamp": "2025-07-11T17:53:11.505330",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。",
|
||
"duration_seconds": 0.0011406670091673732,
|
||
"timestamp": "2025-07-11T17:53:11.506547",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0010695419914554805,
|
||
"timestamp": "2025-07-11T17:53:11.507654",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.001858,
|
||
"start_time": "2025-07-11T17:53:11.507759",
|
||
"end_time": "2025-07-11T17:53:11.509617",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "失败",
|
||
"message": "期望状态码 200,但收到 404。",
|
||
"duration_seconds": 0.0011881249956786633,
|
||
"timestamp": "2025-07-11T17:53:11.509119",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 404,
|
||
"request_url": "http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id",
|
||
"response_body_sample": "{\"code\": 404, \"message\": \"资源 'wb_dr_pro_daily_report' with ID 'param_id' 未找到.\"}"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.957998943515122e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509167",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.290989742614329e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509192",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.750000804662704e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509217",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.208989700302482e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509241",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.208000170066953e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509265",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.999995093792677e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509289",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.250011549331248e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509312",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 9.25001222640276e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509340",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.875001756474376e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509368",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.915994501672685e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509394",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.374997949227691e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509417",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.124996045604348e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509440",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.124996045604348e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509464",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041991921141744e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509487",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041991921141744e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509510",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041991921141744e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509533",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041991921141744e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509556",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041991921141744e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509579",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.916990969330072e-06,
|
||
"timestamp": "2025-07-11T17:53:11.509602",
|
||
"validation_points": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.02515,
|
||
"start_time": "2025-07-11T17:53:11.509671",
|
||
"end_time": "2025-07-11T17:53:11.534821",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.001378500004648231,
|
||
"timestamp": "2025-07-11T17:53:11.511211",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0015334999916376546,
|
||
"timestamp": "2025-07-11T17:53:11.512803",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.001228459004778415,
|
||
"timestamp": "2025-07-11T17:53:11.514068",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0011485419963719323,
|
||
"timestamp": "2025-07-11T17:53:11.515248",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0011086660088039935,
|
||
"timestamp": "2025-07-11T17:53:11.516400",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0011778330081142485,
|
||
"timestamp": "2025-07-11T17:53:11.517616",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"method": "PUT",
|
||
"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": "跳过检查:PUT 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.0014074589998926967,
|
||
"timestamp": "2025-07-11T17:53:11.519069",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:PUT 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0011805829999502748,
|
||
"timestamp": "2025-07-11T17:53:11.520318",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.001004124991595745,
|
||
"timestamp": "2025-07-11T17:53:11.521362",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0010703329899115488,
|
||
"timestamp": "2025-07-11T17:53:11.522479",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0009586669912096113,
|
||
"timestamp": "2025-07-11T17:53:11.523471",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0010820000024978071,
|
||
"timestamp": "2025-07-11T17:53:11.524593",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.001234125011251308,
|
||
"timestamp": "2025-07-11T17:53:11.525886",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.001522499995189719,
|
||
"timestamp": "2025-07-11T17:53:11.527454",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0012064999900758266,
|
||
"timestamp": "2025-07-11T17:53:11.528697",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0011500419932417572,
|
||
"timestamp": "2025-07-11T17:53:11.529878",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0012199579941807315,
|
||
"timestamp": "2025-07-11T17:53:11.531142",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0012519580050138757,
|
||
"timestamp": "2025-07-11T17:53:11.532433",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.001182291001896374,
|
||
"timestamp": "2025-07-11T17:53:11.533659",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0010824579949257895,
|
||
"timestamp": "2025-07-11T17:53:11.534792",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.022812,
|
||
"start_time": "2025-07-11T17:53:11.534892",
|
||
"end_time": "2025-07-11T17:53:11.557704",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0012637500040000305,
|
||
"timestamp": "2025-07-11T17:53:11.536425",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"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.0017378329939674586,
|
||
"timestamp": "2025-07-11T17:53:11.538210",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0010872090060729533,
|
||
"timestamp": "2025-07-11T17:53:11.539327",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0010127500136150047,
|
||
"timestamp": "2025-07-11T17:53:11.540372",
|
||
"validation_points": [
|
||
{
|
||
"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": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0009854999952949584,
|
||
"timestamp": "2025-07-11T17:53:11.541400",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.001189957998576574,
|
||
"timestamp": "2025-07-11T17:53:11.542623",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"method": "DELETE",
|
||
"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": "跳过检查:DELETE 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.0010460409976076335,
|
||
"timestamp": "2025-07-11T17:53:11.543713",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0010559579968685284,
|
||
"timestamp": "2025-07-11T17:53:11.544816",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009579579927958548,
|
||
"timestamp": "2025-07-11T17:53:11.545820",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0010569169971859083,
|
||
"timestamp": "2025-07-11T17:53:11.546919",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0009474590042373165,
|
||
"timestamp": "2025-07-11T17:53:11.547902",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0009692909952718765,
|
||
"timestamp": "2025-07-11T17:53:11.548910",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009374579967698082,
|
||
"timestamp": "2025-07-11T17:53:11.549890",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"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) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.000941624995903112,
|
||
"timestamp": "2025-07-11T17:53:11.550884",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0012995419965591282,
|
||
"timestamp": "2025-07-11T17:53:11.552217",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。",
|
||
"duration_seconds": 0.0012781670084223151,
|
||
"timestamp": "2025-07-11T17:53:11.553529",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 404,
|
||
"response_body": {
|
||
"code": 404,
|
||
"data": false,
|
||
"message": "未找到要删除的资源"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.0010497080074856058,
|
||
"timestamp": "2025-07-11T17:53:11.554618",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0009509999945294112,
|
||
"timestamp": "2025-07-11T17:53:11.555604",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0009945830097422004,
|
||
"timestamp": "2025-07-11T17:53:11.556644",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0009927920036716387,
|
||
"timestamp": "2025-07-11T17:53:11.557678",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"stage_results": [
|
||
{
|
||
"stage_id": "dms_crud_scenario_stage",
|
||
"stage_name": "DMS Full CRUD Scenario",
|
||
"description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)",
|
||
"api_group_name": "Global (所有API)",
|
||
"tags": [
|
||
"dms",
|
||
"crud",
|
||
"scenario"
|
||
],
|
||
"overall_status": "失败",
|
||
"duration_seconds": "0.00",
|
||
"start_time": "2025-07-11T17:53:11",
|
||
"end_time": "2025-07-11T17:53:11",
|
||
"message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (执行错误) 而中止.",
|
||
"executed_steps_count": 1,
|
||
"executed_steps": [
|
||
{
|
||
"step_name": "Step 1: Create Resource",
|
||
"description": null,
|
||
"lookup_key": "CREATE",
|
||
"resolved_endpoint": null,
|
||
"status": "执行错误",
|
||
"message": "步骤执行期间发生意外错误: name 'BaseEndpoint' is not defined",
|
||
"duration_seconds": "0.0000",
|
||
"timestamp": "2025-07-11T17:53:11+0800",
|
||
"validation_points": [],
|
||
"api_call_curl": "N/A",
|
||
"request_details": null,
|
||
"extracted_outputs": {},
|
||
"context_after_step_summary": {}
|
||
}
|
||
],
|
||
"final_stage_context_summary": {
|
||
"pk_name": "description",
|
||
"pk_value": "b35c0305-7a09-40e3-a657-2abf4edb3b5f",
|
||
"current_payload": "Type: dict, Keys/Count: 1",
|
||
"update_payload": "Type: dict, Keys/Count: 1",
|
||
"scenario_endpoints": "Type: dict, Keys/Count: 5"
|
||
}
|
||
},
|
||
{
|
||
"stage_id": "dms_crud_scenario_stage",
|
||
"stage_name": "DMS Full CRUD Scenario",
|
||
"description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)",
|
||
"api_group_name": "Global (所有API)",
|
||
"tags": [
|
||
"dms",
|
||
"crud",
|
||
"scenario"
|
||
],
|
||
"overall_status": "失败",
|
||
"duration_seconds": "0.00",
|
||
"start_time": "2025-07-11T17:53:11",
|
||
"end_time": "2025-07-11T17:53:11",
|
||
"message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (执行错误) 而中止.",
|
||
"executed_steps_count": 1,
|
||
"executed_steps": [
|
||
{
|
||
"step_name": "Step 1: Create Resource",
|
||
"description": null,
|
||
"lookup_key": "CREATE",
|
||
"resolved_endpoint": null,
|
||
"status": "执行错误",
|
||
"message": "步骤执行期间发生意外错误: name 'BaseEndpoint' is not defined",
|
||
"duration_seconds": "0.0000",
|
||
"timestamp": "2025-07-11T17:53:11+0800",
|
||
"validation_points": [],
|
||
"api_call_curl": "N/A",
|
||
"request_details": null,
|
||
"extracted_outputs": {},
|
||
"context_after_step_summary": {}
|
||
}
|
||
],
|
||
"final_stage_context_summary": {
|
||
"pk_name": "description",
|
||
"pk_value": "7cca7504-2eaa-44e7-aad9-9e9c6b1ce671",
|
||
"current_payload": "Type: dict, Keys/Count: 1",
|
||
"update_payload": "Type: dict, Keys/Count: 1",
|
||
"scenario_endpoints": "Type: dict, Keys/Count: 5"
|
||
}
|
||
}
|
||
],
|
||
"api_call_details_summary": []
|
||
} |