接口測試遇到500報錯?別慌,你的頭部可能有點問題!


問題:接口的入參、地址、請求方式都設置對了,但是請求仍返回500,報系統錯誤是為啥?

在日常進行接口測試過程中,我們都知道一個完整的接口HTTP請求一般包括四大部分:請求信息頭、請求體、響應信息頭、響應體、請求方式(post/get等)。在進行測試時我們比較關心的是請求入參,也就是請求體的信息,從而忽略了請求信息頭的重要性。若是未正確定義信息頭,會導致接口請求失敗。

本文主要帶大家簡單了解下信息頭的作用。Jmeter提供了HTTP Header Manager信息頭管理器,用於定義規范客戶端和服務端之間HTTP接口請求的默認規范。

注意:HTTP 的請求方式有 8 種,但是我們在實際應用中常用的也就是 get 和 post,其他請求方式也都可以通過這兩種方式間接的來實現。

常用的標准

常用的HTTP接口請求頭字段有如下:

l Accept

設置接受的內容類型

l User-Agent

用戶代理的字符串值,一般用於告訴服務器客戶端使用的操作系統/瀏覽器的名稱和版本等信息

l Content-Type

設置請求體的MIME類型(適用POST和PUT請求),告訴客戶端實際返回的內容的內容類型,常用application/json;charset=UTF-8,定義接口響應返回的數據是json格式,編碼格式是UTF-8。

l Content-Length

設置請求體的字節長度

l Accept-Encoding

設置接受的編碼格式

l Accept-Language

設置接受的語言

l Origin

標識跨域資源請求(請求服務端設置Access-Control-Allow-Origin響應字段)

l Referer

設置前一個頁面的地址,並且前一個頁面中的連接指向當前請求,意思就是如果當前請求是在A頁面中發送的,那么referer就是A頁面的url地址

l Cookie

Cookie是遠程服務端返回的識別用戶身份信息,該信息存儲在客戶端,客戶端每次進行操作時,會通過HTTP協議和服務器端進行Cookie的交互,驗證身份信息正確才可交互成功(大多數需要登錄后操作的接口上面會比較常見)。

l Set-Cookie

設置HTTP Cookie,用來存儲一些用戶信息以便讓服務器辨別用戶身份的,一般是服務端返回的用戶身份信息(大多數需要登錄的接口上面會比較常見)

......

Header信息獲取方式

接口的信息頭到底定義了哪些內容,可以通過以下渠道獲得:

1. 開發提供接口文檔

2. 通過抓包工具charles抓取查看Request的Headers

下圖為方式2,通過抓包工具查看到的某接口的請求信息頭(Request-Headers)


 

 

實踐

目標:某系統登錄接口已定義響應數據(Response)返回的格式是json格式,使用jmeter的HTTP Request、HTTP Header Manager成功實現登錄。

配置

菜單路徑

 


 

配置內容:

從抓包工具charles上可獲取到接口需要定義Content-Type:application/json;charset=UTF-8(響應數據為json格式,編碼方式為UTF-8)


 

未定義信息頭

下圖中POST方式的登錄接口未設置HTTP Header Manager,運行jmeter腳本發起接口請求時默認Content-Type:text/plain(純文本格式),所以請求會報錯,返回狀態碼500。

 


 

 

正確定義信息頭

正確定義信息頭:Content-Type:application/json

信息頭配置正確后,運行jmeter腳本接口請求成功,返回狀態碼200。

 


 

 

其他常見的媒體格式

text/html :HTML格式

text/plain :純文本格式

text/xml :XML格式

application/xhtml+xml :XHTML格式

application/xml:XML數據格式

application/json:JSON數據格式

......

本文僅分享由於請求信息頭(Headers)未定義而引起的錯誤碼500,不排除其他原因引起。

作  者: 兜里有糖 

出  處:微信公眾號:自動化軟件測試平台

版權說明:歡迎轉載,但必須注明出處,並在文章頁面明顯位置給出文章鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM