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





浙公网安备 33010602011771号