学习记录:把接口测试相关要点整理成一篇入门笔记,结合个人实践,并与 AI 一起补全结构,方便按模块查阅。

若你在测海外论坛类后台接口,希望这篇能当手册用。

适合对象:已做过功能测试、准备系统学接口测试的同学;文中不默认你已熟悉 HTTP、Token、请求响应结构。


阅读提示:全文按「基础 → 论坛接口实战 → 通用专项 → 用例与 Bug」四块展开;配合页面 TOC 或下方折叠目录跳转。第 11~21 章与业务模块对应,适合对照接口文档逐个过。

章节目录(共 31 章,点击展开,条目可点击跳转)
  1. 为什么功能测试之后要学接口测试
  2. 什么是接口测试
  3. 接口测试和功能测试有什么区别
  4. 接口测试需要掌握哪些基础概念
  5. HTTP 请求方法怎么理解
  6. 请求参数有哪些类型
  7. 响应结果应该怎么看
  8. Token、登录态、鉴权是什么
  9. 接口测试前需要准备什么
  10. 常用接口测试工具:Postman / Apifox
  11. 海外社区论坛常见接口有哪些
  12. 注册登录接口怎么测
  13. 用户资料接口怎么测
  14. 发帖接口怎么测
  15. 评论与回复接口怎么测
  16. 点赞、收藏、关注接口怎么测
  17. Feed 信息流接口怎么测
  18. 搜索接口怎么测
  19. 通知消息接口怎么测
  20. 私信接口怎么测
  21. 举报与审核接口怎么测
  22. 权限类接口怎么测
  23. 参数校验怎么测
  24. 幂等性怎么测
  25. 分页接口怎么测
  26. 文件上传接口怎么测
  27. 多语言、时区相关接口怎么测
  28. 接口测试用例怎么写
  29. 接口 Bug 怎么提交
  30. 新手常见误区
  31. 最后总结

第一部分:接口测试基础概念

如果你是接口测试新手,建议先完整学习这一部分。

如果你已经了解接口基础,可以直接跳到 第二部分:海外社区论坛项目接口实战


1. 为什么功能测试之后要学接口测试

功能测试主要是站在用户角度看系统能不能正常使用。

例如用户点击“发布帖子”按钮,页面提示发布成功,列表里出现了帖子,这就是功能测试关注的内容。

但是在真实项目中,页面只是表象。页面背后真正发生的是:

前端页面
↓ 发送请求
后端接口
↓ 处理逻辑
数据库/缓存/消息队列
↓ 返回结果
前端页面展示结果

也就是说,你在页面上点击一个按钮,其实前端会调用一个接口。

例如:

点击发布帖子

调用发帖接口

后端校验用户权限

保存帖子内容

返回发布成功

前端展示帖子详情页

功能测试只能看到“结果”,接口测试可以看到“过程”。


1.1 举个例子:点赞功能

功能测试会这样测:

1. 打开帖子详情页
2. 点击点赞按钮
3. 查看点赞按钮是否变亮
4. 查看点赞数是否 +1

接口测试会进一步关注:

1. 点赞接口请求地址是什么?
2. 请求方法是 POST 还是 PUT?
3. 是否携带 Token?
4. 帖子 ID 参数是否正确?
5. 接口返回是否成功?
6. 重复点赞会不会重复加数?
7. 未登录调用点赞接口是否失败?
8. 被封禁用户调用点赞接口是否失败?
9. 点赞成功后数据库中的点赞状态是否正确?

所以,接口测试能帮助你发现很多功能测试不容易发现的问题。


1.2 接口测试能发现什么问题

接口测试常见能发现这些问题:

问题类型 示例
参数校验问题 标题为空,接口仍然创建帖子
权限校验问题 普通用户通过接口删除了别人的帖子
重复提交问题 连续调用评论接口,生成多条重复评论
数据错误问题 点赞接口成功,但点赞数没有变化
状态错误问题 被禁言用户仍然可以通过接口发帖
异常处理问题 参数错误时接口返回 500,而不是明确错误码
兼容问题 多语言字符、Emoji、时区字段处理异常

2. 什么是接口测试

接口测试就是:

不通过页面操作,而是直接向后端接口发送请求,验证接口返回结果、业务逻辑、数据处理、权限控制是否正确。

你可以简单理解为:

功能测试:像用户一样点页面
接口测试:像前端一样直接请求后端

接口测试不是为了取代功能测试,而是补充功能测试。

功能测试回答:

用户在页面上能不能完成操作?

接口测试回答:

后端接口是否真的按规则处理了这个操作?

2.1 接口是什么

接口可以理解为前端和后端沟通的通道。

比如前端想获取帖子列表,就会向后端发请求:

GET /api/posts

后端返回帖子数据:

{
"code": 0,
"message": "success",
"data": {
"list": [
{
"postId": "1001",
"title": "Hello community",
"authorName": "Alice",
"likeCount": 10
}
]
}
}

前端拿到这些数据后,再展示成页面。


2.2 接口测试在测什么

接口测试通常测这些内容:

  • 请求地址是否正确
  • 请求方法是否正确
  • 请求参数是否正确
  • 必填参数是否校验
  • 参数类型是否校验
  • 参数边界是否校验
  • 是否需要登录
  • 是否校验用户权限
  • 返回状态码是否正确
  • 返回字段是否完整
  • 返回数据是否正确
  • 异常场景是否返回明确错误
  • 多次请求是否会产生重复数据

3. 接口测试和功能测试有什么区别

对比项 功能测试 接口测试
测试对象 页面和用户操作流程 后端接口和数据逻辑
操作方式 点击页面、输入内容 使用工具发送 HTTP 请求
关注重点 页面展示、交互、流程 参数、返回值、权限、数据
是否依赖前端 依赖前端页面 不一定依赖前端
发现问题类型 页面问题、流程问题 后端逻辑、权限、数据问题
常用工具 浏览器、App Postman、Apifox、curl、自动化脚本

3.1 为什么接口测试更容易发现权限问题

因为页面按钮可以隐藏,但接口可能还在。

例如普通用户不能删除别人的帖子。前端可能没有显示删除按钮。

但是如果用户知道删除接口:

DELETE /api/posts/1001

如果后端没有校验权限,普通用户仍然可能删除别人的帖子。

所以接口测试一定要验证:

没有按钮 ≠ 没有权限问题
后端接口必须真正限制权限

4. 接口测试需要掌握哪些基础概念

刚开始学接口测试,需要先理解这些词:

概念 简单解释
URL 接口地址
Method 请求方法,例如 GET、POST
Header 请求头,常放 Token、语言、设备信息
Query 参数 拼在 URL 后面的参数
Path 参数 URL 路径中的参数
Body 参数 请求体参数,常用于 POST 请求
Status Code HTTP 状态码,例如 200、401、500
Response 接口返回结果
Token 登录凭证
Cookie Web 登录态常用凭证
JSON 接口最常见的数据格式

4.1 一个接口请求长什么样

示例:获取帖子详情。

GET /api/posts/1001
Authorization: Bearer xxxxxx
Accept-Language: en-US

这里包含:

部分 含义
GET 请求方法
/api/posts/1001 请求地址
1001 帖子 ID,属于 Path 参数
Authorization 登录凭证
Accept-Language 当前语言

接口返回:

{
"code": 0,
"message": "success",
"data": {
"postId": "1001",
"title": "Hello community",
"content": "This is my first post.",
"likeCount": 10,
"commentCount": 3
}
}

5. HTTP 请求方法怎么理解

HTTP 请求方法可以理解为“你想对资源做什么操作”。

常见方法如下:

方法 常见含义 社区项目示例
GET 查询数据 获取帖子列表、获取用户资料
POST 新增数据 发布帖子、发表评论、点赞
PUT 整体更新数据 修改完整用户资料
PATCH 部分更新数据 修改昵称、修改简介
DELETE 删除数据 删除帖子、删除评论

5.1 GET 请求

GET 通常用于查询。

示例:获取帖子列表。

GET /api/posts?page=1&pageSize=20

测试重点:

  • 参数为空时是否有默认值
  • page 为 0 是否处理正确
  • pageSize 超大是否限制
  • 返回列表是否正确
  • 排序是否正确
  • 无数据时是否返回空列表

5.2 POST 请求

POST 通常用于新增或提交操作。

示例:发布帖子。

POST /api/posts
Content-Type: application/json

{
"title": "My first post",
"content": "Hello everyone",
"topicId": "t100"
}

测试重点:

  • 必填参数校验
  • 参数长度校验
  • 重复提交处理
  • 权限校验
  • 创建成功后数据是否正确

5.3 PUT / PATCH 请求

PUT / PATCH 通常用于修改。

示例:修改用户简介。

PATCH /api/users/me/profile

{
"bio": "I love smart rings."
}

测试重点:

  • 只能修改自己的资料
  • 字段为空是否允许
  • 字段超长是否拦截
  • 修改成功后再次查询是否更新

5.4 DELETE 请求

DELETE 通常用于删除。

示例:删除评论。

DELETE /api/comments/9001

测试重点:

  • 作者是否能删除自己的评论
  • 普通用户是否不能删除别人的评论
  • 管理员是否能删除评论
  • 重复删除如何处理
  • 删除后评论数是否减少

6. 请求参数有哪些类型

接口请求参数一般分为 4 类:

Path 参数
Query 参数
Body 参数
Header 参数

6.1 Path 参数

Path 参数在 URL 路径中。

示例:

GET /api/posts/1001

这里的 1001 就是帖子 ID。

测试点:

  • ID 存在
  • ID 不存在
  • ID 为空
  • ID 格式错误
  • ID 是别人的资源
  • ID 是已删除资源

6.2 Query 参数

Query 参数在 URL 的 ? 后面。

示例:

GET /api/posts?page=1&pageSize=20&sort=latest

这里的参数是:

page = 1
pageSize = 20
sort = latest

测试点:

  • page 为空
  • page 为 0
  • page 为负数
  • pageSize 超大
  • sort 传不存在的值
  • 多个筛选条件组合

6.3 Body 参数

Body 参数通常用于 POST、PUT、PATCH。

示例:

{
"title": "Hello",
"content": "This is a post."
}

测试点:

  • 必填字段缺失
  • 字段为空字符串
  • 字段为 null
  • 字段类型错误
  • 字段超长
  • 多传无关字段
  • 传入特殊字符

6.4 Header 参数

Header 常用于传递登录态、语言、设备、版本等信息。

常见 Header:

Header 作用
Authorization 登录 Token
Content-Type 请求体格式
Accept-Language 当前语言
User-Agent 设备或浏览器信息
X-App-Version App 版本
X-Timezone 用户时区,如果产品使用
X-Device-Id 设备 ID,如果产品使用

测试点:

  • 不传 Token
  • Token 过期
  • Token 伪造
  • 语言 Header 不同
  • 时区 Header 不同
  • App 版本过低

7. 响应结果应该怎么看

接口返回结果通常包括:

  • HTTP 状态码
  • 业务错误码
  • message 提示
  • data 数据

示例:

{
"code": 0,
"message": "success",
"data": {
"postId": "1001"
}
}

7.1 HTTP 状态码

常见状态码:

状态码 含义 示例
200 请求成功 查询成功、操作成功
201 创建成功 发帖成功、注册成功
400 参数错误 标题为空、参数格式错
401 未登录 没有 Token 或 Token 失效
403 无权限 普通用户删除别人帖子
404 资源不存在 帖子不存在
409 冲突 重复注册、重复绑定
429 请求太频繁 频繁获取验证码
500 服务器异常 后端报错

新手注意:

不是所有失败都应该返回 500。

如果用户参数传错了,通常应该是 400 类错误;如果没有权限,应该是 401 或 403;如果接口直接 500,说明后端异常处理可能不好。


7.2 业务错误码

很多系统即使 HTTP 状态码返回 200,也会在响应体里用业务 code 表示成功或失败。

示例:

{
"code": 10001,
"message": "title is required",
"data": null
}

测试时要看:

  • code 是否符合接口文档
  • message 是否清楚
  • data 是否符合失败场景
  • 多语言下 message 是否翻译正确,按产品设计判断

7.3 data 字段

成功响应通常会返回 data。

测试时要看:

  • 字段是否完整
  • 字段类型是否正确
  • 字段值是否正确
  • 空数据时是返回 null、空对象还是空数组
  • 金额、时间、数量是否格式正确

例如帖子列表接口返回:

{
"list": [],
"total": 0
}

比直接返回 null 更容易让前端处理。


8. Token、登录态、鉴权是什么

接口测试中非常重要的一块是登录态和权限。

8.1 Token 是什么

Token 可以理解为用户登录后的“通行证”。

流程如下:

用户登录成功

后端返回 Token

前端保存 Token

之后请求接口时带上 Token

后端通过 Token 判断用户是谁

示例:

Authorization: Bearer eyJhbGciOi...

8.2 没有 Token 会怎样

如果接口需要登录,但请求没有带 Token,应该返回未登录。

例如:

POST /api/posts

不带 Token 发帖,预期:

发帖失败
返回 401 或业务未登录错误码
不会创建帖子

8.3 Token 过期怎么测

测试点:

  • 使用过期 Token 请求接口
  • 使用错误 Token 请求接口
  • 使用空 Token 请求接口
  • 退出登录后继续使用旧 Token
  • 修改密码后旧 Token 是否失效,按需求判断
  • 封禁账号后旧 Token 是否还能访问接口

8.4 鉴权和权限有什么区别

可以简单理解:

鉴权:判断你是谁
权限:判断你能不能做这件事

例如:

  • Token 能识别你是用户 A,这是鉴权
  • 用户 A 能不能删除用户 B 的帖子,这是权限

接口测试中,两者都要测。


9. 接口测试前需要准备什么

9.1 准备接口文档

常见接口文档来源:

  • Apifox
  • Swagger
  • YApi
  • Postman Collection
  • 后端提供的 Markdown 文档
  • 需求文档里的接口说明

接口文档至少要看这些:

  • 接口地址
  • 请求方法
  • 请求 Header
  • 请求参数
  • 参数是否必填
  • 参数类型
  • 响应示例
  • 错误码
  • 是否需要登录
  • 权限限制

9.2 准备测试账号

接口测试同样需要多账号。

账号 用途
游客 测试未登录接口
用户A 创建资源,例如发帖
用户B 测试访问、评论、越权
被禁言用户 测试发帖/评论限制
被封禁用户 测试登录和访问限制
管理员 测试审核、删除、封禁接口
版主 测试局部管理权限

9.3 准备测试数据

文本数据

普通英文
中文内容
こんにちは
안녕하세요
مرحبا
Emoji 😀🔥🎉
超长文本
特殊字符 !@#$%^&*()
HTML 标签 <script>alert(1)</script>
URL 链接 https://example.com

ID 数据

  • 存在的帖子 ID
  • 不存在的帖子 ID
  • 已删除的帖子 ID
  • 属于用户A的帖子 ID
  • 属于用户B的帖子 ID
  • 审核中的帖子 ID
  • 被隐藏的帖子 ID

文件数据

  • 正常 JPG
  • 正常 PNG
  • GIF
  • WebP
  • 超大图片
  • 不支持格式文件
  • 损坏文件

9.4 准备环境信息

需要确认:

  • 测试环境域名
  • 是否需要 VPN
  • 是否需要测试账号白名单
  • 是否有验证码绕过方式
  • 是否有测试短信服务
  • 是否有第三方登录测试账号
  • 是否有管理员后台账号
  • 是否可以查数据库或日志

10. 常用接口测试工具:Postman / Apifox

10.1 Postman 是什么

Postman 是常见接口测试工具,可以用来:

  • 发送接口请求
  • 保存接口集合
  • 设置环境变量
  • 设置 Token
  • 编写简单断言
  • 批量运行接口

10.2 Apifox 是什么

Apifox 更适合团队协作,常用于:

  • 写接口文档
  • 调试接口
  • 生成 Mock 数据
  • 管理环境变量
  • 编写自动化测试

如果公司已经使用 Apifox,建议优先用 Apifox,因为接口文档和调试可以在同一个工具里完成。


10.3 新手使用工具的基本步骤

以 Postman / Apifox 都适用:

1. 新建请求
2. 填写接口 URL
3. 选择请求方法 GET/POST/DELETE
4. 填写 Header
5. 填写参数
6. 点击 Send
7. 查看状态码
8. 查看响应体
9. 判断是否符合预期

10.4 建议设置环境变量

不要每个接口都手动写完整域名和 Token。

建议设置:

变量名 示例
base_url https://test-api.example.com
userA_token 用户A登录 Token
userB_token 用户B登录 Token
admin_token 管理员 Token
post_id 测试帖子 ID
comment_id 测试评论 ID

这样请求可以写成:

{{base_url}}/api/posts/{{post_id}}

第二部分:海外社区论坛项目接口实战

这一部分开始进入项目实战。

前面的基础概念解决的是“接口测试是什么、怎么看请求和响应”;这一部分解决的是“海外社区论坛项目到底有哪些接口、每类接口应该怎么测”。


11. 海外社区论坛常见接口有哪些

社区论坛常见接口可以按模块拆分:

模块 常见接口
注册登录 注册、登录、验证码、第三方授权、刷新 Token、退出登录
用户资料 获取资料、修改头像、修改昵称、修改简介
发帖 创建帖子、编辑帖子、删除帖子、获取帖子详情
Feed 首页推荐流、关注流、热门流、板块流
评论 创建评论、回复评论、删除评论、评论列表
点赞收藏 点赞、取消点赞、收藏、取消收藏
关注 关注用户、取消关注、粉丝列表、关注列表
搜索 搜索帖子、搜索用户、搜索话题
通知 通知列表、未读数、标记已读、删除通知
私信 会话列表、发送消息、消息列表、已读回执
举报 举报帖子、举报评论、举报用户
审核后台 待审核列表、审核通过、审核拒绝、封禁用户

12. 注册登录接口怎么测

注册登录接口是接口测试的第一关。

12.1 邮箱注册接口

示例:

POST /api/auth/register/email

{
"email": "test@gmail.com",
"password": "Test123456",
"code": "123456"
}

正常场景

  • Gmail 注册成功
  • Outlook 注册成功
  • Yahoo 注册成功
  • 公司邮箱注册成功
  • + 别名邮箱按规则处理
  • 大小写邮箱按规则处理

异常场景

场景 预期
email 为空 注册失败,提示邮箱必填
email 格式错误 注册失败,提示邮箱格式错误
password 为空 注册失败,提示密码必填
password 太短 注册失败,提示密码不符合规则
code 为空 注册失败,提示验证码必填
code 错误 注册失败
code 过期 注册失败
邮箱已注册 注册失败或提示登录
连续调用注册接口 只能创建一个账号

12.2 登录接口

示例:

POST /api/auth/login

{
"email": "test@gmail.com",
"password": "Test123456"
}

测试点:

  • 正确账号密码登录成功
  • 错误密码登录失败
  • 不存在账号登录失败
  • 被封禁账号登录失败或受限
  • 未验证邮箱登录处理正确
  • 登录成功返回 Token
  • 登录成功返回用户基础信息
  • 登录失败不应返回 Token

12.3 第三方登录接口

第三方登录一般不是一个简单接口,通常涉及授权 code。

大概流程:

前端跳转第三方授权

第三方返回 authorization code

前端把 code 给后端

后端向第三方换取用户信息

后端创建账号或登录账号

后端返回平台 Token

测试点:

  • Google 授权 code 有效时登录成功
  • code 为空时失败
  • code 已使用时失败
  • code 过期时失败
  • 第三方返回邮箱为空时处理正确
  • 第三方返回头像为空时处理正确
  • 同一第三方账号二次登录不会重复创建账号
  • 同邮箱不同登录方式按产品规则处理

12.4 Token 刷新接口

示例:

POST /api/auth/refresh-token

{
"refreshToken": "xxxx"
}

测试点:

  • refreshToken 有效时返回新 Token
  • refreshToken 过期时刷新失败
  • refreshToken 为空时失败
  • 退出登录后 refreshToken 是否失效
  • 被封禁用户是否还能刷新 Token

13. 用户资料接口怎么测

13.1 获取用户资料接口

示例:

GET /api/users/1001/profile

测试点:

  • 获取自己的资料
  • 获取别人的公开资料
  • 获取不存在用户资料
  • 获取已注销用户资料
  • 获取被封禁用户资料
  • 游客是否可以查看用户主页,按需求判断

13.2 修改用户资料接口

示例:

PATCH /api/users/me/profile

{
"nickname": "Alice",
"bio": "Hello world"
}

测试点:

  • 修改昵称成功
  • 修改简介成功
  • 昵称为空
  • 昵称超长
  • 昵称重复
  • 昵称包含 Emoji
  • 昵称包含多语言字符
  • 简介包含链接
  • 简介包含敏感词
  • 用户A不能修改用户B资料
  • 未登录不能修改资料

14. 发帖接口怎么测

14.1 创建帖子接口

示例:

POST /api/posts

{
"title": "My first post",
"content": "Hello community",
"topicId": "topic_001",
"mediaIds": ["img_001"]
}

正常场景

  • 发布纯文本帖子成功
  • 发布图文帖子成功
  • 发布带视频帖子成功,如果支持
  • 发布到指定板块成功
  • 发布后返回帖子 ID
  • 发布后帖子详情可查询
  • 发布后 Feed 流可展示,按审核规则判断

参数异常

场景 预期
title 为空 创建失败
title 超长 创建失败
content 为空 按需求判断是否允许
content 超长 创建失败
topicId 不存在 创建失败
mediaIds 包含不存在文件 创建失败
多传无关字段 后端忽略或报错,按接口规范

权限异常

  • 未登录不能发帖
  • 被禁言用户不能发帖
  • 被封禁用户不能发帖
  • 无板块权限的用户不能发帖
  • 新用户发帖限制,按需求判断

14.2 编辑帖子接口

测试点:

  • 作者编辑自己的帖子成功
  • 用户B编辑用户A帖子失败
  • 管理员编辑或隐藏帖子,按需求判断
  • 编辑标题成功
  • 编辑正文成功
  • 编辑媒体成功
  • 编辑后是否重新审核,按需求判断
  • 编辑已删除帖子失败

14.3 删除帖子接口

示例:

DELETE /api/posts/1001

测试点:

  • 作者删除自己的帖子成功
  • 用户B删除用户A帖子失败
  • 管理员删除帖子成功
  • 重复删除同一帖子如何处理
  • 删除不存在帖子返回正确错误
  • 删除后详情接口不可正常返回内容
  • 删除后 Feed 不再展示
  • 删除后评论、点赞、收藏状态按需求处理

15. 评论与回复接口怎么测

15.1 创建评论接口

示例:

POST /api/posts/1001/comments

{
"content": "Nice post!"
}

测试点:

  • 评论成功
  • 空评论失败
  • 超长评论失败
  • Emoji 评论成功
  • 多语言评论成功
  • 敏感词评论进入审核或失败
  • 未登录评论失败
  • 被禁言用户评论失败
  • 评论已删除帖子失败

15.2 回复评论接口

示例:

POST /api/comments/9001/replies

{
"content": "I agree."
}

测试点:

  • 回复一级评论成功
  • 回复二级评论成功,按产品层级限制
  • 回复不存在评论失败
  • 回复已删除评论失败
  • 回复后被回复用户收到通知
  • 回复关系字段正确,例如 parentId、replyToUserId

15.3 删除评论接口

测试点:

  • 评论作者删除自己的评论成功
  • 普通用户删除别人评论失败
  • 帖子作者是否能删除帖子下评论,按需求判断
  • 管理员删除评论成功
  • 删除后评论数减少
  • 删除后回复如何展示,按需求判断

16. 点赞、收藏、关注接口怎么测

这些接口看起来简单,但很容易出现重复计数和状态错误。

16.1 点赞接口

示例:

POST /api/posts/1001/like

测试点:

  • 点赞成功
  • 取消点赞成功
  • 重复点赞不应重复增加点赞数
  • 重复取消点赞不应导致点赞数负数
  • 未登录点赞失败
  • 被封禁用户点赞失败,按需求判断
  • 点赞不存在帖子失败
  • 点赞已删除帖子失败
  • 点赞成功后查询帖子详情,likeCount 正确
  • 点赞成功后当前用户 likeStatus 正确

16.2 收藏接口

测试点:

  • 收藏帖子成功
  • 取消收藏成功
  • 重复收藏不重复生成记录
  • 收藏列表能查询到该帖子
  • 帖子删除后收藏列表展示符合需求
  • 未登录收藏失败

16.3 关注接口

示例:

POST /api/users/1002/follow

测试点:

  • 关注用户成功
  • 取消关注成功
  • 重复关注不重复增加粉丝数
  • 不能关注自己
  • 不能关注不存在用户
  • 被拉黑后是否能关注,按需求判断
  • 关注后 followerCount 和 followingCount 正确

17. Feed 信息流接口怎么测

Feed 接口是社区项目核心。

示例:

GET /api/feed?type=recommend&cursor=xxx&pageSize=20

17.1 基础测试点

  • 获取推荐流成功
  • 获取最新流成功
  • 获取关注流成功
  • 获取热门流成功
  • pageSize 默认值正确
  • pageSize 超大时有限制
  • cursor 为空时返回第一页
  • cursor 错误时处理正确
  • 无更多数据时返回 hasMore=false

17.2 数据正确性

需要验证:

  • 返回帖子字段完整
  • 不返回已删除帖子
  • 不返回审核未通过帖子
  • 不返回被屏蔽用户内容,按需求判断
  • 关注流只返回关注用户帖子
  • 最新流按发布时间排序
  • 热门流按热度规则排序,按需求判断

17.3 分页重点

Feed 分页常见问题:

  • 重复帖子
  • 漏帖子
  • cursor 失效
  • 新内容插入导致顺序混乱

测试方法:

1. 请求第一页 Feed
2. 记录最后一条数据的 cursor
3. 使用 cursor 请求第二页
4. 检查第一页和第二页是否有重复帖子
5. 连续请求多页
6. 检查排序是否稳定

18. 搜索接口怎么测

示例:

GET /api/search?keyword=battery&type=post&page=1&pageSize=20

测试点:

  • 搜索帖子成功
  • 搜索用户成功
  • 搜索话题成功
  • keyword 为空
  • keyword 为空格
  • keyword 超长
  • keyword 包含特殊字符
  • keyword 包含 Emoji
  • 英文大小写搜索
  • 中文搜索
  • 日文搜索
  • 韩文搜索
  • 带重音字符搜索,例如 café / cafe
  • 无结果时返回空列表
  • 搜索结果分页正确

19. 通知消息接口怎么测

19.1 通知列表接口

示例:

GET /api/notifications?page=1&pageSize=20

测试点:

  • 获取通知列表成功
  • 通知按时间倒序
  • 未读通知状态正确
  • 已读通知状态正确
  • 无通知时返回空列表
  • 分页正确

19.2 未读数接口

示例:

GET /api/notifications/unread-count

测试点:

  • 新评论产生未读通知
  • 新点赞产生未读通知,按需求判断
  • 新关注产生未读通知
  • 读取通知后未读数减少
  • 全部已读后未读数为 0
  • 多端已读状态同步,按需求判断

19.3 标记已读接口

测试点:

  • 单条通知标记已读成功
  • 全部通知标记已读成功
  • 重复标记已读不会报错或按规则返回
  • 用户A不能标记用户B通知

20. 私信接口怎么测

20.1 发送消息接口

示例:

POST /api/messages

{
"receiverId": "1002",
"content": "Hello"
}

测试点:

  • 发送文本消息成功
  • 发送 Emoji 成功
  • 发送图片消息成功,按需求判断
  • receiverId 不存在失败
  • content 为空失败
  • content 超长失败
  • 未登录发送失败
  • 被拉黑后发送失败
  • 被封禁用户发送失败,按需求判断
  • 发送成功后对方消息列表可见

20.2 消息列表接口

测试点:

  • 获取会话列表成功
  • 获取某个会话消息成功
  • 消息按时间排序
  • 分页加载正确
  • 已读未读状态正确
  • 删除会话后展示符合需求

21. 举报与审核接口怎么测

21.1 举报接口

示例:

POST /api/reports

{
"targetType": "post",
"targetId": "1001",
"reason": "spam",
"description": "This is spam."
}

测试点:

  • 举报帖子成功
  • 举报评论成功
  • 举报用户成功
  • targetType 为空失败
  • targetId 不存在失败
  • reason 为空失败
  • description 超长失败
  • 重复举报按规则处理
  • 举报后后台能看到记录

21.2 审核接口

管理员接口示例:

POST /api/admin/posts/1001/review

{
"action": "reject",
"reason": "spam"
}

测试点:

  • 管理员审核通过成功
  • 管理员审核拒绝成功
  • 普通用户调用审核接口失败
  • 版主只能审核自己负责板块,按需求判断
  • 审核后前台展示状态正确
  • 审核拒绝后用户收到通知,按需求判断

第三部分:接口测试通用专项能力

这一部分不是某一个具体模块,而是接口测试中反复会用到的专项能力。

例如权限测试、参数校验、幂等性、分页、文件上传、多语言和时区,这些能力在注册、发帖、评论、点赞、Feed 等模块中都会用到。


22. 权限类接口怎么测

权限测试是接口测试中非常重要的部分。

22.1 常见权限场景

场景 测试目标
未登录访问需要登录的接口 应返回未登录
普通用户访问管理员接口 应返回无权限
用户A修改用户B资料 应失败
用户A删除用户B帖子 应失败
被禁言用户发帖 应失败
被封禁用户点赞/评论 按需求限制
版主操作非负责板块 应失败

22.2 怎么测越权

以删除帖子为例:

1. 用户A创建帖子,得到 postId
2. 用户B登录,拿到 userB_token
3. 用户B 使用 userB_token 调用删除接口删除用户A的帖子
4. 查看接口返回
5. 再用用户A或游客查询帖子详情

预期:

用户B删除失败
返回无权限
帖子仍然存在

23. 参数校验怎么测

参数校验是接口测试基础能力。

23.1 必填参数

例如发帖接口 title 必填。

要测:

  • 不传 title
  • title 为空字符串
  • title 为 null
  • title 只有空格

23.2 参数类型

例如 pageSize 应该是数字。

要测:

  • pageSize 传字符串
  • pageSize 传小数
  • pageSize 传负数
  • pageSize 传超大数字

23.3 字符长度

例如昵称最多 30 个字符。

要测:

  • 29 个字符
  • 30 个字符
  • 31 个字符
  • 中文 30 个字符
  • Emoji 30 个字符

23.4 枚举值

例如举报原因 reason 只能是:

spam
harassment
violence
other

要测:

  • 传合法枚举
  • 传不存在枚举
  • 传空值
  • 传大小写不同的值

24. 幂等性怎么测

幂等性简单理解:

同一个操作重复执行多次,结果不应该异常重复。

社区项目中,幂等性非常重要。

24.1 哪些接口需要关注幂等

接口 风险
注册 连续请求创建多个账号
发帖 连续点击发布生成重复帖子
评论 连续点击发送生成重复评论
点赞 点一次加多次点赞数
收藏 重复生成收藏记录
关注 粉丝数重复增加
支付/订阅 重复扣款,如果涉及支付

24.2 怎么测幂等

以点赞为例:

1. 用户A登录
2. 连续快速调用点赞接口 5 次
3. 查询帖子详情
4. 查看 likeCount 和 likeStatus

预期:

likeStatus = true
likeCount 只增加 1
不会生成 5 条点赞记录

以评论为例:

1. 准备同一个 comment request
2. 连续发送 3 次
3. 查看评论列表

预期要看产品规则:

  • 如果允许重复评论,可能会生成 3 条
  • 如果不允许重复提交,应该只生成 1 条

所以幂等性测试要结合产品规则和接口设计。


25. 分页接口怎么测

分页接口常见于:

  • Feed 列表
  • 评论列表
  • 粉丝列表
  • 通知列表
  • 私信消息列表
  • 搜索结果

25.1 page/pageSize 分页

示例:

GET /api/posts?page=1&pageSize=20

测试点:

  • page=1 正常
  • page=0
  • page=-1
  • pageSize=0
  • pageSize 超大
  • 最后一页
  • 超过最后一页
  • 无数据

25.2 cursor 分页

Feed 流常用 cursor 分页。

示例:

GET /api/feed?cursor=abc&pageSize=20

测试点:

  • cursor 为空返回第一页
  • 使用返回的 nextCursor 获取下一页
  • cursor 错误时处理正确
  • 多页之间无重复
  • 多页之间无明显漏数据
  • hasMore 字段正确

26. 文件上传接口怎么测

社区项目常见上传:

  • 头像
  • 帖子图片
  • 评论图片
  • 视频
  • 私信图片

26.1 图片上传测试

测试点:

  • JPG 上传成功
  • PNG 上传成功
  • GIF 上传成功,按需求判断
  • WebP 上传成功,按需求判断
  • 超大图片上传失败
  • 不支持格式上传失败
  • 损坏图片上传失败
  • 上传成功后返回 fileId 或 URL
  • 使用返回 fileId 发帖成功

26.2 视频上传测试

测试点:

  • MP4 上传成功
  • 视频过大失败
  • 视频时长超过限制失败
  • 视频转码中状态正确
  • 转码成功后可播放
  • 转码失败后有错误状态

26.3 上传权限测试

  • 未登录不能上传
  • 被封禁用户不能上传
  • 普通用户不能上传后台文件
  • 上传后的文件只能被正确业务引用

27. 多语言、时区相关接口怎么测

海外社区接口测试要关注 Header 和字段。

27.1 多语言 Header

示例:

Accept-Language: en-US
Accept-Language: ja-JP
Accept-Language: ar-SA

测试点:

  • 不同语言下错误提示是否正确
  • 不同语言下枚举文案是否正确
  • 不支持语言时是否使用默认语言
  • 语言 Header 为空时是否有默认值

27.2 时区 Header

如果接口支持时区 Header:

X-Timezone: Asia/Singapore
X-Timezone: America/New_York
X-Timezone: Europe/London

测试点:

  • 不同时区返回时间是否符合规则
  • 错误时区值是否处理正确
  • 时区为空时是否使用默认时区
  • 活动开始/结束时间是否转换正确
  • 夏令时地区时间是否正确

27.3 时间字段格式

接口返回时间建议关注:

  • 是否带时区
  • 是否统一 UTC
  • 是否为时间戳
  • 前端是否能正确解析

示例:

{
"createdAt": "2026-05-08T12:00:00Z"
}

比下面这种更清晰:

{
"createdAt": "2026-05-08 12:00:00"
}

因为后者不知道是什么时区。


第四部分:用例、Bug 与总结

学接口测试不能只停留在“知道怎么测”,还要能写出测试用例、提交清晰 Bug,并总结出自己的测试思路。


28. 接口测试用例怎么写

接口测试用例建议包含:

  • 用例编号
  • 模块
  • 接口名称
  • 请求方法
  • 请求地址
  • 前置条件
  • 请求参数
  • 操作步骤
  • 预期结果
  • 优先级

28.1 用例模板

字段 示例
用例编号 API_POST_001
模块 发帖
接口名称 创建帖子接口
请求方法 POST
请求地址 /api/posts
前置条件 用户A已登录,账号状态正常
请求参数 title、content、topicId
操作步骤 使用用户A Token 调用创建帖子接口
预期结果 返回创建成功,生成 postId,详情接口可查询
优先级 P0

28.2 示例用例:发帖成功

字段 内容
用例编号 API_POST_001
模块 发帖
接口名称 创建帖子接口
请求方法 POST
请求地址 /api/posts
前置条件 用户A已登录,账号状态正常
请求参数 title=My first post,content=Hello,topicId=topic_001
操作步骤 发送创建帖子请求
预期结果 HTTP 状态码成功;业务 code 成功;返回 postId;查询详情接口能查到该帖子
优先级 P0

28.3 示例用例:未登录发帖失败

字段 内容
用例编号 API_POST_002
模块 发帖
接口名称 创建帖子接口
请求方法 POST
请求地址 /api/posts
前置条件 不携带 Token
请求参数 title=My first post,content=Hello
操作步骤 不带 Authorization Header 发送请求
预期结果 返回未登录错误;不会创建帖子
优先级 P0

29. 接口 Bug 怎么提交

接口 Bug 要比功能 Bug 写得更具体,最好包含请求和响应。

29.1 接口 Bug 应包含

  • Bug 标题
  • 测试环境
  • 接口地址
  • 请求方法
  • 请求 Header
  • 请求参数
  • 响应结果
  • 预期结果
  • 实际结果
  • 复现步骤
  • 复现概率
  • 关联账号或数据 ID

29.2 示例 Bug

标题

[发帖接口] 被禁言用户调用创建帖子接口仍然发布成功

测试环境

Test 环境

前置条件

用户A已被管理员设置为禁言状态。

请求信息

POST /api/posts
Authorization: Bearer 用户A_token
Content-Type: application/json

{
"title": "test title",
"content": "test content"
}

实际结果

{
"code": 0,
"message": "success",
"data": {
"postId": "1001"
}
}

实际创建了帖子,帖子详情接口可查询。

预期结果

被禁言用户不允许发帖,接口应返回无权限或账号受限错误,不应创建帖子。

严重程度

Critical

原因:绕过前端限制,影响社区治理能力。


30. 新手常见误区

30.1 只看接口返回 success

错误做法:

接口返回 success,就认为通过。

正确做法:

还要验证:

  • 数据是否真的创建
  • 字段是否正确
  • 列表能否查询到
  • 数量是否变化
  • 状态是否正确

30.2 不测权限

接口测试一定要测权限。

页面不显示按钮,不代表接口安全。


30.3 不测重复请求

社区项目很多问题来自重复点击、网络重试、接口重复调用。

一定要测:

  • 重复发帖
  • 重复评论
  • 重复点赞
  • 重复关注
  • 重复获取验证码

30.4 不保存测试数据

接口测试经常需要用上一步返回的数据。

例如:

创建帖子 → 得到 postId → 查询帖子 → 评论帖子 → 删除帖子

新手要学会保存变量,例如 postId、commentId、token。


30.5 不看错误码

失败场景也要认真测。

例如标题为空,接口返回失败是对的,但还要看:

  • 错误码是否正确
  • message 是否清楚
  • 是否错误返回 500
  • 是否创建了脏数据

31. 最后总结

接口测试的核心不是“会用 Postman 点 Send”,而是要理解:

这个接口是做什么的?
谁可以调用?
需要传什么参数?
参数错了会怎样?
调用成功后数据是否真的变化?
重复调用会不会出问题?
没有权限的人能不能绕过前端直接调用?

对于海外社区论坛项目,接口测试最重要的几个方向是:

  • 登录态和 Token
  • 参数校验
  • 权限校验
  • 重复提交
  • 数据一致性
  • 分页稳定性
  • 多语言和时区字段
  • 第三方登录链路

只要你每个接口都围绕这些问题去测,接口测试思路就会越来越清晰。