Jmeter錄制腳本
一乖篷、配置錄制腳本環(huán)境
1.在WorkBench上右鍵AddàNon-Test ElementsàHTTP(S) Test Script Recorder
Ps:WorkBench相當(dāng)于編寫腳本的平臺,用于錄制腳本和調(diào)試一些參數(shù),真正測試的腳本的時候不會運行咱枉。
HTTP(S) Test Script Recorder是代理冤灾,他的作用是讓本機的所有請求從這里經(jīng)過。
HTTP(S) Test Script Recorder設(shè)置
Global Settings下的Port是代理用的端口號,跟后面瀏覽器要設(shè)置的代理端口號保持一致封孙。
點擊Requests Filtering選項卡àURL Patterns to ExcludeàAdd SuggestedExcludes
會看到(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)這行迹冤,里面是過濾請求中的帶有這行字的請求,用“|”隔開
2.在WorkBench上右鍵AddàLogic ControlleràTransactionController
添加事務(wù)控制器
3.在Transaction Controller上右鍵AddàLogic ControlleràRecordingController
Recording Controller用來記錄http請求
4.打開谷歌瀏覽器設(shè)置搜索代理
至此錄制腳本的環(huán)境已經(jīng)配置完成
二虎忌、錄制腳本
1.切換到HTTP(S) Test Script Recorder代理點擊Start泡徙,出來的提示不用管
2.打開谷歌瀏覽器,輸入要測試的網(wǎng)址
下面是jsjytest.open.ha.cn登錄的所有請求
停止HTTP(S) Test Script Recorder代理
3.在Test Plan上右鍵AddàThreads(Users)àThread Group
添加線程組
這里幾個重要參數(shù)
Number of Threads(users):表示這個線程組模擬模仿多少個并發(fā)線程同時請求
膜蠢,也可以說模擬多少個用戶同時操作
Ramp-Up Period(in seconds):表示在多少秒啟動完這上面那么多個線程(用戶)
Loop Count:forever表示永久不停止線程堪藐,填數(shù)字表示每個線程(用戶)發(fā)起多少次請求,然后停止線程
Action to be taken after a Sampler error:表示如果請求失敗要執(zhí)行的操作
4.在Thread Group右鍵AddàListeneràSummary Report挑围、View Results Tree礁竞,將WorkBench里面錄制的請求復(fù)制到Thread
Group下,腳本基本就錄制好了杉辙,保存
5.如果錄制的請求有用到Cookie(一般post請求和)模捂,還要添加HTTP Cookie Manager,在Thread Group右鍵AddàConfig ElementàHTTP Cookie Manager
HTTP Cookie Manager會在登錄時記錄Cookie蜘矢,下面請求如果用到Cookie枫绅,HTTP Cookie Manager就會給請求提供cookie data。
HTTP Cookie Manager設(shè)置
應(yīng)用使用的cookies符合兼容性規(guī)范的話,JMeter的標(biāo)準(zhǔn)cookies是可以自動管理的.
如果應(yīng)用沒有指明cookies版本,同時又使用了特殊符號,JMeter調(diào)用的httpclient就不能正確管理這種非標(biāo)cookies了.(從應(yīng)用的cookies兼容性來說是有問題的.)
不考慮應(yīng)用的兼容性問題的話,需要讓JMeter能準(zhǔn)確管理這樣的cookies,就要改寫標(biāo)準(zhǔn)cookies的SPEC或者寫一個定制的也可以,改寫的目標(biāo)可以定位在commons httpclient.
以下是網(wǎng)上搜索的關(guān)于httpclient支持的cookies說明:
以下Cookies標(biāo)準(zhǔn)硼端,HttpClient3.1可以支持并淋。
RFC2109
RFC2109是W3C組織第一次推出的官方Cookies標(biāo)準(zhǔn)。理論上珍昨,所有使用版本1Cookies的服務(wù)端都應(yīng)該使用此標(biāo)準(zhǔn)县耽。HttpClient已經(jīng)將此標(biāo)準(zhǔn)設(shè)定為默認(rèn)。
遺憾的是镣典,許多服務(wù)端不正確的實現(xiàn)了標(biāo)準(zhǔn)或者仍然使用Netscape標(biāo)準(zhǔn)兔毙。所有有時感到此標(biāo)準(zhǔn)太多于嚴(yán)格。
RFC2109是HttpClient使用的默認(rèn)Cookies協(xié)議兄春。
RFC2965
RFC2965定義了版本2并且嘗試去彌補在版本1中Cookie的RFC2109標(biāo)準(zhǔn)的缺點澎剥。RFC2965是,并規(guī)定RFC2965最終取代RFC2109.
發(fā)送RFC2965標(biāo)準(zhǔn)Cookies的服務(wù)端赶舆,將會使用Set-Cookie2 header添加到Set-Cookie Header信心中哑姚,RFC2965 Cookies是區(qū)分端口的。
Netscape標(biāo)準(zhǔn)
Netscape是最原始的Cookies規(guī)范芜茵,同時也是RFC2109的基礎(chǔ)叙量。盡管如此,還是在很多重要的方面與RFC2109不同九串,可能需要特定服務(wù)器才可以兼容绞佩。
Browser Compatibility
這種兼容性設(shè)計要求是適應(yīng)盡可能多的不同的服務(wù)器寺鸥,盡管不是完全按照標(biāo)準(zhǔn)來實現(xiàn)的。如果你遇到了解析Cookies的問題品山,你就可能要用到這一個規(guī)范胆建。
有太多的web站點是用CGI腳本去實現(xiàn)的,而導(dǎo)致只有將所有的Cookies都放入Request header才可以正常的工作肘交。這種情況下最好設(shè)置http.protocol.single-cookie-header參數(shù)為true笆载。
Ignore Cookies
此規(guī)格忽略所有Cookie。被用來防止HttpClient接受和發(fā)送的Cookie酸些。
Jsjy.open.ha.cn的Cookie是Netscape標(biāo)準(zhǔn)宰译,所以Cookie Policy選擇Netscape
Summary Report各項參數(shù)含義和計算公式參照下面連接: