接口测试课程笔记


Q1:接口具体分为哪两种?各自的作用是什么?

接口主要分为「程序内部接口」和「系统对外接口」,两者的核心作用的是实现"数据交互",但应用场景不同:

  1. 程序内部接口:是程序内部方法与方法、模块与模块之间的交互通道。

比如贴吧系统,有登录模块、发帖模块,要发帖必须先登录,这两个模块之间的交互,就需要内部接口来实现,供系统内部调用。

  1. 系统对外接口:是不同系统之间共享数据的通道。别人不会直接共享数据库给你,只会提供一个写好的方法(接口),你通过调用这个接口,就能获取所需数据。比如我们常用的APP、网站,加载数据时,都是通过调用对外接口来实现的。

补充:接口类型有很多,比如HTTP API接口、RPC接口等,我们日常测试中最常用的就是HTTP API接口,后续内容也围绕它展开。

Q2:什么是接口测试?它和功能测试有什么区别?

接口测试是测试系统组件间接口的一种测试,核心是检测外部系统与系统之间、内部子系统之间的交互点,重点检查数据的交换、传递、控制管理过程,以及系统间的逻辑依赖关系。

简单说,接口测试就是通过验证"入参"和"出参",判断接口是否符合功能性、安全性要求。

和功能测试的核心区别的:

  • 功能测试:有前端页面,需要从页面输入值,点击按钮/链接传值给后端,还要测试UI、前端交互等;

  • 接口测试:没有前端页面,只需根据接口文档,拼接请求地址、请求参数,发送请求后检查返回结果,只关注入参和出参,相对更简单。

Q3:一个完整的接口,由哪些部分组成?

A:参考微信小程序的接口文档,一个完整的接口至少包含3个核心部分,部分接口会额外包含请求头(header):

  1. 调用URL:接口的请求地址,相当于接口的"门牌号";

  2. 请求方法:最常用的是GET和POST

  3. 请求参数:包括入参(传给服务器的参数)和出参(服务器返回的参数),还要明确参数类型、参数说明;

  4. 可选部分-请求头(header):服务器接收请求前的"校验凭证",一般存放cookie、token等信息,用于验证请求是否有权限。

Q4:请求头(header)和入参都是传送给服务器的参数,两者有什么区别?

两者虽然都是发送到服务器的参数,但作用和执行顺序不同,核心区别在于"校验优先级":

1. 作用不同:

header存放的是「校验信息」(如cookie、token),用于验证请求是否有权限访问服务器;

入参存放的是「业务数据」(如商品ID、用户名),用于服务器处理具体业务逻辑。

2. 执行顺序不同:

服务器会先接收header信息,判断请求是否有权限;只有验证通过后,才会接收请求地址和入参,再根据入参处理业务,返回出参。

Q5:功能测试已经覆盖了业务场景,为什么还要额外做接口测试?

核心原因是「前端校验可被绕过」,只做功能测试会留下安全隐患,举个案例:

比如用户注册功能,规定用户名为6~18个字符(含字母、数字、下划线),功能测试时会测试"输入20个字符""输入特殊字符"等场景,但这些校验可能只在前端做了限制。如果有人通过抓包绕过前端校验,直接向后端发送不符合规则的用户名,而后端没有做校验,就会导致用户名随意设置,甚至可能通过SQL注入获取管理员权限,风险极大。

所以接口测试的必要性主要体现在4点:

  1. 发现页面操作无法发现的bug(比如后端未做参数校验);

  2. 检查系统的异常处理能力(比如参数错误时的报错是否合理);

  3. 保障系统的安全性、稳定性(防止绕过校验、权限越权等问题);

  4. 降低维护成本:前端页面可随意修改,只要接口测试通过,后端无需同步修改。

Q6:最常用的GET和POST请求,有什么核心区别?怎么快速区分?

两者都是HTTP协议中常用的请求方法,核心区别在于"请求方式"和"使用场景":

  1. GET请求:请求参数会直接拼接在URL后面,可直接在浏览器中输入URL访问(比如:https://gateway.acgo.cn/acgoAccount/openapi/user/detail?uid=36482),适合获取数据(无需修改数据)。

  2. POST请求:请求参数不会显示在URL中,需要借助测试工具(如Postman)发送,适合提交、修改、删除数据(比如注册、下单、删除商品)。

快速区分:浏览器能直接访问的,就是GET请求;不能直接访问,需要工具辅助的,大概率是POST请求。

Q7:HTTP状态码是什么?常用的状态码有哪些,分别代表什么意思?

HTTP状态码是服务器对请求的"响应标识",每发送一个HTTP请求,服务器都会返回一个状态码,用于判断请求是否成功,常用状态码分为4类,记好这几个就够日常测试用:

  1. 2xx(成功):最常用200,表示请求成功,服务器正常返回数据;

  2. 3xx(重定向):最常用302,表示请求被重定向到其他地址;

  3. 4xx(客户端错误):400(请求有语法错误)、401(未授权访问)、403(无权限访问)、404(请求地址不存在);

  4. 5xx(服务器错误):500(服务器内部异常)、504(服务器超时,未返回结果)。

Q8:用Python做接口测试,需要掌握哪些模块和框架?

新手入门,掌握「5大模块+1个框架」就足够,后续可根据需求拓展:

  1. 5大核心模块:
  • requests模块:核心模块,用于发送HTTP请求(GET、POST等);

  • YAML:用于管理测试数据(比如存储接口参数、配置信息);

  • JSON Schema:用于校验接口返回结果的格式是否符合预期;

  • logging日志模块:用于记录测试过程中的日志,方便定位问题;

  • allure测试报告模块:用于生成美观、详细的测试报告,直观展示测试结果。

  1. 1个核心框架:pytest,用于组织测试用例、执行测试、生成测试结果,比Python自带的unittest更简洁、易用。

Q9:接口测试的核心步骤是什么?

接口测试核心就两步,简单好记:

  1. 设计接口测试用例:根据接口文档和业务逻辑,设计覆盖所有场景的测试用例(重点是入参的各种情况);

  2. 执行测试用例:借助工具(Postman)或代码(Python+requests)发送请求,检查返回结果(状态码、出参)是否符合预期,记录测试结果。

Q10:接口测试用例怎么设计?有哪些核心场景?

设计用例的核心是「覆盖所有可能的入参场景」,主要分为4类,每类都有具体示例,直接套用即可:

  1. 通过性验证(最基础):按照接口文档的要求,传入正确的必填参数,验证接口能否正常返回正确结果。

示例用例:接口正常调用测试,前置条件是接口服务正常运行,步骤是传入所有必填参数、调用接口,预期结果是返回状态码200,返回数据完整。

  1. 参数组合验证:针对有多个参数、不同参数值对应不同业务逻辑的接口,测试不同参数组合的场景。

示例用例:商品操作接口,type=1(修改商品)时,商品ID、名称、价格至少传一个;type=2(删除商品)时,商品ID必传,分别测试"type=1只传商品名称""type=1传所有参数""type=2传商品ID"等场景。

  1. 接口安全验证(重点):防止接口被恶意调用,核心测试4个场景:
  • 绕过参数验证(比如修改商品价格为负数、低价);

  • 绕过身份授权(比如普通用户调用卖家专属的修改商品接口);

  • 参数加密验证(比如登录接口的用户名、密码是否加密,加密规则是否安全);

  • 密码安全校验(比如密码是否符合复杂度要求)。

  1. 异常验证(必测):不按照接口文档要求传入参数,验证接口的异常处理能力,主要3类场景:
  • 必填参数缺失(比如删除商品时,不传商品ID);

  • 参数类型错误(比如需要传入整数,却传入字符串);

  • 参数长度超限(比如用户名限制10个字符,传入11个)。

Q11:结合业务逻辑设计用例,是什么意思?怎么操作?

结合业务逻辑设计用例,就是根据系统的具体业务规则,设计贴合实际使用场景的用例,和功能测试的用例设计思路一致,不同公司业务不同,用例也不同。

举个贴吧系统的例子,结合业务规则设计用例:

  1. 业务规则1:登录失败5次,需等待15分钟再登录 → 用例:连续登录失败5次,第6次登录,验证是否提示"需等待15分钟";

  2. 业务规则2:新注册用户需过实习期才能发帖 → 用例:新注册用户直接调用发帖接口,验证是否提示"未过实习期,无法发帖";

  3. 业务规则3:删除帖子扣除积分 → 用例:调用删除帖子接口,验证帖子删除成功,且用户积分对应扣除。

建议从"工具实操"入手,先熟悉流程,再学代码,步骤如下:

  1. 先熟悉接口文档:看懂URL、请求方法、参数、header等核心信息;

  2. 用Postman实操:手动输入URL、请求方法、参数,发送请求,查看返回结果和状态码,熟悉常用场景;

  3. 学习Python+requests:用代码发送请求,实现简单的接口自动化(比如批量执行用例);

  4. 学习pytest+allure:组织用例、生成测试报告,提升测试效率。

相关推荐
Binarydog_Lee3 小时前
TA笔记:Houdini基础1
笔记·houdini
福昕办公3 小时前
告别手动测性能!AI 自动化性能测试方案落地演示
测试工具·ai·自动化
星轨初途3 小时前
【C/C++底层修炼】拆解动态内存管理:四大动态内存函数、六大错误与柔性数组
c语言·开发语言·c++·经验分享·笔记·柔性数组
小新爱写代码3 小时前
正交表——测试方式
测试工具
测试19983 小时前
Jmeter接口测试:使用教程(上)
自动化测试·python·测试工具·jmeter·职场和发展·测试用例·接口测试
妄汐霜13 小时前
小白学习笔记(spring框架的aop和tx)
笔记·学习
sheeta199814 小时前
LeetCode 每日一题笔记 日期:2025.03.24 题目:2906.构造乘积矩阵
笔记·leetcode·矩阵
123过去14 小时前
dsniff使用教程
测试工具·安全