1. 程式人生 > 實用技巧 >15K測試崗位必問面試題——什麼是HTTP協議

15K測試崗位必問面試題——什麼是HTTP協議

什麼是HTTP協議,我想15K以上的測試崗位都會問這個問題,這個問題在測試崗位是經常被提及的網路協議相關問題,單這個問題就有不少變種

什麼是http協議?

http和https協議的區別是什麼?

http在哪一層?

什麼是 Http 協議無狀態協議?

怎麼解決http協議無狀態協議?

本文就帶你完完全全瞭解什麼是http協議

HTTP協議是什麼?有什麼特點?

HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。

HTTP協議的主要特點可概括如下:

1.支援客戶/伺服器模式。

2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。

3.靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type加以標記。

4.無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

HTTP之URL篇

HTTP使用統一資源識別符號(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。URL是一種特殊型別的URI,包含了用於查詢某個資源的足夠的資訊

URL,全稱是UniformResourceLocator, 中文叫統一資源定位符,是網際網路上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的URL可以看出,一個完整的URL包括以下幾部分: 1.協議部分:該URL的協議部分為“http:”,這代表網頁使用的是HTTP協議。在Internet中可以使用多種協議,如HTTP,FTP等等本例中使用的是HTTP協議。在”HTTP”後面的“//”為分隔符

2.域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用

3.埠部分:跟在域名後面的是埠,域名和埠之間使用“:”作為分隔符。埠不是一個URL必須的部分,如果省略埠部分,將採用預設埠

4.虛擬目錄部分:從域名後的第一個“/”開始到最後一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”

5.檔名部分:從域名後的最後一個“/”開始到“?”為止,是檔名部分,如果沒有“?”,則是從域名後的最後一個“/”開始到“#”為止,是檔案部分,如果沒有“?”和“#”,那麼從域名後的最後一個“/”開始到結束,都是檔名部分。本例中的檔名是“index.asp”。檔名部分也不是一個URL必須的部分,如果省略該部分,則使用預設的檔名

6.錨部分:從“#”開始到最後,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分

7.引數部分:從“?”開始到“#”為止之間的部分為引數部分,又稱搜尋部分、查詢部分。本例中的引數部分為“boardID=5&ID=24618&page=1”。引數可以允許有多個引數,引數與引數之間用“&”作為分隔符。

常見的介面協議

  • http 超文字檔案傳輸協議
  • https 安全超文字傳輸協
  • FTP 檔案傳輸協議
  • TCP 網路控制協議
  • IP 網際網路協議
  • UDP 使用者資料協議

http協議棧中的位置

HTTP、HTTPS、TCP、SSL/TSL、IP、資料鏈路程按如下排列:

HTTP HTTPS

TCP SSL/TSL

IP

資料鏈路層

http協議響應碼

1xx:資訊響應類,表示接收到請求並繼續處理,通常時間很短
2xx:處理成功類響應,表示動作被成功接收、理解和接受
3xx:重定向響應類,為了完成指定動作,必須接受近一步處理
4xx:客戶端錯誤,客戶請求包括語法錯誤或者是不能正確執行(常見的響應碼404:我們請求的資源不存在)
5xx:服務端錯誤,服務端不能正確執行一個正確的請求

http協議響應模型(一次請求的生命週期或簡單的軟體分層)

—API——OB——API——Client—

場景:程式登入頁面

1、客戶端發起請求到api層

1.1、使用者在客戶端填寫使用者名稱和密碼,點選登入,傳送請求

2、api接收到客戶端發起的使用者請求

2.1、api對業務邏輯進行驗證

2.1.1、驗證使用者名稱密碼是否合法

比如:使用者名稱要求必須為真實的手機號(11位,1開頭)

如果驗證失敗,即使用者名稱不合法,那麼需要給客戶端返回響應碼

比如碼值為:1,2,3

1:使用者名稱格式錯誤

2:使用者名稱或密碼錯誤

3:密碼格式錯誤

3、如果驗證成功,api會將使用者輸入的資料發給DB層

DB層會做Create(增)、Read(讀、查)、Update(改)、Delete(刪)的操作

Select * from User where UserName = ‘’ and PassWord = ‘’;

3.1、資料庫查詢成功則返回1,查詢失敗則返回0

4、DB會將返回的查詢資料庫的條目數給api

5、api返回成功或失敗的狀態碼給客戶端

6、客戶端將返回資訊提示給使用者

擴充套件:

一、客戶端 【 功能測試、效能測試、自動化測試】

二、介面層 【介面測試、功能測試、效能測試、自動化測試】

三、資料庫層 【可以將開發人員使用到的SQL單獨拿出來進行效能測試】

常用http請求的協議方式
get請求
post請求
get請求與post請求最簡單的區別?
例如:

Get:http://127.0.0.1:8080?username=zhangsan&passwod

http://127.0.0.1:8080

在這裡插入圖片描述

結語
相信你掌握了這些之後,再碰到HR問你什麼是http協議時,你就好好地找他嘮半個小時,讓他對http協議也全面瞭解,文明的傳遞就是知識的傳遞(dog)

最後想了解更多自動化測試的知識可以關注一波哦,也可以入群一起交流學習,需要資料的可以直接私聊我噠

在這裡插入圖片描述
上面是我收集的一些視訊資源,在這個過程中幫到了我很多。如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加入我們扣扣群【313782132 】,裡面有各種軟體測試資源和技術討論。

軟體測試是IT相關行業中最容易入門的學科~不需要開發人員燒腦的邏輯思維、不需要運維人員24小時的隨時待命,需要的是細心認真的態度和IT相關知識點廣度的瞭解,每個測試人員從入行到成為專業大牛的成長路線可劃分為:軟體測試、自動化測試、測試開發工程師 3個階段。

如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加我們的軟體測試交流群,裡面有各種軟體測試資料和技術交流。