Python —— 接口自动化(1)

1、接口测试的基础概述

1、接口测试的方式

1、主流的工具类型 - jmeter,postman,apifox,fastapi,apipost....
2、公开的自动化平台 - metersphere,yapi....
3、公司内部自研平台 - 
4、全面使用代码自己去完成框架搭建,项目实战....

不论是平台还是工具,设计理念都差不多,因此相比之下,使用代码自己去完成框架搭建,是一种当下很重要的能力。

2、接口测试 —— 必备的知识点

1、要知道接口是什么,了解你要测的接口的业务是什么,有哪些参数,有哪些业务关联。
   1)接口文档(缺少\不全面\不更新)  -  最好有swagger在线接口文档
   2)抓包工具 - F12,fiddler/charles/wireshark/burpsuite, linux抓包tcpdump

2、接口用例设计 - 功能测试基本功(等价类划分、边界值、场景法、流程控制)
3、数据库 - 业务操作的数据流向,检验数据
4、项目架构 - 技术、微服务、哪些数据库类型
   前端页面 -- 后端逻辑 -- 数据库
   前端开发(调接口得响应) -- 后端开发(开发接口)

3、接口的相关知识

1、接口是什么

每一个接口都提供了对应的功能,在软件测试领域 -- 接口反映在客户端和服务端的交互中,例如:https://www.baidu.com/ 是一个统一的服务端地址。所有访问者向它发起请求,所有访问者就是客户端。而在客户端与服务端进行数据传输时,徐海燕传输通道,这时候接口就起到了数据传输通道的作用。
客户端发请求:发数据
服务端处理数据:返回响应数据
接口:传递数据的通道

可以通过抓包的浏览器:firefox -- http、https请求(OSI七层模型)
客户端:发请求
服务端:接收请求

2、http通信过程

http通信主要是建立在传输层tcp协议之上,具体过程为:

1、建立连接(打电话-拨号等嘀的一声) 
2、客户端发起请求(拨号人-说出你打电话的目的或诉求)
3、服务端接收请求,并响应数据。(对方回复你)
4、关闭连接(挂电话) -- (面试题:4次挥手)

三次握手,四次挥手

3、http有哪些请求方法

        post,get,put,delete,option....

4、请求数据包

http的数据包,有2类:请求数据包,响应数据包,先来看一下请求数据。

请求数据包:

1、请求行 - 请求方法 http版本
2、请求头 - 接口地址。比较重的请求头:
                          Content-Type: 请求体的数据格式。post/put/delete 
                       - application/json
                       - application/xml
                       - application/x-www-form-urlencoded
                       - multipart/form-data
          Authorization:鉴权有关。
          项目开发者自定义的请求头(需要则添加,不需要就无需添加)
          User-Agent:表明客户身份。
          cookies:可能与鉴权有关。
      空行

 参考:Http请求中的Content-Type_http content-type binary-CSDN博客

3、鉴权

如何鉴权?

鉴权:(http协议本身是无状态的。每个http请求之间是没有关系的)
第一步:通过登录接口,获取权限令牌。 (服务端返回权限令牌给客户端)  每次登录令牌值都不一样。
第二步:在接下来的每一个请求当中,都带上权限令牌。(以什么样的形式带上,开发人员决定)
做接口测试,第一步要解决的问题:项目是什么样的鉴权方式。

5、响应数据包

1、响头应行
2、响应头
   Content-Type: 
   set-cookies: 登录接口的响应头当中有set-cookies的话,可以确认是否是做为鉴权的。
3、响应体数据(响应体)

备注:token具有时效性,依据项目不同而不同

2、http请求的状态码

1、1xxx:服务器已收到请求,需要客户端继续操作

        1、100:【Continue】继续。客户端应继续其请求
        2、101:【Switching Protocols】切换协议,服务端根据客户端请求切换到更高级的协议

2、2xxx:HTTP成功状态码

        1、200:【ok】请求已成功,一般用于POST,GET请求
        2、201:【Created】已创建。成功请求并创建了新的资源
        3、202:【Accepted】已接受。已经接受请求,但未处理完成
        4、204:【No Content】无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
        5、206:【Partial Content】部分内容。服务器成功处理了部分GET请求,下载资源

3、3xxx:重定向

        1、301:【Moved Permanently】请求的资源已被永久的移动到新URI,返回替代该资源的新的URI,浏览器会自动定向到新URI。  后续对该资源的请求都应使用新的URI代替
        2、302:【Found】临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
        3、303:【See Other】查看其它地址。与301类似。使用GET和POST请求查看
        4、304:【Not Modified】未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
        5、305:【Use Proxy】使用代理。所请求的资源必须通过代理访问
        6、307:【Temporary Redirect】临时重定向。与302类似。使用GET请求重定向

4、4xxx:客户端错误

        1、401:【Unauthorized】,请求要求用户的身份认证
        2、402:【Payment Required】,保留,将来使用
        3、403:【Forbidden】服务器理解请求客户端的请求,但是拒绝执行此请求
        4、404:【Not Found】服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"页面
        5、407:【Proxy Authentication Required】请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
        6、408:【Request Time-out】服务器等待客户端发送的请求时间过长,超时

5、5xxx:服务端错误

        1、500:【Internal Server Error】服务器内部错误,无法完成请求
        2、501:【Not Implemented】服务器不支持请求的功能,无法完成请求
        3、502:【Bad Gateway】作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
        4、503:【Service Unavailable】由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
        5、504:【Gateway Time-out】充当网关或代理的服务器,未及时从远端服务器获取请求
        6、505:【HTTP Version not supported】服务器不支持请求的HTTP协议的版本,无法完成处理

3、加密对称与非加密对称

对称加密、非对称加密
python 实现常用的数据编码和对称加密:python 实现常用的数据编码和对称加密 - 测试派

RSA加密解密:
python 实现常用的数据编码和对称加密:
http://testingpai.com/article/1595507230322
http://testingpai.com/article/1651737629741
http://testingpai.com/article/1651739219761

RSA 非对称加密之 PKCS8 格式秘钥
http://testingpai.com/article/1654502972533

1、非对称加密

非对称加密而已简单理解为:公钥和私钥不是同一个事物。以下举例:

服务端生成一对钥匙:公钥-私钥
公钥:对客户提供的公开的钥匙,每一个客户端都可以得到公钥。
私钥:私有的钥匙,只有服务端有。

客户端向服务端发送数据:
客户端:利用服务端提供的公钥对发送的请求数据进行加密处理。
服务端:利用服务端的私钥进行解密处理,得到客户端发过来的数据。

如果每一个客户端都生成了一对公钥私钥
服务端返回数据:利用客户端的公钥进行加密,返回给客户端
客户端接收数据:利用客户端自己的私钥进行解密。

2、http到https之间的转变

1、概述

1、HTTPS=HTTP+加密+认证+完整性保护
2、概念理解:CA(Certificate Authority)证书授权中心
   1、CA证书授权中心
   2、作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任
   3、CA中心会给每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥
   4、CA机构的数字签名使得攻击者不能伪造和篡改证书

2、https的加密请求过程

1、【浏览器】向服务器发送https请求
2、【服务器】向CA机构获取证书
3、【服务器】向浏览器发送数字证书(包含public key)
4、【浏览器】用预置的CA列表验证证书,生成随机对称秘钥【key】,并使用公钥加密,如有问题会提示风险,
5、【浏览器】加密后的【key】,发送给【服务器】,作为接下来请求的秘钥
6、【服务器】用自己的private key解密得到对称秘钥key
7、【浏览器】使用随机码key进行解密数据
8、【浏览器】【服务器】使用该秘钥进行通信

3、http和https的区别 

1、http明文传输,https密文传输协议
2、默认端口http:80端口,https:443端口
3、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

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

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

相关文章

【Redis】Redis性能优化:理解与使用Redis Pipeline

原创不易,注重版权。转载请注明原作者和原文链接 文章目录 Pipeline介绍原生批命令(MSET, MGET) VS PipelinePipeline的优缺点一些疑问Pipeline代码实现 当我们谈论Redis数据处理和存储的优化方法时,「 Redis Pipeline」无疑是一个不能忽视的重要技术。…

Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验)

文章目录 效果一览文章概述模型描述程序设计单步实验多步实验参考资料效果一览 文章概述 Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验) Transformer-singlestep.py 包含单步预测模型 Transformer-multistep.py 包含多步预测模型 这是单步预…

基于ChatGPT+词向量/词嵌入实现相似商品推荐系统

最近一个项目有个业务场景是相似商品推荐,给一个商品描述(比如 WIENER A/B 7IN 5/LB FZN ),系统给出商品库中最相似的TOP 5种商品,这种单纯的推荐系统用词向量就可以实现,不过,这个项目特点是商品库巨大,有…

Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

本篇博客主要用于介绍如何使用seleniumphantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*-from selenium import webdriver from selenium.webdriver.common.keys import Keysimp…

材质、纹理、贴图的区别和关联

1、材质、纹理、贴图的概念 材质(Material)、纹理(Texture)、贴图(Texture Map)是计算机图形学中的三个概念,它们之间存在关系但也有一些区别。 材质(Material)是描述物…

[leetcode 优先队列] 2512. 奖励最顶尖的 K 名学生 M

给你两个字符串数组 positive_feedback 和 negative_feedback ,分别包含表示正面的和负面的词汇。不会 有单词同时是正面的和负面的。 一开始,每位学生分数为 0 。每个正面的单词会给学生的分数 加 3 分,每个负面的词会给学生的分数 减 1 分…

算法进阶——字符串的排列

题目 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n<10 要求&#xff1a;空间复…

pytorch 训练、微调YOLOv5,YOLOv8 小技巧 合集

文章大纲 前置文章训练过程中:基于多核CPU的加速其他AI 加速器参考文献与学习路径前置文章 yolo v5 坐标相关的判断与转换,评价指标,训练结果解析YOLOv8 多目标跟踪与常见问题汇总python + pytorch 多线程实现级联模型的业务逻辑yolov5 奇奇怪怪的错误汇总:【版本兼容,模型…

设计模式 - 中介者模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 中介者模式又叫调停模式&#xff0c;定义一个中介角色来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合松散&#xff0c;且可以独立地改变它们之间的交互。 中介者模式可以使对象之间的关系数量急剧减少&#xff0…

nginx开启https配置之后网页无法访问问题处理

背景说明 最近新购服务器部署nginx之后按照之前的方式部署前端项目并配置https之后访问页面显示:无法访问.新的服务器ECS系统和之前相同,nginx安装方式也相同,nginx配置方式也是相同.但是访问还是显示无法访问.下面简单记录一下问题处理过程. 处理过程 1.https访问之后无法访问…

uniapp中videojs、renderjs的使用

在uniapp中使用了某些前端库或iframe&#xff0c;需要操作这些库中的dom的时候&#xff0c; 而uni上又没有document等基础对象。也就无法操作这些dom去实现一些交互逻辑&#xff0c;那么&#xff0c;涉及到这些的前端类库就无法使用&#xff0c;例如html2、canvas、image、vide…

php+html+js+ajax实现文件上传

phphtmljsajax实现文件上传 目录 一、表单单文件上传 1、上传页面 2、接受文件上传php 二、表单多文件上传 1、上传页面 2、接受文件上传php 三、表单异步xhr文件上传 1、上传页面 2、接受文件上传php 四、表单异步ajax文件上传 1、上传页面 2、接受文件上传ph…

Day-08 基于 Docker安装 Nginx 镜像-负载均衡

1、反向代理后&#xff0c;自然而然就引出了负载均衡,下面简单实现负载均衡的效果; 2、实现该效果需要再添加一个 Nginx &#xff0c;所以要增加一个文件夹。 /home|---mutou|----nginx|----conf.d|----html|----conf.d2|----html3 1.创建 html3 文件夹&#xff0c; 新建 index…

CART 算法——决策树

目录 1.CART的生成&#xff1a; &#xff08;1&#xff09;回归树的生成 &#xff08;2&#xff09;分类树的生成 ①基尼指数 ②算法步骤 2.CART剪枝&#xff1a; &#xff08;1&#xff09;损失函数 &#xff08;2&#xff09;算法步骤&#xff1a; CART是英文“class…

gitlab git lfs的替代软件整理汇总及分析

文章目录 前言替代软件分析git-annexgit-fatgit-symgit-meida 总结 前言 git-lfs科普 Git LFS&#xff08;Large File Storage&#xff09;是一个Git扩展&#xff0c;用于管理大型文件。Git LFS通过将大型文件存储在Git仓库之外&#xff0c;从而加快了Git操作的速度。它使用指…

新的“HTTP/2 Rapid Reset”0day攻击打破了DDoS记录

导语 最近&#xff0c;一种名为“HTTP/2 Rapid Reset”的DDoS&#xff08;分布式拒绝服务&#xff09;攻击技术成为了热门话题&#xff0c;该技术自8月份以来被积极利用作为零日漏洞&#xff0c;打破了以往的攻击记录。亚马逊网络服务&#xff08;Amazon Web Services&#xff…

C#的值类型和引用类型

不得不说c#的类型系统设计有点意思&#xff0c;不同的编程语言对于类型的设计各有取舍。 值类型&#xff1a; 当我们将一个int类型的值赋值到另一个int类型的值时&#xff0c;它实际上是创建了一个完全不同的副本。换句话说&#xff0c;如果你改变了其中某一个的值&#xff0…

短视频账号矩阵系统源码saas===独立部署

前言&#xff1a; 短视频账号矩阵是指在不同的短视频平台上&#xff0c;一个个人或企业所拥有的账号数量和分布情况。由于不同的短视频平台受众人群和内容类型等因素不同&#xff0c;因此拥有更多账号可以在更广泛的受众中传播内容&#xff0c;提高曝光度和流量。短视频账号矩阵…

uniapp获取公钥、MD5,‘keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

获取MD5、SHA1、SHA256指纹信息 通过命令的形式获取 winr调出黑窗口cd到证书所在目录输入keytool -list -v -keystore test.keystore,其中 test.keystore为你的证书名称加文件后缀按照提示输入你的证书密码&#xff0c;就可以查看证书的信息 通过uniapp云端查看(证书是在DClou…

给 Linux0.11 添加网络通信功能 (Day3: 完成 MIT6.S081 最终实验 网卡驱动(1. 安装工具链和依赖))

url: https://pdos.csail.mit.edu/6.S081/2020/labs/net.html 首先看 tools章节&#xff1a;https://pdos.csail.mit.edu/6.S081/2020/tools.html 浏览了一下&#xff0c;就是要我们安装依赖 执行以下命令 sudo apt-get install git build-essential gdb-multiarch qemu-syst…