jemter組件

一.性能測(cè)試? ?

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

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

? ? 2.jmeter的作用

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

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

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

????3.jemter的目錄結(jié)構(gòu)

? ? ? ? examples:目錄下包含jmeter使用實(shí)例

? ??????ApacheJMeter.jar:JMeter源碼包

????????jmeter.bat:windows下啟動(dòng)文件

????????jmeter.sh:Linux下啟動(dòng)文件

????????jmeter.log:Jmeter運(yùn)行日志文件

????????jmeter.properties:Jmeter配置文件

????????jmeter-server.bat:windows下啟動(dòng)負(fù)載生成器服務(wù)文件

????????jmeter-server:Linux下啟動(dòng)負(fù)載生成器文件

????????/docs目錄——Jmeter幫助文檔

????????/extras目錄——提供了對(duì)Ant的支持文件,可也用于持續(xù)集成

????????/lib目錄——存放Jmeter依賴(lài)的jar包,同時(shí)安裝插件也放于此目錄/licenses目錄——軟件許可文件

????????/printable_docs目錄——Jmeter用戶(hù)手冊(cè)

三.使用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)

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

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

3.1.3.? 線程數(shù):

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

3.1.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è)線程。

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)的開(kāi)始時(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.5. 查看表格信息

? ??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ù)的分布。

3.6查看結(jié)果數(shù)

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

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

????通過(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)????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:返回的頭部信息

? ?圖形結(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中定義,它被線程組包含??梢栽凇皽y(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ù)。

測(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ì)劃上添加變量

線程組

(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)行回收工作。

取樣器

名稱(chēng):用于表示一個(gè)sample.建議使用一個(gè)意義的名稱(chēng)

注釋?zhuān)簩?duì)于測(cè)試沒(méi)任何影響,僅用來(lái)記錄用戶(hù)可讀的注釋信息

服務(wù)器名稱(chēng)或IP:http請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或者IP地址,比如http://www.baidu.com4)端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80,可不填

協(xié)議:向目標(biāo)服務(wù)器發(fā)送http請(qǐng)求時(shí)的協(xié)議,http/https,大小寫(xiě)不敏感,默認(rèn)http

事物控制器

作用: 事務(wù)控制器會(huì)生產(chǎn)一個(gè)額外的采樣器,用來(lái)統(tǒng)計(jì)該控制器子結(jié)點(diǎn)的所有時(shí)間。

在線程組下創(chuàng)建事務(wù)控制器

斷言--檢查點(diǎn)

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

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

參數(shù)化是什么

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

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

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

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

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

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

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

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

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

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

jmeter正則表達(dá)式提取

使用正則提取

運(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ù)依賴(lài)關(guān)系,需要從上一個(gè)請(qǐng)求獲取下一個(gè)請(qǐng)求需要回傳回去的數(shù)據(jù)

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

字符:*,+,?,(),.

(1)引用名稱(chēng):下一個(gè)請(qǐng)求要引用的參數(shù)名稱(chēng),如填寫(xiě)title,則可用${title}引用它。

(2)正則表達(dá)式:():括起來(lái)的部分就是要提取的。.:匹配任何字符串。+:一次或多次。?:不要太貪婪,在找到第一個(gè)匹配項(xiàng)后停止。

(3)模板:用$$引用起來(lái),如果在正則表達(dá)式中有多個(gè)正則表達(dá)式,則可以是$2$$3$等等,表示解析到的第幾個(gè)值給title。如:$1$表示解析到的第1個(gè)值

(4)匹配數(shù)字:0代表隨機(jī)取值,1代表全部取值,通常情況下填0

(5)缺省值:如果參數(shù)沒(méi)有取得到值,那默認(rèn)給一個(gè)值讓它取。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容