接口测试核心知识点大全
本文档整理接口测试必备全部核心知识点,涵盖基础概念、实操要点、工具使用、常见问题等,通俗易懂、可直接用于学习、复习和工作参考,适配PDF保存与打印。
一、接口基础概念
1.1 什么是接口
接口是系统与系统、模块与模块之间进行数据交互、指令传递的通道,是不同组件之间通信的桥梁。
日常工作中最常用的是 HTTP/HTTPS 接口(Web 接口),也是Postman、JMeter等工具主要测试的对象。
1.2 接口三要素(核心)
-
请求地址(URL):接口的"地址",用于定位接口所在的服务器和具体接口路径(例:https://jsonplaceholder.typicode.com/posts)。
-
请求方法:定义接口的操作类型(如查询、新增、修改、删除)。
-
请求参数:接口交互所需的数据,用于告诉服务器"要做什么""做什么内容"。
二、HTTP核心请求方法(必背)
| 请求方法 | 核心作用 | 适用场景 |
|---|---|---|
| GET | 查询数据(从服务器获取数据) | 查看用户信息、查询商品列表、获取详情等 |
| POST | 新增数据(向服务器提交数据) | 用户登录、创建订单、提交表单等 |
| PUT | 修改数据(全量更新,覆盖原有数据) | 修改用户全部信息、更新订单完整信息等 |
| PATCH | 修改数据(部分更新,只改需要的字段) | 只修改用户手机号、只更新订单状态等 |
| DELETE | 删除数据(从服务器删除指定数据) | 删除用户、删除订单、删除文件等 |
三、请求与响应结构(核心实操)
3.1 请求结构(客户端发送给服务器)
一次完整的HTTP请求,由4部分组成,缺一不可:
-
请求行:包含请求方法 + 请求地址(URL),是请求的"核心指令"(例:POST https://jsonplaceholder.typicode.com/posts)。
-
请求头(Header):描述请求的"元信息",告诉服务器请求的类型、身份验证信息等(例:Content-Type、token、Cookie)。
-
请求参数(Params):URL后面拼接的参数(Query参数),主要用于GET请求传递简单数据(例:https://xxx.com/user?id=123)。
-
请求体(Body):主要用于POST、PUT、PATCH请求,传递复杂数据(如JSON、表单、文件),是请求的"核心数据"。
3.2 响应结构(服务器返回给客户端)
服务器接收请求后,返回的响应由3部分组成:
-
状态码(Status Code):表示请求是否成功(例:200成功、404地址错误)。
-
响应头(Response Header):描述响应的"元信息",告诉客户端响应数据的格式、大小、服务器信息等(无业务数据)。
-
响应体(Response Body):服务器返回的"实际业务数据",也是接口测试中最需要关注的部分(例:JSON格式的用户信息、订单数据)。
3.3 关键注意点
请求头 ≠ 请求体、响应头 ≠ 响应体,四者完全独立、互不相干:
-
请求头/请求体:客户端发送给服务器的内容,前者是描述信息,后者是核心数据。
-
响应头/响应体:服务器返回给客户端的内容,前者是描述信息,后者是核心业务数据。
-
业务数据(id、token、用户信息等)99.9%都在响应体中,响应头只存描述性信息。
四、HTTP状态码(必背,面试/实操高频)
状态码分为5大类,重点记住常用码,其余了解即可:
-
1xx(通知类):服务器已接收请求,正在处理(极少用到,无需记忆)。
-
2xx(成功类):请求成功,服务器正常返回数据(核心记忆):
-
200 OK:请求成功(最常用,如GET查询成功)。
-
201 Created:创建成功(常用,如POST新增数据成功)。
-
-
3xx(重定向类):请求需要进一步操作才能完成(如页面跳转,接口测试中极少关注)。
-
4xx(客户端错误类):请求有问题,服务器无法处理(核心记忆):
-
400 Bad Request:请求参数错误(如必传参数未传、参数格式错误)。
-
401 Unauthorized:未登录/身份验证失败(如未传token)。
-
403 Forbidden:无权限访问(如普通用户访问管理员接口)。
-
404 Not Found:请求地址错误(URL写错)。
-
-
5xx(服务器错误类):服务器自身故障,无法处理请求(核心记忆):
-
500 Internal Server Error:服务器内部错误(后端代码崩了)。
-
503 Service Unavailable:服务器不可用(如服务器宕机、维护)。
-
五、接口传参方式(必考,实操高频)
接口传参分为4种,根据请求方法和业务需求选择,重点掌握JSON格式传参:
-
Query参数(查询参数)
-
格式:URL后面拼接 "?参数名=参数值&参数名2=参数值2"(例:https://xxx.com/user?id=123\&name=test)。
-
适用:GET请求,传递简单、少量数据(如查询条件)。
-
-
Path参数(路径参数)
-
格式:URL路径中包含参数,用 {} 包裹(例:https://xxx.com/user/{id},其中id是参数)。
-
适用:GET、PUT、DELETE请求,传递唯一标识(如用户id、订单id)。
-
-
Header参数(请求头参数)
-
格式:在请求头中添加参数(键值对),不体现在URL中。
-
适用:所有请求,传递身份验证信息(token、Cookie)、请求格式(Content-Type)等。
-
-
Body参数(请求体参数,最常用)
-
适用:POST、PUT、PATCH请求,传递复杂、大量数据(如登录密码、订单详情)。
-
常用格式(重点掌握):
-
form-data:用于文件上传(如上传图片、文档)。
-
x-www-form-urlencoded:普通表单提交(如简单的登录表单)。
-
raw → JSON:目前行业主流格式,传递结构化数据(如{"title":"test","body":"content"})。
-
-
六、接口测试核心内容(接口测试测什么?)
接口测试的核心是验证"接口是否符合需求",主要测试以下6个方面,覆盖所有实操场景:
-
功能测试(最基础、最核心)
-
正常场景:参数正确、格式正确,验证接口返回结果是否符合预期(如登录成功返回token)。
-
异常场景:参数为空、参数错误、参数超长、参数为特殊字符,验证接口是否能正确处理(如返回400错误、提示"参数错误")。
-
-
边界测试
-
验证参数的边界值(如数字的最大/最小值、字符串的最长/最短长度),确保接口不会因边界值报错。
-
例:用户名长度要求6-20位,测试5位、20位、21位的情况。
-
-
权限测试
-
未登录测试:未传token,验证是否无法访问需要登录的接口(返回401)。
-
越权测试:普通用户访问管理员接口、用户A访问用户B的数据,验证是否无法访问(返回403)。
-
-
异常测试(补充)
-
必传参数不传、参数类型错误(如需要数字传字符串)、重复提交(如重复创建订单)。
-
验证接口的容错能力,是否能返回清晰的错误提示,不会直接崩溃。
-
-
业务逻辑测试
-
按真实业务流程,串联多个接口测试(如:登录 → 获取用户信息 → 修改用户信息 → 退出登录)。
-
验证接口之间的数据交互是否正常,业务流程是否能完整走通。
-
-
并发/性能测试(进阶)
-
用JMeter工具,模拟多用户同时请求接口,验证接口的响应速度、稳定性、容错能力。
-
重点关注:响应时间、吞吐量、错误率。
-
七、接口测试标准流程(必掌握,工作必备)
接口测试需遵循固定流程,确保测试全面、规范,避免遗漏:
-
需求分析 + 查看接口文档:明确接口的功能、请求参数、返回格式、预期结果(核心前提)。
-
设计接口测试用例:根据接口需求,设计正常、异常、边界、权限等场景的测试用例(见第八部分)。
-
构造请求:用Postman/JMeter等工具,填写请求地址、方法、参数、请求体,构造测试请求。
-
发送请求:执行请求,获取服务器返回的响应数据。
-
断言结果:验证响应状态码、响应体字段、返回值是否符合预期(核心步骤)。
-
缺陷管理:若断言失败(接口有BUG),记录缺陷(描述、复现步骤、预期/实际结果),提交给开发修复,修复后回归测试。
-
输出测试报告:整理测试结果,生成测试报告(包含测试用例、通过/失败情况、缺陷统计)。
八、断言(实操核心,Postman/JMeter必用)
8.1 什么是断言
断言是接口测试的"判断依据",用于验证"接口返回的结果是否符合预期",只有断言通过,才算接口测试通过。
8.2 常用断言场景(Postman实操示例)
-
断言状态码:验证响应状态码为200/201(例:pm.expect(pm.response.code).to.eql(201))。
-
断言响应体包含指定字符串:验证返回结果中包含"success""id"等关键字(例:pm.expect(pm.response.text()).to.include("101"))。
-
断言响应体字段存在:验证返回的JSON中包含指定字段(例:pm.expect(pm.response.json()).to.have.property("id"))。
-
断言响应体字段值正确:验证指定字段的值符合预期(例:pm.expect(pm.response.json().id).to.eql(101))。
九、接口关联(必会,多接口串联必备)
9.1 什么是接口关联
多个接口串联测试时,上一个接口返回的结果(如token、id),作为下一个接口的请求参数,这种场景称为接口关联(最常用:登录接口返回token,后续接口用该token验证身份)。
9.2 Postman接口关联实操示例(核心代码)
- 上一个接口(登录接口),提取返回的token,存入环境变量:
javascript
// 把响应体转成JSON对象,提取token字段
var token = pm.response.json().token;
// 把token存入环境变量(环境变量名可自定义,如token)
pm.environment.set("token", token);
- 下一个接口,在请求头中引用环境变量token:
在请求头中添加:Key=Authorization,Value=Bearer {{token}}({{}} 是Postman引用环境变量的语法)。
十、Cookie / Session / Token(必懂,身份验证核心)
三者都是接口身份验证的方式,用于确认"请求者是合法用户",核心区别如下:
| 类型 | 存储位置 | 核心特点 | 适用场景 |
|---|---|---|---|
| Cookie | 客户端(浏览器/工具) | 体积小、存储简单,可设置过期时间,不安全(明文存储) | 简单的身份验证(如普通网站登录) |
| Session | 服务器端 | 安全(数据存在服务器),占用服务器资源,关闭浏览器失效 | 传统网站、需要高安全的接口 |
| Token | 客户端(存储在请求头/本地) | 安全(加密)、无状态、可跨端(Web/APP),有效期可自定义 | 目前主流,接口测试中最常用(如APP接口、Web后端接口) |
十一、接口文档怎么看(工作必备)
接口文档是接口测试的"指南",拿到文档后,重点看以下6点,避免遗漏关键信息:
-
接口地址(URL):明确接口的访问路径,避免写错URL。
-
请求方法:明确是GET/POST/PUT/DELETE,方法错了接口会报错。
-
请求头:明确需要传递的请求头参数(如token、Content-Type),是否必传。
-
请求参数:明确每个参数的名称、类型、是否必传、取值范围、说明(如id是数字、必传,长度1-10位)。
-
返回格式:明确响应体的格式(JSON/XML),每个字段的含义、类型。
-
成功/失败示例:明确接口成功时的返回结果、失败时的错误码和提示(用于设计用例、断言)。
常用接口文档工具:Swagger(在线可直接调试)、YApi(企业常用)、Postman集合(可导出为文档)。
十二、接口测试工具(必会,按优先级排序)
不同工具适用不同场景,重点掌握Postman(入门)和JMeter(进阶),其余工具了解用途即可:
-
Postman(首选,入门必备)
-
核心用途:接口调试、手工测试、简单自动化、接口关联、环境变量管理。
-
优势:操作简单、可视化、上手快,适合日常接口调试和手工测试。
-
-
JMeter(进阶必备)
-
核心用途:接口自动化测试、并发测试、压力测试、批量执行测试用例。
-
优势:功能强大、支持多种协议,适合接口自动化和性能测试。
-
-
Fiddler / Charles(抓包工具)
-
核心用途:抓取HTTP/HTTPS请求、查看请求/响应详情、篡改请求参数、调试接口问题。
-
优势:可拦截请求,适合定位接口报错原因(如参数传递错误、token失效)。
-
-
Swagger / YApi(接口文档工具)
-
核心用途:查看接口文档、在线调试接口(无需打开Postman)。
-
优势:方便开发和测试协作,减少沟通成本。
-
十三、接口常见BUG(工作高频,必掌握)
接口测试中,常见的BUG类型整理,方便快速定位问题:
-
参数校验缺失:必传参数不传、参数为空、参数格式错误,接口不报错,返回异常结果。
-
越权操作:普通用户可访问管理员接口、可修改/删除其他用户的数据。
-
重复提交:多次提交相同参数,导致重复创建数据(如重复创建订单、重复注册)。
-
数值溢出:参数为超大/超小数字,接口报错或返回错误结果。
-
敏感信息明文返回:密码、手机号、身份证号等敏感信息,以明文形式返回(不安全)。
-
状态码错误:接口成功却返回5xx,失败却返回200,状态码与实际结果不匹配。
-
字段缺失:接口返回的JSON中,缺失文档中约定的字段(如未返回id、name)。
-
响应时间过长:接口响应时间超过预期(如超过3秒),性能不达标。
十四、接口测试用例怎么写(工作必备)
14.1 用例设计原则
覆盖所有场景(正常、异常、边界、权限),每条用例只验证一个功能点,清晰、可复现。
14.2 用例包含要素(必写)
每条接口测试用例,必须包含以下6个要素,缺一不可:
-
用例标题:明确测试场景(例:POST新增用户-参数正常-新增成功)。
-
请求地址:接口的URL(例:https://xxx.com/user)。
-
请求方法:GET/POST/PUT/DELETE(例:POST)。
-
请求参数:完整的请求头、请求体/Params(例:请求体{"name":"test","password":"123456"})。
-
预期结果:接口应返回的状态码、响应体字段、提示信息(例:状态码201,返回id=123,提示"新增成功")。
-
实际结果:执行测试后,接口实际返回的结果(测试后填写)。
14.3 用例示例(POST新增用户接口)
| 用例标题 | 请求地址 | 请求方法 | 请求参数 | 预期结果 | 实际结果 |
|---|---|---|---|---|---|
| 新增用户-参数正常-新增成功 | https://xxx.com/user | POST | 请求头:Content-Type=application/json;请求体:{"name":"test","password":"123456"} | 状态码201;返回{"id":123,"name":"test","password":"******"};提示"新增成功" | 待测试 |
| 新增用户-必传参数name为空-新增失败 | https://xxx.com/user | POST | 请求头:Content-Type=application/json;请求体:{"name":"","password":"123456"} | 状态码400;提示"name不能为空" | 待测试 |
十五、接口自动化思路(进阶,提升工作效率)
当接口数量多、需要反复测试(如回归测试)时,可做接口自动化,核心思路如下:
-
梳理测试用例:筛选出适合自动化的用例(如正常场景、核心业务流程用例),排除不稳定的用例。
-
选择工具:Postman(简单自动化,适合少量接口)、JMeter(批量自动化,适合大量接口)。
-
编写自动化脚本:
-
Postman:将用例整理成集合,设置接口关联、断言、环境变量,批量运行集合。
-
JMeter:添加线程组、HTTP请求、断言、监听器,编写脚本,设置运行次数和并发数。
-
-
运行脚本 + 查看报告:批量运行自动化用例,查看运行结果,生成测试报告(失败用例重点回归)。
-
持续集成(进阶):将自动化脚本接入Jenkins,设置定时运行(如每天凌晨运行),自动生成报告,实现"无人值守测试"。
十六、RESTful风格接口(行业标准,必了解)
RESTful是目前行业主流的接口设计风格,核心是"通过URL+请求方法,表示接口的操作类型",简洁、规范,易于理解和维护,常见设计如下:
| 操作类型 | RESTful URL | 请求方法 | 说明 |
|---|---|---|---|
| 查询所有用户 | /user | GET | 获取所有用户列表 |
| 查询单个用户 | /user/{id} | GET | 根据id查询单个用户信息 |
| 新增用户 | /user | POST | 提交用户信息,新增用户 |
| 修改用户 | /user/{id} | PUT | 根据id,全量更新用户信息 |
| 删除用户 | /user/{id} | DELETE | 根据id,删除指定用户 |
十七、核心总结(快速复习必备)
接口测试核心:会发请求 → 会看响应 → 会断言 → 会关联 → 会测异常 → 会看状态码。
工作必备:掌握Postman/JMeter工具、能设计测试用例、能定位常见BUG、能看懂接口文档。
进阶方向:接口自动化、性能测试、持续集成,提升测试效率,适应企业工作需求。
(注:文档部分内容可能由 AI 生成)