• 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协议安全

  • 相关阅读:
    Linux 内核参数:slabinfo
    ESP8266-Arduino编程实例-TSL2561亮度传感器驱动
    【STM32】Cortex-M4 超详细的GPIO输出分析
    sql优化
    typing.Union` 标注一多种变量类型
    甲方与三方渗透团队的协作注意点
    大型网站系统架构演化实例_9.分布式服务
    利用百度竞价排名推广增加转化率-华媒舍
    go-kit grpc调用及中间件封装
    阿里巴巴资深架构师熬几个通宵肛出来的Spark+Hadoop+中台实战pdf
  • 原文地址:https://blog.csdn.net/lzf_hlh/article/details/133761803