介面測試常用知識點

2021-10-06 11:37:15 字數 3699 閱讀 8474

我們在做介面測試時,經常與http協議, url打交道,通常情況下會修改url中引數、來達到不同的測試目的或者轉到不同的頁面,那麼,你對http協議了解多少呢?今天來總結下。

http協議是hyper text transfer protocol(超文字傳輸協議)的縮寫,是乙個基於tcp/ip通訊協議來傳遞資料(html 檔案, 檔案, 查詢結果等)的協議。

http協議工作於客戶端-服務端架構為上。瀏覽器作為http客戶端通過url向http服務端即web伺服器傳送所有請求。web伺服器根據接收到的請求後,向客戶端傳送響應資訊。

url的組成部分及其含義:

以下面關鍵字搜尋url為例:醫院&page_num=1&ak=ebf48ecaa1fd436fa3d40c4600aa051f&sort=0®ion=320200&page_size=10

乙個完整的url包括以下幾部分:

1.協議部分:該url的協議部分為「http:」,這代表網頁使用的是http協議。在"http"後面的「//」為分隔符。

2.網域名稱部分:乙個url中,也可以使用ip位址作為網域名稱使用,比如這裡為10.82.232.190

3.埠部分:這裡埠號為:8088,埠不是乙個url必須的部分,如果省略埠部分,將採用預設埠

4.虛擬目錄部分:從網域名稱後的第乙個「/」開始到最後乙個「/」為止,是虛擬目錄部分。虛擬目錄也不是乙個url必須的部分。本例中的虛擬目錄是「/search/」

5.檔名部分:從網域名稱後的最後乙個「/」開始到「?」為止,是檔名部分,如果沒有「?」,則是從網域名稱後的最後乙個「/」開始到「#」為止,是檔案部分,如果沒有「?」和「#」,那麼從網域名稱後的最後乙個「/」開始到結束,都是檔名部分。本例中的檔名是「poi」。檔名部分也不是乙個url必須的部分,如果省略該部分,則使用預設的檔名

6.錨部分:從「#」開始到最後,都是錨部分。錨部分也不是乙個url必須的部分

7.引數部分:從「?」開始到結尾為止之間的部分為引數部分,又稱搜尋部分、查詢部分。引數包括引數名、引數值,本例中的引數部分為「query=醫院&page_num=1」。其中「「query」」為引數名,「「醫院」」為引數值。引數可以允許有多個引數,引數與引數之間用「&」作為分隔符。

http請求由三部分組成,分別是:請求行、訊息報頭、請求正文。請求行以乙個方法符號開頭,以空格分開,後面跟著請求的uri和協議的版本。

格式:method request-uri http-version crlf

method表示請求方法;

request-uri是乙個統一資源識別符號;

http-version表示請求的http協議版本;

crlf表示回車和換行(除了作為結尾的crlf外,不允許出現單獨的cr或lf符)。

舉例:

get方法:在瀏覽器的位址列中輸入**的方式訪問網頁時,瀏覽器採用get方法向伺服器獲取資源,eg:get /form.html http/1.1 (crlf)。

http請求方法(所有方法全為大寫)有多種,各個方法的解釋如下:

get : 請求獲取request-uri所標識的資源

post :在request-uri所標識的資源後附加新的資料

head :請求獲取由request-uri所標識的資源的響應訊息報頭

put: 請求伺服器儲存乙個資源,並用request-uri作為其標識

delete:請求伺服器刪除request-uri所標識的資源

trace :請求伺服器回送收到的請求資訊,主要用於測試或診斷

connect: 保留將來使用

在http協議中我們常用的請求方法是get, post, put, delete,當然最常用的為get和post請求,在工作中只遇到過這兩種請求方式。

那這四種方法除語義外有什麼其他區別呢?

首先介紹兩個概念:安全性和冪等性。如果針對乙個url的方法不改變url所指資源的狀態,就稱其為安全的,顯然在這四種方法裡,只有get方法是安全的。

冪等性,**於數學上的術語,即對同一運算元的多次操作與一次操作效果是一樣的操作符即稱冪等操作符,比如取絕對值操作符。

另外在具體技術實現上,這四種方法也有一些區別,那麼post與get有什麼區別呢?

①使用目標不同:

post與get都用於獲取資訊,但是get方式僅僅是查詢,並不對伺服器上的內容產生任何作用結果;每次get的內容都是相同的。post則常用於傳送一定的內容進行某些修改操作。

② 大小不同:

由於不同的瀏覽器對url的長度大小有一定的字元限制,因此由於get方式放在url的首部中,自然也跟著首先,但是具體的大小要依瀏覽器而定。post方式則是把內容放在報文內容中,因此只要報文的內容沒有限制,它的大小就沒有限制。

③ 安全性不同:

get是直接新增到url後面的,直接就可以在url中看到內容。而post是放在報文內部的,使用者無法直接看到。所以安全性來看,一般情況是post比get請求方式安全。

http是無狀態的,如何儲存狀態?

由於http是一種無狀態的協議,因此無論是客戶端還是伺服器都不記錄http的相關資訊。這樣設計一方面減輕了伺服器端的負載,另一方面減小了http請求的開銷。但是針對某些特殊的場景,需要時刻記錄使用者的相關資訊,這該如何處理呢?

cookie :

客戶端第一次訪問,伺服器在http響應頭中新增set-cookie資訊,其值的格式通常是name = value的格式。瀏覽器收到響應後會根據頭中的字段儲存cookie,下一次訪問時在請求頭中附帶cookie內容,供伺服器根據cookie值進行後續處理。

cookie的內容主要包括:名字,值,過期時間,路徑和域。cookie機制採用的是在客戶端保持狀態的方案。

與 cookie 相對的乙個解決方案是 session:session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表的結構(也可能就是使用雜湊表)來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識- 稱為session id,如果已包含乙個session id則說明以前已經為此客戶端建立過session,伺服器就按照session id把這個session檢索出來使用(如果檢索不到,可能會新建乙個),如果客戶端請求不包含session id,則為此客戶端建立乙個session並且生成乙個與此session相關聯的session id,session id的值應該是乙個既不會重複,又不容易被找到規律以仿造的字串,這個session id將被在本次響應中返回給客戶端儲存。 儲存這個session id的方式可以採用cookie(一般這個cookie的名字都是類似於seeesionid),這樣瀏覽器下次發請求的時候,這個session id會被放置在請求頭中,和cookie一起傳送回來。伺服器再通過記憶體中儲存的session id跟cookie中儲存的ssession id進行比較,並根據id在記憶體中找到之前建立的session物件,提供給請求使用,也就是伺服器會通過session儲存乙個狀態記錄,瀏覽器會通過cookie儲存狀態記錄,伺服器通過兩者的對比實現跟蹤狀態,這樣的做,也極大的避免了cookie被篡改而帶來的安全性問題。

url重寫

由於cookie可以被人為的禁止,必須有其他機制以便在cookie被禁止時仍然能夠把session id傳遞歸伺服器。經常被使用的一種技術叫做url重寫,就是把session id直接附加在url路徑

100-199 :指定客戶端應相應的某些動作。

200-299 :表示請求成功。

300-399 :重定向。

400-499 :客戶端的錯誤。

500-599 :伺服器錯誤。

介面測試知識點

介面大體分為 websevice介面 請求報文格式是body date,返回報文是xml格式 http api介面 請求報文格式是value key,返回報文是jsonp 介面文件的組成部分 可以檢查頁面上發現不了的bug,如繞過前端頁面的一些操作是否具有安全性 檢查系統的異常處理能力 安全性 介面...

測試 介面測試簡要知識點

介面測試?程式內部的介面和系統對外的介面 介面大體分為 websevice介面 soap協議提供http傳輸,請求返回報文是xml格式,實用工具有 jmeter loadrunner等 注 soap是簡單物件訪問協議,基於xml的協議,使用http傳輸,http api介面 協議http,請求報文格...

測試知識點

1.軟體生命週期概念 定義,設計,實施,測試,部署,執行,維護。2.v模型 需求分析,概要設計,詳細設計,編碼,單元測試,整合測試,系統測試,驗收測試。3.軟體測試的原則 1 測試顯示缺陷的存在 2窮盡測試是不可能的 3測試盡早介入 4缺陷集 群性 80 20 原則 5 殺蟲劑悖論 6測試活動依賴於...