Jmeter腳本錄製方法(二)手工編寫腳本(jmeter與fiddler結合使用)

jmeter腳本錄製方法可以分三種,前幾天寫的一篇文章中,已介紹了前兩種,今天來說下第三種,手工編寫腳本,建議使用這一種方法,雖然寫的過程有點繁瑣,但調試腳本比前兩者方式都要便捷。

首先來看下三種方式的比較吧,不然看不出什麼。

三種方式的優劣:

badboy:

  1、有時候錄製不了,兼容性較差  

  2、post請求的時候,如果鏈接中有參數、body裏面也有參數,都會放在body裏面

jmeter 代理錄製:

  1、請求抓取過多   

  2、配置代理等操作比較繁瑣

手工編寫:

  要一個個請求手工去寫

手工編寫腳本

一般通過fiddler抓包或者開發提供的接口設計文檔的形式,在Jmeter的GUI界面操作進行腳本生成,還可以使用編寫java代碼打包成jar包進行生成等方式。 

在Jmeter手工製作腳本之前,先要獲取HTTP請求的相關信息,如請求地址、請求參數、 請求類型等,一般情況下,有兩種方法獲取這些相關信息:

  1、根據開發提供的接口設計規範文檔;

  2、使用第三方抓包工具如Fiddler、 Charles等抓包, 然後從中提取信息。

在介紹手工編寫腳本時,就以phpwind5.0論壇登錄爲例來講解,使用的工具是jmeter和fiddler。

準備工作

1.把fiddler加上過濾功能,添加如下正則表達式,如下所示:

REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js)(\?.*)?$

2.若phpwind搭建在虛擬機中的話,要保證物理機與虛擬機的網絡暢通,使用ping命令即可。

3.jmeter環境要搭建好,搭建環境步驟在這篇帖子中已有詳解:http://www.cnblogs.com/hong-fithing/p/7640014.html

錄製步驟:

注意:先把請求添加進去,再去調試腳本。

第一步,打開jmeter,在測試計劃中添加一個線程組,如下:

第二步,在線程組中添加一個HTTP請求

HTTP請求添加方法: 線程組 -->右鍵添加 -->Sampler -->HTTP請求如下:

 

第三步:添加一個HTTP請求默認值

因爲默認值設置好後,就對HTTP請求有很大的方便,詳細見下:

 

將協議、ip或服務器名稱、端口號、字符格式設置好,在之後的http請求就不用設置了,相當於設置好了一個全局的默認值:

需要注意的是:http協議的端口是80,https協議的端口是443,別混淆了。

在http默認值中的Adcanced下設置代理服務,這樣就可以在fiddler中抓取到該腳本請求:

如下:

第四步:手工寫腳本

手工編寫腳本注意事項:不要多空格也不要少空格,符號也不要掉,細心會給自己調試腳本節省很多力氣。

論壇登錄,使用fiddler抓取到四個請求

如下:

 

將第一個請求的請求頭複製到jmeter中的http請求中

由於剛纔設置了HTTP請求默認值,所以現在在HTTP請求中,協議,ip,端口號都不用填寫了,是不是很方便了。

點擊第二個請求,post請求,注意有請求參數:

參數查看如下:

在jmeter中設置如下:

要設置請求頭,第二個請求的請求頭如下:

添加HTTP請求頭管理器:

在登錄下添加HTTP請求頭管理器,設置如下,要添加在登錄下,這是作用域的問題,這樣設置只對登錄請求有效,在外面的話,就是對全局有效了。此處需要注意。添加請求頭,是爲了能讓服務器認爲用軟件發出的請求也是瀏覽器發出的,不會拒絕請求。

點擊第三個請求,查看請求頭:

有參數值:

在jmeter中設置如下:

點擊第四個請求,查看請求頭:

在jmeter中設置如下:

做完如上操作,基本的腳本就已經寫完了,只剩腳本調試了,四個請求添加完成如下:

腳本調試

登錄調試涉及到的是關聯,之前我專門寫了一篇關於關聯的文章,可參見:http://www.cnblogs.com/hong-fithing/p/7650762.html,主要使用jmeter中後置處理器下的正則表達式提取器,使用正則表達式。

何處需要關聯?簡單來說,就是每次腳本運行,有些特定值是動態變化的,這地方就需要關聯。

登錄腳本中,csrf_token和statu的值每次都是變化的,所以這兩個地方需要關聯。在知道了何處需要關聯了,但正則表達式加在哪,去哪裏關聯呢?

先在腳本中添加個察看結果樹,如下:

運行次腳本,在打開首頁的數據中查找到csrf_token值,如下:

說明在首頁打開就已經有這個值產生,同樣也可以在fiddler中去查看,所以正則表達式提取器就添加在第一個請求下,如下操作:

由於引用名稱設置的是token,所以在登錄處的csrf_token值改爲:

其次就是關聯statu值了,繼續在結果樹中查看,在登錄中的響應數據中有該值出現:

添加正則如下:

在下一個請求中把statu的值替換爲:

這樣就把關聯做好了,其實看到這,應該明白,關聯就是把請求連接起來,有連貫性。看,先是在打開首頁就出現csrf_token值,需要提取出來並傳給登錄的那個請求,在登錄出現的statu值,需要提取出來並傳給頁面跳轉的那個請求。這樣就實現了關聯。

再提一下這個取樣器,Debug,添加到正則表達式提取器之後,能很清晰的看到提取出來的值對不對,或者是提取到了值沒有,在調試中很方便。

手工編寫的腳本調試過程中,給大家提個醒,就是cookie,之前我在調試的時候由於沒加這個管理器,關聯取出來的值都是對的,但腳本就是不成功,最後是添加了HTTP Cookie管理器,腳本就運行成功了。

今天的手工編寫腳本就介紹到這了,之後有時間還會寫關於jmeter相關的文章,有錯之處歡迎指正。 

 

本文僅代表作者觀點,系作者@溫一壺清酒發表。
歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
文章出處:http://www.cnblogs.com/hong-fithing/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章