HTTP协议和接口测试详解

        介绍接口测试前我们先来介绍一下HTTP协议,为什么先要介绍HTTP协议呢因为因为我们做接口测试其实就是用测试工具(postman,fiddler,jmeter等等)或代码来模拟用户使用软件的场景,在我们模拟的时候不像平时功能测试时我们有已经开发完成的网页界面,因为接口测试它是在开发或架构师写完接口文档后和开发工作同步进行的,那时候没有页面,所以我们必须先在底层逻辑上了解我们软件时怎样运行的,怎么完成我们的操作的这就需要了解网络传输协议HTTP协议。

一、HTTP协议简介

        1、什么是HTTP协议

        HTTP是英文直译过来超文本传输协议,它是数据在互联网上传输的一种协议,就像我们社会运行的某种法律一样,我们在日常生活和工作中要遵守法律法规,那数据在互联网上传输也要遵循一定的规则。其中的一项规则就是HTTP协议,在我们的生活中有很多种法律,例如,婚姻法,未成年人保护法等等。同样的网络上的数据传输也有很多的协议,例如TCP、IP、FTP等等。

        2、HTTP 协议的特点

        1.支持客户端/服务器模式、2.简单快速、3.灵活、4.无连接、5.无状态  。

        无状态和无连接是相对应于TCP协议的连接的,(扩展:TCP想要建立连接要三次握手,想要断开连接,需要四次挥手。)

        3、什么是HTTP请求和响应

        前面我们提到HTTP请求是网络上数据传输时的法律,那么我们网络上的数据是从什么地方传到什么地方呢,其实网络上数据传输时有客户端和服务器端两端,我们自己平时用的电脑就是客户端,服务器就是存储网络数据的一端。我们上网时从客户端发送请求给服务器,服务器接收到我们的请求,然后发送响应给我们,响应里面就有我们要的数据。在这个过程中又遵循HTTP协议所以这就是HTTP请求和响应

        HTTP请求和响应里面都有什么呢?我们要学习接口测试就必须要搞清楚这个问题

        4、HTTP请求(也叫请求报文)

        一般来说请求分为三个部分,分别是请求行、请求头、请求体。

        请求行包含请求方法,URL和协议版本,其中请求方法有我们常见的get 、post、 put、 delete四种方法。get和delete请求方法是不需要请求体的post和put需要请求体。URL中文直译过来叫  统一资源定位符  就是网络上每个数据的地址,简单理解未我们人类社会每个人都有居住地址一样,通过这个地址就能在网络上定位到该数据。协议版本就是字面意思协议的版本例如HTTP1.1。

        请求头里面都是一些我们发送请求的格式数据,请求头里的数据都是以键值对(姓名:张三   就是一个键值对)的方式存储的,我们目前阶段要掌握的就两个,一个是Content-Type,它是用来解释我们发的请求体里面的数据类型是什么类型的。另一个是User-Agent,意思是客户端发送请求所用的浏览器信息。

        请求体里存放着我们请求的数据,例如我们要修改我们的昵称,我们就要把我们的新昵称写在请求体里发个服务器,服务器帮我们修改,有人就要说了我怎么从来没写过请求体,那是因为浏览器帮我们做了这一步,我们只需要在输入框输入就行,但我们要学习接口测试就要自己写入请求体了。请求体里的数据一般为json格式。

请求报文的例子:

URL例子:

        协议不用解释,域名和协议之间用://隔开。域名也叫IP,是用来定位计算机的,就像计算机的身份证一样,每个计算机都有自己的ip地址,它有两种书写形式还有一种是 127.168.1.1这种。域名和端口号之间用:隔开。 端口号是网络通信中用于区分不同服务和进程的数字标识,有时我们看到的URL没有端口号,那是因为端口号被省略了。例如HTTP协议默认的端口号是80,HTTPS的默认端口号是443,MySql的默认端口号是3306等等。你可以把端口号和资源路径之间的/当作是资源路径,也可以当作它们之间的分隔符。资源路径就是存放该资源的地址,资源路径和查询参数中间用?隔开,查询参数可以有多个每个查询参数之间用&隔开,有的URL是没有查询参数的。

响应报文例子:

这个响应报文图片里面没有响应体,但我们通过响应头的Content-Type知道响应体是json格式的。

         5、json格式

        json格式就是键值对和python里的字典是一样的,只不过json里的字符串只能用双引号,不能用单引号。json和python里的字典一样有两种书写方式

第一种:[值1,值2,值3,值4.........]

第二种:{"键":"值","键":"值","键":"值"....}

两种书写方式可以相互嵌套,例如:[{"键":"值"},{"键":"值"},{"键":"值"},{"键":"值"}...],

{"键":[值1,值2,值3......]}等等        

        6、响应(也叫响应报文)

        有请求当然就有响应,响应体也分为三个部分响应行,响应头,响应体。

        响应行包含协议版本、状态码和状态描述三个内容。状态码有以下五种

        1xx:指示信息--表示请求已接收,继续处理

        2xx:成功--表示请求已被成功接收、理解、接受

        3xx:重定向--要完成请求必须进行更进一步的操作

        4xx:客户端错误--请求有语法错误或请求无法实现 (403,404)

        (403 请求的资源存在,拒绝被访问,404 请求的资源不存在)

        5xx:服务器端错误--服务器未能实现合法的请求

        响应头里面存储的是一些响应的格式信息,例如响应体的数据类型等等。

        响应体里面就是我们所需要的数据,它可以是一个图片,一个HTML网页等等任意类型。

二、接口测试简介

        1、什么是接口

        接口就是系统和系统之间模块和模块之间进行数据传输的通道

        2、什么是接口测试

        那么什么是接口测试呢,接口测试就是通过工具(postman,fiddler,jmeter等等)或者代码,来测试接口传输的正确性和逻辑依赖关系的正确性。数据传输的正确性不难理解那么逻辑依赖关系如何理解呢?例如我们在接口测试时查看订单页面那我们是不是要先登录才能查看订单页面,当我们在未登录情况下发出查看订单页面HTTP请求的时候我们需要先跳转到登陆页面让用户登录,这就是逻辑依赖关系。

        3、接口测试的特点和流程

特点:

       1、测试可以提前介入,提早发现Bug,符合质量控制前移的理念

       2、 可以发现一些页面操作发现不了的问题

       3、接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)

       4、 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测

流程:

        1.结合需求文档,需求分析

        2.结合开发提供的接口文档,进行接口分析

        3.出具接口测试用例(送审)

        4.执行接口测试用例(两种方法1.工具:Pistman、fiddler、jmeter2.代码:Python + UnitTest +         requests)

        5.缺陷(bug)的管理和跟踪

        6.生成测试报告

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

        4、接口文档

        接口文档顾名思义就是写有接口信息的文档,它包含整个项目所要用到的所有接口信息,例如每个接口的请求方法,URL,和协议版本,还有一些请求头的数据和请求体数据,一般我们现在书写接口文档都用RESTful风格。

        5、什么是RESTful风格   

        RESTful 风格是一种约定俗成的接口文档的编写风格,它不具有强制性,就是比较流行在当前阶段。下面时RESTful 风格的请求方法和其对应的响应状态码。但一般RESTful风格的状态码在编写接口文档时不够用的,所以一般会自己定义一些状态码。

        查询某个用户  get      200(成功状态码)

        查询所有用户  get      200(成功状态码)

        增加用户      post     201(成功状态码)

        修改用户      put      201(成功状态码)

        删除用户      delete   204(成功状态码)

        那么如何界定RESTful风格呢?

         通过请求方法界定,RESTful风格一般有四种请求方法。

         通过url界定,RESTful风格每个资源的URL唯一。

         通过成功状态码界定,响应成功状态码有三种(200,201,204)。

        接口测试的例子:

        我们以postman工具为例,通过接口完成黑马开源项目的登陆操作。首先选择请求方法,填写URL,端口号默认80我们不用填写。由于我们使用post请求方法所以需要填写请求体,请求体中填写账号和密码以json格式。postman会自动识别我们的请求体并给我们填写请求头。我们只要看到响应体中出现操作成功就说明我们登陆成功了,那我就恭喜你已经完成了首次接口测试工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492615.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2024-32709 WordPress —— Recall 插件存在 SQL 注入漏洞

漏洞描述 WordPress 是一款免费开源的内容管理系统,适用于各类网站,包括个人博客、电子商务系统、企业网站。其插件 WP-Recall 的 account 存在 SQL 注入漏洞,攻击者可以通过该漏洞获取数据库敏感信息。 WP-Recall 版本 <= 16.26.5 漏洞复现 搭建环境、安装插件、完成…

深度学习之目标检测篇——残差网络与FPN结合

特征金字塔多尺度融合特征金字塔的网络原理 这里是基于resnet网络与Fpn做的结合&#xff0c;主要把resnet中的特征层利用FPN的思想一起结合&#xff0c;实现resnet_fpn。增强目标检测backone的有效性。代码实现如下&#xff1a; import torch from torch import Tensor from c…

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars&#xff08;九&#xff09; 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时&#xff0c;经常需要修改窗口标题、更改软…

睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注

睡岗和玩手机数据集&#xff0c;4653张原始图&#xff0c;支持YOLO&#xff0c;VOC XML&#xff0c;COCO JSON格式的标注 数据集分割 训练组70&#xff05; 3257图片 有效集20&#xff05; 931图片 测试集10&#xff05; 465图片 预处理 没有采用任何预处…

GIN

gin是什么 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API&#xff0c;但性能比 Martini 快 40 倍。如果你需要极好的性能&#xff0c;使用 Gin 吧。 特点&#xff1a;gin是golang的net/http库封装的web框架&#xff0c;api友好&#xff0c;注…

Git安装及基础学习

Git学习 Git安装 概述&#xff1a; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理 从很小到非常大的项目版本管理&#xff0c;是目前使用范围最广的版本 管理工具。 下载安装&#xff1a; 下载地址&#xff1a;https://git-scm.com/ 下载后傻瓜式一键安…

【Rust自学】4.2. 所有权规则、内存与分配

4.2.0 写在正文之前 在学习了Rust的通用编程概念后&#xff0c;就来到了整个Rust的重中之重——所有权&#xff0c;它跟其他语言都不太一样&#xff0c;很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节&#xff1a; 所有权&#xff1…

git stash 的文件如何找回

在Git中&#xff0c;如果你使用了git stash命令来保存你的工作进度&#xff0c;但之后想要找回这些被stash的文件&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 查看stash列表 首先&#xff0c;使用git stash list命令来查看当前保存的所有stash记录。这个命令会列出…

如何构建一个可信的联邦RAG系统。

今天给大家分享一篇论文。 题目是&#xff1a;C-RAG&#xff1a;如何构建一个可信的联邦检索RAG系统。 论文链接:https://arxiv.org/abs/2412.13163 论文概述 尽管大型语言模型 (LLM) 在各种应用中展现出令人印象深刻的能力&#xff0c;但它们仍然存在可信度问题&#xff…

2025年入职/转行网络安全,该如何规划?网络安全职业规划

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…

Ansible playbook 详解与实战操作

一、概述 playbook 与 ad-hoc 相比,是一种完全不同的运用 ansible 的方式&#xff0c;类似与 saltstack 的 state 状态文件。ad-hoc 无法持久使用&#xff0c;playbook 可以持久使用。 playbook 是由一个或多个 play 组成的列表&#xff0c;play 的主要功能在于将事先归并为一…

ai绘图丨中国新年春节背景第二弹(附关键词

使用工具&#xff1a;千鹿AI 咒语&#xff1a;圆形平面讲台&#xff0c;5 个礼品盒和台灯交错排列&#xff0c;红色背景上的圆形&#xff0c;中国唐朝风格&#xff0c;红色和金色主题&#xff0c;3D 效果图&#xff0c;摄影棚灯光&#xff0c;简约产品展示模型&#xff0c;逼真…

Envoy 进阶指南(下):深入探究Envoy服务和架构

接上篇&#xff1a;《Envoy 进阶指南&#xff08;上&#xff09;&#xff1a;从入门到核心功能全掌握》 链接 文章目录 3.深入探究Envoy3.1 Envoy服务发现机制3.1.1文件订阅3.1.2 gRPC 流式订阅3.1.3 REST-JSON 轮询订阅 3.2监听器&#xff08;Listener&#xff09;3.3.架构3.3…

关于ftp.ncbi.nlm.nih.gov数据下载路由调整的记录

经查防火墙看到ftp.ncbi.nlm.nih.gov的流量比较大&#xff0c;对专线带宽使用造成比较大的负担。 于是把ftp.ncbi.nlm.nih.gov改从PPOE线出&#xff0c;发现下载速度下降好多。通过流量图进行分析&#xff0c; 可以看出路由走PPOE时&#xff0c;仅HTTPS协议有通迅流量&#xf…

upload-labs靶场保姆级攻略

第一关&#xff1a;删除前端js校验 写一个一句话木马&#xff0c;命名为1.php 一句话木马 浏览上传 我们发现不可以上传&#xff0c;右键检查&#xff0c;依次点击 找到return checkFile()删掉&#xff0c;再上传 去看一下是否已经写入进去一句话木马 页面什么也没有&#xff…

鸿蒙项目云捐助第十五讲云数据库的初步使用

鸿蒙项目云捐助第十五讲云数据库的初步使用 在华为云技术使用中&#xff0c;前面使用了云函数&#xff0c;接下来看一下华为云技术中的另外一个技术云数据库的使用。 一、云数据库的创建 这里使用华为云数据库也需要登录到AppGallery Connect平台中&#xff0c;点击进入到之…

写入hive metastore报问题Permission denied: user=hadoop,inode=“/user/hive”

背景 使用Doris创建hive catalog后&#xff0c;想在hive上的库中创建一个表&#xff0c;报如下图片错误 解决办法 hdfs dfs -ls /看到如下图片所示&#xff0c;只有root用户有写的权限 所以通过export HADOOP_USER_NAMEroot将hadoop的用户名改成root&#xff0c;然后再hdfs…

GPT-Omni 与 Mini-Omni2:创新与性能的结合

近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;各种模型和平台应运而生&#xff0c;以满足从个人用户到企业级应用的多样化需求。在这一领域&#xff0c;GPT-Omni 和 Mini-Omni2 是两款备受瞩目的技术产品&#xff0c;它们凭借独特的设计和强大的功能&#xff0c;在…

Android代码结构图

Android架构 AOSP 的软件堆栈包含以下层&#xff0c;如图&#xff1a; Android app&#xff1a;系统原生一些应用&#xff0c;位于system/app&#xff0c;像图库、文件管理器等Privileged app&#xff1a;系统原生一些高特权应用&#xff0c;位于system/priv-app&#xff0c…

深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例

深入解析与防范&#xff1a;基于缓冲区溢出的FTP服务器攻击及调用计算器示例 摘要 本文将详细探讨一种利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术&#xff0c;并通过分析给定代码示例&#xff0c;揭示其工作原理和潜在风险。我们将重点讨论如何在靶机上实现调用计算器…