之前用LR,到新公司了不能用了,只能用jmeter.
桃山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!想實(shí)現(xiàn)參數(shù)化隨機(jī)取值的效果.參考了下面的鏈接
http://lijingshou.iteye.com/blog/2047613? 鏈接A
http://www.51testing.com/html/12/252512-222896.html? 鏈接B
使用All threads,比如說(shuō)參數(shù)化文件里有4個(gè)值
1
2
3
4
兩個(gè)線程,迭代兩次,那么第一個(gè)線程使用的數(shù)據(jù)是1和3,第二個(gè)線程使用的是2和4.
下面是從鏈接B中取出來(lái)的內(nèi)容
jmeter 2.3閃退
一直用jmeter3.1做做接口測(cè)試,有一天要做壓測(cè)了,溝通了之后發(fā)現(xiàn)公司用的壓測(cè)機(jī)是2.3版本的.
下載了jmeter2.3,竟然閃退,日志根本沒(méi)有看清就消失了,查看了一下java版本,發(fā)現(xiàn)java -version和ehco %java_home%竟然不對(duì)應(yīng),在網(wǎng)上找了一通,說(shuō)是把%JAVA_HOME%\bin提到path環(huán)境變量的最前面,但是我已經(jīng)提到最前面的了還是不行,后來(lái)想想是不是因?yàn)槲乙恢庇杏脩舻沫h(huán)境變量下配置的原因.于是換到系統(tǒng)環(huán)境變量的配置JAVA_HOME和path并且把java_home的配置放到path的最前面,最后在cmd里看就改好了.java -version和java_home已經(jīng)一致了.
jmeter加載依賴包
參考自?http://blog.csdn.net/musen518/article/details/50233897?
jmeter依賴包加載方式很多的
常規(guī)方法
jmeter_home/lib,這里可以放依賴包,重啟jmeter生效,但是這樣不便于包管理
點(diǎn)擊測(cè)試計(jì)劃根節(jié)點(diǎn),右下角有”Add directory or jar to classpath“,可以選擇需要加載的jar包,相對(duì)前一種方法有所改善,可以自主管理不同測(cè)試依賴包
進(jìn)階方法
修改jmeter.properties配置項(xiàng),找到# Classpath configuration區(qū)域(修改下面一種就行)
1. 修改user.classpath選項(xiàng),指定為單個(gè)路徑,該目錄下所有包都自動(dòng)加載(這里jar多了容易出現(xiàn)jvm oom,謹(jǐn)慎使用)
2. 修改plugin_dependency_paths選項(xiàng),指定為單個(gè)路徑,該目錄下所有包都自動(dòng)加載(推薦,還沒(méi)出現(xiàn)oom現(xiàn)象)
填寫項(xiàng)說(shuō)明:
1、名稱、注釋:元件的名稱及注釋
2、Config the CSV Data Source:
1)Filename:csv文件的名稱(包括絕對(duì)路徑,當(dāng)csv文件在bin目錄下時(shí),只需給出文件名即可)
2)File encoding:csv文件編碼,可以不填
3)Variable Names(comma-delimited):csv文件中各列的名字(有多列時(shí),用英文逗號(hào)隔開(kāi)列名),這個(gè)變量名稱是在其他處被引用的,所以為必填項(xiàng)。
4)Delimiter(use “\t” for tab):csv文件中的分隔符(用”\t”代替tab鍵)(一般情況下,分隔符為英文逗號(hào))
5)Allow quoted data?:是否允許引用數(shù)據(jù),---這個(gè)目前還未弄明白,設(shè)置成True或者False都能正常引用數(shù)據(jù)。
6)Recycle on EOF?:到了文件尾是否循環(huán),True—繼續(xù)從文件第一行開(kāi)始讀取,F(xiàn)alse—不再循環(huán)
7)Stop thread on EOF?:到了文件尾是否停止線程,True—停止,F(xiàn)alse—不停止,注:當(dāng)Recycle on EOF設(shè)置為True時(shí),此項(xiàng)設(shè)置無(wú)效。
8)Sharing mode:共享模式,All threads –所有線程,Current?thread group—當(dāng)前線程組,Current?thread—當(dāng)前線程。這個(gè)地方和LoadRunner中的迭代取之相反,經(jīng)試驗(yàn)得出來(lái)的結(jié)果是:
All threads:測(cè)試計(jì)劃中所有線程,假如說(shuō)有線程1到線程n (n>1),線程1取了一次值后,線程2取值時(shí),取到的是csv文件中的下一行,即與線程1取的不是同一行。
Current thread group:當(dāng)前線程組,假設(shè)有線程組A、線程組B,A組內(nèi)有線程A1到線程An,線程組B內(nèi)有線程B1到線程Bn。取之情況是:線程A1取到了第1行,線程A2取第2行,現(xiàn)在B1取第1行,線程B2取第2行。
Current?thread:當(dāng)前線程。假設(shè)測(cè)試計(jì)劃內(nèi)有線程1到線程n (n>1),則線程1取了第1行,線程2也取第1行。
【在試驗(yàn)的過(guò)程中,發(fā)現(xiàn):線程循環(huán)時(shí),去取csv值時(shí),也算入迭代。例如,當(dāng)設(shè)置為Current?thread時(shí),線程1第1次取了第1行,第2次取的就是第2行】
配置好CSV Data Set Config后,就可以在需要調(diào)用參數(shù)的地方進(jìn)行調(diào)用了,如上圖中配置的pp.csv文件,就可以用${passport},進(jìn)行調(diào)用了。
JMETER取當(dāng)前時(shí)間參數(shù)
${__time(,)}?????????1450056496991?//無(wú)格式化參數(shù),返回當(dāng)前毫秒時(shí)間?? ${__time(yyyyMMdd,)}?20151214??????//返回年月日?? ${__time(HHmmss,)}???092816????????//返回時(shí)分秒?? ${__time(yyyyMMdd-HHmmss,)}?20151214-092816?//全 //線程ID-迭代次數(shù)ID-當(dāng)時(shí)時(shí)間精確到秒-當(dāng)前時(shí)間精確到毫秒數(shù)計(jì)數(shù) ${__threadNum}_${__counter(true)}_${__time(yyyyMMddHHmmss,)}_${__time(,)} Jmeter函數(shù)Random自動(dòng)生成隨機(jī)數(shù) Random使用方式:${__Random(?param1,param2?,param3?)} param1為隨機(jī)數(shù)的下限 param2為隨機(jī)數(shù)的上限 param3為存儲(chǔ)隨機(jī)數(shù)的變量名,是選填項(xiàng)。 ${__Random(100,200,id)}
JMETER響應(yīng)斷言?Response_Assertion
今天寫腳本的時(shí)候遇到一個(gè)場(chǎng)景,響應(yīng)里有個(gè)字段,比如 isblackuser,這個(gè)字段是false或者true都是正確的.但是如果沒(méi)有值那就是接口有問(wèn)題.即需要判斷響應(yīng)里包含 "isblackuser":false, 或者?isblackuser":true, 很明顯,這里要用正則匹配了,寫起來(lái)比較簡(jiǎn)單,直接是?"isblackuser":(false|true), 不能用默認(rèn)的substring了,得用contains,因?yàn)閟ubstring不支持正則,contains才支持正則.
參考的頁(yè)面是:?https://jmeter.apache.org/usermanual/component_reference.html#Response_Assertion?
JMETER設(shè)置超時(shí)時(shí)間?Duration Assertion
參考的網(wǎng)頁(yè)為:https://jmeter.apache.org/usermanual/component_reference.html#Duration_Assertion?
The Duration Assertion tests that each response was received within a given amount of time. Any response that takes longer than the given number of milliseconds (specified by the user) is marked as a failed response.
Screenshot of Control-Panel of Duration Assertion
還可以對(duì)響應(yīng)的大小進(jìn)行判斷,不過(guò)這個(gè)應(yīng)該用的比較少
參考的網(wǎng)頁(yè):?https://jmeter.apache.org/usermanual/component_reference.html#Size_Assertion?
JMETER中使用正則表達(dá)式提取器
http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor?
Screenshot of Control-Panel of Regular Expression Extractor這里在寫regular expression時(shí),如果用了*來(lái)匹配,要注意是否使用貪婪,比如響應(yīng)是
{"id":123456,""isSuccess":true,"code":"0","info":"成功"}如果要獲取ID值,regular如果寫成id":(.*),那么匹配出來(lái)的值是123456,""isSuccess":true,"code":"0",因?yàn)?在正則表達(dá)式里默認(rèn)是貪婪的,會(huì)一直匹配到最后一個(gè)逗號(hào),這里就需要用到非貪婪,寫regular expression時(shí)使用id":(.*?),加一個(gè)問(wèn)號(hào).
參考于:?http://www.cnblogs.com/wuyepiaoxue/p/5661194.html?
JMETER參數(shù)跨線程組共享
參考的鏈接為:?http://blog.csdn.net/jasonliujintao/article/details/71542021?
假設(shè)腳本里有2個(gè)線程組A和B,如何在線程組B中使用線程組A里提取出的參數(shù)值?
如在線程A的某個(gè)sample的響應(yīng)里提取到了一個(gè)參數(shù)名為ID
在線程A的最后添加BeanShell Sampler,內(nèi)容為
${__setProperty(idBeanShell,${id},)}?
注意,這個(gè)BeanShell Sampler一定要添加到已經(jīng)提取參數(shù)ID的sample之后,否則腳本內(nèi)容無(wú)法生效,一般放在最在線程組的最后面即可.
然后在線程組B里使用的時(shí)候這樣寫
${__property(idBeanShell)}
上面兩個(gè)紅色的參數(shù)要一致,否則無(wú)法實(shí)現(xiàn)效果
還有用其它方法實(shí)現(xiàn)的,使用的是BeanShell PostProcessor,寫法比這個(gè)復(fù)雜,
參考:?http://www.cnblogs.com/allen-zml/p/6552535.html?
JMETER響應(yīng)亂碼
參與出處:?http://tenfee.blog.51cto.com/6353835/1915332?
Jmeter安裝目錄/bin/jmeter.properties中sampleresult.default.encoding默認(rèn)為ISO-8859-1,將參數(shù)修改為
sampleresult.default.encoding=utf-8 即可
同時(shí)注意將注釋符號(hào)#去掉,否則不會(huì)生效
JMETER二次開(kāi)發(fā)-在eclipse里調(diào)試
參考于:?http://www.cnblogs.com/taoSir/p/5144274.html
JMETER二次開(kāi)發(fā)-修改編譯語(yǔ)言為英語(yǔ)
來(lái)源于:?https://my.oschina.net/u/1245468/blog/863053?
JMETER二次開(kāi)發(fā)-基于jmeter3.0版本的csv data set config二次開(kāi)發(fā)(實(shí)現(xiàn)從指定行開(kāi)始讀取)
來(lái)源于: http://zfy421.iteye.com/blog/2322251?
jmeter隨機(jī)取參數(shù)值
jmeter能用來(lái)做參數(shù)化的組件有幾個(gè),但是都沒(méi)有隨機(jī)取值的功能,遇到隨機(jī)取值的需求怎么辦呢?
突發(fā)奇想,可以用函數(shù)__CSVRead()來(lái)實(shí)現(xiàn):
__CSVRead()
CSV file to get values from | *alias:表示要讀取的文件路徑
CSV文件列號(hào)| next| *alias:表示當(dāng)前變量讀取第幾列數(shù)據(jù),注意第一列是0;
由此可見(jiàn)我們只需將參數(shù)化數(shù)據(jù)在csv中橫向排列,然后用隨機(jī)函數(shù)__Random()指定文件序列號(hào)即可。
${__CSVRead(D:\t.txt,${__Random(1,6,)})} t.txt文件內(nèi)容:a,s,d,f,g,h
上面的方法親測(cè)可用,但是也不足的地方,如果參數(shù)值的數(shù)量過(guò)大的話,處理起來(lái)比較麻煩,不過(guò)notepad++可以輕松搞定.但即便如此,也不如一行行地看方便對(duì)吧.?
其中的${__Random(1,6,)}中的6,表示有多少個(gè)參數(shù)值,如果有70000個(gè)參數(shù)值,這里就寫70000就好了;
注意用了上面的方法后就不用再設(shè)置CSV Data Set Config了,直接在寫參數(shù)對(duì)就可以了
注意,上面的D:\t.txt是指的參數(shù)文件的位置,這個(gè)必須寫絕對(duì)路徑,相對(duì)路徑這里不好使;
另外,如果腳本里沒(méi)有成功獲取參數(shù)值,而是把整個(gè)函數(shù)打出來(lái)了,說(shuō)明可能是函數(shù)的格式不對(duì),少了大括號(hào),小括號(hào)等等.
Jmeter之Constant Timer與constant throughput timer的區(qū)別
http://www.cnblogs.com/111testing/p/6729551.html?
Constant Throughput Timer 的主要屬性介紹:
名稱 :定時(shí)器的名稱
Target throughput(in samples per minute):目標(biāo)吞吐量。注意這里是每分鐘發(fā)送的請(qǐng)求數(shù),因此,對(duì)應(yīng)測(cè)試需求中所要求的20 QPS ,這里的值應(yīng)該是1200 。
Calculate Throughput based on :有5個(gè)選項(xiàng),分別是:
This thread only :控制每個(gè)線程的吞吐量,選擇這種模式時(shí),總的吞吐量為設(shè)置的 target Throughput 乘以矣線程的數(shù)量。
All active threads : 設(shè)置的target Throughput 將分配在每個(gè)活躍線程上,每個(gè)活躍線程在上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行?;钴S線程指同一時(shí)刻同時(shí)運(yùn)行的線程。
All active threads in current thread group :設(shè)置的target Throughput將分配在當(dāng)前線程組的每一個(gè)活躍線程上,當(dāng)測(cè)試計(jì)劃中只有一個(gè)線程組時(shí),
? 該選項(xiàng)和All active threads選項(xiàng)的效果完全相同。
All active threads (shared ):與All active threads 的選項(xiàng)基本相同,唯一的區(qū)別是,每個(gè)活躍線程都會(huì)在所有活躍線程上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。
All cative threads in current thread group (shared ):與All active threads in current thread group 基本相同,唯一的區(qū)別是,
? 每個(gè)活躍線程都會(huì)在所有活躍線程的上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。
如上圖,該元件僅作用于fnng.cnblogs.com ,設(shè)置定時(shí)器的Target throughput為1200/分鐘(20 QPS),設(shè)置Calculate Throughput based on 的值為All active threads 。
當(dāng)然,Constant Throughput Timer只有在線程組中的線程產(chǎn)生足夠多的request 的情況下才有意義,因此,即使設(shè)置了Constant Throughput Timer的值,也可能由于線程組中的線程數(shù)量不夠,或是定時(shí)器設(shè)置不合理等原因?qū)е驴傮w的QPS不能達(dá)到預(yù)期目標(biāo)。
關(guān)于jmeter控制并發(fā)量的設(shè)置
為了控制量,需要計(jì)算每個(gè)線程每分鐘的請(qǐng)求數(shù),使用Constant throughout timer,比如需求是每分鐘10萬(wàn)的請(qǐng)求量, 我現(xiàn)在有16臺(tái)壓測(cè)機(jī),每個(gè)壓測(cè)機(jī)20個(gè)線程,那么每個(gè)線程每分鐘的請(qǐng)求數(shù)大概是32個(gè).
線程組的設(shè)置
控制并發(fā)量
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)標(biāo)題:jmeter知識(shí)點(diǎn)總結(jié)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://aaarwkj.com/article26/cchsjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、商城網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站排名、微信小程序、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)