测试需要掌握的http协议知识

一、开发与测试眼中的接口

  1. 开发眼中的接口

(1)Interface关键字用来声明一个接口。下面是接口声明的一个简单例子。

/* 文件名 : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

(2)类使用implements关键字实现接口

/* 文件名 : MammalInt.java */
public class MammalInt implements Animal{
 
   public void eat(){
      System.out.println("Mammal eats");
   }
 
   public void travel(){
      System.out.println("Mammal travels");
   } 
 
   public int noOfLegs(){
      return 0;
   }
 
   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}

开发眼中的接口,是模块与模块的对接方式。

  1. 测试眼中的接口

测试眼中的接口,是协议接口,可以独立部署成一种服务。接口测试,也是协议接口测试。

二、接口协议

  1. 常见的接口协议
  • HTTP 超文本传输协议
    应用场景:


    image.png
  • HTTPS 安全超文本传输协议
    应用场景:


    image.png
  • FTP 文件传输协议
    应用场景:上传文件到服务器、从服务器下载文件。

  • TCP 网络控制协议
    应用场景:双方通信需要建立一个TCP协议,建立连接需要经过三次握手,握手成功才可以进行通信,我们通常所说的“三次握手,四次挥手”。

  • IP 互联网协议

  • UDP 用户数据协议
    应用场景: 在通信过程中,它并不像 TCP 那样需要先建立一个连接,只要(目的地址,端口号,源地址,端口号)确定了,就可以直接发送信息报文,并且不需要确保服务端一定能收到或收到完整的数据。
    若通信数据完整性需让位与通信实时性,则应该选用 TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。

三、HTTP协议详解

  1. HTTP协议栈中的位置


    测试需要掌握的http协议知识_第1张图片
    image.png

    HTTP和HTTPS网络构成不同,为什么有时候测试HTTP和HTTPS不能套用同一套测试方法,主要是由于他们下一层造成的差异。

  2. HTTP协议模型
    (1)HTTP协议永远都是客户端发起请求,服务器回送响应。

    测试需要掌握的http协议知识_第2张图片
    image.png

    这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
    (2)HTTP协议请求,包括请求行、请求头、请求正文。
    测试需要掌握的http协议知识_第3张图片
    image.png

    请求行包括:请求方法、请求的url、协议及版本。url包含协议、ip、端口、应用名、资源路径等,如果是get请求,资源路径后面还可以跟请求参数
    请求头包括:请求正文的类型、编码类型、 Cookie(里面看sessionID)、请求正文长度、签名串sign、token等。
    请求正文包括:数据格式、xml、 json、键值对、&分割符、字符串

(3)HTTP协议响应,包括响应行、响应头、响应正文。


测试需要掌握的http协议知识_第4张图片
image.png

响应行包括:http协议版本、响应状态码
响应头包括:描述服务器的基本信息,如正文类型、编码类型。
响应正文包括:响应的消息体,如果是纯数据就返回数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

  1. HTTP协议工作流程
    一次HTTP操作称为一个事务,其工作过程可分为四步:
    1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
    2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
    3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
    4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

  2. HTTP协议响应码

  • 1xx:信息响应类,表示接收到了请求并且继续处理。
  • 2xx:处理成功响应类,表示动作被成功接收、理解。(200,成功响应)
  • 3xx:重定向响应类,为了完成指定动作,必须接受进一步处理。(302,重定向)
  • 4xx:客户端错误,客户请求包含语法错误或者不能正确执行。(404,请求的资源不存在)
  • 5xx : 服务器错误,服务器不能正确执行一个正确的请求。

通过状态响应码,可以定位错误。所以必须掌握不同的响应码代表什么问题。

  1. 常用的http协议请求方式
    HTTP/1.1一共定义了8种请求方式,常见的请求方式有:get请求方式、post请求方式。他们区别如下:
    (1)get方式把参数包含在url中,post是通过request body传递参数。
    get方法url:
    http://127.0.0.1:8080?username=jianshu&password=1qaz2wsx
    post方法的url:
    http://127.0.0.1:8080
    请求体中:
{
    [
      "username"="jianshu";
      "password"="1qaz2wsx";
    ]
}

(2)get是从服务器获取数据,post是向服务器传输数据
(3)get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
(4)get安全性非常低,post安全性较高。

你可能感兴趣的:(测试需要掌握的http协议知识)