接口测试常见问题

接口测试核心知识点大全

本文档整理接口测试必备全部核心知识点,涵盖基础概念、实操要点、工具使用、常见问题等,通俗易懂、可直接用于学习、复习和工作参考,适配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部分组成,缺一不可:

  1. 请求行:包含请求方法 + 请求地址(URL),是请求的"核心指令"(例:POST https://jsonplaceholder.typicode.com/posts)。

  2. 请求头(Header):描述请求的"元信息",告诉服务器请求的类型、身份验证信息等(例:Content-Type、token、Cookie)。

  3. 请求参数(Params):URL后面拼接的参数(Query参数),主要用于GET请求传递简单数据(例:https://xxx.com/user?id=123)。

  4. 请求体(Body):主要用于POST、PUT、PATCH请求,传递复杂数据(如JSON、表单、文件),是请求的"核心数据"。

3.2 响应结构(服务器返回给客户端)

服务器接收请求后,返回的响应由3部分组成:

  1. 状态码(Status Code):表示请求是否成功(例:200成功、404地址错误)。

  2. 响应头(Response Header):描述响应的"元信息",告诉客户端响应数据的格式、大小、服务器信息等(无业务数据)。

  3. 响应体(Response Body):服务器返回的"实际业务数据",也是接口测试中最需要关注的部分(例:JSON格式的用户信息、订单数据)。

3.3 关键注意点

请求头 ≠ 请求体、响应头 ≠ 响应体,四者完全独立、互不相干:

  • 请求头/请求体:客户端发送给服务器的内容,前者是描述信息,后者是核心数据。

  • 响应头/响应体:服务器返回给客户端的内容,前者是描述信息,后者是核心业务数据。

  • 业务数据(id、token、用户信息等)99.9%都在响应体中,响应头只存描述性信息。

四、HTTP状态码(必背,面试/实操高频)

状态码分为5大类,重点记住常用码,其余了解即可:

  1. 1xx(通知类):服务器已接收请求,正在处理(极少用到,无需记忆)。

  2. 2xx(成功类):请求成功,服务器正常返回数据(核心记忆):

    • 200 OK:请求成功(最常用,如GET查询成功)。

    • 201 Created:创建成功(常用,如POST新增数据成功)。

  3. 3xx(重定向类):请求需要进一步操作才能完成(如页面跳转,接口测试中极少关注)。

  4. 4xx(客户端错误类):请求有问题,服务器无法处理(核心记忆):

    • 400 Bad Request:请求参数错误(如必传参数未传、参数格式错误)。

    • 401 Unauthorized:未登录/身份验证失败(如未传token)。

    • 403 Forbidden:无权限访问(如普通用户访问管理员接口)。

    • 404 Not Found:请求地址错误(URL写错)。

  5. 5xx(服务器错误类):服务器自身故障,无法处理请求(核心记忆):

    • 500 Internal Server Error:服务器内部错误(后端代码崩了)。

    • 503 Service Unavailable:服务器不可用(如服务器宕机、维护)。

五、接口传参方式(必考,实操高频)

接口传参分为4种,根据请求方法和业务需求选择,重点掌握JSON格式传参:

  1. Query参数(查询参数)

  2. Path参数(路径参数)

  3. Header参数(请求头参数)

    • 格式:在请求头中添加参数(键值对),不体现在URL中。

    • 适用:所有请求,传递身份验证信息(token、Cookie)、请求格式(Content-Type)等。

  4. Body参数(请求体参数,最常用)

    • 适用:POST、PUT、PATCH请求,传递复杂、大量数据(如登录密码、订单详情)。

    • 常用格式(重点掌握):

      • form-data:用于文件上传(如上传图片、文档)。

      • x-www-form-urlencoded:普通表单提交(如简单的登录表单)。

      • raw → JSON:目前行业主流格式,传递结构化数据(如{"title":"test","body":"content"})。

六、接口测试核心内容(接口测试测什么?)

接口测试的核心是验证"接口是否符合需求",主要测试以下6个方面,覆盖所有实操场景:

  1. 功能测试(最基础、最核心)

    • 正常场景:参数正确、格式正确,验证接口返回结果是否符合预期(如登录成功返回token)。

    • 异常场景:参数为空、参数错误、参数超长、参数为特殊字符,验证接口是否能正确处理(如返回400错误、提示"参数错误")。

  2. 边界测试

    • 验证参数的边界值(如数字的最大/最小值、字符串的最长/最短长度),确保接口不会因边界值报错。

    • 例:用户名长度要求6-20位,测试5位、20位、21位的情况。

  3. 权限测试

    • 未登录测试:未传token,验证是否无法访问需要登录的接口(返回401)。

    • 越权测试:普通用户访问管理员接口、用户A访问用户B的数据,验证是否无法访问(返回403)。

  4. 异常测试(补充)

    • 必传参数不传、参数类型错误(如需要数字传字符串)、重复提交(如重复创建订单)。

    • 验证接口的容错能力,是否能返回清晰的错误提示,不会直接崩溃。

  5. 业务逻辑测试

    • 按真实业务流程,串联多个接口测试(如:登录 → 获取用户信息 → 修改用户信息 → 退出登录)。

    • 验证接口之间的数据交互是否正常,业务流程是否能完整走通。

  6. 并发/性能测试(进阶)

    • 用JMeter工具,模拟多用户同时请求接口,验证接口的响应速度、稳定性、容错能力。

    • 重点关注:响应时间、吞吐量、错误率。

七、接口测试标准流程(必掌握,工作必备)

接口测试需遵循固定流程,确保测试全面、规范,避免遗漏:

  1. 需求分析 + 查看接口文档:明确接口的功能、请求参数、返回格式、预期结果(核心前提)。

  2. 设计接口测试用例:根据接口需求,设计正常、异常、边界、权限等场景的测试用例(见第八部分)。

  3. 构造请求:用Postman/JMeter等工具,填写请求地址、方法、参数、请求体,构造测试请求。

  4. 发送请求:执行请求,获取服务器返回的响应数据。

  5. 断言结果:验证响应状态码、响应体字段、返回值是否符合预期(核心步骤)。

  6. 缺陷管理:若断言失败(接口有BUG),记录缺陷(描述、复现步骤、预期/实际结果),提交给开发修复,修复后回归测试。

  7. 输出测试报告:整理测试结果,生成测试报告(包含测试用例、通过/失败情况、缺陷统计)。

八、断言(实操核心,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接口关联实操示例(核心代码)

  1. 上一个接口(登录接口),提取返回的token,存入环境变量:
javascript 复制代码
// 把响应体转成JSON对象,提取token字段
var token = pm.response.json().token;
// 把token存入环境变量(环境变量名可自定义,如token)
pm.environment.set("token", token);
  1. 下一个接口,在请求头中引用环境变量token:

在请求头中添加:Key=Authorization,Value=Bearer {{token}}({{}} 是Postman引用环境变量的语法)。

十、Cookie / Session / Token(必懂,身份验证核心)

三者都是接口身份验证的方式,用于确认"请求者是合法用户",核心区别如下:

类型 存储位置 核心特点 适用场景
Cookie 客户端(浏览器/工具) 体积小、存储简单,可设置过期时间,不安全(明文存储) 简单的身份验证(如普通网站登录)
Session 服务器端 安全(数据存在服务器),占用服务器资源,关闭浏览器失效 传统网站、需要高安全的接口
Token 客户端(存储在请求头/本地) 安全(加密)、无状态、可跨端(Web/APP),有效期可自定义 目前主流,接口测试中最常用(如APP接口、Web后端接口)

十一、接口文档怎么看(工作必备)

接口文档是接口测试的"指南",拿到文档后,重点看以下6点,避免遗漏关键信息:

  1. 接口地址(URL):明确接口的访问路径,避免写错URL。

  2. 请求方法:明确是GET/POST/PUT/DELETE,方法错了接口会报错。

  3. 请求头:明确需要传递的请求头参数(如token、Content-Type),是否必传。

  4. 请求参数:明确每个参数的名称、类型、是否必传、取值范围、说明(如id是数字、必传,长度1-10位)。

  5. 返回格式:明确响应体的格式(JSON/XML),每个字段的含义、类型。

  6. 成功/失败示例:明确接口成功时的返回结果、失败时的错误码和提示(用于设计用例、断言)。

常用接口文档工具:Swagger(在线可直接调试)、YApi(企业常用)、Postman集合(可导出为文档)。

十二、接口测试工具(必会,按优先级排序)

不同工具适用不同场景,重点掌握Postman(入门)和JMeter(进阶),其余工具了解用途即可:

  1. Postman(首选,入门必备)

    • 核心用途:接口调试、手工测试、简单自动化、接口关联、环境变量管理。

    • 优势:操作简单、可视化、上手快,适合日常接口调试和手工测试。

  2. JMeter(进阶必备)

    • 核心用途:接口自动化测试、并发测试、压力测试、批量执行测试用例。

    • 优势:功能强大、支持多种协议,适合接口自动化和性能测试。

  3. Fiddler / Charles(抓包工具)

    • 核心用途:抓取HTTP/HTTPS请求、查看请求/响应详情、篡改请求参数、调试接口问题。

    • 优势:可拦截请求,适合定位接口报错原因(如参数传递错误、token失效)。

  4. Swagger / YApi(接口文档工具)

    • 核心用途:查看接口文档、在线调试接口(无需打开Postman)。

    • 优势:方便开发和测试协作,减少沟通成本。

十三、接口常见BUG(工作高频,必掌握)

接口测试中,常见的BUG类型整理,方便快速定位问题:

  • 参数校验缺失:必传参数不传、参数为空、参数格式错误,接口不报错,返回异常结果。

  • 越权操作:普通用户可访问管理员接口、可修改/删除其他用户的数据。

  • 重复提交:多次提交相同参数,导致重复创建数据(如重复创建订单、重复注册)。

  • 数值溢出:参数为超大/超小数字,接口报错或返回错误结果。

  • 敏感信息明文返回:密码、手机号、身份证号等敏感信息,以明文形式返回(不安全)。

  • 状态码错误:接口成功却返回5xx,失败却返回200,状态码与实际结果不匹配。

  • 字段缺失:接口返回的JSON中,缺失文档中约定的字段(如未返回id、name)。

  • 响应时间过长:接口响应时间超过预期(如超过3秒),性能不达标。

十四、接口测试用例怎么写(工作必备)

14.1 用例设计原则

覆盖所有场景(正常、异常、边界、权限),每条用例只验证一个功能点,清晰、可复现。

14.2 用例包含要素(必写)

每条接口测试用例,必须包含以下6个要素,缺一不可:

  1. 用例标题:明确测试场景(例:POST新增用户-参数正常-新增成功)。

  2. 请求地址:接口的URL(例:https://xxx.com/user)。

  3. 请求方法:GET/POST/PUT/DELETE(例:POST)。

  4. 请求参数:完整的请求头、请求体/Params(例:请求体{"name":"test","password":"123456"})。

  5. 预期结果:接口应返回的状态码、响应体字段、提示信息(例:状态码201,返回id=123,提示"新增成功")。

  6. 实际结果:执行测试后,接口实际返回的结果(测试后填写)。

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不能为空" 待测试

十五、接口自动化思路(进阶,提升工作效率)

当接口数量多、需要反复测试(如回归测试)时,可做接口自动化,核心思路如下:

  1. 梳理测试用例:筛选出适合自动化的用例(如正常场景、核心业务流程用例),排除不稳定的用例。

  2. 选择工具:Postman(简单自动化,适合少量接口)、JMeter(批量自动化,适合大量接口)。

  3. 编写自动化脚本:

    • Postman:将用例整理成集合,设置接口关联、断言、环境变量,批量运行集合。

    • JMeter:添加线程组、HTTP请求、断言、监听器,编写脚本,设置运行次数和并发数。

  4. 运行脚本 + 查看报告:批量运行自动化用例,查看运行结果,生成测试报告(失败用例重点回归)。

  5. 持续集成(进阶):将自动化脚本接入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 生成)

相关推荐
daxi1502 小时前
C语言从入门到进阶——第18讲:内存函数
c语言·开发语言·算法
unityのkiven2 小时前
如何通过DirectShow用C++实现PTZ相机的控制?
开发语言·c++·数码相机
实心儿儿2 小时前
C++ —— C++11
开发语言·c++
chushiyunen2 小时前
python web框架streamlit
开发语言·前端·python
思小瓜……。2 小时前
校园邮箱过期如何激活MATLAB R2022a
开发语言·matlab·激活软件
眷蓝天2 小时前
python基础
开发语言·python
迷糊小鬼2 小时前
Button matrix(矩阵按钮) (lv_buttonmatrix)
c语言·开发语言·前端·ui·矩阵
lly2024062 小时前
TypeScript 运算符
开发语言