• ·接口测试核心:URL&HTTP协议详解


    ·URL:统一资源定位器,通常来说是由五个部分构成:
    ·protocol:协议
    ·domain:域名
    ·port:端口
    ·path:路径
    ·URL Parameters:URL地址参数。
    示例:https://ke.qq.com/course/317690?tuin=15945f87

    ·协议:通常就是://之前的部分,协议是指通信双方对于通信的数据的组织格式、含义、规程等所做的约定。
    一般来说,对于接口测试而言,最重要的就是协议。一般接口测试都是从应用层的协议进行模拟发送数据。
    常见的应用层协议有:
    http
    https:http+ssl
    ftp:
    ssh:
    smtp:
    pop3:

    oracle:
    mysql:
    sql server:

    ·域名:域名就是指要访问的服务器的地址,可能是域名、计算机名、IP地址。
    比如说:
    ke.qq.com
    www.baidu.com
    14.215.177.39

    ·端口:端口是跟在域名之后,是由服务器(服务器软件)来进行设置的。端口是服务器用来监听、接收客户端的请求的。
    格式:“域名:端口”
    如果端口是通信协议的默认通信端口,则用户在通过url访问服务器时,是可以省略不写的。
    常见的协议及其默认通信端口:
    http: 80
    https:http+ssl 443 or8443
    ftp: 21
    ssh: 22
    smtp: 25
    pop3: 110

    oracle: 1521
    mysql: 3306
    sql server: 1433


    ·路径:就是要访问的资源or服务在服务器容器路径下的地址。
    一般来说,路径体现的就是业务的逻辑。

    ·URL地址参数:通常来说就是指以问号?作为连接符,连接在path之后的部分。
    PS:
    ·URL地址参数的数据组织格式为:键值对应,即key1=value1&key2=value2&...&keyN=valueN

    ·在很多工具中,URL地址参数是直接算在path部分的。


    ·http协议:hypetex transfer protocol、超文本传输协议。

    ·http协议的特点:
    ·http协议是一种基于request(请求)和response(响应)的协议。

    ·http协议是一种简单、灵活的协议。

    ·http协议是一种快速、无连接的协议。
    http1.0及以前默认是无连接(短连接)。
    http1.1及之后默认是长连接的。
    短连接:是指一个tcp连接上只能建立、完成一个http连接。
    长连接:是指一个tcp连接上可以建立、完成多个http连接。
    标志:通过信息头Connection:keep-alived

    ·http协议是一种无状态的协议。
    后来引入了session和cookie机制来实现状态的记录。


    ·准备工作:准备一张抓包工具,看数据时建议直接看raw或者source的数据,这样的数据是原始数据,没有被抓包工具解析过的。

    ·http协议详解:
    http协议是由两个部分构成:http request、http response。
    了解和掌握http request是我们去实现接口测试的重要基础。
    了解和掌握http response是保证我们的接口测试脚本准确性的基础。


    ·http request:http请求,通常来说是由三个部分构成:
    ·request line:请求行
    ·request headers:请求头
    ·request body:请求主体。


    ·request line:请求行、通常来说就是请求数据包中的第一行内容,包含以下信息:
    request method、request path、 protocol/version
    示例:
    GET /phpwind/ HTTP/1.1

    ·request method:请求方法,一个http请求是必须有请求方法的,如果不指定,则默认为get方法。
    常见的请求方法有:
    get、post、put、delete、patch、options、trace、header等。

    接口所使用的请求方法不是由测试决定,而是由应用、接口本身决定。
    对于浏览器应用而言:
    get方法所传递的参数一般都是在URL地址参数部分,反之亦然。
    post方法所传递的参数一般都是在request body部分。

    ·request path:请求路径,即URL中的路径部分。

    ·protocol/version:协议/版本,请求和响应是必然一致的。

    ·request headers:请求头、是指从请求数据包的第二行开始,到第一个空行截止的部分。
    一般来说,请求头是客户端用来和服务器进行通信、控制信息的交互的,和业务通常无关(状态信息头除外:cookie、author、token、csrf)。
    请求头是键值对应,请求头的名称是由http协议规定的,不同的请求头代表不同的含义。
    重要的请求头:
    ·User-Agent:客户端用来告知服务器客户端的配置信息,通常和cookie、session等状态信息的生成有关。
    建议设置为一个统一的全局的信息头。

    ·Cookie:状态类的信息头。

    ·Content-Type: 是客户端用来告知服务器,所发送的请求主体(request body)的数据组织格式。
    不同的请求,该信息头的值可能不一样。
    要求:要保证Content-Type的值和实际发送的内容的一致性。

    ·request body:请求主体。是指请求数据包中从第一个空行开始到最后的所有内容。
    请求主体就是由客户端(业务)向服务器发送的数据部分。
    PS:只要请求主体有值,一定要记得添加信息头:Content-Type


    ·http response:http响应,通常来说也是由三个部分构成:
    ·response line:响应行
    ·response header:响应头
    ·response body:响应主体


    ·response line:响应行、通常来说就是指响应数据包中的第一行内容,通常包含以下信息:
    protocol/version、response code、response message
    示例:
    HTTP/1.1 200 OK
    ·response code:响应代码,又叫状态码。是服务器用来告知客户端,服务器对于请求的逻辑处理情况。逻辑处理仅仅是指网络通信层面的处理,和业务无关。
    响应代码通常是三位长度的数字,一般根据首位数字的不同,可以将状态码分为以下几类:
    ·1xx:表示通信建立过程中所传递的信息。
    ·2xx:典型的就是200,表示服务器处理成功。
    ·3xx:表示重定向。
    PS:1xx、2xx、3xx表示客户端和服务器的连接通信是成功的。

    ·4xx:客户端错误
    ·5xx:服务器错误
    从接口和性能测试的角度来说,出现4xx和5xx,则说明脚本一定是没有成功实现业务的。
    一旦出现4xx和5xx错误,则建议根据成功的业务的抓包来进行对比分析。

    ·response message:响应信息,是用来描述响应代码的,没有任何实际作用。

    ·response header:响应头、是指从响应数据包中的第二行开始到第一个空行截止的部分。
    类型、作用、格式等都和请求头类似,区别只是在于是服务器响应给客户端的。


    ·response body:响应主体、是指响应数据包中从第一个空行之后的所有内容。
    通常来说就是服务器对于请求的处理结果。

  • 相关阅读:
    【贪心 堆】luoguP2672 推销员
    【贪心 思维题】[USACO13MAR]扑克牌型Poker Hands
    「整理」[图论]最短路系列
    收集到的小玩意儿
    初遇构造函数
    在2440开发板液晶上显示两行字
    error: converting to execution character set: Invalid or incomplete multibyte or wide character
    宽字节
    宽字符wchar_t和窄字符char区别和相互转换
    linux获取文件大小的函数
  • 原文地址:https://www.cnblogs.com/limingbs/p/12876608.html
Copyright © 2020-2023  润新知