【笔记】软件测试09——接口测试

九、接口测试

一)接口测试的概念

1)接口测试

        通过数据包的方式观察客户端向服务器发送了什么请求,模拟这些请求的过程

        接口测试是测试系统组件间数据交互的一种方式。

        接口测试是通过测试不同情况下的输入参数和与之对应的输出结果来判断接口是否符合或满足相应 的功能性、安全性要求。

        简单来说,接口测试就是代替前端或第三方,来验证后端实现是否符合接口规范。

2)作用:

  • 通过接口测试,测试接口的正确性和稳定性,能快速定位bug,提高测试效率
  • 能为项目平台带来高效的缺陷检测和质量监督的能力
  • 平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本)

3)原理:

模拟客户端向服务端发送请求报文,服务器接收请求报文后对想要相应的报文做处理,并向客户端返回应答,客户端接收响应数据后并进行判断请求是否正确,默认请求成功返回200,加入请求错误返回400,404,500等状态码,检查:返回数据的正确性与完整性、安全性:接口一般不会暴露在网上任意被调用,需要做一些限制,比如必须登录或者请求次数,频率限制。

4)学习目标:

  • 理解协议和接口的概念
  • 熟悉常见的网络协议
  • 熟悉常见接口定义格式和文档
  • 熟悉接口测试用例设计和书写
  • 熟悉常见抓包工具的使用
  • 熟悉利用Python完成接口测试的方法
  • 熟悉常见接口工具的应用

        接口其实就是在服务器定义的一堆函数或者是方法的集合,接口调用即调用这堆函数或者方法。

        由于接口是在两台电脑之间远程去调用这些方法,所以不能直接通过函数名来进行调用,不同电脑之间如果要进行通讯,必须通过特定的网络协议来实现,所以接口调用必须借助于网络协议来进行调用,所以学习接口测试必须先熟悉网络协议。(通讯双方使用同种协议)

5)什么是协议

      网络协议是通信计算机双方必须共同遵从的一组约定。如怎样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它最终体现为在网络上传输的数据包的格式。

协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。

6)分层协议体系:

网络七层协议与网络四层协议_网络,七四-CSDN博客

重点关注应用层的协议。应用层的协议包括telnet协议、FTP协议、HTTP协议、SMTP协议等,重点学习HTTP协议

二)HTTP协议

概念:

      超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。是基于TCP/IP模型的应用层协议。

为什么叫超文本?

不但可以传输文本数据,还可以传输音频、视频、超链接、图片等内容。

HTTPS:HTTP+SSL

http://www.baidu.com:80/adv_search?kw=py&order=false#tag

1)HTTP请求模型

HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S架构)

HTTP协议永远都是客户端发起请求,服务器回送响应

2)HTTP请求过程

一次http操作称为一个事务

  1. 浏览器输入
  2. dns域名解析:域名和ip的映射
  3. 建立tcp连接
  4. 发送http request:请求信息
  5. web服务器接收请求
  6. 应用服务器处理业务逻辑
  7. 关闭TCP连接:请求响应完成。如果浏览器在其头部信息中加入connection:keep-alive,则tcp连接仍然保持打开状态
  8. 浏览器:渲染响应页面

详细分享:

HTTP协议请求过程_浏览器如何跟踪地址-CSDN博客

https://yuanzhicun.blog.csdn.net/article/details/109405311

HTTPS:HTTPS请求的整个过程的详细分析-CSDN博客

3)HTTP协议特性

        HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方法,适用于分布式超媒体信息系统。

HTTP协议的主要特点可概括如下:

1. 支持客户/服务器模式

2. 简单快速:客户向服务器请求服务时,只需要传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4. 无连接:其含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式可以节省传输时间。

5. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺点:缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。优点:在服务器不需要先前信息时,它的应答就较快。

4)HTTP协议请求类型

HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:

  • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
  • HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  • GET:向特定的资源发出请求。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
  • PUT:向指定资源位置上传其最新内容。
  • DELETE:请求服务器删除Request-URI所标识的资源。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。

GET和POST请求的区别:

GET请求一般用于向服务器请求一个资源,没有副作用,一般会在客户端做缓存。POST请求一般用于向服务器提交数据并让其去完成一件事,所以这个操作由副作用,不回在客户端做缓存。

GET请求发送数据的时候,一般会将请求数据放在URL字符串中发送给服务器,所以从安全性角度来看相对没有POST请求安全性高,所以GET请求一般不会用于比较隐私数据的传输。而POST请求是将请求数据放在请求体body里面,所以一般用于表单数据、登陆数据等数据传输。

HTTP协议GET和POST请求的区别 - Y~forward - 博客园

5)HTTP状态码

      http请求部分:ULR地址,请求参数(可选),请求头,请求体(仅限POST请求)

对于相应内容部分,主要关注两个点

  • 响应状态码
  • 响应内容

  1. 状态码

  • 1**:临时响应并需要请求者继续执行操作。
  • 2**:请求成功。操作被成功接收并处理。
  • 3**:重定向代码,用于已经移动的文件并且在头信息中指定新的地址信息。
  • 4**:客户端错误,请求包含语法错误或者无法完成请求。
  • 5**:服务器错误,服务器在处理请求的过程中发生了错误。

1.1 http状态返回代码 1xx(临时响应)

表示临时响应并需要请求者继续执行操作的状态代码。

  • 100   (继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 
  • 101   (切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。

1.2 http状态返回代码 2xx (成功)

表示成功处理了请求的状态代码。

  • 200   (成功)  服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
  • 201   (已创建)  请求成功并且服务器创建了新的资源。
  • 202   (已接受)  服务器已接受请求,但尚未处理。
  • 203   (非授权信息)  服务器已成功处理了请求,但返回的信息可能来自另一来源。
  • 204   (无内容)  服务器成功处理了请求,但没有返回任何内容。
  • 205   (重置内容)服务器成功处理了请求,但没有返回任何内容。
  • 206   (部分内容)  服务器成功处理了部分 GET 请求。

1.3 http状态返回代码 3xx (重定向)

表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。

  • 300   (多种选择)  针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
  • 301   (永久移动)  请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
  • 302   (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • 303   (查看其他位置)请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
  • 304   (未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
  • 305   (使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
  • 307   (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

比如url地址更新换代了,会提示重定向的地址。eg:京东以前的地址。

重定向的URL:

重定向到该url地址后,又发生了临时重定向

定向后请求成功:

1.4 http状态返回代码 4xx(请求错误)

这些状态代码表示请求可能出错,妨碍了服务器的处理。(一般是资源不存在或错误地址。一般是客户端发送的请求错误,如请求地址或请求参数错了)

  • 400   (错误请求)服务器不理解请求的语法。
  • 401   (未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
  • 403   (禁止)服务器拒绝请求。
  • 404   (未找到)服务器找不到请求的网页。
  • 405   (方法禁用)禁用请求中指定的方法。
  • 406   (不接受)无法使用请求的内容特性响应请求的网页。
  • 407   (需要代理授权)此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
  • 408   (请求超时)  服务器等候请求时发生超时。
  • 409   (冲突)  服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
  • 410   (已删除)  如果请求的资源已永久删除,服务器就会返回此响应。
  • 411   (需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
  • 412   (未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
  • 413   (请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
  • 414   (请求的 URI 过长)请求的 URI(通常为网址)过长,服务器无法处理。
  • 415   (不支持的媒体类型)请求的格式不受请求页面的支持。
  • 416   (请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码。
  • 417   (未满足期望值)服务器未满足"期望"请求标头字段的要求。

1.5 http状态返回代码 5xx(服务器错误)

这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。(有可能参数错误,或者服务器本身问题)

  • 500   (服务器内部错误)  服务器遇到错误,无法完成请求。
  • 501   (尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
  • 502   (错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
  • 503   (服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
  • 504   (网关超时)  服务器作为网关或代理,但是没有及时从上游服务器收到请求。
  • 505   (HTTP 版本不受支持)服务器不支持请求中所用的 HTTP 协议版本。 

一些常见的http状态返回代码为:

200 - 服务器成功返回网页

404 - 请求的网页不存在

503 - 服务不可用

原文链接:HTTP响应码大全_响应码216833-CSDN博客

  1. 响应内容

在大多数应用中,响应内容一般有两种格式,一种是json格式,一种是html格式。而我们在进行接口测试的时候需要从响应内容中提取响应的字段或者文字内容来进行断言,所有必须掌握服务器返回不同格式响应时的内容提取方法。

  • json格式:直接使用requests库的response对象自身的json方法将响应内容转化为json对象后再提取
  • HTML格式:
    • 利用lxml库以xpath方式提取
    • 用正则表达式提取

三)chrome抓包操作

软件测试重点看的:

如果不设

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

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

相关文章

鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元

目录 前言 HarmonyOS NEXT:下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 (1)全维度性能升级 (2&#xff…

人工智能进程;算子加速的具体计算部分;大模型GPT5:参数18万亿;大模型面临问题

目录 人工智能进程 算子加速的简单理解,举例说明 一、简单理解 二、举例说明 一、算子加速的具体计算部分 二、举例说明 三、算子加速是否仅针对GPU 大模型GPT5:参数18万亿 大模型面临问题 算力集群设计框架 人工智能进程

论文阅读(二十六):Dual Attention Network for Scene Segmentation

文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文:Dual Attention Network for Scene Segmentation   论文链接:Dual Attention Network for Scene Segmentation   代码链接:Github 1.Intr…

C++——string的模拟实现(下)

目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接:C——…

vue通过JSON文件生成KML文件源码

可以使用封装的json解析器进行JSON数据获取,读取点的经度、维度、高程等数据,再使用对应的KML文件生成函数使用该源码下载KML文件(固定KML生成:js模板式生成大疆上云kml文件(含详细注释,已封装成函数&#…

unity中GameObject介绍

在 Unity 中,Cube和Sphere等基本几何体是 Unity 引擎的内置预制体(Prefabs),它们属于 Unity 中的GameObject 系统,可以在 Unity 的 Hierarchy 视图或 Scene 视图中右键点击,然后在弹出的菜单中选择 3D Obje…

MySQL 数据出海之数据同步方案

优质博文:IT-BLOG-CN 数据库出海流程 【1】业务出海:1)数据库出海;2)应用出海;3)流量分发; 【2】数据库出海:涉及业务方、信安、DBA和框架组。 数据库出海&#xff0c…

Go 语言基础教程:7.Switch 语句

在这篇教程中,我们将学习 Go 语言中的 switch 语句,它是条件分支的重要结构。我们将通过一个示例程序逐步解析 switch 的不同用法。 package mainimport ("fmt""time" )func main() {i : 2fmt.Print("Write ", i, " …

Python画笔案例-094 绘制 神奇彩条动画

1、绘制 神奇彩条动画 通过 python 的turtle 库绘制 神奇彩条动画,如下图: 2、实现代码 绘制 神奇彩条动画,以下为实现代码: """神奇彩条动画.py一个用海龟画图的图章功能配合颜色渐变和动画原理做成的动画。 """ from random import randi…

重学SpringBoot3-Spring WebFlux之SSE服务器发送事件

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE?2. Spring Boot 3 响应式编程与 SSE为什么选择响应式编程实现 SSE? 3. 实现 SSE 的基本步骤3.…

MySQL-32.索引-操作语法

一.语法 二.代码实现 指定某个字段为主键,其实就是建立一个主键索引。而指定某个字段唯一,就是建立一个唯一索引。 -- 索引 -- 创建:为tb_emp表的name字段建立一个索引 create index idx_emp_name on tb_emp(name);-- 查询:查…

Handler、Looper、message进阶知识

Android Handler、Looper、Message的进阶知识 在Android开发中,Handler、Looper和Message机制是多线程通信的核心。为了深入理解并优化它们的使用,尤其是在高并发和UI性能优化中,可以利用一些高级特性。 1. Handler的高阶知识 Handler在基本…

Axure随机验证码高级交互

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:字母数字随机验证码高级交互 主要内容:4位字母数字随机验证码生成、错误提示与State状态同步 应用场景:登录验证码、其他类…

Linux - 文件描述符 | 文件系统 | 软硬链接

文章目录 一、文件描述符1、补充知识2、文件描述符是什么?3、处理文件的系统调用接口4、文件描述符的分配规则5、简单理解Linux下一切皆文件6、FILE7、重定向 二、文件系统三、软硬链接1、软连接2、硬链接3、软硬链接对比 一、文件描述符 1、补充知识 (…

5G NR:BWP入门

简介 5G NR 系统带宽比4G LTE 大了很多,4G LTE 最大支持带宽为20MHz, 而5G NR 的FR1 最大支持带宽为100MHz, FR2 最大支持带宽为 400MHz。 带宽越大,意味了终端功耗越多。为了减少终端的功耗,5G NR 引入了BWP(Band Wid…

从零实现数据结构:一文搞定所有排序!(下集)

1.快速排序 思路框架: 在有了前面冒泡选择插入希尔排序之后,人们就在想能不能再快一点,我们知道排序算法说人话就是把大的往后放小的往前放,问题就在于如何更快的把大的挪到数组队尾小的挪到数组前面。这里我们先总结一下上集前…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解

在科技日新月异的今天,视频监控系统作为现代社会的“第三只眼”,正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享,视频监控系统以其独特的视角和功能,为社会带来了诸多好处&#xf…

【Linux】————磁盘与文件系统

作者主页: 作者主页 本篇博客专栏:Linux 创作时间 :2024年10月17日 一、磁盘的物理结构 磁盘的物理结构如图所示: 其中具体的物理存储结构如下: 磁盘中存储的基本单位为扇区,一个扇区的大小一般为512字…

Python 自动化运维:Python基础知识

Python 自动化运维:Python基础知识 目录 📊 Python 基础复习 数据类型、控制结构与常用函数面向对象编程(OOP)与类的使用函数式编程概念与 lambda 表达式异常处理与日志记录的基本实践 1. 📊 Python 基础复习 数据…

二十二、Python基础语法(模块)

模块(module):在python中,每个代码文件就是一个模块,在模块中定义的变量、函数、类别人都可以直接使用,如果想要使用别人写好的模块,就必须先导入别人的模块,模块名须满足标识符规则(由字母、数…