JMeter有一個很強大的功能就是能夠用來作接口測試。html
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。正則表達式
咱們從接口測試中涉及到的一些基礎知識講起。算法
Java狹義接口與API的區別是什麼?編程
首先我想解釋一下接口,由於原來這裏讓我傻傻搞不懂。Java裏的Interface是接口,API也是接口,可是在接口測試中咱們測試的是哪種?他們有沒有什麼區別?其實,他們是有區別的。編程語言
我去找尋了一下我認爲寫得比較好的標準解釋:post
Java接口是狹義的接口,是藉由Interface 定義的結構,接口中只對方法作定義,不作實現。具體實現由最終實現接口的類提供。Java 是強類型的語言, interface 做爲一種類型,能夠用於聲明變量,以接口類型聲明的變量,咱們只關心它實現了接口聲明的方法,並不關心實際上引用的是哪一個類的對象。編碼完成以後,經過傳入接口的不一樣實現類的對象,從而在不改變調用方代碼的狀況向下改變程序的功能,實現多態。學習
而API(Application Programming Interface,應用程序編程接口):是應用程序和模塊之間相互溝通的方式。提供某些功能的應用程序或者模塊爲了與其它程序相互溝通,對外公開了某些功能的調用方式方法,這一套方式方法就是 API 。測試
通俗的說,就是前者是編程語言中使用的,沒有具體實現的抽象的定義,後者實際上是一個已經包含了邏輯的可執行的程序,供外部使用的。編碼
而咱們在接口測試中測試的對象就是所謂的API。 url
那什麼是Token呢?
在我看來,Token就是相似暗號,令牌的一個東西,它是一個很長的一段無序的用來驗證身份的字符串。在測試接口的時候,接口文檔中首先會給出一個獲取Token的地址,這每每是一個get請求,須要獲取相應的密鑰傳入get請求的url中,這個get請求的響應數據中就包含Token,而且每次獲取到的token是不相同的,讓咱們看看他究竟是什麼東西。
整個Token包括tokenType和value。tokenType是一個固定爲bearer的數據,value是一個無序字符串。
注意:tokenType固定是‘bearer’,可是並不表明世界上每個Token的tokenType都是這個值。這是由於每一個人採起的Token生成算法不一樣,其實有其餘的Token生成算法,本章末尾給出Token其餘算法的鏈接。
GET/POST請求的區別深度分析,區別真的那麼簡單嗎?
GET/POST的請求的差異我想每一個學計算機的同窗都知道,可是你們通常都只知道GET請求把參數包含在URL中,POST經過Request body傳遞參數。可是咱們這裏是深度分析,怎麼能說這種答案呢?
GET/POST請求有一個重大區別:GET產生一個TCP數據包,POST產生兩個TCP數據包。具體的這裏不作講述,文章末會給一個頗有趣的文章鏈接。
正是由於value在每次獲取的時候都是一個無序的字符串,而Token這個是一個隨時變化的變量,而且這個變量即將作爲將要測試的接口的請求參數,怎麼辦呢?
所以,咱們須要實時記錄token的值,將其設置爲變量給Token取變量名(好比A,B等等,方便調用),實時的傳入POST接口的參數中。
怎麼實時獲取變量參數呢?
咱們須要用到正則表達式提取器或者josn提取器(由於返回的josn數據),也許還有其它方法。我這裏用的是Josn Extractor,相似這樣。
正則表達式與josn數據的提取規則這裏不作講述,能夠百度學習一下。
可是,Token的值寫在POST請求的什麼位置呢?Request body中嗎?不,Token屬於POST請求的頭信息,是須要在HTTP請求下添加頭信息管理器的,相似這樣。
而Debug Sampler 能夠配合察看結果樹這個監聽器,能夠很直觀的判斷Token的提取成功與否。(也能夠沒有)
至於POST請求的請求參數則寫在Body Data裏面(是Josn數據),相似這樣。
Josn數據的格式我想也沒必要多說。大概流程就是這樣,有疑問的朋友歡迎留言。