JMETER組件介紹

一. 性能測(cè)試

? ??????1.1. 性能測(cè)試是什么

? ??????????????1.1.1 廣義定義

????????????????????????基于協(xié)議模擬用戶發(fā)出請(qǐng)求板驳,對(duì)服務(wù)器形成一定負(fù)載嘲碱,來(lái)測(cè)? ?試服務(wù)器的性能指標(biāo)是否滿足要求性能指標(biāo)關(guān)注點(diǎn):時(shí)間性能、空間性能性能測(cè)試與頁(yè)面無(wú)關(guān)

????????????????1.1.1 狹義定義

????????????????????????指通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。

? ??????1.2. 性能測(cè)試工具



二. Jmeter簡(jiǎn)介

? ??????2.1. 我們?yōu)槭裁词褂肑meter

????????????????開源,免費(fèi)扇单,基于Java編寫,可集成到其他系統(tǒng)可拓展各個(gè)功能插件

支持接口測(cè)試奠旺,壓力(負(fù)載和壓力)測(cè)試等多種功能蜘澜,支持錄制回放,

入門簡(jiǎn)單相較于自己編寫框架活其他開源工具响疚,有較為完善的UI界面鄙信,便于接口調(diào)試

多平臺(tái)支持,可在Linux忿晕,Windows装诡,Mac上運(yùn)行,支持多協(xié)議

????????2.2. Jmeter的作用

????????????????接口測(cè)試? 面試說(shuō)postman践盼,因?yàn)榉奖愫糜谩?/p>

????????????????性能測(cè)試? jmeter鸦采,也可以用postman(runner),但是沒有性能指標(biāo)

????????????????數(shù)據(jù)庫(kù)測(cè)試

? ??????2.3. Jmeter怎么用

? ??????????????Windows下Jmeter下載安裝咕幻,登錄?http://jmeter.apache.org/download_jmeter.cgi?渔伯,根據(jù)自己平臺(tái),下載對(duì)應(yīng)文件

? ??????2.4. 安裝JAVA環(huán)境

? ??????????????安裝JDK肄程,配置環(huán)境變量

? ??????????????將下載Jmeter文件解壓锣吼,打開/bin/jmeter.ba

? ??????2.5. Jmeter的目錄結(jié)構(gòu)



三. 使用Jmeter測(cè)試快速入門

? ??????3.1. 線程組是什么

? ??????????????進(jìn)程: 一個(gè)正在執(zhí)行的程序?qū)?yīng)一個(gè)進(jìn)程

????????????????線程: 一個(gè)進(jìn)程有多個(gè)執(zhí)行線程

????????????????線程組:? 按照線程性質(zhì)對(duì)線程分組选浑。查看任務(wù)管理器(愛奇藝有多個(gè))

????????????????三者關(guān)系: 一個(gè)進(jìn)程有多個(gè)線程組,一個(gè)線程組有多個(gè)線程

????????????????測(cè)試計(jì)劃—線程組—線程組屬性中的線程數(shù)

????????????????并發(fā)執(zhí)行:多個(gè)線程同時(shí)執(zhí)行玄叠,特點(diǎn):執(zhí)行結(jié)束的順序與開始的順序不一致

????????????????順序執(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)模擬用戶的并發(fā)訪問

? ??????????3.1.1. 創(chuàng)建線程組


? ??????????3.1.2. 線程組主要包含三個(gè)參數(shù):

? ??????????????????線程數(shù)、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))读恃、循環(huán)次數(shù)描函。

????????????3.1.3. 線程數(shù):

? ??????????????????虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)線程狐粱。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)。

? ??????????3.1.4. 準(zhǔn)備時(shí)長(zhǎng)(秒):

? ??????????????????設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)胆数。如果線程數(shù)為20 肌蜻,準(zhǔn)備時(shí)長(zhǎng)為10 ,那么需要10秒鐘啟動(dòng)20個(gè)線程必尼。也就是每秒鐘啟動(dòng)2個(gè)線程蒋搜。

? ??????????3.1.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)行腳本娘侍。

? ??????????3.1.6. 調(diào)度器

? ??????????????????設(shè)置線程組啟動(dòng)的開始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選循環(huán)次數(shù)為永遠(yuǎn))

? ??????????3.1.7. 持續(xù)時(shí)間(秒)

? ??????????????????測(cè)試持續(xù)時(shí)間泳炉,會(huì)覆蓋結(jié)束時(shí)間

????????????3.1.8. 啟動(dòng)延遲(秒)

? ??????????????????測(cè)試延遲啟動(dòng)時(shí)間憾筏,會(huì)覆蓋啟動(dòng)時(shí)間

? ??????????3.1.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ì)覆蓋它。

? ??????????3.1.10. 結(jié)束時(shí)間

? ??????????????????測(cè)試結(jié)束時(shí)間刨肃,持續(xù)時(shí)間會(huì)覆蓋它古拴。


? ??????3.2. 創(chuàng)建http請(qǐng)求

? ? ? ? ? ? ? ? 添加→Sampler→Http請(qǐng)求


? ??????3.3. 指定請(qǐng)求域名,請(qǐng)求路徑

? ??????????????一個(gè)HTTP請(qǐng)求有著許多的配置參數(shù)之景,下面將詳細(xì)介紹:

????????????????名稱:本屬性用于標(biāo)識(shí)一個(gè)取樣器斤富,建議使用一個(gè)有意義的名稱。

????????????????注釋:對(duì)于測(cè)試沒有任何作用锻狗,僅用戶記錄用戶可讀的注釋信息满力。

????????????????服務(wù)器名稱或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或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操作芹扭。


? ??????3.4. 設(shè)置對(duì)應(yīng)的查看內(nèi)容

? ? ? ? ? ? ? ? 添加→監(jiān)聽器→查看結(jié)果樹

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?聚合報(bào)告

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用表格查看結(jié)果

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖形結(jié)果


? ??????3.5. 查看表格信息


????????????????Sample:每個(gè)請(qǐng)求的序號(hào)

????????????????Start Time:每個(gè)請(qǐng)求開始時(shí)間

????????????????Thread Name:每個(gè)線程的名稱

????????????????Label:Http請(qǐ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ù)的分布份汗。

? ??????3.6. 查看結(jié)果樹

? ??????????????請(qǐng)求的數(shù)據(jù)展示(請(qǐng)求頭信息,請(qǐng)求參數(shù),,)


? ??????響應(yīng)的數(shù)據(jù)展示(響應(yīng)碼蝴簇,響應(yīng)頭,,)


? ??????????????通過(guò)察看結(jié)果樹杯活,我們可以看到每個(gè)請(qǐng)求的結(jié)果,其中紅色的是出錯(cuò)的請(qǐng)求熬词,綠色的為通過(guò)旁钧。

? ??????????????Thread Name:線程組名稱

????????????????Sample Start:啟動(dòng)開始時(shí)間

????????????????Load time:加載時(shí)長(zhǎng)

????????????????Latency:等待時(shí)長(zhǎng)

????????????????Sizeinbytes:發(fā)送的數(shù)據(jù)總大小

????????????????Headers sizeinbytes:發(fā)送數(shù)據(jù)的其余部分大小

????????????????Sample Count:發(fā)送統(tǒng)計(jì)

????????????????Error Count:交互錯(cuò)誤統(tǒng)計(jì)

????????????????Response code:返回碼

????????????????Response message:返回信息

????????????????Response headers:返回的頭部信息

? ??????3.7. 聚合報(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%用戶的響應(yīng)時(shí)間

????????????????90%Line:90%用戶的響應(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)求則沒有出錯(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ò)誤率亮钦、吞吐量译断。

? ??????3.8. 圖形結(jié)果


????????????????樣本數(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ā)用戶枢赔,它可以用來(lái)模擬并發(fā)用戶發(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秒位隶,這樣的好處是:一開始不會(huì)對(duì)服務(wù)器有太大的負(fù)載。線程組是為模擬并發(fā)負(fù)載而設(shè)計(jì)开皿。

????????????????取樣器(Sampler):模擬各種請(qǐng)求涧黄。所有實(shí)際的測(cè)試任務(wù)都由取樣器承擔(dān)篮昧,存在很多種請(qǐng)求。如:HTTP 弓熏、ftp請(qǐng)求等等恋谭。

????????????????監(jiān)聽器:負(fù)責(zé)收集測(cè)試結(jié)果,同時(shí)也被告知了結(jié)果顯示的方式挽鞠。功能是對(duì)取樣器的請(qǐng)求結(jié)果顯示疚颊、統(tǒng)計(jì)一些數(shù)據(jù)(吞吐量、KB/S……)等信认。

????????????????斷言:用于來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望材义,是否正確。它可以用來(lái)隔離問題域嫁赏,即在確保功能正確的前提下執(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ù)。

? ??????4.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)求記錄爽雄,消耗資源蝠检,影響客戶端性能。一般不勾選挚瘟。 4.用戶定義的變量:全局變量蝇率,測(cè)試計(jì)劃上可以添加用戶定義的變量。一般添加一些系統(tǒng)常用的配置刽沾。如果測(cè)試過(guò)程中想切換環(huán)境本慕,切換配置,一般不建議在測(cè)試計(jì)劃上添加變量


? ??????4.2. 線程組


(1)thread group(線程組)

這個(gè)就是我們通常添加運(yùn)行的線程侧漓。通俗的講一個(gè)線程組锅尘,可以看做一個(gè)虛擬用戶組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶。

(2)setup thread group

一種特殊類型的ThreadGroup的藤违,可用于執(zhí)行預(yù)測(cè)試操作浪腐。這些線程的行為完全像一個(gè)正常的線程組元件。不同的是顿乒,這些類型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行议街;類似LoadRunner的init,測(cè)試開始時(shí)進(jìn)行初始化的工作璧榄。

(3)teardown thread group

一種特殊類型的ThreadGroup的特漩,可用于執(zhí)行測(cè)試后動(dòng)作。這些線程的行為完全像一個(gè)正常的線程組元件骨杂。不同的是涂身,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組;類似LoadRunnner的end搓蚪,測(cè)試結(jié)束時(shí)進(jìn)行回收工作蛤售。


? ??????4.3. 取樣器(Http請(qǐng)求)

? ??????關(guān)于http請(qǐng)求的的屬性參數(shù)說(shuō)明:

? ??????????????1)名稱:用于標(biāo)識(shí)一個(gè)sample。建議使用一個(gè)有意義的名稱

????????????????2)注釋:對(duì)于測(cè)試沒任何影響妒潭,僅用來(lái)記錄用戶可讀的注釋信息

????????????????3)服務(wù)器名稱或IP:http請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或者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,大小寫不敏感佑女,默認(rèn)http

????????????????6)方法:發(fā)送http請(qǐng)求的方法

????????????????7)Contentencoding:內(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)Usekeep Alive:jmeter 和目標(biāo)服務(wù)器之間使用 Keep-Alive方式進(jìn)行HTTP通信(默認(rèn)選中)

????????????????11)Usemultipart/from-dataforHTTPPOST :當(dāng)發(fā)送HTTPPOST 請(qǐng)求時(shí)团驱,使用

????????????????12)Parameters、BodyData以及FilesUpload的區(qū)別:

????????????????????????1.parameter是指函數(shù)定義中參數(shù)空凸,而argument指的是函數(shù)調(diào)用時(shí)的實(shí)際參數(shù)

????????????????????????2.簡(jiǎn)略描述為:parameter=形參(formal parameter)嚎花, argument=實(shí)參(actual parameter)

????????????????????????3.在不很嚴(yán)格的情況下,現(xiàn)在二者可以混用呀洲,一般用argument紊选,而parameter則比較少用Whiledefining method,variables passedinthe method are called parameters.當(dāng)定義方法時(shí),傳遞到方法中的變量稱為參數(shù).Whileusingthose methods,values passed to those variables are called arguments.當(dāng)調(diào)用方法時(shí)道逗,傳給變量的值稱為引數(shù).(有時(shí)argument被翻譯為“引數(shù)“)

????????????????????????4兵罢、BodyData指的是實(shí)體數(shù)據(jù),就是請(qǐng)求報(bào)文里面主體實(shí)體的內(nèi)容滓窍,一般我們向服務(wù)器發(fā)送請(qǐng)求卖词,攜帶的實(shí)體主體參數(shù),可以寫入這里

????????????????????????5吏夯、FilesUpload指的是:從HTML文件獲取所有有內(nèi)含的資源:被選中時(shí)此蜈,發(fā)出HTTP請(qǐng)求并獲得響應(yīng)的HTML文件內(nèi)容后還對(duì)該HTML 進(jìn)行Parse 并獲取HTML中包含的所有資源(圖片即横、flash等):(默認(rèn)不選中) 如果用戶只希望獲取特定資源,可以在下方的EmbeddedURLsmust match 文本框中填入需要下載的特定資源表達(dá)式裆赵,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載

? ??????4.4. 監(jiān)聽器

? ??????????????監(jiān)聽器(Listener)負(fù)責(zé)收集測(cè)試結(jié)果东囚,同時(shí)也被告知了結(jié)果顯示的方式。我們常用的包括:聚合報(bào)告战授、查看結(jié)果樹页藻、用表格查看結(jié)果,都支持將結(jié)果數(shù)據(jù)寫入文件陈醒。其他的添加上去看看就行惕橙。聚合報(bào)告前面我們介紹過(guò),后面是查看結(jié)果樹和用表格查看結(jié)果的截圖钉跷。


? ??????4.5. 循環(huán)控制器




? ??????4.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 訪問首頁(yè)和注冊(cè)頁(yè)面


? ??????生成聚合報(bào)告


? ??????勾選

? ??????聚合報(bào)告中只有一項(xiàng)事務(wù)報(bào)告


? ??????4.7. 斷言---檢查點(diǎn)

????????????????斷言(Assertions)可以用來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望的。它可以用來(lái)隔離問題域膝晾,即在確保功能正確的前提下執(zhí)行壓力測(cè)試栓始。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的。

????????????????兩個(gè)重要斷言:響應(yīng)斷言和JSONAssertion

? ??????????????響應(yīng)斷言:


? ??????????JSON斷言:

? ??????4.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á)式提取器臊旭。作者:Anwfly鏈接:http://www.reibang.com/p/a53b149e6e46來(lái)源:簡(jiǎn)書著作權(quán)歸作者所有落恼。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處离熏。

? ??????4.9. 定時(shí)器

? ??????????定時(shí)器(Timer)負(fù)責(zé)定義請(qǐng)求之間的延遲間隔



五. Jmeter組件參數(shù)化

? ??????5.1. 參數(shù)化是什么

????????????????動(dòng)態(tài)的獲取并設(shè)置數(shù)據(jù)

????????5.2. 為什么使用參數(shù)化

????????????????執(zhí)行批量操作佳谦,批量添加批量刪除,人工效率太低

????????????????運(yùn)用程序代替人工獲取并設(shè)置數(shù)據(jù)滋戳,安全高效

????????????????比如:對(duì)被測(cè)系統(tǒng)的用戶名和密碼進(jìn)行參數(shù)化钻蔑,來(lái)模擬多個(gè)用戶同時(shí)登錄系統(tǒng)

? ??????5.3. 參數(shù)化實(shí)現(xiàn)之用戶自定義變量

????????????????通過(guò)這個(gè)功能,能實(shí)現(xiàn)多接口共享數(shù)據(jù)奸鸯,修改一條即可修改全部

????????????Filename:所需數(shù)據(jù)文件的路徑咪笑。如和腳本同一路徑,可直接填寫文件名

? ? ? ? ? ? File encoding:編碼和文件保持一致即可娄涩,默認(rèn)為ANSI蒲肋。如有中文,建議為UTF-8

????????????Variable Names:引用變量時(shí)的變量名,對(duì)應(yīng)數(shù)據(jù)文件中的每一列兜粘,以逗號(hào)分隔申窘。如不填寫,文件的第一行數(shù)據(jù)將被讀取為變量名

????????????Delimiter:在.txt孔轴、.dat文件中剃法,可以用逗號(hào)(,)或者Tab鍵(\t)來(lái)區(qū)分列與列

????????????Allow quote data:選項(xiàng)選為“true”的時(shí)候?qū)θ亲址奶幚沓霈F(xiàn)亂碼

????????????Recycle on EOF:到數(shù)據(jù)文件結(jié)尾時(shí)是否循環(huán)讀取。設(shè)置為True時(shí)路鹰,線程數(shù)過(guò)多贷洲,數(shù)據(jù)文件讀取到最后一行時(shí),會(huì)再次從第一行開始讀取晋柱。設(shè)置為False优构,到達(dá)文件結(jié)尾時(shí)如繼續(xù)讀取,則值會(huì)默認(rèn)為雁竞,可通過(guò)設(shè)置jmeter屬性csvdataset.eofstring來(lái)改變?cè)撝怠?/p>

????????????Stop thread on EOF:Recycle on EOF設(shè)置為False钦椭,Stop thread on EOF設(shè)置為True,則讀取數(shù)據(jù)文件最后一行后碑诉,停止測(cè)試彪腔,不管還有多少線程組未執(zhí)行。

????????????Sharing mode:共享模式进栽。默認(rèn)在所有線程組中使用德挣,可選擇每個(gè)線程組單獨(dú)打開

????????????相同的部分使用用戶自定義變量

????????????只需要修改一次接口

? ??????5.4. 參數(shù)化實(shí)現(xiàn)之CSV Data Set Config

? ??????????添加CSV Data Set Config:

? ??????????添加界面:

? ??????????名詞解釋:

????????????????Filename:所需數(shù)據(jù)文件的路徑。如和腳本同一路徑快毛,可直接填寫文件名

????????????????Fileencoding:編碼和文件保持一致即可格嗅,默認(rèn)為ANSI。如有中文唠帝,建議為UTF-8

????????????????VariableNames:引用變量時(shí)的變量名屯掖,對(duì)應(yīng)數(shù)據(jù)文件中的每一列,以逗號(hào)分隔没隘。Delimiter:在.txt懂扼、.dat文件中禁荸,可以用逗號(hào)(,)或者Tab鍵(\t)來(lái)區(qū)分列與列

????????????????Allowquote data:選項(xiàng)選為“true”的時(shí)候?qū)θ亲址奶幚沓霈F(xiàn)亂碼

????????????????Recycleon EOF:到數(shù)據(jù)文件結(jié)尾時(shí)是否循環(huán)讀取右蒲。設(shè)置為True時(shí),線程數(shù)過(guò)多赶熟,數(shù)據(jù)文件讀取到最后一行時(shí)瑰妄,會(huì)再次從第一行開始讀取。設(shè)置為False映砖,到達(dá)文件結(jié)尾時(shí)如繼續(xù)讀取间坐,則值會(huì)默認(rèn)為<EOF>,可通過(guò)設(shè)置jmeter屬性csvdataset.eofstring來(lái)改變?cè)撝怠?/p>

????????????????Stopthread on EOF:Recycleon EOF設(shè)置為False,Stopthread on EOF設(shè)置為True竹宋,則讀取數(shù)據(jù)文件最后一行后劳澄,停止測(cè)試,不管還有多少線程組未執(zhí)行蜈七。

????????????????Sharingmode:共享模式秒拔。默認(rèn)在所有線程組中使用,可選擇每個(gè)線程組單獨(dú)打開

? ??????????添加引用文件:

? ??????????????????

? ??????????引用:

????????????????在jmeter中添加



????????????????線程數(shù)改為某個(gè)值

? ??????????查看結(jié)果樹:

? ??????????其他:

????????????????線程組線程數(shù)改為大于文件中數(shù)據(jù)的處理:

????????????????遇到結(jié)束符在循環(huán)

? ? ? ? ? ? ? ? 遇到結(jié)束符停止線程

????????????????如果數(shù)據(jù)來(lái)自數(shù)據(jù)庫(kù)

????????????????數(shù)據(jù)庫(kù)導(dǎo)出txt文件

? ??????5.5. 使用Jmeter函數(shù)助手(文件中不要出現(xiàn)中文):

????????????????1飒硅、點(diǎn)擊 選項(xiàng)-->函數(shù)助手 調(diào)出函數(shù)助手對(duì)話框

????????????????2砂缩、選擇 _CSVRead 函數(shù)(下圖第一個(gè)框)

????????????????3、函數(shù)參數(shù):

????????????????????????1)第一個(gè)參數(shù):填寫文件路徑三娩。

????????????????????????2)第二個(gè)參數(shù):文件列號(hào)是從0開始的庵芭,第一列0、第二列1雀监、第三列2双吆、依次類推,然后點(diǎn)擊【生成】按鈕,則會(huì)自動(dòng)生成我們需要的參數(shù)化函數(shù)滔悉。

????????????????????????3)復(fù)制生成的參數(shù)化函數(shù)伊诵,copy過(guò)程需要使用的地方即可。????????????????????

????????????????????????4)_Random函數(shù)是從某數(shù)據(jù)段隨機(jī)讀取數(shù)據(jù)替換參數(shù)回官,當(dāng)需要添加多條數(shù)據(jù)記錄且某些字段需要唯一性時(shí)使用曹宴。




六. Jmeter正則表達(dá)式提取

6.1. 使用正則提取

運(yùn)用Jmeter正則提取器,可以從請(qǐng)求的響應(yīng)結(jié)果中取到需要的內(nèi)容歉提,從而實(shí)現(xiàn)關(guān)聯(lián)笛坦。關(guān)聯(lián)是請(qǐng)求與請(qǐng)求之間存在數(shù)據(jù)依賴關(guān)系,需要從上一個(gè)請(qǐng)求獲取下一個(gè)請(qǐng)求需要回傳回去的數(shù)據(jù)

正則表達(dá)式(regular expression)描述了一種字符串匹配的模式(pattern)苔巨,可以用來(lái)檢查一個(gè)串是否含有某種子串版扩、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。

字符描述

*匹配前面的子表達(dá)式零次或多次侄泽。例如礁芦,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}悼尾。

+匹配前面的子表達(dá)式一次或多次柿扣。例如,'zo+' 能匹配 "zo" 以及 "zoo"闺魏,但不能匹配 "z"未状。+ 等價(jià)于 {1,}。

?匹配前面的子表達(dá)式零次或一次析桥。例如司草,"do(es)?" 可以匹配 "do" 艰垂、 "does" 中的 "does" 、 "doxy" 中的 "do" 埋虹。? 等價(jià)于 {0,1}猜憎。

( )標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置。子表達(dá)式可以獲取供以后使用搔课。

.匹配除換行符 \n 之外的任何單字符拉宗。要匹配 . ,請(qǐng)使用 . 辣辫。

? ??????正則表達(dá)式提取的相關(guān)設(shè)置






?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旦事,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子急灭,更是在濱河造成了極大的恐慌姐浮,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葬馋,死亡現(xiàn)場(chǎng)離奇詭異卖鲤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)畴嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門蛋逾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窗悯,你說(shuō)我怎么就攤上這事区匣。” “怎么了蒋院?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵亏钩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我欺旧,道長(zhǎng)姑丑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任辞友,我火速辦了婚禮栅哀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘称龙。我一直安慰自己留拾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布茵瀑。 她就那樣靜靜地躺著间驮,像睡著了一般躬厌。 火紅的嫁衣襯著肌膚如雪马昨。 梳的紋絲不亂的頭發(fā)上竞帽,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音鸿捧,去河邊找鬼屹篓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛匙奴,可吹牛的內(nèi)容都是我干的堆巧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼泼菌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谍肤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起哗伯,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荒揣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后焊刹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體系任,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年虐块,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俩滥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贺奠,死狀恐怖霜旧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情儡率,我是刑警寧澤颁糟,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站喉悴,受9級(jí)特大地震影響棱貌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜箕肃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一婚脱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勺像,春花似錦障贸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至殃姓,卻和暖如春袁波,著一層夾襖步出監(jiān)牢的瞬間瓦阐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工篷牌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睡蟋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓枷颊,卻偏偏與公主長(zhǎng)得像戳杀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夭苗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎信卡,感謝一直在我身邊的親朋好友。感恩相遇题造!感恩不離不棄坐求。 中午開了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,567評(píng)論 0 11
  • 彩排完晌梨,天已黑
    劉凱書法閱讀 4,220評(píng)論 1 3
  • 表情是什么悄晃,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒遇骑。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過(guò)就哭了拐揭。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,280評(píng)論 2 7