用JMeter進行Performance Test


用JMeter可以對Http請求進行Performance Test,來分析哪些方法花費的時間多,哪些方法花費的時間少,有了這樣的分析結果后,我們就可以集中力量來改進費時的方法。

官方文檔請參考如下鏈接:

http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf 

關於Jmeter的更多問題與解決方案,依然可以參考如下鏈接:

http://www.technix.in/jmeter-problems-and-solutions/

 

安裝和運行JMeter需要配置Java環境,這里省略具體步驟~~

 

1):雙擊jmeter.bat來運行此程序后,如下圖創建一個WorkBench

 

2):保持基本的設置不變,可以看到我們采用8080這個端口來監聽HTTP的請求,在截圖的最下方有個Start按鈕,開啟之后可以監聽由此代理的HTTP請求

 

3):接上一步驟可以將我們的FireFox瀏覽器設置由本地的8080端口進行代理,那么當上圖Start之后,由FireFox所發出HTTP請求將會被JMeter錄制下來

 

4):根據下面的截圖添加一個Thread Group

 

5):可以對Thread Group的屬性進行設置,模擬多個用戶進行HTTP請求

 

6):如下圖所示,添加View Results in Table 和 View Results Tree 可以對運行結果進行分析,當然了還可以添加其他的控件進行更加直觀的比較結果

 

7):點擊第2步驟中的Start按鈕,用瀏覽器對指定的web站點進行訪問操作來錄制整個過程中所有的HTTP請求,最終的結果如下所示(當然了我們刪除了一些不必要的css,js等文件的加載過程),並且對所有post請求做以標識(在名字的后面添加-post),整個過程錄制完畢后,WorkBench下的HTTP(s) Test Script Recorder就沒有用了,我們可以直接刪除掉,並且我們可以把FireFox中的代理設置回復默認狀態,因為我們之后的HTTP請求的發送都是由JMeter所錄制好的腳本來完成的,這也就是完全模擬了用戶的操作過程,並且用多個線程去模擬多個用戶。

 

8):在下面的截圖中我們發現有些步驟(GET)是灰掉的,原因我們的POST請求中選擇了'Follow Redirects'這個選項,那么JMeter會將后續的GET請求步驟合並到前面的POST請求中;這樣的話會引出另外一個問題,就是此POST請求所記錄的時間包含了POST請求本省以及接下來的GET請求所花費的時間之和,所以我們可以講POST請求中的‘Follow Redirects’選項去掉,Enable對應的GET請求來更加准確的記錄所有請求所花費的時間

 

9):上面的步驟操作完畢后,我們直接運行所錄制好的腳本會發現,POST請求都失敗,如下圖所示

 

10):上圖中出現錯誤的具體原因是在每一個POST請求中都有__RequestVerificationToken這個參數,這個參數的值在每次請求的時候都是不同的,實質上這就是一個Cookie

 

11):因此我們要像下圖所示的樣子添加一個HTTP Cookie Manager

 

12):在像下圖所示的樣子添加一個Regular Expression Extractor

 

13):填寫對應的設置(<input name="__RequestVerificationToken" type="hidden" value="(.*?)" />)

 

14):然后將所有用到的地方都換成這個變量

 

15):在運行一遍,就可以發現測試都通過了


16):接下來我么繼續完善,如下圖所示添加User Define Variables組件

 

17):將我們所用到的可以共用的數據,以全局變量的形式添加到User Define Variables組件中,這樣管理起來更加的方便規范

 

18):用變量替換所有的值

 

19):用.csv文件可以實現跟全局變量相同的功能,如下圖所示.csv文件的具體內容,其中的第一行Header值表示的就是此變量的名字,可以用{!LPN}這種方式去訪問

 

20):參考如下截圖添加CSV Data Set Config組件

 

21):將.csv的文件名填寫到filename中(當然了這里我們是把.csv與當前的.jmx放到了同一個目錄下)

 

22):然后替換所有變量

 

23):最終的運行結果的解析

 

由於JMeter完全模擬了用戶操作的流程,和用戶在瀏覽器中操作的過程是一樣的,所以可以用VS去attach對應的w3wp.exe進行去進行調試,去確定具體的問題。

。。。


免責聲明!

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



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