標籤:

2. 掀起介面測試的蓋頭-HTTP 初窺 (一)

上篇文章大概介紹了一下介面和介面測試,今天咱們聊聊HTTP。為什麼聊她?因為大部分的介面是基於HTTP協議的,不對她有個基本的理解,怎麼把她娶進門?特別提醒,已經娶進門的童鞋,請不要二婚。

what-什麼是協議

協議是一種溝通雙方都能聽得懂的編解碼方式。比如,你是河南人,我是廣東人,我們都說各自的方言,我們怎麼溝通?很簡單,我們使用普通話溝通。所以,普通話可以認為是一種協議。

文件格式也可以認為是一種協議,你使用A軟體創建了一個JPG文件,在電腦中實際上用的是一坨01串存起來,然後你使用B軟體打開這個JPG文件,B軟體之所以能打開,是因為JPG這種格式代表了一種特殊的編解碼方式,B軟體按照對應的解碼方式,把這一坨01串還原為圖像。

what-什麼是超文本

超文本是相對文本而言的,文本就是普通字元串,超文本指的是包含超鏈接的字元串,可以鏈接到其他的內容。咱們來體會一下百度百科的定義:超文本是用超鏈接的方法,將各種不同空間的文字信息組織在一起的網狀文本。 下圖就是一個超文本在瀏覽器的顯示,裡面包含了很多到其他空間的鏈接。

目前最常用的超文本是用超文本標記語言寫的,即HTML。

what-什麼是HTTP

HTTP協議-HyperText Transfer Protocol,超文本傳輸協議,是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳送協議。理解一個東西,從其名字和定義上去理解就能有直觀的、不錯的理解。 HTTP名字里有三個關鍵詞:超文本、傳輸、協議,說簡單一點,這是一種用於傳輸超文本的協議。

HTTP協議的設計初衷是為了傳輸HTML文本,而後來又加了很多東西,就不僅限於傳輸HTML文本了,可以用來傳圖片、PPT、視頻等各種文檔,還可以用來傳一些特定格式的字元串,比如json、XML。目前有三個版本:http/0.9;http/1.0;/http/1.1。目前http/1.0和1.1被廣泛應用。

  • http/0.9:僅用於傳輸HTML文檔;
  • http/1.0:支持多媒體數據的處理;支持keep-live(持久連接);有緩存功能;
  • http/1.1:支持更多的請求方法和更精細的緩存控制;持久連接。

另外,注意,HTTP協議是應用層的協議,雖然帶有「傳輸」二字。她不是傳輸層協議,傳輸層協議是管理傳輸過程的,比如大小、速率、校驗、丟失重傳等。我會找一寫一篇文章介紹TCP/IP協議棧。這裡不展開,如果你有強迫症或者學習慾望強烈,你可以自己去找相關文章閱讀。

how-HTTP協議工作流程

HTTP採用請求響應模型來處理HTTP事務, HTTP事務有一條請求命令和一個響應結果組成,它們通過HTTP報文進行數據傳輸。

HTTP報文

還用之前舉過的例子,我提供加法計算的介面,你要給我傳遞2個數(a和b),我給你返回一個結果。

請求報文可能是:

POST http://192.168.98.178:8081/add HTTP/1.1Host: 192.168.98.178:8081Connection: keep-aliveHost: 192.168.98.178:8081Connection: keep-aliveContent-Type: application/x-www-form-urlencoded; charset=UTF-8Accept-Encoding: gzip,deflatea=1&b=2

響應報文可能是:

HTTP/1.1 200 OKServer: Apache-Coyote/1.1Cache-Control: no-cacheContent-Type: application/json;charset=UTF-8Transfer-Encoding: chunked{"sum":2}

這裡不對HTTP報文的組成結構展開講解,後續再講。

How-如何執行HTTP介面測試

至此,如何執行HTTP介面測試,答案就變得很簡單:

  1. 構造一條符合要求的HTTP請求消息;
  2. 發給我,我給你迴響應;
  3. 你讀取HTTP響應,檢查響應內容是否正確。

至於如何構造一條符合要求的HTTP消息,且聽下回分解。

總結

  • 本文講了什麼是協議、什麼是超文本、什麼是HTTP、HTTP最基本的工作流程,以及如何執行HTTP介面測試。
  • 本文也提到了一種理解一個概念的方法:從名字本身去理解。

如果你沒get到今天的內容,不是你的問題,是我的鍋,我沒有講得通俗易懂,請盡情拍板磚。

歡迎加QQ群討論:604840452,或者加我個人QQ:2669885257,謝謝!


推薦閱讀:

實戰篇 近期線上BUG分析及解決方案總結

TAG:軟體測試 |