【学习总结】AI接口测试-零基础从接口概念到客达天下系统Apifox+DeepSeek接口测试实战全流程

视频教学参考:接口自动化测试

一、Apifox入门

1.理解接口基础概念

1)接口概念

接口:全称是Application Programming Interface,中文翻译为应用程序编程接口。

作用:给前端与后端提供交互数据的通道。在Web开发中,承担前后端数据传输的桥梁作用。

2)实战-查看请求记录

1)打开浏览器,按 F12/fn+F12(打开浏览器的开发者工具)

2)切换到 "Network" (网络)面板

3)勾选 "Preserve log" (保留日志)

2.HTTP协议核心要素

1)HTTP协议

2)URL的组成

完整URL由协议类型、主机地址、端口号、资源路径和查询参数五部分组成。以"https://api.example.com:443/v1/users?id=1 "为例:

●协议(https):通信协议

●主机名(api.example.com):服务器地址

●端口(443):服务器入口(通常省略)

●路径(/v1/users):资源位置

●查询参数(id=1):过滤条件

3)请求方法(request methods)

HTTP协议定义了八种请求方法,其中GET(获取资源)和POST(提交数据)最为常用。

4)请求头与请求体

请求头包含Content-Type、Authorization等重要元信息,请求体则承载实际传输数据。

5)状态码(staus code)------服务器的回应

状态码分为五大类,200表示成功,400系客户端错误,500系服务端错误。

6)响应头与响应体

3.接口测试

1)特点

Apifox整合了接口调试、文档管理、Mock服务和性能测试等功能.

Apifox = Postman + Swagger + Mock +JMeter

2)测试流程

3)软件安装

官网下载https://apifox.com/ 对应系统版本安装包(Windows用户执行exe安装程序)

4.创建项目

1)点击"新建项目",输入项目名称"Itheima001",点击创建。

2)在项目内,点击"新建接口"。

3)在中间工作区,请求方法选择GET,输入URL:http://hmshop-test.itheima.net/

4)点击蓝色的"发送"按钮

二、Apifox请求参数详解

1.Query参数

附在URL末尾上,适合GET请求传递简单数据。格式为" q=小米 ",在Apifox的Params选项卡配置。例如商品搜索接口:

https://hmshop-test.itheima.net/Home/Goods/search.html?q=小米

位置 :位于URL问号?之后。(例:q=小米)
格式 :键=值pairs,多个参数用&连接。(例:name=张三&age=18)
作用 :用于GET请求,向服务器传递过滤、分页、排序等轻量级参数
特点 :拼接在URL后,速度快,长度受限,适合简单数据
Apifox位置:"Params"选项卡

2.Body参数

请求的"主体内容",登录接口典型配置:

{

"username": "admin",

"password": "123456"

}

位置 :在请求内部,不会显示在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(身份认证令牌)
  • User-Agent: Mozilla/5.0

位置 :在请求的头部,描述请求本身的信息。
作用 :定义如何处理请求和响应,如内容类型、认证信息、客户端类型等。
特点:与业务数据无关,是关于数据的数据(元数据)。

4.三者比较与案例实现

Query:用于GET请求,在URL中传递轻量参数。

Body:用于POST/PUT请求,在请求体内提交主要数据。

Header:在请求头部传递元数据,如认证和内容类型。

| | Query | body | header |
| 位置 | URL中 | 请求体内 | 请求头部 |
| 常用方法 | GET | POST,PUT | ALL |
| 作用 | 过滤、查询 | 提交数据 | 元数据、认证 |

可见性

三、自动判断响应结果

1.断言概念

是判断实际测试结果与预期结果是否一致的检查点,不一致则标记为失败。

2.验证

状态码断言是基础验证,如:

pm.test("Status code is 200", function () {

pm.response.to.have.status(200);

});

JSONPath响应体断言是主力,如:

pm.test("Verify username", function() {

var jsonData = pm.response.json();

pm.expect(jsonData.user.name).to.eql("John");

});

常用JSONPath表达式:

  • $.data.items[0].id 获取首个物品ID
  • $..price 递归查找所有价格字段
  • $.orders[*].status 获取所有订单状态

3.符号含义

① $表示根节点

② .用于访问子节点(如 $.data.name)

③ []用于访问数组元素(如.list\[o\]取第一个元素,.id递归匹配所有id)

④ *匹配所有元素(如$.data.*匹配data下所有子节点)

四、接口关联与提取自动处理

环境变量管理不同测试环境的配置数据,接口关联通过变量提取和引用实现。典型测试流程:

  1. 获取验证码接口提取uid
  2. 登录接口调用uid并返回token (其他接口获取token检查是否已登录)
  3. 查询接口携带token获取业务数据
  4. 操作接口使用获取的数据id执行操作

实战2:查询课程列表

Hearders添加请求头部Authorization-->{{token}}

参数名称 参数值 是否必填 示例 备注
Authorization token eLpNm9m_8UCGrTTshmlNgfXpDsc1f2m2UA 登录接口

●将token值保存在环境变量中:"登录接口"-->"后置操作"-->"添加后置操作"-->"提取变量"-->"填写"

●环境变量验证token结果:

●查询课程列表-->"Headers"-->应用输入"token"

实战3:课程管理模块-删除课程

"删除课程接口"依赖于查询课程列表的 "id" 与 登录接口的 "token"

●新建删除接口,删除指定id课程(添加删除课程接口{{c_id}})环境变量自动更新本地值;

关联登录添加请求头部Authorization-->{{token}}

●调用查询课程列表接口,查询对应课程已删除;

{{c_id}}-->每次删除指定id($.rows[0].id)的课程

●环境变量验证c_id结果:

五、数据库操作校验

1.数据库基本配置

2.案例:新增课程并验证数据库

数据库配置--->应用配置编写SQL语句(如下)--->验证结果

1)在MySQL中创建表(这里直插入了一组数据)

sql 复制代码
 -- 删除原表(谨慎操作!先备份数据)
 DROP TABLE IF EXISTS `tb_course`;
 
 -- 重新创建表
 CREATE TABLE IF NOT EXISTS `tb_course` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '课程ID',
   `name` varchar(100) DEFAULT NULL COMMENT '课程名称',
   `code` varchar(50) DEFAULT NULL COMMENT '课程代码',
   `subject` varchar(50) NOT NULL COMMENT '学科类别',
   `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '课程价格',
   `applicable_person` varchar(20) NOT NULL DEFAULT '2' COMMENT '适用人群',
   `info` text COMMENT '课程介绍',
   `is_delete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标记:0-未删除,1-已删除',
   `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   PRIMARY KEY (`id`),
   UNIQUE KEY `uk_code` (`code`),
   KEY `idx_name` (`name`),
   KEY `idx_subject` (`subject`),
  KEY `idx_create_time` (`create_time`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程信息表';

-- USE course_management;
 INSERT INTO tb_course (name, subject, price, info) 
 VALUES ('手动测试课程', '6', 899, '测试数据');

SELECT id FROM tb_course WHERE name="测试开发提升课程-new999001";

2)Apifox中连接数据库-->新建

3)填写本地数据库信息-->测试连接-->保存

4)补充Apifox-05新增课程中的信息

Body:

{

"name": "测试开发提升课程-new999001",

"subject":"6",

"price":899,

"info":"测试开发提升课程01"

}

Headers:

authorization {{token}}

后置操作:控制台打印结果(主包的控制台没有输出idhttps://chat.deepseek.com/share/vrmf0x37r11rex0lkl AI老师暂时未解答出问题所在,个人感觉可能还是数据库的问题)

SELECT id FROM tb_course WHERE name="测试开发提升课程-new999001";

六、Apifox接口文档管理

定义请求和响应--->发布文档

1.添加响应示例

2.分享文档(便于团队协作测试)

七、Mock(不依赖于后端开发进度)

1.Mock(Method Object Collaboration Kit)作用

隔离测试环境

Mock可以替代真实的依赖组件(如数据库、API、第三方服务等),确保测试仅针对当前模块的逻辑,避免因外部依赖的不稳定性或不可控性导致测试失败。

提高测试速度

真实的外部服务或数据库操作可能较慢,Mock通过模拟快速响应,显著提升单元测试的执行效率。

模拟异常场景

Mock可以轻松构造异常情况(如网络超时、服务不可用等),验证代码在极端条件下的容错能力,而无需真实触发这些场景。

避免副作用

某些操作(如发送邮件、修改数据库)可能产生实际影响,Mock可以拦截这些调用,确保测试不会对生产环境造成意外影响。

简化复杂依赖

当被测对象依赖复杂或未完成的模块时,Mock可以快速模拟这些依赖的行为,无需等待依赖开发完成。

2.设置mock

3.使用mock

每次自动生成body中字段具体值

返回自定义值:新建mock期望

八、测试场景搭建

1.自动化测试

1.在项目中,切换到"自动化测试"模块-->点击"新建测试场景"。

2."添加步骤"-->"从接口导入",将之前创建好的"图片验证码""用户登录""查询课程列表"、"新增课程"等接口用例按序添加进来。

4.通过拖拽调整它们的顺序为:1.图片验证码->2.用户登录->3课程列表->4.新增课程->5.删除课程。

5.右侧"功能测试"-->选择通知对象分享

https://app.apifox.com/link/project/7220961/api-test/test-report/15644116?branchId=6947315

2.企业级测试化场景runner

  1. 在Apifox桌面端,进入"团队资源"->"通用Runner"。
  1. 点击"部署通用Runner",复制生成的Docker运行命令。

3.(概念演示)在一台Linux服务器的终端中,粘贴并执行该命令(需先运行Docker)

  1. 命令执行成功后,在Apifox客户端点击刷新,看到Runner状态"已启动"。

九、解读文档和设计测试点

1.测试点发散

基于登录接口API描述,为'登录'接口设计全面的测试点。包括:正常流程、边界值、异常场景。输出:将测试点汇总表格输出

2.单个参数的深度分析

针对接口参数名为 "uuid",描述是 "生成验证码接口" 的参数设计测试点。

3.练习

https://chat.deepseek.com/share/4cu7rvdq1jq7wbnuw4

十、总结

课程内容总体偏向Apifox在接口自动化测试中的应用操作,熟悉工具使用流程,个人感觉不太适合想系统学习测试的小伙伴。加油吧!

相关推荐
晚枫~5 小时前
零基础快速上手Playwright自动化测试
javascript·python·测试工具·c#·自动化
卓码软件测评8 小时前
第三方软件测评机构:【Locust的性能测试和负载测试】
测试工具·测试用例·压力测试·可用性测试
程序员杰哥13 小时前
Pytest与Unittest测试框架对比
自动化测试·软件测试·python·测试工具·测试用例·excel·pytest
软件测试小仙女13 小时前
Pytest参数化实战:高效测试API接口
软件测试·测试开发·测试工具·pytest·接口测试·api·参数化
00后程序员张17 小时前
Fiddler抓包工具使用教程,代理设置与调试方法实战解析(含配置技巧)
前端·测试工具·ios·小程序·fiddler·uni-app·webview
Cd ...1 天前
记录两种好用常用的xpath定位方式
selenium·测试工具·自动化
测试老哥2 天前
如何编写好测试用例?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
AALoveTouch2 天前
大麦网抢票:基于Wireshark协议分析
网络·测试工具·wireshark
Run Freely9372 天前
Postman 请求前置脚本
测试工具·postman