Jmeter(二十七) - 從入門到精通 - Jmeter Http協議錄制腳本(詳解教程)


------------------------------------------------------------------- 

轉載自:北京-宏哥 https://www.cnblogs.com/du-hong/p/13667219.html 

-------------------------------------------------------------------- 

Jmeter(二十七) - 從入門到精通 - Jmeter Http協議錄制腳本(詳解教程)

 

1.簡介

  LoadRunner的錄制功能讓性能測試腳本編寫對於不懂代碼的人變成了一件容易上手的事,但是由於LoadRunner收費高昂,龐大,一般企業很少用,除非必須使用。Jmeter作為性能測試中的王者也少不了提供錄制功能。Jmeter的錄制除了自身提供的HTTP代理方式進行錄制的原理是解析網絡數據包,按HTTP協議包裝成Http Request、Http Response等對象,這些對象就是我們可以清楚方便認識的東西。

2.Jmeter配置代理進行錄制

2.1瀏覽器配置代理

1.打開瀏覽器(宏哥這里以IE11為例)順着右上角 -【Internet選項】-【連接】-【局域網設置】進入如圖所示頁面:

2.在“代理服務器”中按上圖進行設置,可以把“localhost”換成127.0.0.1,8080換成你想設置的端口,主要不要與別的端口產生沖突,如果有,請換成別的端口,一般4位的端口沖突的機會比較少;配置好以后點擊“確定”按鈕。

2.2Jmeter中配置代理

 1.首先在JMeter中添加一個線程組,如下圖所示:

 2.添加HTTP代理服務器節點,如下圖所示:

3.設置代理服務器,端口號設置就是我們在瀏覽器中設置的端口,如下圖所示:

4.目標控制器:決定將來我們錄制的腳本放在那個目錄下(測試計划是一顆目錄樹,這個目錄就是樹中的一個節點)。你可以在【測試計划】-【線程組】下面添加節點,然后指定腳本放在此節點,宏哥在線程組增加了【簡單控制器】節點,然后就可以在“目標控制器”處選擇到它。如下圖所示:

5.分組:錄制腳本的時候,會增加很多節點,這些節點我們可以給它分個組,方便我們查看和管理。對於http請求我們可以把每一個URL看成一個組,這里可以更好地理解。分組有如下選項,如下圖所示:

選項參數說明:

(1)不對樣本分組:羅列出錄制到的所有http請求。

(2)在組間添加分隔:加入以分割線命名的簡單控制器。

(3)每個組放入一個新的控制器:每個URL產生的請求放在一個 控制器下。

(4)只存儲每個組的第一個樣本:我們知道一個URL產生的HTTP請求可能不止一個,一張圖片、一個樣式都會是一個HTTP請求,錄制時將會產生很多的HTTP請求,但有時候測試我們需要考慮緩存,實際上一些圖片不用每次都去下載,我們也不關心這些圖片產生的負載,另外對於互聯網多數會用的CDN等圖庫來存儲這些圖片、CSS等靜態資源。所以理論上我們可以在腳本中忽略它,但是我們必須根據實際情況來選擇是否忽略。因此如果忽略,我們就可以選擇此項,只錄制產生動態數據的HTTP請求。

(5)每個請求放入一個新的事務控制器:宏哥用大白話解釋就是每個URL的請求放入一個事務中,不管它有多少HTTP請求,只要是這個URL請求產生的。

其他界面參數說明:

(1)記錄HTTP信息頭:把Header頭信息也錄制下來。

(2)添加斷言:這個大家都知道,就是添加檢查點,在錄制的時候加入空的檢查點,后續我們自己填寫斷言(檢查)規則。

(3)Regex matching“檢查點用正則表達式來匹配內容。

(4)Http Sampler settings:與“http請求”設置方法一樣。

2.3開始錄制

1.全部配置好以后,在【HTTP代理控制器】中按下【啟動】。然后子啊瀏覽器中瀏覽Web頁面(你要測試的功能),就可以錄制下這些HTTP請求。錄制狀態下的“啟動”按鈕是灰色的不可以點擊,非錄制狀態下的“啟動”按鈕可以點擊。

2.在錄制時每個js、png、swf及動態請求(需要服務器動態取數據)都會錄制下來。所以我們選擇“只存儲每個組的第一個樣本”,但這樣通常優惠有動態請求被漏掉,所以HTTP代理來進行錄制還不是很高效,因此我們換一個工具(Badboy)來錄制,甚至有能力的話,我們直接手寫腳本(宏哥推薦這種方式)。

注意:
現在越來有多的系統或者網站的前端架構使用動態加載的方式(Ajax+JS+JSON)來處理,對於這種應用,我們使用JMeter或者LoadRunner進行錄制都不能完成任務。不相信的童鞋們可以錄制一下去哪兒官網。

3.點擊啟動后,會提示:Jmeter導入https安全證書,啟動Jmeter的HTTP代理服務器,會在Jmeter安裝路徑的bin目錄下生成一個安全證書文件:ApacheJMeterTemporaryRootCA.crt。如下圖所示:

4.在Jmeter菜單選項-> SSL管理器,導入jmeter的bin目錄下的安全證書文件ApacheJMeterTemporaryRootCA.crt。

5.點擊SSL管理器,查看導入的證書,如下圖所示:

6.在JMeter的bin目錄下,找到證書雙擊打開證書,將證書導入瀏覽器中,如下圖所示:

7.代理服務器重新啟動后,會打開如下所示界面,Recorder:Trnsactions Control。此時開始錄制腳本,在瀏覽器中輸入要訪問的網址,進行相關操作。這里以度娘為例,錄制訪問度娘,然后查詢:北京-宏哥的腳本。

這個彈框用處,為了方便快捷的填寫錄制時,需要編寫的事務名稱所使用;不需要每次去打開jmeter的界面去修改事務名稱,大家可以忽略它。

8.在瀏覽器輸入度娘網址后,進入度娘后,輸入框輸入:北京-宏哥,點擊查詢。查看Jmeter線程組下的錄制控制器是否已經有請求產生。若產生請求,錄制腳本成功。如下圖所示:

9.錄制成功后,請求中也會記錄發送的信息,如服務器名稱、端口號、路徑、和請求時的參數等,如下圖所示:

10.選中“錄制控制器”,右鍵添加“觀察結果樹”,運行腳本,對所錄制的腳本進行調試,這里是驗證錄制登錄成功的腳本,如下圖所示:

11.精簡腳本,對除訪問度娘,查詢北京-宏哥以外的請求進行刪除。如下圖所示,在察看結果樹可以看到運行后的腳本響應,在響應體中看到<百度一下>,代表訪問成功,看到北京-宏哥的查詢結果,代碼查詢成功,至此錄制完成。關閉Jmeter代理服務器。如下圖所示:

 查詢北京-宏哥請求的結果,如下圖:

3.小結

 1.可能有些同學遇到Jmeter錄制前訪問正常,設置代理卻無法訪問。

根據宏哥的分析可能性有幾種,一類是工具本身的代理進程未啟動,一類是端口被占用,另一類是證書問題。

可能性最大的都是證書問題,http的請求可能還好,https的請求就可能涉及到證書。安裝bin目錄下的證書即可(具體證書安裝的方法可以問一下度娘,不過也簡單類似傻瓜式的安裝軟件下一步,下一步就可以了)。其實按照宏哥的步驟應該是沒有什么大問題的。

2.錄制完以后,不能正常的訪問互聯網,注意要關閉瀏覽器的代理后,就可以正常訪問了。

·好了,今天就分享到這里,不會寫腳本的童鞋們這次有口福了!!!


免責聲明!

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



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