接口测试的核心内容
1.功能测试
验证接口是否按照需求正常工作
测试项 | 说明 | 实际例子 |
---|---|---|
正向场景测试 | 输入合法参数时,接口是否返回正确的数据结构和业务逻辑结果 | 注册接口输入正确手机号 → 返回注册成功并生成用户记录 |
负向场景测试 | 参数不完整、类型错误、值非法时,接口是否能识别并返回明确错误提示 | 忘记输入密码 → 返回 {"code":400, "message":"密码不能为空"} |
权限控制测试 | 不同角色用户调用同一接口时,是否有权限限制 | 普通用户调用删除文章接口 → 返回 403 Forbidden |
分页/排序/过滤功能测试 | 列表类接口是否支持分页、排序字段、筛选条件,并且结果准确 | 获取商品列表时传 page=2&size=10 → 应该返回第 2 页的 10 条数据 |
-
正向测试=用户按规矩来操作
-
负向测试=故意搞错,看系统能不能识别并阻止
怎么测?
-
使用 Postman / Insomnia 手动发送请求
-
编写自动化测试脚本(Python + requests、Java + RestAssured)
-
配合 Mock 数据模拟后端行为
2.异常测试
目的:验证接口在异常i情况下是否能稳定运行,友好反馈
测试项 | 说明 | 实际例子 |
---|---|---|
网络中断测试 | 接口调用过程中断开网络连接,看是否能捕获异常并友好提示 | 在提交订单时拔掉网线 → 提示“网络异常,请重试” |
接口超时测试 | 设置较短的超时时间,看接口是否会主动终止请求 | 接口设置 500ms 超时 → 如果服务端超过时间未响应 → 客户端应报错 |
服务器宕机测试 | 后端服务挂掉时,前端是否能识别并降级处理 | 用户中心服务宕机 → 前端显示“服务暂时不可用”而不是空白页面 |
Token 过期测试 | Token 失效后,接口是否返回 401 并引导重新登录 | Token 已过期 → 返回 {"code":401,"message":"登录已失效"} |
参数缺失测试 | 必填参数未传时,接口是否给出明确提示 | 注册时没传邮箱 → 返回 {"code":400,"message":"邮箱必填"} |
异常日志记录测试 | 接口出错时,后台是否记录日志便于排查 | 登录失败 → 日志中应记录用户名、IP、失败原因等信息 |
-
异常测试就像“模拟事故”,看看系统会不会崩溃,会不会给出有用的信息
-
好的接口就算出错了也能优雅处理
-
用户体验的关键点:出错时能不能给出有用的信息
怎么测?
-
使用 Charles 或 Fiddler 模拟断网、延迟、丢包
-
修改服务器时间让 Token 过期
-
使用 JMeter 模拟高延迟、低带宽环境
3.性能测试
目的:验证接口在高负载,大数据量下是否依然快速、稳定
测试项 | 说明 | 实际例子 |
---|---|---|
响应时间测试 | 单个请求从发送到收到响应的时间是否在可接受范围内 | 查询用户信息接口响应时间 ≤ 500ms |
并发压力测试 | 多个用户同时访问接口时,是否还能保持响应速度和稳定性 | 电商秒杀活动时上万人同时下单 → 系统不能崩溃或卡死 |
负载能力测试 | 接口能否承受大量请求而不崩溃 | 某个查询接口每分钟被调用 10 万次 → 系统仍能正常响应 |
数据库瓶颈测试 | 是否存在慢 SQL、锁表、连接池阻塞等问题 | 订单查询接口卡顿 → 发现是某条 SQL 没加索引 |
资源消耗监控 | CPU、内存、数据库连接数等是否在安全范围内 | 高并发下服务器内存占用过高 → 需要优化代码或扩容 |
-
保证系统在高流量下依然可用
-
提前暴露性能隐患,防止上线后崩溃
怎么测?
-
使用 JMeter、Locust、k6 模拟高并发请求
-
使用 Prometheus + Grafana 监控服务器资源
-
使用 MySQL 的慢查询日志分析性能瓶颈
4.安全测试
目的:防止接口被恶意攻击,保护用户隐私和系统安全
测试项 | 说明 | 实际例子 |
---|---|---|
HTTPS 加密测试 | 接口是否强制使用 HTTPS,防止中间人窃听 | 登录接口必须走 HTTPS,否则密码可能被截取 |
SQL 注入测试 | 是否对用户输入做了校验和转义 | 在搜索框输入 ' OR '1'='1 → 系统不应执行 SQL |
XSS 攻击测试 | 是否对 HTML 标签、JS 脚本进行过滤 | 在昵称中输入 <script>alert(1)</script> → 页面不应执行脚本 |
接口限流测试 | 是否限制单位时间内某个用户或 IP 的请求次数 | 每分钟最多允许一个账号登录尝试 5 次 |
敏感数据加密与脱敏 | 用户隐私数据是否加密传输或部分隐藏 | 显示手机号为 138****1234 ,而不是完整号码;密码传输必须加密 |
CSRF 攻击测试 | 是否防止跨站请求伪造攻击 | 敏感操作(如转账)必须带有 token 校验 |
越权访问测试 | 普通用户是否能通过修改 ID 查看他人数据 | 用户 A 尝试访问 /user/999 → 应拒绝访问非本人数据 |
-
安全测试就像“模拟黑客攻击”,目的是提前发现漏洞
-
有些安全问题虽然不影响功能,但一旦被利用,后果很严重!
** 怎么测?**
-
使用 OWASP ZAP、Burp Suite 模拟攻击
-
手动构造 SQL/XSS 注入语句测试
-
使用 Postman 模拟 CSRF 请求
-
使用 Chrome DevTools 查看是否启用 HTTPS
总结
测试类型 | 核心目标 | 常用工具 | 关键词 |
---|---|---|---|
功能测试 | 接口能不能用 | Postman、自动化脚本 | 正确性、参数、权限、分页 |
异常测试 | 出问题会不会崩 | JMeter、Fiddler、手动模拟 | 网络、错误码、Token 失效 |
性能测试 | 多人用会不会卡 | JMeter、Locust、Prometheus | 响应时间、并发、数据库 |
安全测试 | 别人能不能黑 | Postman、Burp Suite、ZAP | HTTPS、SQL 注入、限流、脱敏 |