jmeter腳本錄制方法可以分三種,前幾天寫的一篇文章中,已介紹了前兩種,今天來說下第三種,手工編寫腳本,建議使用這一種方法,雖然寫的過程有點繁瑣,但調試腳本比前兩者方式都要便捷。
首先來看下三種方式的比較吧,不然看不出什么。
三種方式的優劣
badboy
jmeter 代理錄制
手工編寫
手工編寫腳本
一般通過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環境完整
jmeter環境要搭建好,搭建環境步驟在這篇帖子中已有詳解:http://www.cnblogs.com/hong-fithing/p/7640014.html
錄制步驟
注意:先把請求添加進去,再去調試腳本。
第一步:添加線程組
打開jmeter,在測試計划中添加一個線程組,如下:

第二步:添加HTTP請求
在線程組中添加一個HTTP請求,HTTP請求添加方法: 線程組 -->右鍵添加 -->Sampler -->HTTP請求如下:

第三步:添加HTTP請求默認值
因為默認值設置好后,就對HTTP請求有很大的方便,詳細見下:

將協議、ip或服務器名稱、端口號、字符格式設置好,在之后的http請求就不用設置了,相當於設置好了一個全局的默認值:
需要注意的是:http協議的端口是80,https協議的端口是443,別混淆了。

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

如下:

第四步:手工寫腳本
手工編寫腳本注意事項:不要多空格也不要少空格,符號也不要掉,細心會給自己調試腳本節省很多力氣。
論壇登錄,使用fiddler抓取到四個請求
如下:

1.編寫第一個接口
將第一個請求的請求頭復制到jmeter中的http請求中

由於剛才設置了HTTP請求默認值,所以現在在HTTP請求中,協議,ip,端口號都不用填寫了,是不是很方便了。
2.編寫第二個接口
點擊第二個請求,post請求,注意有請求參數:

參數查看如下:

在jmeter中設置如下:

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

添加HTTP請求頭管理器:

在登錄下添加HTTP請求頭管理器,設置如下,要添加在登錄下,這是作用域的問題,這樣設置只對登錄請求有效,在外面的話,就是對全局有效了。此處需要注意。添加請求頭,是為了能讓服務器認為用軟件發出的請求也是瀏覽器發出的,不會拒絕請求。
3.編寫第三個接口
點擊第三個請求,查看請求頭:

有參數值:

在jmeter中設置如下:

4.編寫第四個接口
點擊第四個請求,查看請求頭:

在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相關的文章,有錯之處歡迎指正。
