【接口测试】基础知识

article/2025/7/1 9:07:17

目录

何为接口

概念

类型

何为接口测试 

概念

原理

特点

接口自动化的定义

 HTTP协议超文本传输协议

概念

特征

URL 统一资源定位符

http请求

http响应

传统风格的接口

RESTful接口

接口测试流程

接口文档

作用

展现形式

文档中每个接口信息的结构

测试的任务

接口测试用例

作用

测试角度

浏览器的开发者工具

功能性测试用例设计思路

接口用例字段

postman接口请求


何为接口

概念

系统与系统之间,组件与组件之间,数据传递交互的通道

类型

按协议划分:http、tcp、IP

按语言划分:C++、java、php

按范围划分:

  • 系统之间:内部系统与内部系统;外部系统与外部系统
  • 程序之间:方法与方法;函数与函数;模块与模块

何为接口测试 

概念

对系统或组件之间的接口进行测试。校验传递的数据正确性和逻辑依赖关系的正确性!

原理

针对的测试目标 —— 服务器

怎么测:模拟客户端向服务器发请求

用什么测:

  • 工具:fiddler、postman、jmter
  • 代码:python + UnitTest框架 + Requests框架
  • 测什么:测试服务器针对客户端请求,回发的响应数据是否与预期结果一致!
  • 如何判断结果是否一致: 1.人眼对比   ;2.断言

特点

  • 符合质量控制前移的理念
  • 可以发现一些页面操作发现不了的问题
  • 接口测试低成本高效益(接口可以实现自动化)
  • 接口测试是从用户的角度对系统进行检测

接口自动化的定义

使用工具、代码代替手工,模拟客户端发送请求给服务器,通过断言自动判断预期和实际结果是否一致

 HTTP协议超文本传输协议

概念

(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。

特征

1. 支持客户端、服务器模式

2.简单快捷

3.灵活

4.无状态

5.无连接

URL 统一资源定位符

  • 格式

⁕资源路径:标识网络资源(文件、图片、音视频、变量...)

⁕查询参数:传递给资源路径对应的数据。

http请求

作用:客户端(app、浏览器),发送请求给服务器时使用的协议 —— http请求协议。

请求行

  • - http 请求方法:大小写均可。
  • - GET:查询。 —— 没有请求体
  • - POST:添加。(登录、添加时常用)
  • - put: 修改。
  • - delete: 删除。 —— 没有请求体

请求头:语法格式为键值对

  • 1.User-Agent:描述 请求发送端的 浏览器类型。
  • 2.Content-Type:描述 请求体 的 数据类型!
    • - application/json: JSON数据格式
    • - application/x-www-form-urlencoded: form表单数据

请求体

  • - GET和DELETE 没有
  • - PUT 和POST有 - 数据类型受 Content-Type 值影响。

http响应

状态行/响应行

  • 协议版本
  • 状态码:状态码有三位数字组成,第一个数字定义了响应类别
    • 1××:指示信息-表示请求已接收,等待继续处理

    • 2××:成功-表示请求已被成功接收,理解,接受。常见:200、201

    • 3××:重定向-待访问的资源,需求重新指定路径访问。

    • 4xx:代表客户端错误。常见:404、 403 5xx:服务器端错误-服务器未能实现合法的请求。

  • 协议码描述
    • 一般与状态码 唯一对应

    • 200-ok; 404- file not found;403-没有权限

响应头

  • 语法格式:k:v

  • Content-Type:值为 响应体 的数据类型。

  • Content-Length: 响应体的大小。可以不写,浏览器会自动求取。一旦写,必须准确

响应体:绝大多数不为空。 (请求成功:回发数据,失败:回发错误信息)

传统风格的接口

格式:操作-请求方式-URL-状态码

特点

- 请求方法,只使用 get 和 post 即可。

- URL 不唯一。同一个操作可以对应不同的 URL

- 状态码的使用较单一。200 最常见。

RESTful接口

操作-请求方式-URL-状态码

特点:

1. 每一个URL代表一种资源;

2. 客户端和服务器之间,传递这种资源的某种表现层; - 表现层:资源的不同表现形式(如:图片、文字表现同一个资源对象)

3. 客户端通过四个HTTP动词(GET、post、delete、put),对服务器端资源进行操作,实现"表现层状态转化";

4. 接口之间传递的数据最常用格式为JSON。

接口测试流程

工作场景

1. 分析需求,产生需求文档(产品)。 以下都是测试的工作

2. (开发产生接口文档)解析接口文档。

3. 产生接口测试用例(送审)。

4. 执行测试用例

        - 工具:postman、jmeter、fidller

        - 代码:python + Requests +UnitTest

5. 提交、跟踪缺陷。

6. 生成 测试报告。

7. (可选)接口自动化持续集成!

接口文档

作用

1. 能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)

2. 项目迭代或者项目人员更迭时,方便后期人员查看和维护

3. 方便测试人员进行接口测试

展现形式

- word 文档形式

- Excel 表格式形式

- pdf 文档形式(√)

文档中每个接口信息的结构

基本信息

  • 资源路径(协议和域名在 “系统信息”中)
  • 请求方法
  • 接口描述

请求参数

  • 请求头
    • - Content-Type。描述请求体的数据类型!
    • -Authorization:TOKEN。用户登录时会生成唯一标识的令牌,由bearer+空格+{{data}}组成。而TOKEN为令牌名。(每次登录令牌都会变的)
  • 请求体:
    • - 实现该接口使用的 数据及对应类型。

返回数据

  • 状态码(状态行)
  • 错误码(自定义状态码:码值和描述信息)

测试的任务

从文档中提取出HTTP请求报文所需信息, 按fiddler工具格式依次填入请求信息,并返回响应信息。 比较返回信息和文档中的预期结构是否一致,编写测试报告

接口测试用例

作用

1. 防止测试点漏测。条理清晰

2. 方便分配工作,评估工作量和时间

测试角度

功能性测试

    • 业务场景功能
      • 按照用户实际 使用场景,梳理 接口业务 场景。

      • 组织业务场景时,一般只需做 正向 测试即可(与手工一致)。

      • 一般建议用最少的 用例 覆盖最多的业务场景。

    • 单功能:借助工具、代码。绕开前端界面,组织接口所需要的数据,展开接口测试--》手工测试中的单个业务模块,一般对应一个接口。
      • - 登录业务 ——> 登录接口
      • - 加入购物车业务 ——> 加入购物车接口
      • - 订单业务 ——> 订单接口
      • - 支付业务 ——> 支付接口

    性能测试

    • 响应时长
    • 吞吐量
    • 并发数
    • 服务器资源使用率

    安全测试

    • 攻击方向-与测试无关
    • 业务安全-测试方向
      • 敏感数据是否加密,如密码
      • SQL注入

    浏览器的开发者工具

    可以看到请求,响应报文,以及数据的传输内容

    功能性测试用例设计思路

    业务场景功能用例设计

    • 以“员工管理“业务场景为例--》 员工管理列表;员工的增删改查
    • 正向测试: 登录 —— 添加员工 —— 查询员工 —— 修改员工 —— 再次查询 —— 删除员工 —— 查询员工列表

    单功能用例设计(测试数值和参数的正确与否)

    • 参数值:和功能测试相同,分别从正向和反向方面测
    • 参数
      • 正向
        • 必选参数:所有的 必选(必填)都包含。

        • 组合参数:所有的 必选 + 任意一个或多个可选参数。

        • 全部参数:所有的 必选 + 所有的 可选参数

      • 反向
        • 多参:预期结果为正确,因为后端会自动忽略多余的参数

        • 少参:缺少一个或多个必选参数。

        • 无参:没有必选参数。预计结果为稍等繁忙,而不是用户名或密码错误

        • 错误参数:参数名输入错误。

    接口用例字段

    编号,用例名,模块,优先级,预设条件,请求方法,URL,请求头,请求体(将请求的数据输入数据库),预设条件(若文档中结果不全,则查看浏览器的开发则工具)

    postman接口请求


    http://www.hkcw.cn/article/AMttADiynN.shtml

    相关文章

    rabbitmq Direct交换机简介

    在实际开发中,需求可能变得复杂,如消息的收发和处理。以支付系统为例,成功支付后需要改变订单状态并通知用户,而失败则不需要。为处理这种情况,提出了使用Direct交换机,它可以根据规则将消息路由到指定队列…

    贪心算法应用:装箱问题(FFD问题)详解

    贪心算法应用:装箱问题(FFD问题)详解 1. 装箱问题概述 装箱问题(Bin Packing Problem)是计算机科学和运筹学中的一个经典组合优化问题。问题的描述如下: 给定一组物品,每个物品有一定的体积,以及若干容量相同的箱子&#xff0c…

    如何在 Windows 11 中永久更改默认浏览器:阻止 Edge 占据主导地位

    在 Windows 11 中更改默认浏览器对于新手或技术不太熟练的用户来说可能会令人沮丧。 为什么要在 Windows 11 中更改默认浏览器? 这是一个重要的问题:你为什么要从 Microsoft Edge 切换过来? 生态系统集成:如果你已经在广泛使用 Google 服务,Chrome 可以提供无缝集成。同…

    【MySQL】视图与用户管理

    目录 一、视图 (一)基本使用 1、创建视图 2、修改视图 3、删除视图 (二)视图规则和限制 二、用户管理 (一)用户操作 1、用户信息 2、创建用户 3、删除用户 4、修改用户密码 (二&…

    PNG文件格式

    文章目录 一、概述二、文件结构三、文件署名域四、数据块1、IDHR文件头数据块2、调色板数据块3、IDAT数据块4、IEND数据块 五、其他辅助数据块(了解即可)六、动态png——APNG 一、概述 PNG是20世纪90年代中期开始开发的图像文件存储格式,其目…

    Python_day43

    DAY 43 复习日 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 关于 Dataset 从谷歌图片中抓取了 1000 多张猫和狗的图片。问题陈述是构建一个模型,该模型可以尽可能准确地在图像…

    【Quest开发】bug记录——Link界面无音频选项

    此方法适用于这个不见了的情况 打开设备管理器,点击卸载 再到Oculus\Support\oculus-drivers找到oculus-driver点击重装驱动,重启电脑即可修复

    汇编语言学习(二)——寄存器

    目录 一、通用寄存器 二、数据存储 三、汇编指令 四、物理地址 五 、段寄存器 一、通用寄存器 在8086 CPU中,通用寄存器共有四个,分别是 AX、BX、CX 和 DX,它们通常用于存放一般性的数据,均为 16 位寄存器,可以存…

    Error creating bean with name *.PageHelperAutoConfiguration 异常解析

    一、问题报错 微服务安装成功,启动失败,报错如下: 二、 Spring Boot应用启动错误分析 错误概述 这是一个Spring Boot应用启动过程中出现的Bean创建错误。根据错误堆栈,主要问题在于无法创建PageHelper分页插件的自动配置类。 …

    【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事

    好的,下面是Zephyr 系列第 3 篇:聚焦 多线程与调度机制的实践应用,继续面向你这样的 Ubuntu + 真板实战开发者,代码清晰、讲解通俗、结构规范,符合 CSDN 高质量博客标准。 🧠关键词:Zephyr、线程调度、k_thread、k_sleep、RTOS、BluePill 📌适合人群:想从裸机开发进…

    AI万能写作v1.0.12

    AI万能写作是一款高度自动化、智能化、个性化的AI智能软件,旨在通过人工智能技术进行内容整合创作,为用户提供便捷高效的写作辅助。这款APP能够一键生成各类素材内容,帮助用户快速获取思路和灵感,成为写作、学习、工作以及日常生活…

    【Linux网络篇】:HTTP协议深度解析---基础概念与简单的HTTP服务器实现

    ✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.三个预备知识认识域名认识URL认识URL编码和解码 二.http请求…

    【JAVA后端入门基础001】Tomcat 是什么?通俗易懂讲清楚!

    📚博客主页:代码探秘者 ✨专栏:《JavaSe》 其他更新ing… ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏作者水平有限,欢迎各位大佬指点&…

    系统思考:成长与投资不足

    最近认识了一位95后年轻创业者,短短2年时间,他的公司从十几个人发展到几百人,规模迅速扩大。随着团队壮大,用户池也在持续扩大,但令人困惑的是,业绩增长却没有明显提升,甚至人效持续下滑。尽管公…

    PHP7+MySQL5.6 查立得轻量级公交查询系统

    # PHP7MySQL5.6 查立得轻量级公交查询系统 ## 系统简介 本系统是一个基于PHP7和MySQL5.6的轻量级公交查询系统(40KB级),支持线路查询、站点查询和换乘查询功能。系统采用原生PHPMySQL开发,无需第三方框架,适合手机端访问。 首发版本&#x…

    【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理

    基于 MSYS2(MINGW64)中 Python 的 Poetry 虚拟环境包编译失败处理笔记 一、背景 在基于 MSYS2(MINGW64)中 Python 创建的 Poetry 虚拟环境里,安装 Suna 开源项目相关包时编译失败,阻碍项目正常部署。 后端…

    docker可视化工具

    一、portainer(不常用) 1、安装portainer [rootlocalhost /]# docker run -d -p 8088:9000 --name portainer --restartalways -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --privilegedtrue portainer/portainer-c…

    #16 学习日志软件测试

    #16 #13布置的任务都没有wanc 反思一下 一个是贪玩 一个是懒 还有一个原因是学习方式 单看视频容易困 然后是一个进度宝贝 java ai 编程 完 挑着看的 廖雪峰教程 完 速看 很多过时 javaweb ai笔记 见到13.aop 小林coding 看到4.并发 java guide 还没开始 若依框架 笔…

    【数据集】NCAR CESM Global Bias-Corrected CMIP5 Output to Support WRF/MPAS Research

    目录 数据概述🔍 数据集简介:🧪 数据处理方法:📅 时间范围(Temporal Coverage):📈 模拟情景(Scenarios):🌡️ 关键变量(Variables):📏 垂直层级(Vertical Levels):💾 数据格式与获取方式:数据下载及处理参考🌍 数据集名称: NCAR CESM Global B…

    如何用AI写作?

    过去半年,我如何用AI高效写作,节省数倍时间 过去六个月,我几乎所有文章都用AI辅助完成。我的朋友——大多是文字工作者,对语言极为敏感——都说看不出我的文章是AI写的还是亲手创作的。 我的AI写作灵感部分来自丘吉尔。这位英国…