一、使用Jmeter測(cè)試快速入門(mén)
線程組的概念
進(jìn)程: 一個(gè)正在執(zhí)行的程序?qū)?yīng)一個(gè)進(jìn)程
線程: 一個(gè)進(jìn)程有多個(gè)執(zhí)行線程
線程組: 按照線程性質(zhì)對(duì)線程分組蕊蝗。查看任務(wù)管理器(愛(ài)奇藝有多個(gè))
三者關(guān)系: 一個(gè)進(jìn)程有多個(gè)線程組茬底,一個(gè)線程組有多個(gè)線程
- 測(cè)試計(jì)劃—線程組—線程組屬性中的線程數(shù)
- 并發(fā)執(zhí)行:多個(gè)線程同時(shí)執(zhí)行坯沪,特點(diǎn):執(zhí)行結(jié)束的順序與開(kāi)始的順序不一致
- 順序執(zhí)行:按照線程的啟動(dòng)順序挨個(gè)執(zhí)行
- 默認(rèn)情況下筒严,線程組中的線程是并發(fā)執(zhí)行
- 每一個(gè)線程都要執(zhí)行組內(nèi)的http請(qǐng)求
- 設(shè)置線程組順序執(zhí)行:勾選測(cè)試計(jì)劃中的(獨(dú)立運(yùn)行每個(gè)線程組)
- 線程組用來(lái)模擬用戶(hù)的并發(fā)訪問(wèn)
1. 創(chuàng)建線程組
2. 線程組主要包含三個(gè)參數(shù):
線程數(shù)术吗、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))尉辑、循環(huán)次數(shù)。
3. 線程數(shù):
虛擬用戶(hù)數(shù)较屿。一個(gè)虛擬用戶(hù)占用一個(gè)線程隧魄。設(shè)置多少虛擬用戶(hù)數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)。
4. 準(zhǔn)備時(shí)長(zhǎng)(秒):
設(shè)置的虛擬用戶(hù)數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)隘蝎。如果線程數(shù)為20 购啄,準(zhǔn)備時(shí)長(zhǎng)為10 ,那么需要10秒鐘啟動(dòng)20個(gè)線程嘱么。也就是每秒鐘啟動(dòng)2個(gè)線程狮含。
5. 循環(huán)次數(shù):
每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為20 曼振,循環(huán)次數(shù)為100 几迄,那么每個(gè)線程發(fā)送100次請(qǐng)求”溃總請(qǐng)求數(shù)為20*100=2000 映胁。如果勾選了“永遠(yuǎn)”,那么所有線程會(huì)一直發(fā)送請(qǐng)求集索,一直到選擇停止運(yùn)行腳本屿愚。
6. 調(diào)度器
設(shè)置線程組啟動(dòng)的開(kāi)始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí)汇跨,需要勾選循環(huán)次數(shù)為永遠(yuǎn))
7. 持續(xù)時(shí)間(秒)
測(cè)試持續(xù)時(shí)間,會(huì)覆蓋結(jié)束時(shí)間
8. 啟動(dòng)延遲(秒)
測(cè)試延遲啟動(dòng)時(shí)間妆距,會(huì)覆蓋啟動(dòng)時(shí)間
9. 啟動(dòng)時(shí)間
測(cè)試啟動(dòng)時(shí)間穷遂,啟動(dòng)延遲會(huì)覆蓋它。當(dāng)啟動(dòng)時(shí)間已過(guò)娱据,手動(dòng)只需測(cè)試時(shí)當(dāng)前時(shí)間也會(huì)覆蓋它蚪黑。
10. 結(jié)束時(shí)間
測(cè)試結(jié)束時(shí)間,持續(xù)時(shí)間會(huì)覆蓋它中剩。
創(chuàng)建http請(qǐng)求
見(jiàn)得最多忌穿,所以我們著重講解:
1. 指定請(qǐng)求域名,請(qǐng)求路徑
一個(gè)HTTP請(qǐng)求有著許多的配置參數(shù)结啼,下面將詳細(xì)介紹: |
---|
名稱(chēng):本屬性用于標(biāo)識(shí)一個(gè)取樣器掠剑,建議使用一個(gè)有意義的名稱(chēng)。 |
注釋?zhuān)簩?duì)于測(cè)試沒(méi)有任何作用郊愧,僅用戶(hù)記錄用戶(hù)可讀的注釋信息朴译。 |
服務(wù)器名稱(chēng)或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或IP地址。 |
端口號(hào):目標(biāo)服務(wù)器的端口號(hào)属铁。 |
方法:發(fā)送HTTP請(qǐng)求的方法眠寿,可用方法包括GET、POST焦蘑、HEAD盯拱、PUT、OPTIONS例嘱、TRACE狡逢、DELETE等。 |
Content encoding :內(nèi)容的編碼方式拼卵,默認(rèn)值為iso8859 |
路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口) |
點(diǎn)擊run測(cè)試甚侣,很麻煩,我們使用postman測(cè)試更簡(jiǎn)單间学,使用postman操作殷费。
可以使用剛才的接口文檔中的,聚合接口中演示一個(gè)低葫。
2. 設(shè)置對(duì)應(yīng)的查看內(nèi)容
注意:如果監(jiān)聽(tīng)器中有jp@gc開(kāi)頭的详羡,都是第三方插件
3. 查看表格信息
Sample:每個(gè)請(qǐng)求的序號(hào) |
---|
Start Time:每個(gè)請(qǐng)求開(kāi)始時(shí)間 |
Thread Name:每個(gè)線程的名稱(chēng) |
Label:Http請(qǐng)求名稱(chēng) |
Sample Time:每個(gè)請(qǐng)求所花時(shí)間,單位毫秒 |
Status:請(qǐng)求狀態(tài)嘿悬,如果為勾則表示成功实柠,如果為叉表示失敗。 |
Bytes:請(qǐng)求的字節(jié)數(shù) |
樣本數(shù)目:也就是上面所說(shuō)的請(qǐng)求個(gè)數(shù)善涨,成功的情況下等于你設(shè)定的并發(fā)數(shù)目乘以循環(huán)次數(shù) |
平均:每個(gè)線程請(qǐng)求的平均時(shí)間 |
最新樣本:表示服務(wù)器響應(yīng)最后一個(gè)請(qǐng)求的時(shí)間 |
偏離:服務(wù)器響應(yīng)時(shí)間變化窒盐、離散程度測(cè)量值的大小草则,或者,換句話說(shuō)蟹漓,就是數(shù)據(jù)的分布炕横。 |
4. 查看結(jié)果樹(shù)
-
請(qǐng)求的數(shù)據(jù)展示(請(qǐng)求頭信息,請(qǐng)求參數(shù),,)
image -
響應(yīng)的數(shù)據(jù)展示(響應(yīng)碼葡粒,響應(yīng)頭,,)
image通過(guò)察看結(jié)果樹(shù)份殿,我們可以看到每個(gè)請(qǐng)求的結(jié)果,其中紅色的是出錯(cuò)的請(qǐng)求嗽交,綠色的為通過(guò)卿嘲。
Thread Name:線程組名稱(chēng)
Sample Start: 啟動(dòng)開(kāi)始時(shí)間
Load time:加載時(shí)長(zhǎng)
Latency:等待時(shí)長(zhǎng)
Size in bytes:發(fā)送的數(shù)據(jù)總大小
Headers size in bytes:發(fā)送數(shù)據(jù)的其余部分大小
Sample Count:發(fā)送統(tǒng)計(jì)
Error Count:交互錯(cuò)誤統(tǒng)計(jì)
Response code:返回碼
Response message:返回信息
Response headers:返回的頭部信息
5. 聚合報(bào)告參數(shù)說(shuō)明
lable:對(duì)應(yīng)每一個(gè)http請(qǐng)求,顯示的是http請(qǐng)求的Name夫壁,如百度http請(qǐng)求name為baidu |
---|
#Samples:表示這一次的測(cè)試中一共發(fā)出了多少請(qǐng)求拾枣,如上圖所示,sougou和baidu的http請(qǐng)求每個(gè)都發(fā)出30個(gè)請(qǐng)求 |
Average:平均響應(yīng)時(shí)間盒让,指的是所有的請(qǐng)求的平均響應(yīng)時(shí)間放前,如上圖的30個(gè)請(qǐng)求的總的響應(yīng)時(shí)間除以30得出的平均響應(yīng)時(shí)間,默認(rèn)的情況下是單個(gè)請(qǐng)求的平均響應(yīng)時(shí)間糯彬,但當(dāng)使用了“事務(wù)控制器”時(shí),則以事物為單位顯示平均響應(yīng)時(shí)間 |
Median:中位數(shù)葱她,也就是50%用戶(hù)的響應(yīng)時(shí)間 |
90%Line:90%用戶(hù)的響應(yīng)時(shí)間 |
Min:最小響應(yīng)時(shí)間 |
Max:最大的響應(yīng)時(shí)間 |
Error%:本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量/請(qǐng)求的總數(shù)撩扒,如上圖所示,本次的測(cè)試中吨些,sougou的http請(qǐng)求66.6%的請(qǐng)求出錯(cuò)搓谆,而baidu的請(qǐng)求則沒(méi)有出錯(cuò)的請(qǐng)求 |
Throughput:吞吐量,默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)豪墅,如上圖所示泉手,每秒完成的請(qǐng)求數(shù)分別為6.6個(gè)每秒,6.2個(gè)每秒 |
Recived KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量偶器,以kb為計(jì)算的單位 |
掌握:平均時(shí)間斩萌、錯(cuò)誤率、吞吐量屏轰。
6. 圖形結(jié)果
作用:通過(guò)圖形展示出本次性能測(cè)試數(shù)據(jù)的分布颊郎。 圖形結(jié)果一般作為聚合報(bào)告的分析輔佐
樣本數(shù)目:總共發(fā)送到服務(wù)器的請(qǐng)求數(shù)。
最新樣本:代表時(shí)間的數(shù)字霎苗,是服務(wù)器響應(yīng)最后一個(gè)請(qǐng)求的時(shí)間姆吭。
吞吐量:服務(wù)器每分鐘處理的請(qǐng)求數(shù)。
平均值:總運(yùn)行時(shí)間除以發(fā)送到服務(wù)器的請(qǐng)求數(shù)唁盏。
中間值:有一半的服務(wù)器響應(yīng)時(shí)間低于該值而另一半高于該值内狸。
偏離:表示服務(wù)器響應(yīng)時(shí)間變化检眯、離散程度測(cè)量值的大小。
二昆淡、Jmeter主要組件介紹
- 測(cè)試計(jì)劃:使用 JMeter 進(jìn)行測(cè)試的起點(diǎn)锰瘸,它是其它 JMeter 測(cè)試元件的容器。
- 線程組:代表一定數(shù)量的并發(fā)用戶(hù)瘪撇,它可以用來(lái)模擬并發(fā)用戶(hù)發(fā)送請(qǐng)求获茬。實(shí)際的請(qǐng)求內(nèi)容在Sampler中定義,它被線程組包含倔既∷∏可以在“測(cè)試計(jì)劃->添加->線程組”來(lái)建立它,然后在線程組面板里有幾個(gè)輸入欄:線程數(shù)渤涌、Ramp-Up Period(in seconds)佩谣、循環(huán)次數(shù),其中Ramp-Up Period(in seconds)表示在這時(shí)間內(nèi)創(chuàng)建完所有的線程实蓬。如有8個(gè)線程茸俭,Ramp-Up = 200秒,那么線程的啟動(dòng)時(shí)間間隔為200/8=25秒安皱,這樣的好處是:一開(kāi)始不會(huì)對(duì)服務(wù)器有太大的負(fù)載调鬓。線程組是為模擬并發(fā)負(fù)載而設(shè)計(jì)。
- 取樣器(Sampler):模擬各種請(qǐng)求酌伊。所有實(shí)際的測(cè)試任務(wù)都由取樣器承擔(dān)腾窝,存在很多種請(qǐng)求。如:HTTP 居砖、ftp請(qǐng)求等等虹脯。
- 監(jiān)聽(tīng)器:負(fù)責(zé)收集測(cè)試結(jié)果,同時(shí)也被告知了結(jié)果顯示的方式奏候。功能是對(duì)取樣器的請(qǐng)求結(jié)果顯示循集、統(tǒng)計(jì)一些數(shù)據(jù)(吞吐量、KB/S……)等蔗草。
- 斷言:用于來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶(hù)所期望咒彤,是否正確。它可以用來(lái)隔離問(wèn)題域咒精,即在確保功能正確的前提下執(zhí)行壓力測(cè)試蔼紧。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的。
- 邏輯控制器:允許自定義JMeter發(fā)送請(qǐng)求的行為邏輯狠轻,它與Sampler結(jié)合使用可以模擬復(fù)雜的請(qǐng)求序列奸例。
- 定時(shí)器:負(fù)責(zé)定義請(qǐng)求(線程)之間的延遲間隔,模擬對(duì)服務(wù)器的連續(xù)請(qǐng)求。
- 配置元件維護(hù)Sampler需要的配置信息查吊,并根據(jù)實(shí)際的需要會(huì)修改請(qǐng)求的內(nèi)容仙辟。
- 前置處理器和后置處理器負(fù)責(zé)在生成請(qǐng)求之前和之后完成工作谤草。前置處理器常常用來(lái)修改請(qǐng)求的設(shè)置,后置處理器則常常用來(lái)處理響應(yīng)的數(shù)據(jù)。
1. 測(cè)試計(jì)劃
1.測(cè)試計(jì)劃就是一個(gè)完整的場(chǎng)景
2.“獨(dú)立運(yùn)行每個(gè)線程組” :勾選以后所有的線程組都是順序執(zhí)行的了踩晶。一般不勾選惭嚣,讓所有 的線程組并發(fā)啟動(dòng)攒磨。
3.“函數(shù)測(cè)試模式” :勾選后會(huì)有詳細(xì)的請(qǐng)求記錄锋玲,消耗資源,影響客戶(hù)端性能盗迟。一般不勾選坤邪。
4.用戶(hù)定義的變量:全局變量,測(cè)試計(jì)劃上可以添加用戶(hù)定義的變量罚缕。一般添加一些系統(tǒng)常用的配置艇纺。如果測(cè)試過(guò)程中想切換環(huán)境,切換配置邮弹,一般不建議在測(cè)試計(jì)劃上添加變量
2. 線程組
(1)thread group(線程組)
這個(gè)就是我們通常添加運(yùn)行的線程黔衡。通俗的講一個(gè)線程組,可以看做一個(gè)虛擬用戶(hù)組腌乡,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶(hù)盟劫。
(2)setup thread group
一種特殊類(lèi)型的ThreadGroup的,可用于執(zhí)行預(yù)測(cè)試操作与纽。這些線程的行為完全像一個(gè)正常的線程組元件侣签。不同的是,這些類(lèi)型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行渣锦;類(lèi)似LoadRunner的init,測(cè)試開(kāi)始時(shí)進(jìn)行初始化的工作氢哮。
(3)teardown thread group
一種特殊類(lèi)型的ThreadGroup的袋毙,可用于執(zhí)行測(cè)試后動(dòng)作。這些線程的行為完全像一個(gè)正常的線程組元件冗尤。不同的是听盖,這些類(lèi)型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組;類(lèi)似LoadRunnner的end裂七,測(cè)試結(jié)束時(shí)進(jìn)行回收工作皆看。
3. 取樣器(Http請(qǐng)求)
關(guān)于http請(qǐng)求的的屬性參數(shù)說(shuō)明:
1)名稱(chēng):用于標(biāo)識(shí)一個(gè)sample。建議使用一個(gè)有意義的名稱(chēng)
2)注釋?zhuān)簩?duì)于測(cè)試沒(méi)任何影響背零,僅用來(lái)記錄用戶(hù)可讀的注釋信息
3)服務(wù)器名稱(chēng)或IP:http請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或者IP地址腰吟,比如http://www.baidu.com
4)端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80,可不填
5)協(xié)議:向目標(biāo)服務(wù)器發(fā)送http請(qǐng)求時(shí)的協(xié)議毛雇,http/https嫉称,大小寫(xiě)不敏感,默認(rèn)http
6)方法:發(fā)送http請(qǐng)求的方法(鏈接:http://www.cnblogs.com/imyalost/p/5630940.html)
7)Content encoding:內(nèi)容的編碼方式(Content-Type=application/json;charset=utf-8)
8)路徑:目標(biāo)的URL路徑(不包括服務(wù)器地址和端口)
9)自動(dòng)重定向:如果選中該項(xiàng)灵疮,發(fā)出的http請(qǐng)求得到響應(yīng)是301/302织阅,jmeter會(huì)重定向到新的界面
10)Use keep Alive:jmeter 和目標(biāo)服務(wù)器之間使用 Keep-Alive方式進(jìn)行HTTP通信(默認(rèn)選中)
11)Use multipart/from-data for HTTP POST :當(dāng)發(fā)送HTTP POST 請(qǐng)求時(shí),使用
12)Parameters震捣、Body Data以及Files Upload的區(qū)別:
1. parameter是指函數(shù)定義中參數(shù)荔棉,而argument指的是函數(shù)調(diào)用時(shí)的實(shí)際參數(shù)
2. 簡(jiǎn)略描述為:parameter=形參(formal parameter), argument=實(shí)參(actual parameter)
3.在不很?chē)?yán)格的情況下蒿赢,現(xiàn)在二者可以混用润樱,一般用argument,而parameter則比較少用
While defining method, variables passed in the method are called parameters.
當(dāng)定義方法時(shí)诉植,傳遞到方法中的變量稱(chēng)為參數(shù).
While using those methods, values passed to those variables are called arguments.
當(dāng)調(diào)用方法時(shí)祥国,傳給變量的值稱(chēng)為引數(shù).(有時(shí)argument被翻譯為“引數(shù)“)
4、Body Data指的是實(shí)體數(shù)據(jù)晾腔,就是請(qǐng)求報(bào)文里面主體實(shí)體的內(nèi)容舌稀,一般我們向服務(wù)器發(fā)送請(qǐng)求,攜帶的實(shí)體主體參數(shù)灼擂,可以寫(xiě)入這里
5壁查、Files Upload指的是:從HTML文件獲取所有有內(nèi)含的資源:被選中時(shí),發(fā)出HTTP請(qǐng)求并獲得響應(yīng)的HTML文件內(nèi)容后還對(duì)該HTML
進(jìn)行Parse 并獲取HTML中包含的所有資源(圖片剔应、flash等):(默認(rèn)不選中)
如果用戶(hù)只希望獲取特定資源睡腿,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達(dá)式,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載
4. 監(jiān)聽(tīng)器
監(jiān)聽(tīng)器(Listener)負(fù)責(zé)收集測(cè)試結(jié)果峻贮,同時(shí)也被告知了結(jié)果顯示的方式席怪。我們常用的包括:聚合報(bào)告、查看結(jié)果樹(shù)纤控、用表格查看結(jié)果挂捻,都支持將結(jié)果數(shù)據(jù)寫(xiě)入文件。其他的添加上去看看就行船万。聚合報(bào)告前面我們介紹過(guò)刻撒,后面是查看結(jié)果樹(shù)和用表格查看結(jié)果的截圖。
5. 循環(huán)控制器
6. 事務(wù)控制器
作用: 事務(wù)控制器會(huì)生產(chǎn)一個(gè)額外的采樣器耿导,用來(lái)統(tǒng)計(jì)該控制器子結(jié)點(diǎn)的所有時(shí)間声怔。
在線程組下創(chuàng)建事務(wù)控制器
參數(shù):
· Generate parent sample:(選中這個(gè)參數(shù)結(jié)果展示如下圖紅框,否則顯示為下圖藍(lán)框)
· Include duration of timer and pre-post processors in generated sample:選中這一項(xiàng)會(huì)統(tǒng)計(jì)定時(shí)器(timer)的時(shí)間舱呻,否則只統(tǒng)計(jì)采樣器(sample)的時(shí)間
創(chuàng)建sample 訪問(wèn)首頁(yè)和注冊(cè)頁(yè)面
生成聚合報(bào)告
勾選
聚合報(bào)告中只有一項(xiàng)事務(wù)報(bào)告
7. 斷言---檢查點(diǎn)
斷言(Assertions)可以用來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶(hù)所期望的醋火。它可以用來(lái)隔離問(wèn)題域,即在確保功能正確的前提下執(zhí)行壓力測(cè)試。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的胎撇。
兩個(gè)重要斷言:響應(yīng)斷言和JSONAssertion
響應(yīng)斷言:
JSON斷言:
8. 前置處理器和后置處理器
前置處理器(Pre Processors)和后置處理器(Post Processors)負(fù)責(zé)在生成請(qǐng)求之前和之后完成工作介粘。前置處理器常常用來(lái)修改請(qǐng)求的設(shè)置,后置處理器則常常用來(lái)處理響應(yīng)的數(shù)據(jù)晚树。我們主要在動(dòng)態(tài)關(guān)聯(lián)中用到后置處理器的正則表達(dá)式提取器姻采。
https://www.cnblogs.com/fengpingfan/p/4755411.html
9. 定時(shí)器
定時(shí)器(Timer)負(fù)責(zé)定義請(qǐng)求之間的延遲間隔