Jmeter 接口測試知識
參考資料
* [jmeter](http://jmeter.apache.org/)
* [manual]( http://jmeter.apache.org/usermanual/index.html )
jmeter簡介
jmeter 是一款 java 開源的測試工具.
1. 多協(xié)議支持 ,http,https ,soap/rest, ftp ,jdbc ...
2. 多線程并發(fā)
3. GUI界面
4. more...
名詞解釋
* test-plan :
測試計劃 , 測試計劃中有一個函數(shù)測試模式, 選中該選項后則從服務(wù)器請求的結(jié)果會保存到指定位置, 一般不選擇,因為影響性能.,
* thread-group :
線程組 ,所有的samples,controllers 比需在thread group下面創(chuàng)建.顧名思義,線程組用來控制所有測試執(zhí)行的線程
* Controllers :
控制器 ,兩種分類,
一種是samplers(樣板),主要負責(zé)請求處理,比如http request Sampler 講發(fā)送一個http請求;
一種是邏輯控制器.主要負責(zé)定制請求邏輯,比如,交替控制器 ,可以交替的處理兩個樣板
* Samplers :
樣本(采集器), 主要用于處理jmeter的請求和響應(yīng).提供多種協(xié)議支持的樣本
* Listeners :
監(jiān)聽器, 主要監(jiān)控請求和響應(yīng)的數(shù)據(jù)
* Timers :
定時器 , 線程組執(zhí)行樣本如果不設(shè)置延遲,則瞬間壓力非常大
* Assertions:
斷言 , 驗證響應(yīng)結(jié)果.
* Pre-Processor:
前置處理器,顧名思義,請求前的處理
* Post-Processor:
后置處理器,顧名思義, 響應(yīng)后的處理
請求順序
0. Configuration elements
1. Pre-Processors
2. Timers
3. Sampler
4. Post-Processors (unless SampleResult is null)
5. Assertions (unless SampleResult is null)
6. Listeners (unless SampleResult is null)
Web 接口測試demo
jmeter 可以測試接口的功能和性能.
通過jmeter自帶的tempalte 我們可以了解一些jmeter 大致的流程. 那么 ,我們假設(shè)一個場景: 用戶登錄,登錄之后獲取到我的信息.
這個場景主要需要,用戶請求登錄,登錄之后返回用戶token, 獲取到用戶token 訪問用戶信息接口,查詢用戶信息.首先,我們來實現(xiàn)功能測試.
流程介紹
1. 創(chuàng)建一個線程組 ,默認(rèn)線程數(shù)1 ,循環(huán)2
2. 創(chuàng)建"用戶定義的變量" 來設(shè)置一些公共的變量
3. 創(chuàng)建一個默認(rèn)的 "http請求默認(rèn)值"(所謂請求默認(rèn)值,顧名思義,如果下面不指定,則這個就是標(biāo)配)
4. 正常的流程,我們需要測試用戶登錄之后的一系列操作, 所以這里,我們創(chuàng)建邏輯控制器 "僅一次控制器" 來確定無論多少次循環(huán)都執(zhí)行一次登錄
5. 鑒于我們的登錄需要傳遞一個json 的請求參數(shù),這里需要創(chuàng)建一個自己使用的"http信息頭管理器" ,設(shè)置content-Type 為 application/json
6. 創(chuàng)建一個sampler ,"http請求" 命名為 登錄.Post ,Body-Data 傳遞一個json 的用戶名和密碼
7. 創(chuàng)建一個屬于登錄自己的斷言, 判斷成功必須包含一個assess_token
8. 創(chuàng)建一個屬于登錄自己的監(jiān)聽 "結(jié)果樹"
9. 我們需要獲取到token的值,所以,創(chuàng)建一個后置處理器 "正則表達式提取器",別忘了apply to: 指定main sample and sub-samples (我們的樣板
不在一個層級)
10. 創(chuàng)建一個"Http信息頭管理器" (這個頭信息默認(rèn)為下面的功能提供默認(rèn)攜帶token)
11. 創(chuàng)建另一個功能接口,"http請求" ...巴拉巴拉,按照以上順序創(chuàng)建斷言,結(jié)果樹
**總結(jié)**
我們在使用過程中測試了scope , 一個請求的范圍,默認(rèn)值得范圍 ,最后我們看到,jmeter是有作用域的,雖然 官方文檔中介紹了作用域,但是寫一個demo
才感受到有了作用域的強大.