验证接口 CDN 的 缓存有效性、响应性能、稳定性、安全性、兼容性 五大核心能力,确保接口经 CDN 转发后,满足业务实时性、可用性及防护需求(适配 API 接口、前后端分离项目、物联网设备通信等场景)。
| 环境类型 | 配置说明 |
源站环境
接口服务(HTTP/HTTPS 协议)、数据库(确保动态数据可模拟变更)、接口文档(明确参数 / 响应格式)
CDN 环境
已配置接口域名(如 api.xxx.com)、缓存规则(Cache Key、过期时间)、限流 / 跨域 / CORS 配置
测试工具
接口测试:Postman、JMeter、curl;性能测试:JMeter、Locust;监控工具:Grafana、CDN 后台日志
测试终端
不同地域(国内 / 海外)、不同网络(电信 / 联通 / 移动 / 5G/Wi-Fi)、不同设备(PC / 移动端)
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 | |
Cache-001
通用静态接口(无动态参数)缓存命中
1. 发送请求 GET /api/config(返回公共配置数据);
2. 记录响应时间和 X-Cache 头;
3. 10 秒内重复发送相同请求
1. 第一次响应 X-Cache: MISS(回源);
2. 第二次响应 X-Cache: HIT(命中缓存);
3. 两次响应数据一致,第二次响应时间<第一次的 50%
Cache-002
动态参数接口缓存排除验证
1. 发送请求 GET /api/user?user_id=123(Cache Key 已排除 user_id);
2. 发送请求 GET /api/user?user_id=456;
3. 查看 CDN 日志
1. 两次请求均返回 X-Cache: MISS(未缓存动态参数接口);
2. 响应数据分别对应不同 user_id,无数据错乱
Cache-003
缓存过期时间验证
1. 发送请求 GET /api/recommend(缓存过期时间设为 60 秒);
2. 30 秒内重复请求(验证命中);
3. 70 秒后再次请求
1. 30 秒内响应 X-Cache: HIT;
2. 70 秒后响应 X-Cache: MISS(缓存过期回源)




Cache-004
POST 接口缓存控制验证
1. 发送 POST /api/login(提交用户登录信息);
2. 查看响应 X-Cache 头和 CDN 日志
1. 响应 X-Cache: MISS(POST 接口默认不缓存);
2. CDN 日志无缓存记录,直接转发源站
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Cache-005
排除动态参数(如 timestamp)
1. 发送请求 GET /api/data?page=1×tamp=1699999999;
2. 发送请求 GET /api/data?page=1×tamp=1700000000;
3. 查看缓存命中情况
1. 两次请求均命中缓存(X-Cache: HIT);
2. 响应数据一致(排除 timestamp 后 Cache Key 相同)
Cache-006
包含指定请求头(如 Accept-Language)
1. 发送请求时携带 Accept-Language: zh-CN;
2. 发送请求时携带 Accept-Language: en-US;
3. 查看缓存命中情况
1. 两次请求分别缓存,互不影响;
2. 切换语言后响应 X-Cache: MISS,返回对应语言数据
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Cache-007
手动缓存刷新(单 URL)
1. 发送请求 GET /api/config 确认缓存命中(HIT);
2. 在 CDN 后台刷新该 URL;
3. 再次发送请求
1. 刷新后第一次响应 X-Cache: MISS(重新回源);
2. 响应数据为源站最新数据
Cache-008
缓存预热验证
1. 在 CDN 后台对 GET /api/hot 进行缓存预热;
2. 首次发送请求查看 X-Cache 头
1. 首次响应 X-Cache: HIT(预热成功,无需回源);
2. 响应时间<50ms
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Perf-001
跨地域响应时间对比
1. 直接访问源站接口(http://源站IP:端口/api/config),记录国内 / 海外响应时间;
2. 通过 CDN 访问相同接口,记录响应时间
1. 国内地域:CDN 响应时间<源站的 60%;
2. 海外地域:CDN 响应时间<源站的 40%(智能选路优化)
Perf-002
并发请求性能验证
1. 用 JMeter 模拟 1000 并发用户访问 GET /api/recommend(缓存 60 秒);
2. 持续 5 分钟,监控 CDN 回源率和响应时间
1. 缓存命中后回源率<10%;
2. 平均响应时间<300ms;
3. 无请求超时(超时率<0.1%)
Perf-003
弱网环境响应稳定性
1. 在移动端开启弱网模式(网速 100kbps);
2. 连续发送 10 次 GET /api/data 请求
1. 所有请求均成功响应;
2. 平均响应时间<2 秒;
3. 无数据丢失或响应错乱
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Perf-004
单 IP 限流验证
1. CDN 配置单 IP 每秒最多 50 次请求;
2. 用 JMeter 模拟同一 IP 每秒 100 次请求访问 GET /api/data
1. 前 50 次请求成功(响应 200);
2. 后 50 次请求被限流(响应 429 Too Many Requests);
3. CDN 日志记录限流事件
Perf-005
多源站负载均衡验证
1. CDN 配置 2 个源站(IP1:端口、IP2:端口);
2. 模拟 500 并发请求,查看 CDN 转发日志
1. 两个源站的请求分发比例接近 1:1;
2. 单个源站故障时,CDN 自动切换到另一个源站,无请求失败
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Stable-001
72 小时长稳运行测试
1. 用 Locust 模拟 200 并发用户,持续访问 GET /api/health(缓存 10 秒);
2. 监控 CDN 节点状态、源站负载、响应成功率
1. 72 小时内响应成功率 100%;
2. CDN 无节点宕机、无缓存异常(如缓存穿透);
3. 源站 CPU / 内存占用稳定(<70%)
Stable-002
源站故障降级验证
1. 停止源站接口服务;
2. 发送请求 GET /api/config(CDN 配置降级响应)
1. 响应 503 Service Unavailable,但返回自定义降级信息(如 “服务临时维护,请稍后重试”);
2. 无空白响应或错误页面
Stable-003
网络波动场景验证
1. 模拟 CDN 与源站之间网络中断 10 秒后恢复;
2. 期间持续发送请求
1. 网络中断时,已缓存接口正常响应(HIT);
2. 未缓存接口响应 504 Gateway Timeout;
3. 网络恢复后,所有请求正常回源(MISS)
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Security-001
DDoS 攻击防护验证
1. 用工具模拟 TCP 洪水攻击 CDN 接口域名;
2. 同时发送正常请求 GET /api/data
1. 攻击流量被 CDN 拦截,源站无明显负载波动;
2. 正常请求响应正常(响应时间<500ms)
Security-002
接口参数注入攻击防护
1. 发送请求 GET /api/user?user_id=123' OR 1=1--(SQL 注入尝试);
2. 发送请求 POST /api/submit,请求体含 <script>alert(1)</script>(XSS 尝试)
1. CDN WAF 拦截攻击请求,响应 403 Forbidden;
2. 源站日志无攻击请求记录
Security-003
HTTPS 加密验证
1. 通过 CDN 访问 HTTPS://api.xxx.com;
2. 查看证书信息和 TLS 版本
1. 证书有效(与域名匹配,未过期);
2. 支持 TLS 1.2/1.3 协议;
3. 无 HTTP 降级(HTTP 请求自动跳转 HTTPS)
Security-004
接口鉴权转发验证
1. 发送无鉴权头(如 Authorization: Token xxx)的请求;
2. 发送鉴权信息错误的请求;
3. 发送正确鉴权信息的请求
1. 无鉴权头 / 鉴权错误时,CDN 直接返回 401 Unauthorized(无需回源);
2. 鉴权正确时,正常转发到源站并返回数据
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Compat-001
HTTP/3(QUIC)协议支持
1. 用支持 HTTP/3 的浏览器或工具访问 HTTPS://api.xxx.com;
2. 查看响应头 alt-svc
1. 响应头包含 alt-svc: h3=":443"(支持 HTTP/3);
2. 响应时间比 HTTP/2 快 20%+
Compat-002
CORS 跨域配置验证
1. 从前端域名 https://web.xxx.com 发送跨域请求 GET /api/data;
2. 查看响应头 Access-Control-*
1. 响应头包含 Access-Control-Allow-Origin: https://web.xxx.com;
2. 无跨域报错,请求成功
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Config-001
不缓存接口配置验证
1. CDN 配置 POST /api/pay 不缓存;
2. 多次发送该请求,查看 X-Cache 头
1. 所有请求均返回 X-Cache: MISS(直接回源);
2. 响应数据为实时支付结果
Config-002
防盗链(Referer)验证
1. CDN 配置仅允许 web.xxx.com Referer 访问;
2. 模拟 Referer 为 https://web.xxx.com 发送请求;
3. 模拟 Referer 为 https://恶意域名.com 发送请求
1. 合法 Referer 请求成功;
2. 恶意 Referer 请求被拦截(响应 403)
| 用例 ID | 测试场景 | 测试步骤 | 预期结果 |
Error-001
接口响应超时(源站慢)
1. 模拟源站接口响应超时 10 秒;
2. 通过 CDN 发送请求(CDN 超时配置为 5 秒)
1. CDN 5 秒后返回 504 Gateway Timeout;
2. 不无限等待源站响应
Error-002
接口返回非 200 状态码(如 404/500)
1. 发送请求 GET /api/nonexistent(源站返回 404);
2. 查看 CDN 缓存情况
1. CDN 不缓存 404/500 响应;
2. 后续相同请求均回源,返回最新状态码
Error-003
大体积响应数据(如 10MB JSON)
1. 发送请求 GET /api/large-data(返回 10MB 数据);
2. 查看传输速度和完整性
1. 传输速度>直接访问源站的 2 倍(CDN 带宽优化);
2. 响应数据完整,无截断
| 测试维度 | 合格标准 |
缓存功能
缓存命中规则符合配置,无数据错乱;静态接口缓存命中率≥80%,动态接口不缓存
性能指标
平均响应时间<500ms;并发 1000 时超时率<0.1%;跨地域响应时间优化≥30%
稳定性
72 小时长稳运行响应成功率 100%;源站故障时降级生效,无服务中断
安全性
能拦截常见攻击(SQL 注入、XSS、DDoS);HTTPS 加密正常,鉴权有效
兼容性
支持 HTTP/2/3;跨域配置生效;不同网络 / 设备访问无异常
- 测试前需明确接口是否可缓存(如登录、支付接口禁止缓存),避免配置错误导致测试无效;
- 缓存测试需重点关注 “动态参数排除”,防止用户个性化数据被缓存(如
user_id、token);
- 性能测试需模拟真实用户分布(不同地域、网络),避免单一环境测试结果失真;
- 测试过程中需实时监控 CDN 日志和源站负载,及时定位缓存穿透、回源率过高等问题。
声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/
如出现转载未声明 将追究法律责任~谢谢合作