HTTP网络协议与接口测试逻辑

2023-09-15 16:55:59

很多测试人员都做过接口测试,但是聊到接口还是会不太清楚。

网络协议:但凡要做接口测试,一定要懂网络协议。目前市场主流的网络协议HTTP1.1,Dubbo2,HTTP2.O(相对较少)

HTTP1.1网络协议:

  • 搞懂打开浏览器访问一个URL会经历的步骤有哪些?(也就是搞懂了HTTP网络协议的基本交互流程)
    • 解析URL,将域名解析为IP地址
    • 与IP地址进行通信,建立TCP连接通道
    • 从本地将请求发送至IP地址的服务端
    • 服务端基于数据请求,进行对应的响应生成
    • 将响应进行原路返回到用户端
    • 基于前端进行数据的解析与渲染,生成可以被直接浏览的内容
    • 关闭TCP连接通道
  • 请求如何发送?
    • 请求的结构:
      • 请求行
      • 请求头
      • 请求体
    • 请求发送的目标:
      • 目标通过URL来进行区分
      • URL全称统一资源定位符,作用就是用来区分不同的内容
    • 请求方法:
      • 每一个接口的请求方法都是固定的,只能通过定义好的请求方法来进行数据的发送
      • 常见请求方法:GET/POST
      • 所有接口本身所支持的请求方法都在接口定义的时候就已经定义好了。
    • 请求数据:
      • 请求的参数
    • 请求规范:
      • 都是在请求头中进行定义
    • 请求额外数据的附加:
      • 一般附加在请求头中
      • 附加的数据一般都是cookie数据
  • 响应是如何生成与返回的?
    • 响应的结构:
      • 响应行
      • 响应头
      • 响应体
    • 响应的状态码:三位数的一个数据
      • 1xx 表示请求已接收,响应正在处理中
      • 2xx 表示请求接收,响应已返回,一切正常(只是表示发送请求成本,生成响应成功。但是响应结果是否符合业务的预期结果,无法确定)
      • 3xx 表示重定向,请求的目标地址转义到另一个地址
      • 4xx 表示请求出现问题,404表示请求的地址不存在。400表示请求的参数有问题
      • 5xx 表示服务器内部异常,500的状态码就很大概率是系统出现BUG
    • 响应的cookie保存策略:
      • 所有响应在生成的时候,会在响应头中定义到set-cookie字段
    • 响应规范:
      • 都是响应头中进行定义
    • 响应文本:(一般要做业务层级的断言,都是基于响应文本来实现)
      • 业务层级的接口响应结果。

接口测试逻辑

所有的接口测试,都遵循一个公式:

  1. 准备测试数据
    1. 要清晰地知道接口的请求数据包含有哪些内容?
    2. 要清晰地知道这些数据从哪里获取?
  2. 模拟请求
    1. 要实现接口测试,必须从模拟请求开始
    2. 要清晰地知道请求的数据以什么样的形态进行下发(请求方法、请求数据格式、请求数据类型等相关的信息)
    3. 要清晰地知道请求的url
  3. 判断响应结果
    1. 要获取到对应的响应结果(可以是响应文本,可以是响应头,一切以业务来进行决定)
    2. 要有明确的判断对象(要知道什么内容才是你的判断点)

接口测试不需要等前后端联调结束,在后端开发完成的时候就可以介入接口测试了。虽然接口测试就是简单的三个步骤,但是,会需要因为情况而进行一些额外的拓展。包括但不限于Mock、数据库的数据关联等一系列内容。

相关详细讲解可以参考:接口定义+Http网络协议原理解析+Requests库+工具的接口测试……

更多推荐

【翻译】Kingfisher 官方指南 Cheet Sheet

原文地址:https://github.com/onevcat/Kingfisher/wiki/Cheat-SheetThisdocumentationwilldescribesomemostcommonusageofKingfisher.ThecodesnippetisbasedoniOS.However,thesi

云原生Kubernetes:pod进阶之资源管理与探针

目录一、理论1.pod的资源限制2.健康检查(探针Probe)3.示例二、实验1.pod的资源限制2.健康检查(探针Probe)三、问题1.生成资源报错2.api版本错误3.echoN>/proc/sys/vm/drop_caches如何实现清理缓存4.生成启动退出容器报错5.如何完全清除日志四、总结一、理论1.pod

Qt事件处理

1.事件众所周知Qt是一个基于C++的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序的效率才是最高的)。所以在Qt框架内部为我们提供了一些列的事件处理机制,当窗口事件产生之后,事件会经过:事件派发->事件过滤->事件

软件工程开发模式:从传统到现代的演进

引言软件工程开发模式是指导软件开发过程的重要框架,旨在提高软件开发的效率和质量。随着技术的不断进步,软件工程开发模式也在不断发展演变,以适应不同的项目需求和开发环境。本文将介绍传统软件工程开发模式和现代敏捷、精益和DevOps软件工程开发模式,以及云计算背景下的软件工程开发模式。传统软件工程开发模式传统软件工程开发模式

【FAQ】安防监控视频云存储平台EasyNVR对接EasyNVS时,一直不上线该如何解决?

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。近期有用户在使用安防视频平台EasyNVR对接上级平台EasyNVS时,出现了一直不上线的情况。为给用户带来最优体验,技

计算机毕业设计 基于SSM+Vue的物资存储系统(以消防物资为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟————————————————计算机毕业设计题目《10

【李沐深度学习笔记】线性代数实现

课程地址和说明线性代数实现p2本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。这节就算之前内容的复习,后面以截图形式呈现标量由只有一个元素的张量表示importtorchx=torch.tensor([3.0])y=torch.tensor([2.0])#加减法print(x

排序算法的奥秘:JAVA中的揭秘与实现

冒泡排序(BubbleSort)是一种简单的排序算法,它通过多次迭代比较和交换相邻的元素来排序一个数组。每次迭代,较大的元素会逐渐"冒泡"到数组的末尾。以下是Java中实现冒泡排序的示例代码:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){intn=

软件工程第一次作业参考答案

题目名词解释:软件危机、软件、软件工程、软件生命周期、瀑布模型、原型模型、增量模型、喷泉模型、敏捷过程模型。答案软件危机:软件危机是指在软件开发过程中所面临的一系列问题和挑战,包括成本超支、进度延误、质量不达标等。软件:软件是一系列指令和数据的集合,通过计算机硬件来执行特定的功能。软件工程:软件工程是一门研究与开发高质

【新版】系统架构设计师 - 案例分析 - 软件工程

个人总结,仅供参考,欢迎加好友一起讨论文章目录结构化分析SA数据流图DFD数据流图平衡原则答题技巧例题1例题2面向对象的分析OOA用例图用例模型细化用例描述用例关系【包含、扩展、泛化】分析模型定义概念类确定类之间的关系类图与对象图实体类-存储信息和相关行为的类控制类-控制其它类边界类-描述外部与系统内部交互的类顺序图(

软件工程知识总结梳理

🔥🔥宏夏Coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推荐等内容。在线阅读:https://hongxiac.com🔥🔥1.软件与软件组成?软件工程常用的8个质量要素的定义?计算机科学对软件的定义:软件是在计算机系统支持下,能够完成特定功能和

热文推荐