使用Jmeter對一個接口地址或者一個頁面地址執行N次請求,下面來說說怎么建立一個測試腳本(也稱為”測試計划”)。
1. 運行Jmeter.bat
雙擊"Jmeter.bat"文件,稍等片刻后Jmeter會被啟動,如下圖所示:

2. 建立線程組
在節點"測試計划"下,建立1個被稱作"線程組"的東西,如下圖所示:
這個"線程組"的作用是什么呢?
它的作用就是控制線程的數量。

單擊"線程組"之后,就算建立完成了。效果如下圖所示:

3. 建立HTTP請求默認值
在節點"線程組"下,建立1個被稱作"HTTP請求默認值"的東西,如下圖所示:

單擊"HTTP請求默認值"之后,就算建立完成了。效果如下圖所示:

4. 填寫"HTTP請求默認值"的表單(以”豆瓣-電影”為例)
"服務器名稱或IP"寫:movie.douban.com
其它地方依照下圖所示寫,同時當然要符合項目需求,只是大部分的接口測試是這樣的而已。
這樣寫好后,就可以為接下來的工作減輕工作量

5. 建立單個請求
在節點"線程組"下,建立1個被稱作"HTTP請求"的東西,如下圖所示:
我想建立2個"HTTP請求",這樣才能體現出"HTTP請求默認值"的效果。

單擊"HTTP請求"之后,就算建立完成了。效果如下圖所示:
前面已經說過"我想建立2個'HTTP請求',這樣才能體現出'HTTP請求默認值'的效果。",所以我建立了2個'HTTP請求'。

6. 填寫"HTTP請求"的表單(以”豆瓣-電影”為例)
第1個HTTP請求的表單
"路徑"寫:/subject/1835843/
其它地方保持默認的值就可以了

第2個HTTP請求的表單
"路徑"寫:/subject_search?search_text=Night+at+the+Museum
其它地方保持默認的值就可以了

為什么不需要寫表單的其它域值?
因為在"HTTP請求默認值"已經寫過了。
為什么要在"HTTP請求默認值"提前寫這一切?
因為通常情況下,需求是對同一個網站的不同頁面執行性能測試。那么其實通用的一些域值都是相同的,為了減輕工作量沒必要每次都寫,而是寫在"HTTP請求默認值"這1個東西里面就可以了。
為什么路徑只寫了一半?
因為前一半"movie.douban.com"已經在"HTTP請求默認值"寫過了。
7. 建立1個監聽器
在節點"測試計划"下,建立1個被稱作"查看結果樹"的東西,如下圖所示:
當然了你也可以建立"圖形結果"、"斷言結果"、"聚合報告"、"用表格查看結果"等等其它形式的監聽器。每個類型的監聽器的作用都是收集性能測試結果,只是呈現結果的樣式不同,這個要結合具體的業務來定,或要結合開發人員"希望觀察到哪些數據"來定。

單擊"查看結果樹"之后,就算建立完成了。效果如下圖所示:

8. 只保留1個HTTP請求
因為,每1個性能測試腳本,只是針對1個接口(或1個頁面)執行1次或N次請求。
所以,需要在測試腳本執行之前,只保留待測接口(或頁面)的這1個"HTTP請求"。
那么,我們可以看到當前的這個測試計划內,包含了2個"HTTP請求"。
於是,我們暫且"禁用"其中的1個就可以了。效果如下圖所示:

其中1個"HTTP請求"被"禁用"后的效果。如下圖所示:

9. 執行1次測試腳本
切換到"線程組"
可以看到默認的線程數是"1",循環次數是"1"
Ramp-Up Period(in seconds)的意思是指"希望在幾秒內啟動所有的線程"

執行腳本的操作:Ctrl+R
在執行腳本前可先執行"清空測試結果"的操作:Ctrl+E
10. 查看測試結果
切換到"查看結果樹"
單擊右側列表內的這1個"HTTP請求"
右側可以分別查看"取樣器結果"、"請求"、"響應數據"TAB下的數據



11. 執行另1個HTTP請求
方法同第8小節的內容。
具體就是:
步驟[1] - 啟用另1個HTTP請求
步驟[2] - 同時禁用其它的HTTP請求

12. 20個線程數+循環2次的方法
切換到"線程組"
設置線程數寫"20",循環次數寫"2"
由於線程數比較少,所以不需要考慮如何設置Ramp-Up Period(in seconds)。

13. 20個線程+腳本運行60秒
切換到"線程組"
設置線程數寫"20"
循環次數寫"永遠"
勾選"調度器"->持續時間(秒)寫"60"
由於線程數比較少,所以不需要考慮如何設置Ramp-Up Period(in seconds)。

-end
