用JMeter能夠對Http請求進行Performance Test,來分析哪些方法花費的時間多,哪些方法花費的時間少,有了這樣的分析結果後,咱們就能夠集中力量來改進費時的方法。css
官方文檔請參考以下連接:web
http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf apache
關於Jmeter的更多問題與解決方案,依然能夠參考以下連接:瀏覽器
http://www.technix.in/jmeter-problems-and-solutions/post
安裝和運行JMeter須要配置Java環境,這裏省略具體步驟~~測試
1):雙擊jmeter.bat來運行此程序後,以下圖建立一個WorkBench線程
2):保持基本的設置不變,能夠看到咱們採用8080這個端口來監聽HTTP的請求,在截圖的最下方有個Start按鈕,開啓以後能夠監聽由此代理的HTTP請求3d
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進行去進行調試,去肯定具體的問題。
。。。