{ "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": [] }