学习笔记:海外社区论坛 - 接口测试入门
学习记录:把接口测试相关要点整理成一篇入门笔记,结合个人实践,并与 AI 一起补全结构,方便按模块查阅。
若你在测海外论坛类后台接口,希望这篇能当手册用。
适合对象:已做过功能测试、准备系统学接口测试的同学;文中不默认你已熟悉 HTTP、Token、请求响应结构。
阅读提示:全文按「基础 → 论坛接口实战 → 通用专项 → 用例与 Bug」四块展开;配合页面 TOC 或下方折叠目录跳转。第 11~21 章与业务模块对应,适合对照接口文档逐个过。
章节目录(共 31 章,点击展开,条目可点击跳转)
- 为什么功能测试之后要学接口测试
- 什么是接口测试
- 接口测试和功能测试有什么区别
- 接口测试需要掌握哪些基础概念
- HTTP 请求方法怎么理解
- 请求参数有哪些类型
- 响应结果应该怎么看
- Token、登录态、鉴权是什么
- 接口测试前需要准备什么
- 常用接口测试工具:Postman / Apifox
- 海外社区论坛常见接口有哪些
- 注册登录接口怎么测
- 用户资料接口怎么测
- 发帖接口怎么测
- 评论与回复接口怎么测
- 点赞、收藏、关注接口怎么测
- Feed 信息流接口怎么测
- 搜索接口怎么测
- 通知消息接口怎么测
- 私信接口怎么测
- 举报与审核接口怎么测
- 权限类接口怎么测
- 参数校验怎么测
- 幂等性怎么测
- 分页接口怎么测
- 文件上传接口怎么测
- 多语言、时区相关接口怎么测
- 接口测试用例怎么写
- 接口 Bug 怎么提交
- 新手常见误区
- 最后总结
第一部分:接口测试基础概念
如果你是接口测试新手,建议先完整学习这一部分。
如果你已经了解接口基础,可以直接跳到 第二部分:海外社区论坛项目接口实战。
1. 为什么功能测试之后要学接口测试
功能测试主要是站在用户角度看系统能不能正常使用。
例如用户点击“发布帖子”按钮,页面提示发布成功,列表里出现了帖子,这就是功能测试关注的内容。
但是在真实项目中,页面只是表象。页面背后真正发生的是:
前端页面 |
也就是说,你在页面上点击一个按钮,其实前端会调用一个接口。
例如:
点击发布帖子 |
功能测试只能看到“结果”,接口测试可以看到“过程”。
1.1 举个例子:点赞功能
功能测试会这样测:
1. 打开帖子详情页 |
接口测试会进一步关注:
1. 点赞接口请求地址是什么? |
所以,接口测试能帮助你发现很多功能测试不容易发现的问题。
1.2 接口测试能发现什么问题
接口测试常见能发现这些问题:
| 问题类型 | 示例 |
|---|---|
| 参数校验问题 | 标题为空,接口仍然创建帖子 |
| 权限校验问题 | 普通用户通过接口删除了别人的帖子 |
| 重复提交问题 | 连续调用评论接口,生成多条重复评论 |
| 数据错误问题 | 点赞接口成功,但点赞数没有变化 |
| 状态错误问题 | 被禁言用户仍然可以通过接口发帖 |
| 异常处理问题 | 参数错误时接口返回 500,而不是明确错误码 |
| 兼容问题 | 多语言字符、Emoji、时区字段处理异常 |
2. 什么是接口测试
接口测试就是:
不通过页面操作,而是直接向后端接口发送请求,验证接口返回结果、业务逻辑、数据处理、权限控制是否正确。
你可以简单理解为:
功能测试:像用户一样点页面 |
接口测试不是为了取代功能测试,而是补充功能测试。
功能测试回答:
用户在页面上能不能完成操作? |
接口测试回答:
后端接口是否真的按规则处理了这个操作? |
2.1 接口是什么
接口可以理解为前端和后端沟通的通道。
比如前端想获取帖子列表,就会向后端发请求:
GET /api/posts |
后端返回帖子数据:
{ |
前端拿到这些数据后,再展示成页面。
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 |
这里包含:
| 部分 | 含义 |
|---|---|
| GET | 请求方法 |
| /api/posts/1001 | 请求地址 |
| 1001 | 帖子 ID,属于 Path 参数 |
| Authorization | 登录凭证 |
| Accept-Language | 当前语言 |
接口返回:
{ |
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 |
测试重点:
- 必填参数校验
- 参数长度校验
- 重复提交处理
- 权限校验
- 创建成功后数据是否正确
5.3 PUT / PATCH 请求
PUT / PATCH 通常用于修改。
示例:修改用户简介。
PATCH /api/users/me/profile |
测试重点:
- 只能修改自己的资料
- 字段为空是否允许
- 字段超长是否拦截
- 修改成功后再次查询是否更新
5.4 DELETE 请求
DELETE 通常用于删除。
示例:删除评论。
DELETE /api/comments/9001 |
测试重点:
- 作者是否能删除自己的评论
- 普通用户是否不能删除别人的评论
- 管理员是否能删除评论
- 重复删除如何处理
- 删除后评论数是否减少
6. 请求参数有哪些类型
接口请求参数一般分为 4 类:
Path 参数 |
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 |
测试点:
- page 为空
- page 为 0
- page 为负数
- pageSize 超大
- sort 传不存在的值
- 多个筛选条件组合
6.3 Body 参数
Body 参数通常用于 POST、PUT、PATCH。
示例:
{ |
测试点:
- 必填字段缺失
- 字段为空字符串
- 字段为 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 数据
示例:
{ |
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 是否符合接口文档
- message 是否清楚
- data 是否符合失败场景
- 多语言下 message 是否翻译正确,按产品设计判断
7.3 data 字段
成功响应通常会返回 data。
测试时要看:
- 字段是否完整
- 字段类型是否正确
- 字段值是否正确
- 空数据时是返回 null、空对象还是空数组
- 金额、时间、数量是否格式正确
例如帖子列表接口返回:
{ |
比直接返回 null 更容易让前端处理。
8. Token、登录态、鉴权是什么
接口测试中非常重要的一块是登录态和权限。
8.1 Token 是什么
Token 可以理解为用户登录后的“通行证”。
流程如下:
用户登录成功 |
示例:
Authorization: Bearer eyJhbGciOi... |
8.2 没有 Token 会怎样
如果接口需要登录,但请求没有带 Token,应该返回未登录。
例如:
POST /api/posts |
不带 Token 发帖,预期:
发帖失败 |
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 准备测试数据
文本数据
普通英文 |
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. 新建请求 |
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 |
正常场景
- Gmail 注册成功
- Outlook 注册成功
- Yahoo 注册成功
- 公司邮箱注册成功
- 带
+别名邮箱按规则处理 - 大小写邮箱按规则处理
异常场景
| 场景 | 预期 |
|---|---|
| email 为空 | 注册失败,提示邮箱必填 |
| email 格式错误 | 注册失败,提示邮箱格式错误 |
| password 为空 | 注册失败,提示密码必填 |
| password 太短 | 注册失败,提示密码不符合规则 |
| code 为空 | 注册失败,提示验证码必填 |
| code 错误 | 注册失败 |
| code 过期 | 注册失败 |
| 邮箱已注册 | 注册失败或提示登录 |
| 连续调用注册接口 | 只能创建一个账号 |
12.2 登录接口
示例:
POST /api/auth/login |
测试点:
- 正确账号密码登录成功
- 错误密码登录失败
- 不存在账号登录失败
- 被封禁账号登录失败或受限
- 未验证邮箱登录处理正确
- 登录成功返回 Token
- 登录成功返回用户基础信息
- 登录失败不应返回 Token
12.3 第三方登录接口
第三方登录一般不是一个简单接口,通常涉及授权 code。
大概流程:
前端跳转第三方授权 |
测试点:
- Google 授权 code 有效时登录成功
- code 为空时失败
- code 已使用时失败
- code 过期时失败
- 第三方返回邮箱为空时处理正确
- 第三方返回头像为空时处理正确
- 同一第三方账号二次登录不会重复创建账号
- 同邮箱不同登录方式按产品规则处理
12.4 Token 刷新接口
示例:
POST /api/auth/refresh-token |
测试点:
- refreshToken 有效时返回新 Token
- refreshToken 过期时刷新失败
- refreshToken 为空时失败
- 退出登录后 refreshToken 是否失效
- 被封禁用户是否还能刷新 Token
13. 用户资料接口怎么测
13.1 获取用户资料接口
示例:
GET /api/users/1001/profile |
测试点:
- 获取自己的资料
- 获取别人的公开资料
- 获取不存在用户资料
- 获取已注销用户资料
- 获取被封禁用户资料
- 游客是否可以查看用户主页,按需求判断
13.2 修改用户资料接口
示例:
PATCH /api/users/me/profile |
测试点:
- 修改昵称成功
- 修改简介成功
- 昵称为空
- 昵称超长
- 昵称重复
- 昵称包含 Emoji
- 昵称包含多语言字符
- 简介包含链接
- 简介包含敏感词
- 用户A不能修改用户B资料
- 未登录不能修改资料
14. 发帖接口怎么测
14.1 创建帖子接口
示例:
POST /api/posts |
正常场景
- 发布纯文本帖子成功
- 发布图文帖子成功
- 发布带视频帖子成功,如果支持
- 发布到指定板块成功
- 发布后返回帖子 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 |
测试点:
- 评论成功
- 空评论失败
- 超长评论失败
- Emoji 评论成功
- 多语言评论成功
- 敏感词评论进入审核或失败
- 未登录评论失败
- 被禁言用户评论失败
- 评论已删除帖子失败
15.2 回复评论接口
示例:
POST /api/comments/9001/replies |
测试点:
- 回复一级评论成功
- 回复二级评论成功,按产品层级限制
- 回复不存在评论失败
- 回复已删除评论失败
- 回复后被回复用户收到通知
- 回复关系字段正确,例如 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 |
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 |
测试点:
- 发送文本消息成功
- 发送 Emoji 成功
- 发送图片消息成功,按需求判断
- receiverId 不存在失败
- content 为空失败
- content 超长失败
- 未登录发送失败
- 被拉黑后发送失败
- 被封禁用户发送失败,按需求判断
- 发送成功后对方消息列表可见
20.2 消息列表接口
测试点:
- 获取会话列表成功
- 获取某个会话消息成功
- 消息按时间排序
- 分页加载正确
- 已读未读状态正确
- 删除会话后展示符合需求
21. 举报与审核接口怎么测
21.1 举报接口
示例:
POST /api/reports |
测试点:
- 举报帖子成功
- 举报评论成功
- 举报用户成功
- targetType 为空失败
- targetId 不存在失败
- reason 为空失败
- description 超长失败
- 重复举报按规则处理
- 举报后后台能看到记录
21.2 审核接口
管理员接口示例:
POST /api/admin/posts/1001/review |
测试点:
- 管理员审核通过成功
- 管理员审核拒绝成功
- 普通用户调用审核接口失败
- 版主只能审核自己负责板块,按需求判断
- 审核后前台展示状态正确
- 审核拒绝后用户收到通知,按需求判断
第三部分:接口测试通用专项能力
这一部分不是某一个具体模块,而是接口测试中反复会用到的专项能力。
例如权限测试、参数校验、幂等性、分页、文件上传、多语言和时区,这些能力在注册、发帖、评论、点赞、Feed 等模块中都会用到。
22. 权限类接口怎么测
权限测试是接口测试中非常重要的部分。
22.1 常见权限场景
| 场景 | 测试目标 |
|---|---|
| 未登录访问需要登录的接口 | 应返回未登录 |
| 普通用户访问管理员接口 | 应返回无权限 |
| 用户A修改用户B资料 | 应失败 |
| 用户A删除用户B帖子 | 应失败 |
| 被禁言用户发帖 | 应失败 |
| 被封禁用户点赞/评论 | 按需求限制 |
| 版主操作非负责板块 | 应失败 |
22.2 怎么测越权
以删除帖子为例:
1. 用户A创建帖子,得到 postId |
预期:
用户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 |
要测:
- 传合法枚举
- 传不存在枚举
- 传空值
- 传大小写不同的值
24. 幂等性怎么测
幂等性简单理解:
同一个操作重复执行多次,结果不应该异常重复。
社区项目中,幂等性非常重要。
24.1 哪些接口需要关注幂等
| 接口 | 风险 |
|---|---|
| 注册 | 连续请求创建多个账号 |
| 发帖 | 连续点击发布生成重复帖子 |
| 评论 | 连续点击发送生成重复评论 |
| 点赞 | 点一次加多次点赞数 |
| 收藏 | 重复生成收藏记录 |
| 关注 | 粉丝数重复增加 |
| 支付/订阅 | 重复扣款,如果涉及支付 |
24.2 怎么测幂等
以点赞为例:
1. 用户A登录 |
预期:
likeStatus = true |
以评论为例:
1. 准备同一个 comment request |
预期要看产品规则:
- 如果允许重复评论,可能会生成 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 |
测试点:
- 不同语言下错误提示是否正确
- 不同语言下枚举文案是否正确
- 不支持语言时是否使用默认语言
- 语言 Header 为空时是否有默认值
27.2 时区 Header
如果接口支持时区 Header:
X-Timezone: Asia/Singapore |
测试点:
- 不同时区返回时间是否符合规则
- 错误时区值是否处理正确
- 时区为空时是否使用默认时区
- 活动开始/结束时间是否转换正确
- 夏令时地区时间是否正确
27.3 时间字段格式
接口返回时间建议关注:
- 是否带时区
- 是否统一 UTC
- 是否为时间戳
- 前端是否能正确解析
示例:
{ |
比下面这种更清晰:
{ |
因为后者不知道是什么时区。
第四部分:用例、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 |
实际结果
{ |
实际创建了帖子,帖子详情接口可查询。
预期结果
被禁言用户不允许发帖,接口应返回无权限或账号受限错误,不应创建帖子。 |
严重程度
Critical |
原因:绕过前端限制,影响社区治理能力。
30. 新手常见误区
30.1 只看接口返回 success
错误做法:
接口返回 success,就认为通过。 |
正确做法:
还要验证:
- 数据是否真的创建
- 字段是否正确
- 列表能否查询到
- 数量是否变化
- 状态是否正确
30.2 不测权限
接口测试一定要测权限。
页面不显示按钮,不代表接口安全。
30.3 不测重复请求
社区项目很多问题来自重复点击、网络重试、接口重复调用。
一定要测:
- 重复发帖
- 重复评论
- 重复点赞
- 重复关注
- 重复获取验证码
30.4 不保存测试数据
接口测试经常需要用上一步返回的数据。
例如:
创建帖子 → 得到 postId → 查询帖子 → 评论帖子 → 删除帖子 |
新手要学会保存变量,例如 postId、commentId、token。
30.5 不看错误码
失败场景也要认真测。
例如标题为空,接口返回失败是对的,但还要看:
- 错误码是否正确
- message 是否清楚
- 是否错误返回 500
- 是否创建了脏数据
31. 最后总结
接口测试的核心不是“会用 Postman 点 Send”,而是要理解:
这个接口是做什么的? |
对于海外社区论坛项目,接口测试最重要的几个方向是:
- 登录态和 Token
- 参数校验
- 权限校验
- 重复提交
- 数据一致性
- 分页稳定性
- 多语言和时区字段
- 第三方登录链路
只要你每个接口都围绕这些问题去测,接口测试思路就会越来越清晰。








