{ "start_time": "2025-07-11T18:01:51.189965", "end_time": "2025-07-11T18:01:51.375546", "duration_seconds": "0.19", "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.027555, "start_time": "2025-07-11T18:01:51.203022", "end_time": "2025-07-11T18:01:51.230577", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0032178749970626086, "timestamp": "2025-07-11T18:01:51.206414", "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.001403832997311838, "timestamp": "2025-07-11T18:01:51.207862", "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.0011797500046668574, "timestamp": "2025-07-11T18:01:51.209077", "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.0013407500082394108, "timestamp": "2025-07-11T18:01:51.210452", "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.001211082999361679, "timestamp": "2025-07-11T18:01:51.211706", "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.0010931659926427528, "timestamp": "2025-07-11T18:01:51.212836", "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.0011302079947199672, "timestamp": "2025-07-11T18:01:51.214035", "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.0009812920034164563, "timestamp": "2025-07-11T18:01:51.215060", "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.0009785000002011657, "timestamp": "2025-07-11T18:01:51.216080", "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.0027952080126851797, "timestamp": "2025-07-11T18:01:51.218917", "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.0011146670003654435, "timestamp": "2025-07-11T18:01:51.220077", "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.001100459005101584, "timestamp": "2025-07-11T18:01:51.221221", "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.0009897919953800738, "timestamp": "2025-07-11T18:01:51.222261", "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.0010139589867321774, "timestamp": "2025-07-11T18:01:51.223323", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0010436669981572777, "timestamp": "2025-07-11T18:01:51.224402", "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.0010904999944614246, "timestamp": "2025-07-11T18:01:51.225527", "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.0014423750108107924, "timestamp": "2025-07-11T18:01:51.227004", "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.0014260000025387853, "timestamp": "2025-07-11T18:01:51.228466", "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.0010238329996354878, "timestamp": "2025-07-11T18:01:51.229531", "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.000975666000158526, "timestamp": "2025-07-11T18:01:51.230551", "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.019893, "start_time": "2025-07-11T18:01:51.230650", "end_time": "2025-07-11T18:01:51.250543", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0009309580054832622, "timestamp": "2025-07-11T18:01:51.231824", "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.0010596670035738498, "timestamp": "2025-07-11T18:01:51.232926", "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.0009361249976791441, "timestamp": "2025-07-11T18:01:51.233894", "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.000888082999153994, "timestamp": "2025-07-11T18:01:51.234813", "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.0008430830057477579, "timestamp": "2025-07-11T18:01:51.235693", "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.0007470409909728914, "timestamp": "2025-07-11T18:01:51.236470", "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.0007732920057605952, "timestamp": "2025-07-11T18:01:51.237280", "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.0007587910076836124, "timestamp": "2025-07-11T18:01:51.238080", "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.0007793749973643571, "timestamp": "2025-07-11T18:01:51.238896", "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.000982333003776148, "timestamp": "2025-07-11T18:01:51.239936", "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.0007897500036051497, "timestamp": "2025-07-11T18:01:51.240764", "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.000782916002208367, "timestamp": "2025-07-11T18:01:51.241584", "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.0015084999904502183, "timestamp": "2025-07-11T18:01:51.243146", "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.0009054160036612302, "timestamp": "2025-07-11T18:01:51.244093", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.00124020800285507, "timestamp": "2025-07-11T18:01:51.245367", "validation_points": [ { "passed": true, "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" } ] }, { "test_case_id": "TC-ERROR-4001-BODY", "test_case_name": "请求体字段类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0012612080026883632, "timestamp": "2025-07-11T18:01:51.246661", "validation_points": [ { "passed": true, "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。" } ] }, { "test_case_id": "TC-ERROR-4002", "test_case_name": "数值参数越界检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:未找到具有明确范围限制的数值字段。", "duration_seconds": 0.0012295410124352202, "timestamp": "2025-07-11T18:01:51.247924", "validation_points": [ { "passed": true, "message": "跳过测试:未找到具有明确范围限制的数值字段。" } ] }, { "test_case_id": "TC-ERROR-4006", "test_case_name": "非法枚举值检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:未找到具有明确枚举值限制的字段。", "duration_seconds": 0.0008931250049499795, "timestamp": "2025-07-11T18:01:51.248851", "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.0007615829963469878, "timestamp": "2025-07-11T18:01:51.249652", "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.0008291250123875216, "timestamp": "2025-07-11T18:01:51.250513", "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.001588, "start_time": "2025-07-11T18:01:51.250626", "end_time": "2025-07-11T18:01:51.252214", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "失败", "message": "期望状态码 200,但收到 404。", "duration_seconds": 0.0009235000034095719, "timestamp": "2025-07-11T18:01:51.251728", "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.082999895326793e-06, "timestamp": "2025-07-11T18:01:51.251776", "validation_points": [] }, { "test_case_id": "TC-SECURITY-002", "test_case_name": "敏感字段加密检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.959009963087738e-06, "timestamp": "2025-07-11T18:01:51.251803", "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.5830030255019665e-06, "timestamp": "2025-07-11T18:01:51.251828", "validation_points": [] }, { "test_case_id": "TC-RESTful-001", "test_case_name": "核心命名与结构规范检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.208000170066953e-06, "timestamp": "2025-07-11T18:01:51.251852", "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-11T18:01:51.251876", "validation_points": [] }, { "test_case_id": "TC-RESTful-004", "test_case_name": "资源集合复数命名检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.1250105975195765e-06, "timestamp": "2025-07-11T18:01:51.251899", "validation_points": [] }, { "test_case_id": "TC-RESTful-002", "test_case_name": "资源路径名词检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.0829992182552814e-06, "timestamp": "2025-07-11T18:01:51.251923", "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": 6.9590023485943675e-06, "timestamp": "2025-07-11T18:01:51.251946", "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.250011549331248e-06, "timestamp": "2025-07-11T18:01:51.251969", "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.999995093792677e-06, "timestamp": "2025-07-11T18:01:51.251992", "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.041002390906215e-06, "timestamp": "2025-07-11T18:01:51.252015", "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.041002390906215e-06, "timestamp": "2025-07-11T18:01:51.252038", "validation_points": [] }, { "test_case_id": "TC-SECURITY-001", "test_case_name": "HTTPS 协议强制性检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.999995093792677e-06, "timestamp": "2025-07-11T18:01:51.252061", "validation_points": [] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.000009645707905e-06, "timestamp": "2025-07-11T18:01:51.252083", "validation_points": [] }, { "test_case_id": "TC-ERROR-4001-BODY", "test_case_name": "请求体字段类型不匹配检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.875008693896234e-06, "timestamp": "2025-07-11T18:01:51.252106", "validation_points": [] }, { "test_case_id": "TC-ERROR-4002", "test_case_name": "数值参数越界检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.208000170066953e-06, "timestamp": "2025-07-11T18:01:51.252129", "validation_points": [] }, { "test_case_id": "TC-ERROR-4006", "test_case_name": "非法枚举值检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.9590023485943675e-06, "timestamp": "2025-07-11T18:01:51.252152", "validation_points": [] }, { "test_case_id": "TC-ERROR-4003-BODY", "test_case_name": "缺失必填请求体字段检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.0829992182552814e-06, "timestamp": "2025-07-11T18:01:51.252175", "validation_points": [] }, { "test_case_id": "TC-ERROR-4003-QUERY", "test_case_name": "缺失必填查询参数检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.291993824765086e-06, "timestamp": "2025-07-11T18:01:51.252198", "validation_points": [] } ] }, { "endpoint_id": "PUT /api/dms/wb_ml/v1/lujing_test", "endpoint_name": "Update lujing_test", "overall_status": "通过", "duration_seconds": 0.020668, "start_time": "2025-07-11T18:01:51.252266", "end_time": "2025-07-11T18:01:51.272934", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0011774580052588135, "timestamp": "2025-07-11T18:01:51.253600", "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.0010462920035934076, "timestamp": "2025-07-11T18:01:51.254682", "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.0009398330003023148, "timestamp": "2025-07-11T18:01:51.255650", "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.0008858749934006482, "timestamp": "2025-07-11T18:01:51.256564", "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.0008819579961709678, "timestamp": "2025-07-11T18:01:51.257481", "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.0009910419903462753, "timestamp": "2025-07-11T18:01:51.258503", "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.0009516249992884696, "timestamp": "2025-07-11T18:01:51.259496", "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.0009412500075995922, "timestamp": "2025-07-11T18:01:51.260475", "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.0009099589951802045, "timestamp": "2025-07-11T18:01:51.261428", "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.0009431249927729368, "timestamp": "2025-07-11T18:01:51.262411", "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.0010243340075248852, "timestamp": "2025-07-11T18:01:51.263468", "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.0009774579957593232, "timestamp": "2025-07-11T18:01:51.264493", "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.0010409590031486005, "timestamp": "2025-07-11T18:01:51.265576", "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.0009514159901300445, "timestamp": "2025-07-11T18:01:51.266575", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0010367500071879476, "timestamp": "2025-07-11T18:01:51.267645", "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.0012279160000616685, "timestamp": "2025-07-11T18:01:51.268910", "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.0010710000060498714, "timestamp": "2025-07-11T18:01:51.270013", "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.0009615839953767136, "timestamp": "2025-07-11T18:01:51.271010", "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.0009471660014241934, "timestamp": "2025-07-11T18:01:51.271995", "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.0008816670015221462, "timestamp": "2025-07-11T18:01:51.272913", "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.017974, "start_time": "2025-07-11T18:01:51.272990", "end_time": "2025-07-11T18:01:51.290964", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0009028339991346002, "timestamp": "2025-07-11T18:01:51.274050", "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.0009804169967537746, "timestamp": "2025-07-11T18:01:51.275068", "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.0008671249961480498, "timestamp": "2025-07-11T18:01:51.275962", "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.0008644579938845709, "timestamp": "2025-07-11T18:01:51.276855", "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.000923374987905845, "timestamp": "2025-07-11T18:01:51.277819", "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.0007976670021889731, "timestamp": "2025-07-11T18:01:51.278645", "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.0008324580121552572, "timestamp": "2025-07-11T18:01:51.279520", "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.0008100830018520355, "timestamp": "2025-07-11T18:01:51.280368", "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.000817624997580424, "timestamp": "2025-07-11T18:01:51.281225", "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.0008775419992161915, "timestamp": "2025-07-11T18:01:51.282145", "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.0007901669887360185, "timestamp": "2025-07-11T18:01:51.282967", "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.000799959001597017, "timestamp": "2025-07-11T18:01:51.283804", "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.0007744580070720986, "timestamp": "2025-07-11T18:01:51.284623", "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.0008474580099573359, "timestamp": "2025-07-11T18:01:51.285506", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0009027920023072511, "timestamp": "2025-07-11T18:01:51.286440", "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.0009559580066706985, "timestamp": "2025-07-11T18:01:51.287427", "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.0008888750016922131, "timestamp": "2025-07-11T18:01:51.288348", "validation_points": [ { "passed": true, "message": "跳过测试:未找到具有明确范围限制的数值字段。" } ] }, { "test_case_id": "TC-ERROR-4006", "test_case_name": "非法枚举值检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:未找到具有明确枚举值限制的字段。", "duration_seconds": 0.000847167000756599, "timestamp": "2025-07-11T18:01:51.289227", "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.0008547089964849874, "timestamp": "2025-07-11T18:01:51.290120", "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.0007836250006221235, "timestamp": "2025-07-11T18:01:51.290941", "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.019064, "start_time": "2025-07-11T18:01:51.291019", "end_time": "2025-07-11T18:01:51.310083", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0009002079896163195, "timestamp": "2025-07-11T18:01:51.292082", "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.0009771250042831525, "timestamp": "2025-07-11T18:01:51.293091", "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.0009049579966813326, "timestamp": "2025-07-11T18:01:51.294028", "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.000879166997037828, "timestamp": "2025-07-11T18:01:51.294944", "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.0008975419914349914, "timestamp": "2025-07-11T18:01:51.295878", "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.0008542919968022034, "timestamp": "2025-07-11T18:01:51.296762", "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.0008338329935213551, "timestamp": "2025-07-11T18:01:51.297631", "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.000843374989926815, "timestamp": "2025-07-11T18:01:51.298512", "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.0008620419976068661, "timestamp": "2025-07-11T18:01:51.299416", "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.0009706249984446913, "timestamp": "2025-07-11T18:01:51.300427", "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.0008891249890439212, "timestamp": "2025-07-11T18:01:51.301348", "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.0008472080080537125, "timestamp": "2025-07-11T18:01:51.302233", "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.0008627909992355853, "timestamp": "2025-07-11T18:01:51.303134", "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.0008957920072134584, "timestamp": "2025-07-11T18:01:51.304072", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0009773329948075116, "timestamp": "2025-07-11T18:01:51.305085", "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.0010160420060856268, "timestamp": "2025-07-11T18:01:51.306131", "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.0009561250044498593, "timestamp": "2025-07-11T18:01:51.307118", "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.0008952080097515136, "timestamp": "2025-07-11T18:01:51.308045", "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.0009807500027818605, "timestamp": "2025-07-11T18:01:51.309067", "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.0009479170112172142, "timestamp": "2025-07-11T18:01:51.310058", "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.022373, "start_time": "2025-07-11T18:01:51.310141", "end_time": "2025-07-11T18:01:51.332514", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0008558749977964908, "timestamp": "2025-07-11T18:01:51.311159", "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.0008141250000335276, "timestamp": "2025-07-11T18:01:51.312005", "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.0007839169993530959, "timestamp": "2025-07-11T18:01:51.312817", "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.0008193749963538721, "timestamp": "2025-07-11T18:01:51.313664", "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.0008105419983621687, "timestamp": "2025-07-11T18:01:51.314521", "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.0008809170103631914, "timestamp": "2025-07-11T18:01:51.315430", "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.003489124996121973, "timestamp": "2025-07-11T18:01:51.318961", "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.001102125010220334, "timestamp": "2025-07-11T18:01:51.320133", "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.0009908749925671145, "timestamp": "2025-07-11T18:01:51.321172", "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.0011700420000124723, "timestamp": "2025-07-11T18:01:51.322387", "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.001084292001905851, "timestamp": "2025-07-11T18:01:51.323632", "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.0009572920098435134, "timestamp": "2025-07-11T18:01:51.324634", "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.0010163749975617975, "timestamp": "2025-07-11T18:01:51.325694", "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.00113795799552463, "timestamp": "2025-07-11T18:01:51.326872", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0010346250055590644, "timestamp": "2025-07-11T18:01:51.327946", "validation_points": [ { "passed": true, "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" } ] }, { "test_case_id": "TC-ERROR-4001-BODY", "test_case_name": "请求体字段类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0009153330029221252, "timestamp": "2025-07-11T18:01:51.328893", "validation_points": [ { "passed": true, "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。" } ] }, { "test_case_id": "TC-ERROR-4002", "test_case_name": "数值参数越界检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:未找到具有明确范围限制的数值字段。", "duration_seconds": 0.0009326250001322478, "timestamp": "2025-07-11T18:01:51.329859", "validation_points": [ { "passed": true, "message": "跳过测试:未找到具有明确范围限制的数值字段。" } ] }, { "test_case_id": "TC-ERROR-4006", "test_case_name": "非法枚举值检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:未找到具有明确枚举值限制的字段。", "duration_seconds": 0.0008866249991115183, "timestamp": "2025-07-11T18:01:51.330787", "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.0007889999978942797, "timestamp": "2025-07-11T18:01:51.331622", "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.0008344579982804134, "timestamp": "2025-07-11T18:01:51.332488", "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.001559, "start_time": "2025-07-11T18:01:51.332603", "end_time": "2025-07-11T18:01:51.334162", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "失败", "message": "期望状态码 200,但收到 404。", "duration_seconds": 0.000868874994921498, "timestamp": "2025-07-11T18:01:51.333679", "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.916991646401584e-06, "timestamp": "2025-07-11T18:01:51.333726", "validation_points": [] }, { "test_case_id": "TC-SECURITY-002", "test_case_name": "敏感字段加密检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.875001756474376e-06, "timestamp": "2025-07-11T18:01:51.333752", "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.458002073690295e-06, "timestamp": "2025-07-11T18:01:51.333776", "validation_points": [] }, { "test_case_id": "TC-RESTful-001", "test_case_name": "核心命名与结构规范检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.0829992182552814e-06, "timestamp": "2025-07-11T18:01:51.333800", "validation_points": [] }, { "test_case_id": "TC-DMS-PAGINATION-001", "test_case_name": "分页参数检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.166003342717886e-06, "timestamp": "2025-07-11T18:01:51.333823", "validation_points": [] }, { "test_case_id": "TC-RESTful-004", "test_case_name": "资源集合复数命名检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.166003342717886e-06, "timestamp": "2025-07-11T18:01:51.333847", "validation_points": [] }, { "test_case_id": "TC-RESTful-002", "test_case_name": "资源路径名词检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.0829992182552814e-06, "timestamp": "2025-07-11T18:01:51.333870", "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.291004294529557e-06, "timestamp": "2025-07-11T18:01:51.333894", "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.0829992182552814e-06, "timestamp": "2025-07-11T18:01:51.333917", "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.041002390906215e-06, "timestamp": "2025-07-11T18:01:51.333941", "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.208000170066953e-06, "timestamp": "2025-07-11T18:01:51.333964", "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.291004294529557e-06, "timestamp": "2025-07-11T18:01:51.333987", "validation_points": [] }, { "test_case_id": "TC-SECURITY-001", "test_case_name": "HTTPS 协议强制性检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.0829992182552814e-06, "timestamp": "2025-07-11T18:01:51.334010", "validation_points": [] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.999995093792677e-06, "timestamp": "2025-07-11T18:01:51.334033", "validation_points": [] }, { "test_case_id": "TC-ERROR-4001-BODY", "test_case_name": "请求体字段类型不匹配检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 7.042006473056972e-06, "timestamp": "2025-07-11T18:01:51.334056", "validation_points": [] }, { "test_case_id": "TC-ERROR-4002", "test_case_name": "数值参数越界检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.95799826644361e-06, "timestamp": "2025-07-11T18:01:51.334079", "validation_points": [] }, { "test_case_id": "TC-ERROR-4006", "test_case_name": "非法枚举值检查", "test_case_severity": "MEDIUM", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.95799826644361e-06, "timestamp": "2025-07-11T18:01:51.334101", "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-11T18:01:51.334124", "validation_points": [] }, { "test_case_id": "TC-ERROR-4003-QUERY", "test_case_name": "缺失必填查询参数检查", "test_case_severity": "HIGH", "status": "跳过", "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", "duration_seconds": 6.874994141981006e-06, "timestamp": "2025-07-11T18:01:51.334147", "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.019964, "start_time": "2025-07-11T18:01:51.334215", "end_time": "2025-07-11T18:01:51.354179", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0011190000077476725, "timestamp": "2025-07-11T18:01:51.335490", "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.0010194579954259098, "timestamp": "2025-07-11T18:01:51.336544", "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.0009390420018462464, "timestamp": "2025-07-11T18:01:51.337511", "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.0009437499975319952, "timestamp": "2025-07-11T18:01:51.338484", "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.0009870420035440475, "timestamp": "2025-07-11T18:01:51.339511", "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.000888041002326645, "timestamp": "2025-07-11T18:01:51.340429", "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.0009685420081950724, "timestamp": "2025-07-11T18:01:51.341439", "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.0008787080005276948, "timestamp": "2025-07-11T18:01:51.342357", "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.0008883330010576174, "timestamp": "2025-07-11T18:01:51.343282", "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.0009844169981079176, "timestamp": "2025-07-11T18:01:51.344303", "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.0008577499975217506, "timestamp": "2025-07-11T18:01:51.345194", "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.0009250000002793968, "timestamp": "2025-07-11T18:01:51.346156", "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.0008801670046523213, "timestamp": "2025-07-11T18:01:51.347074", "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.0009055830014403909, "timestamp": "2025-07-11T18:01:51.348025", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.000982333003776148, "timestamp": "2025-07-11T18:01:51.349041", "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.0010403340129414573, "timestamp": "2025-07-11T18:01:51.350114", "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.0010148750006919727, "timestamp": "2025-07-11T18:01:51.351161", "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.0009512079996056855, "timestamp": "2025-07-11T18:01:51.352145", "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.000999500000034459, "timestamp": "2025-07-11T18:01:51.353187", "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.0009224999957950786, "timestamp": "2025-07-11T18:01:51.354153", "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.01955, "start_time": "2025-07-11T18:01:51.354244", "end_time": "2025-07-11T18:01:51.373794", "executed_test_cases": [ { "test_case_id": "TC-STATUS-001", "test_case_name": "基本状态码 200 检查", "test_case_severity": "CRITICAL", "status": "通过", "message": "响应状态码为 200,符合预期 200。", "duration_seconds": 0.0008209579973481596, "timestamp": "2025-07-11T18:01:51.355232", "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.000868874994921498, "timestamp": "2025-07-11T18:01:51.356137", "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.0008231670071836561, "timestamp": "2025-07-11T18:01:51.356988", "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.0015773750055814162, "timestamp": "2025-07-11T18:01:51.358594", "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.0008904580026865005, "timestamp": "2025-07-11T18:01:51.359530", "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.0008306670060846955, "timestamp": "2025-07-11T18:01:51.360397", "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.000890750001417473, "timestamp": "2025-07-11T18:01:51.361324", "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.0009288339933846146, "timestamp": "2025-07-11T18:01:51.362317", "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.0008226659992942587, "timestamp": "2025-07-11T18:01:51.363181", "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.000995124995824881, "timestamp": "2025-07-11T18:01:51.364215", "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.0008364590030396357, "timestamp": "2025-07-11T18:01:51.365084", "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.0009462090092711151, "timestamp": "2025-07-11T18:01:51.366075", "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.0008159999997587875, "timestamp": "2025-07-11T18:01:51.366929", "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.0008562090079067275, "timestamp": "2025-07-11T18:01:51.367820", "validation_points": [ { "status_code": 200 } ] }, { "test_case_id": "TC-ERROR-4001-QUERY", "test_case_name": "查询参数类型不匹配检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", "duration_seconds": 0.0010283330047968775, "timestamp": "2025-07-11T18:01:51.368883", "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.0010812500113388523, "timestamp": "2025-07-11T18:01:51.369995", "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.0009402919968124479, "timestamp": "2025-07-11T18:01:51.370965", "validation_points": [ { "passed": true, "message": "跳过测试:未找到具有明确范围限制的数值字段。" } ] }, { "test_case_id": "TC-ERROR-4006", "test_case_name": "非法枚举值检查", "test_case_severity": "MEDIUM", "status": "通过", "message": "跳过测试:未找到具有明确枚举值限制的字段。", "duration_seconds": 0.0008508750033797696, "timestamp": "2025-07-11T18:01:51.371851", "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.0008847499993862584, "timestamp": "2025-07-11T18:01:51.372772", "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.0009503329929430038, "timestamp": "2025-07-11T18:01:51.373768", "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-11T18:01:51", "end_time": "2025-07-11T18:01:51", "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-11T18:01:51+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": "6802f559-3888-476e-bca5-a95f87fd7e6a", "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-11T18:01:51", "end_time": "2025-07-11T18:01:51", "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-11T18:01:51+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": "8562a278-d1eb-4d56-b7e6-6db4aa14b6c8", "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": [] }