AI接口测试速成
【黑马程序员AI接口测试3小时速成,零基础从接口概念到客达天下系统Apifox+DeepSeek接口测试实战全流程】https://www.bilibili.com/video/BV1gfJQzYEj9?p=5&vd_source=b0ea651d3ca7dbb50ab7d09d807bb409
一、基本概念
1、接口
1、接口(API)是什么?
接口:全称是Application Programming Interface,中文翻译为应用程序编程接口。
作用:给前端与后端提供交互数据的通道。
步骤:
1、打开浏览器,按F12/fn+F12
2、切换到“Network”(网络)面板
3、勾选Preserve log(保留日志)
2、什么是接口测试?
测试对象: 测试API(应用程序编程接口)本身。
测试内容: 测试数据的交换、传递、状态管理是否正确。
测试重点: 关注服务器端的业务逻辑是否正确。
- 接口测试是绕过UI,直接验证服务器逻辑的测试。
- 它具有更早、更快、覆盖度更广的核心价值。
- 遵循需求分析->用例设计->脚本编写->执行->报告的标准流程。
3、接口测试的标准化流程
- 需求分析
- 阅读接口文档
- 理解业务逻辑
- 用例设计
- 设计测试用例
- 正常、异常、边界
- 脚本编写/录制
- 使用工具(如:Apifox)
- 编写或录制测试脚本
- 测试执行
- 执行测试脚本
- 缺陷管理
- 生成报告
- 分析测试结果输出报告
4、什么是 API 文档?
API 文档是描述应用程序接口(API)如何使用的说明书,
用于指导开发者理解和调用 API。
谁来编写?
通常由后端开发工程师(架构师)设计,也可能由技术文档工程师或前后端
协作完成。
主要内容:
1.接口基本信息(名称、路径、请求方法);
2.请求参数(参数名、类型、是否必填、说明、示例);
3.响应数据(字段名、类型、说明、成功 / 失败示例);
4.认证方式(如 Token、APIKey);
5.错误码及含义;
6.调用示例(curl 或代码片段)。
2、接口测试软件
Apifox
案例 实战:创建项目并发送第一个请求
1.点击“新建项目”,输入项目名称“Itheima001”,点击创建。
2.在项目内,点击“新建接口”。
3.在中间工作区,请求方法选择GET,输入URL: http://hmshop-test.itheima.net/ 。
4.点击蓝色的“发送”按钮
特点:Apifox = Postman + Swagger + Mock + JMeter
应用:① 创建团队 ② 创建项目 ③ 创建请求
3、请求详解
Query、Body、Header参数
信封 (Headers): 寄件人、收件人、邮票信息。
信纸 (Body): 写信的具体内容。
附言 (Query): 写在信封背面的PS备注。
| Query | Body | Header | |
|---|---|---|---|
| 位置 | URL中 | 请求体内 | 请求头部 |
| 常用方法 | GET | POST, PUT | ALL |
| 作用 | 过滤、查询 | 提交数据 | 元数据、认证 |
| 可见性 | 高 | 低 | 中 |
1、Query参数:附在URL上的“附加说明
位置: 位于URL问号?之后。
格式: 键=值 pairs,多个参数用&连接。name=张三&age=18
作用: 用于GET请求,向服务器传递过滤、分页、排序等轻量级参数
特点:拼接在 URL 后,速度快,长度受限,适合简单数据
Apifox位置: “Params” 选项卡
例:
/search.html?q=小米
/search.html?q=%E5%B0%8F%E7%B1%B3
“小” 的 UTF-8 编码为0xE5 0xB0 0x8F,对应 URL 编码为%E5%B0%8F
“米” 的 UTF-8 编码为0xE7 0xB1 0xB3,对应 URL 编码为%E7%B1%B3
2、Body参数:请求的“主体内容”
位置: 在请求内部,不会显示在URL中。
格式: 最常用的是JSON,也可以是form-data、xml等。
作用: 用于POST、PUT等请求,提交大量数据,如创建用户、登录、下单。
类型:
Json:结构化数据格式,支持复杂嵌套,常用于 API 交互,放在请求体
form-data:可传文件和键值对,数据分隔传输,无严格长度限制。
• x-www-form-urlencoded:键值对用 & 连接,URL 编码格式,适合简单表单数据
Apifox位置: “Body” 选项卡。
3、Header参数:关于请求的“元数据
位置: 在请求的头部,描述请求本身的信息。
作用: 定义如何处理请求和响应,如内容类型、认证信息、客户端类型等。
特点: 与业务数据无关,是关于数据的数据(元数据)。
Content-Type: application/json (告诉服务器Body的格式)
Authorization: Bearer xxxx (身份认证令牌)
案例:重现一个登录请求
获取验证码接口:
- 方法:get
- url:http://kdtx-test.itheima.net/api/captchaImage
登录接口:
- 方法:post
- url:http://kdtx-test.itheima.net/api/login
- 请求体类型:application/json
- 参数:{“username”:“admin”,“password”:“HM_2023_test”,“code”:“2”,“uuid”:”图片验证码响应结果获取”}
4、断言
1、什么是断言?
断言:是判断实际测试结果与预期结果是否一致的检查点,不一致则标记为失败。
- 断言就是预先设置好的预期结果。
- 测试执行时,工具会将实际响应与预期结果进行比对。
- 比对成功则用例通过,失败则用例不通过。
2、断言类型
- 状态码断言: 验证HTTP状态码(如200成功,401未认证,404未找到,500服务器错误)。
- 响应体断言: 验证响应正文内容(最常用、最强大)。
- 响应头断言: 验证响应头中的字段(如Content-Type)。
- 响应时间断言: 验证请求耗时是否在允许范围内(性能测试)。
使用JSONPath进行响应体断言:
JSONPath 表达式通过类似 XPath 的语法定位 JSON 中的数据,核心语法规则如下:
- $ 表示根节点
- . 用于访问子节点(如 $.data.name)
- [] 用于访问数组元素(如 $.list[0] 取第一个元素,$..id 递归匹配所有 id)
- 匹配所有元素(如 $.data.* 匹配 data 下所有子节点)
状态码断言是基础,JSONPath响应体断言是主力。
5、变量
环境变量: 作用于特定环境(如测试、预发布、生产)。最常用,用于管理不同环境的配置(如hostname)和流程数据(如token)。
全局变量: 作用于整个项目,所有环境共享。用于定义一些固定值。
案例 实现登录uid自动获取
获取验证码接口:-> uid
- 方法:get
- url:http://kdtx-test.itheima.net/api/captchaImage
登录接口:
- 方法:post
- url:http://kdtx-test.itheima.net/api/login
- 请求体类型:application/json
- 参数:{“username”:“admin”,“password”:“HM_2023_test”,“code”:“2”,“uuid”:”图片验证码响应结果获取”}
变量解决了接口之间的数据依赖问题,是自动化的基石。
核心流程: 提取 (后置操作) -> 引用 ({{varname}})。
环境变量用于管理不同环境的配置和流程数据,是实现专业测试的核心。
二、操作
1、接口关联与提取:自动处理Token、课程ID
案例 删除课程
- 调用图片验证码接口,提取uid
- 调用登录接口,提取token
- 调用查询课程列表接口,提取课程id
- 调用删除接口,删除指定id课程
2、数据库操作
为什么接口测试还需要查数据库?
接口测试验证的是逻辑正确性(请求-响应过程是否成功)。
数据库验证验证的是数据正确性(数据是否按预期准确持久化)。
两者结合,才能构成完整的测试闭环。
3、Mock神器:前后端并行开发与测试的基石
一个常见的研发困境
1.前端开发: “我页面写好了,就等接口了!”
2.后端开发: “数据库设计还没完,再等等…”
3.测试工程师: “我…我该测啥?”
1、什么是Mock?
演员(前端)在绿幕(Mock服务器)前表演。
导演(测试/前端)可以要求绿幕呈现任何背景(返回任何响应)。
Mock:就是模拟一个真实对象的行为。
在接口测试中,即模拟一个真实的服务器接口,返回预设的响应数据。
2、Mock的三大核心作用
- 解除阻塞: 前端无需等待后端接口完成,即可对接调试;测试可提前编写测试用例。
- 模拟异常: 轻松模拟各种异常场景(如服务器错误500、网络超时、返回空数据),测试前端兼容性和鲁棒性。
- 隔离测试: 当某个下游接口不稳定时,可Mock它返回稳定数据,从而隔离并测试自身服务的逻辑。
实战:在Apifox中为“查询课程列表”创建Mock
- 步骤一:设置mock
- 找到“查询课程列表”接口。
- 点击选项卡中的“Mock”。
- 点击“新建Mock”,输入Mock名称。
- 在“返回响应”中,手动编写或直接粘贴一份成功的JSON响应数据(可从文档中复制)。
- 步骤二:使用mock
- 创建成功后,Apifox会生成一个独特的Mock URL。
- 复制这个Mock URL。
- 打开一个新的浏览器标签页,直接访问这个URL,观察浏览器中返回了完整的JSON数据。
- 打开Postman或一个新的Apifox请求,用这个Mock URL替换原来的真实URL,发送请求,同样能收到模拟数据。
- 进阶技巧:使用Mock.js智能生成数据
- 将 “name”: “测试开发提升课01” 改为 “name”: “@ctitle(5, 10)” (随机生成中文标题)
- 将 “price”: 899 改为 “price”: “@integer(100, 2000)” (随机生成100-2000的整数)
3、总结
Mock用于模拟后端接口的响应。
其核心价值在于解除依赖、并行工作、模拟异常。
在Apifox中,可以轻松地为任何接口创建Mock规则,并生成一个可共享的Mock URL
4、测试场景
1、什么是测试场景?
测试用场景是一个容器,用于将多个独立的测试用例组织在一起。
它可以定义用例的执行顺序。
它可以实现用例间的数据传递(通过变量)
一键执行,生成统一的测试报告
2、为什么要使用测试场景?
- 实现自动化测试流程
- 将多个接口串联,模拟真实用户操作流程,实现端到端(E2E)自动化测试。
- 高效组织测试资产
- 按功能模块(如“课程管理”、“合同管理”)或测试类型(如“冒烟测试”、“回归测试”)分类管理用例,清晰易维护。
- 生成聚合报告
- 执行后生成一份完整的测试报告,清晰展示整个业务流程的通过情况,便于分析。
实战:创建“课程管理业务流程”场景
- 在项目中,切换到“自动化测试”模块。
- 点击“新建测试场景”。
- 点击“添加步骤”,将之前创建好的“图片验证码”“用户登录”、“查询课程列表”、“新增课程”等接口用例添加进来。
- 通过拖拽调整它们的顺序为:1.图片验证码 ->2. 用户登录 -> 3.查询课程列表-> 4.新增课程 ->5.删除课程。
实战:运行用例集并查看报告
- 点击用例集右上角的“运行”按钮。
- 观察Apifox自动依次执行每一个用例。
- 执行完成后,自动弹出测试报告。
- 在报告中,可以清晰看到每个用例的执行状态(成功/失败)、耗时、以及每一步的请求响应详情。
3、总结
测试场景是组织、管理和批量执行测试用例的容器。
它能串联业务流程,实现端到端自动化。
它能生成统一的测试报告,便于结果分析。
5、Runner与定时任务
搭建企业级自动化测试流水线
1、什么是Apifox Runner?
Runner是一个可以部署在独立服务器上的自动化程序(通常以Docker容器形式存在)。
它负责接收来自Apifox客户端的任务,并真正执行它们。
它将测试执行环境与个人工作环境分离,保障了测试的稳定性和连续性。
2、为什么使用Runner?
- 稳定性
- 环境稳定: 在纯净、统一的服务器环境中执行,避免个人电脑环境差异导致的问题。
- 效率
- 24小时可触发: 支持定时任务,可以在凌晨自动运行回归测试,第二天上班直接查看结果。
- 能力
- 扩展能力强: 可以配置数据库连接、外部脚本等,完成更复杂的测试场景(如执行前清理测试数据)。
实战:在服务器上部署Runner
- 在Apifox桌面端,进入“团队资源” -> “通用Runner”。
- 点击“部署通用Runner”,复制生成的Docker运行命令。
- (概念演示)在一台Linux服务器的终端中,粘贴并执行该命令。
- 命令执行成功后,在Apifox客户端点击刷新,看到Runner状态变为“已启动”。
实战:创建定时回归测试任务
- 在“自动化测试”选项卡下,找到“定时任务”,点击“新建定时任务”。
- 任务设置: 输入名称,如“每日凌晨回归测试”。
- 测试场景: 选择之前创建好的“课程管理核心流程”等测试用例集。
- 运行周期: 设置为“每天”,选择时间(如凌晨2:00)。
- 运行于: 这是关键! 在“运行于”下拉列表中,选择刚刚部署好的自托管Runner。
- 通知: 配置邮件通知,选择“仅当失败时”。
效果验证:查看定时任务报告
- 等待定时任务执行时间过后(或手动触发一次执行),进入“定时任务”的“运行结果”列表。
- 点击查看最新一次的执行报告。
- 报告清晰展示了测试通过率、每个步骤的耗时和状态。
- 检查邮箱,查看是否收到失败的测试通知
3、最佳实践与思路升华
环境隔离: 为测试、预生产等不同环境部署独立的Runner,避免相互干扰。
任务分类: 创建不同的定时任务,如“快速冒烟测试”(每1小时)和“全量回归测试”(每日凌晨)。
持续反馈: 将测试结果通知集成到团队聊天工具(如钉钉、飞书),实现质量信息透明化。
4、总结
Apifox Runner是一个部署在服务器上的执行引擎,保障了测试的稳定性和可用性。
定时任务功能让我们可以按需(每天、每周)或定时触发测试执行。
两者结合,构成了无人值守的自动化测试体系,是持续集成(CI)中至关重要的一环。
6、AI解读文档与设计测试点
1、案例
- 实战一:让AI快速解读复杂JSON响应
- 请扮演一名资深测试工程师,帮我分析以下JSON响应结构。请逐一说明每个字段的含义,并指出哪些字段可能为空(null),哪些是核心业务字段。
字段分析说明
- 核心业务字段(不可为空)
id、name、code、price:业务唯一标识和关键属性。total、rows:响应数据的核心结构。
- 可能为空的字段
subject、applicablePerson:取决于业务逻辑,可能无值。info:描述信息可能为空(例如未填写描述时返回空字符串或null)。
- 技术字段
code(响应码)、msg(消息):用于接口调用的状态反馈,永远非空。
- 业务逻辑字段
isDelete:软删除标志(通常为0或1),用于逻辑删除而非物理删除。
测试建议
- 验证核心字段(如
id、name)是否始终非空且类型正确。- 检查可能为空的字段(如
info)在业务场景下的返回值(空字符串、null或不返回)。- 测试
isDelete字段的边界值(0和1)及其对业务逻辑的影响。- 确认
subject和applicablePerson字段的业务含义及为空时的处理逻辑。
-
实战二:让AI进行测试点发散
- 基于登录接口API描述,现在请为‘登录’这个接口设计全面的测试点。请包括:正常流程、边界值、异常场景。输出:将测试点汇总表格输出
-
实战三:针对单个参数进行深度分析
- 一个接口参数叫‘uuid ’,描述是‘生成验证码接口 ’。请为我设计针对这个参数的测试点。
2、定位
AI负责发散,提供大量可能性和思路。
人类负责收敛,基于业务逻辑和风险判断,筛选、修正和最终采用这些测试点。
你永远需要对最终的测试质量负责,AI只是辅助工具
7、AI生成Apifox测试脚本
1、什么是Apifox可执行脚本?
它是一种JSON格式的文件,明确定义了请求的所有部分和断言。
它可以被Apifox直接导入,瞬间生成一个配置完整的测试用例。
它是连接“想法”和“执行”的桥梁。
实战:为“用户登录”接口生成脚本
- “请严格按照Postman Collection v2.1格式生成一个完整的JSON集合,用于用户登录接口测试。具体要求:
- 接口信息:
- 名称:用户登录
- 方法:POST
- 路径:/api/login
- Body:{“username”: “manager”, “password”: “123456”, “code”: “2”, “uuid”: “{{$guid}}”}
- 格式要求:
- 所有JSON字符串内的双引号必须正确转义(使用反斜杠”)
- 包含基础URL变量({{baseUrl}})
- 测试脚本中包含状态码200和响应体code字段等于200的断言
- 输出要求:
- 必须是完整、语法正确的JSON
- 不包含任何注释或多余内容
- 确保所有特殊字符正确转义
- 请生成可直接导入Postman的完整集合文件的json,json要放到代码块中。”
实战:导入脚本并验证效果
- 全选并复制DeepSeek生成的json,保存为json文件
- 在Apifox的接口用例页面,点击“导入”,选择“Postman”,将json文件拖拽进去。
- 点击“导入”,观察界面上瞬间出现了一个新的、所有配置都已完成的测试用例。
2、你的新角色:AI脚本工程师的“总监”
- 你的工作: 提出清晰、无歧义的需求指令(Prompt);审核与验证AI生成的脚本。
- AI的工作: 承担繁重的、格式化的代码编写工作。
- 最终,你依然是质量的最终负责人。
3、总结
- DeepSeek可以根据自然语言描述,生成可直接导入Apifox的可执行JSON脚本。
- 这实现了从测试设计到测试实现的跨越式自动化。
- 测试工程师的角色向需求定义和质量审计升级



