2022-03-23

一. 性能測試

1.0 為什么要進行性能測試帆卓?

評估當(dāng)前系統(tǒng)的能力

尋找性能瓶頸替裆,優(yōu)化系統(tǒng)性能

評估軟件是否滿足未來的需要

招聘需要

1.1 什么是性能

時間:系統(tǒng)處理用戶請求的響應(yīng)時間

資源:系統(tǒng)運行過程中骆姐,系統(tǒng)資源的消耗情況

1.2. 性能測試是什么

1.2.1 廣義定義

基于協(xié)議模擬用戶發(fā)出請求始绍,對服務(wù)器形成一定負(fù)載胜茧,來測試服務(wù)器的性能指標(biāo)是否滿足要求性能指標(biāo)關(guān)注點:時間性能室叉、空間性能性能測試與頁面無關(guān)

1.2.1 狹義定義

指通過自動化的測試工具模擬多種正常抑片、峰值以及異常負(fù)載條件來對系統(tǒng)的各項性能指標(biāo)進行測試卵佛。

1.3 功能和性能測試

不同

功能測試驗證系統(tǒng)的功能需求規(guī)格,聚焦功能敞斋。

性能測試驗證系統(tǒng)的業(yè)務(wù)性需求場景截汪,聚焦時間和資源。

關(guān)系

一般項目中植捎,先功能測試通過后衙解,后進行性能測試。

1.4 性能測試的分類

1.4.1 基準(zhǔn)測試

狹義:單用戶測試

廣義:建立基準(zhǔn)線焰枢,當(dāng)系統(tǒng)軟硬件環(huán)境發(fā)生變化之后再進行一次基準(zhǔn)測試以確定變化對性能的影響蚓峦。

1.4.2 負(fù)載測試

概念

通過逐步增加系統(tǒng)負(fù)載舌剂,確定在滿足性能指標(biāo)的情況下,找出系統(tǒng)所能承受最大負(fù)載量的測試暑椰。

作用

系統(tǒng)最大負(fù)載量達到用戶要求時霍转,系統(tǒng)才能正式上線使用。

案例

電梯行業(yè)規(guī)范:電梯從1樓到5樓的運行時間不超過24s

1人? ? 20s7人? ? 20s13人? 20s? ? 達到最大負(fù)載16人? 25s19人? 28s21人? 斷繩子

注意

通過負(fù)載測試干茉,可以確定系統(tǒng)的最大負(fù)載量和極限負(fù)載量

系統(tǒng)對外宣稱的最大負(fù)載量

負(fù)載測試的時間一般為1-2小時

1.4.3 穩(wěn)定性測試

概念:在服務(wù)器穩(wěn)定運行(用戶正常業(yè)務(wù)負(fù)載下)的情況進行長時間測試(1天-一周等)谴忧,并最終保證服務(wù)器能滿足線上業(yè)務(wù)需求。

系統(tǒng)在用戶需求的業(yè)務(wù)負(fù)載下運行達到規(guī)定的時間時角虫,系統(tǒng)才能正式上線使用沾谓。

1.4.4 壓力測試

概念:在強負(fù)載下的測試,查看系統(tǒng)在峰值下是否功能隱患戳鹅、系統(tǒng)是否具有良好的容錯能力和可恢復(fù)的能力均驶。

測試場景

高負(fù)載下的長時間穩(wěn)定性壓力測試 (如:B-C區(qū)間內(nèi)進行24/3*24小時長時間測試)

極限負(fù)載下的破壞性壓力測試(如:C-D區(qū)間內(nèi)進行測試)

1.4.5 并發(fā)測試

概念:在極短時間內(nèi),發(fā)送多個請求枫虏,來驗證服務(wù)器對并發(fā)的處理能力妇穴。

應(yīng)用場景

特定的活動場景:搶紅包、秒殺隶债、搶購等腾它。

與負(fù)載測試對比:

負(fù)載測試:主要目的是測試高負(fù)載情況下,對系統(tǒng)資源的消耗死讹,是否會耗盡的問題(雙11活動)

并發(fā)測試:主要目的是測試極短時間內(nèi)瞒滴,并發(fā)請求時,系統(tǒng)資源爭搶的問題(搶紅包赞警、秒殺)

1.5 性能測試的指標(biāo)

1.5.1 響應(yīng)時間

指從客戶端發(fā)起請求開始妓忍,到客戶端接收到結(jié)果的總時間

包括:服務(wù)器處理時間 + 網(wǎng)絡(luò)傳輸時間

1.5.2 并發(fā)用戶數(shù)

某一時刻同時向服務(wù)器發(fā)送請求的用戶數(shù)

1.5.3 吞吐量(Throughout)

1.概念:單位時間內(nèi)處理客戶端的請求數(shù)量,直接體現(xiàn)軟件系統(tǒng)能能承載能力愧旦。

吞吐量單位分類

1.5.4 QPS

QPS(Query Per Second)每秒查詢數(shù)世剖,即控制服務(wù)器每秒處理的指定請求的數(shù)量。

1.5.5 TPS

TPS(Transaction Per Second)每秒事務(wù)數(shù)笤虫,即控制服務(wù)器每秒處理事務(wù)請求的數(shù)量旁瘫。

如:支付請求事務(wù)=查詢用戶余額請求+校驗支付安全請求+發(fā)送支付請求

每秒處理查詢用戶余額15請求,每秒處理校驗支付安全15個請求琼蚯,每秒處理發(fā)送支付15個請求

支付tsp為15

1.5.6 點擊數(shù)

所有的頁面元素(如:圖片境蜕、鏈接、框架等)的請求總數(shù)

注意:

點擊數(shù)是請求數(shù)凌停,不是頁面上的一次點擊

1.5.7 錯誤率

指系統(tǒng)在負(fù)載情況下粱年,失敗業(yè)務(wù)的概率

注意:

錯誤率是性能指標(biāo),是高負(fù)載下的失敗業(yè)務(wù)的概率

-隨機bug是功能bug罚拟,先解決隨機bug才能進行性能測試

1.5.8 資源利用率

概念:系統(tǒng)各種資源的使用情況台诗,率=資源使用量/總資源可用量x100%

常見資源指標(biāo)

CPU使用率:不高于75%-85%

內(nèi)存大小使用率:不高于80%

磁盤IO(速率):不高于90%

網(wǎng)路(速率):不高于80%

1.6 性能測試工具

性能測試工具.png

二.? Jmeter簡介

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

開源完箩,免費,基于Java編寫拉队,可集成到其他系統(tǒng)可拓展各個功能插件

支持接口測試弊知,壓力(負(fù)載和壓力)測試等多種功能,支持錄制回放粱快,

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

多平臺支持事哭,可在Linux漫雷,Windows,Mac上運行鳍咱,支持多協(xié)議

2.2. Jmeter的作用

接口測試? 面試說postman降盹,因為方便好用。

性能測試? jmeter谤辜,也可以用postman(runner)蓄坏,但是沒有性能指標(biāo)

數(shù)據(jù)庫測試

2.3. Jmeter怎么用

Windows下Jmeter下載安裝,登錄http://jmeter.apache.org/download_jmeter.cgi丑念,根據(jù)自己平臺涡戳,下載對應(yīng)文件

image.png

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

安裝JDK,配置環(huán)境變量(具體步驟不做介紹)

image.png

將下載Jmeter文件解壓脯倚,打開/bin/jmeter.bat

image.png

image.png

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

image.png

/bin 目錄常用文件介紹:

examples:目錄下包含Jmeter使用實例ApacheJMeter.jar:JMeter源碼包jmeter.bat:windows下啟動文件jmeter.sh:Linux下啟動文件jmeter.log:Jmeter運行日志文件jmeter.properties:Jmeter配置文件jmeter-server.bat:windows下啟動負(fù)載生成器服務(wù)文件jmeter-server:Linux下啟動負(fù)載生成器文件/docs目錄——Jmeter幫助文檔/extras目錄——提供了對Ant的支持文件妹蔽,可也用于持續(xù)集成/lib目錄——存放Jmeter依賴的jar包,同時安裝插件也放于此目錄/licenses目錄——軟件許可文件挠将,不用管/printable_docs目錄——Jmeter用戶手冊

三.? 使用Jmeter測試快速入門

3.1. 線程組是什么

進程: 一個正在執(zhí)行的程序?qū)?yīng)一個進程線程: 一個進程有多個執(zhí)行線程線程組:? 按照線程性質(zhì)對線程分組。查看任務(wù)管理器(愛奇藝有多個)三者關(guān)系: 一個進程有多個線程組编整,一個線程組有多個線程

測試計劃—線程組—線程組屬性中的線程數(shù)

并發(fā)執(zhí)行:多個線程同時執(zhí)行舔稀,特點:執(zhí)行結(jié)束的順序與開始的順序不一致

順序執(zhí)行:按照線程的啟動順序挨個執(zhí)行

默認(rèn)情況下,線程組中的線程是并發(fā)執(zhí)行

每一個線程都要執(zhí)行組內(nèi)的http請求

設(shè)置線程組順序執(zhí)行:勾選測試計劃中的(獨立運行每個線程組)

線程組用來模擬用戶的并發(fā)訪問

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

image.png

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

線程數(shù)掌测、準(zhǔn)備時長(Ramp-Up Period(in seconds))内贮、循環(huán)次數(shù)。

3.1.3.? 線程數(shù):

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

3.1.4.? 準(zhǔn)備時長(秒):

設(shè)置的虛擬用戶數(shù)需要多長時間全部啟動粘勒。如果線程數(shù)為20 竞端,準(zhǔn)備時長為10 ,那么需要10秒鐘啟動20個線程庙睡。也就是每秒鐘啟動2個線程事富。

3.1.5. 循環(huán)次數(shù):

每個線程發(fā)送請求的次數(shù)技俐。如果線程數(shù)為20 ,循環(huán)次數(shù)為100 统台,那么每個線程發(fā)送100次請求雕擂。總請求數(shù)為20*100=2000 贱勃。如果勾選了“永遠(yuǎn)”井赌,那么所有線程會一直發(fā)送請求,一直到選擇停止運行腳本贵扰。

3.1.6. 調(diào)度器

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

3.1.7. 持續(xù)時間(秒)

測試持續(xù)時間,會覆蓋結(jié)束時間

3.1.8. 啟動延遲(秒)

測試延遲啟動時間拔鹰,會覆蓋啟動時間

3.1.9. 啟動時間

測試啟動時間仪缸,啟動延遲會覆蓋它。當(dāng)啟動時間已過列肢,手動只需測試時當(dāng)前時間也會覆蓋它恰画。

3.1.10.? 結(jié)束時間

測試結(jié)束時間,持續(xù)時間會覆蓋它瓷马。

image.png

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

見得最多拴还,所以我們著重講解:

image.png

3.3. 指定請求域名,請求路徑

接口文檔講解

image.png

一個HTTP請求有著許多的配置參數(shù)欧聘,下面將詳細(xì)介紹:

名稱:本屬性用于標(biāo)識一個取樣器片林,建議使用一個有意義的名稱。

注釋:對于測試沒有任何作用怀骤,僅用戶記錄用戶可讀的注釋信息费封。

服務(wù)器名稱或IP :HTTP請求發(fā)送的目標(biāo)服務(wù)器名稱或IP地址。

端口號:目標(biāo)服務(wù)器的端口號蒋伦。

方法:發(fā)送HTTP請求的方法弓摘,可用方法包括GET、POST痕届、HEAD韧献、PUT、OPTIONS研叫、TRACE锤窑、DELETE等。

Content encoding :內(nèi)容的編碼方式嚷炉,默認(rèn)值為iso8859

路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)

點擊run測試渊啰,很麻煩,我們使用postman測試更簡單申屹,使用postman操作虽抄。

可以使用剛才的接口文檔中的走搁,聚合接口中演示一個。

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

image.png

注意:如果監(jiān)聽器中有jp@gc開頭的迈窟,都是第三方插件

3.5. 查看表格信息

image.png

Sample:每個請求的序號

Start Time:每個請求開始時間

Thread Name:每個線程的名稱

Label:Http請求名稱

Sample Time:每個請求所花時間私植,單位毫秒

Status:請求狀態(tài),如果為勾則表示成功车酣,如果為叉表示失敗曲稼。

Bytes:請求的字節(jié)數(shù)

樣本數(shù)目:也就是上面所說的請求個數(shù),成功的情況下等于你設(shè)定的并發(fā)數(shù)目乘以循環(huán)次數(shù)

平均:每個線程請求的平均時間

最新樣本:表示服務(wù)器響應(yīng)最后一個請求的時間

偏離:服務(wù)器響應(yīng)時間變化湖员、離散程度測量值的大小贫悄,或者,換句話說娘摔,就是數(shù)據(jù)的分布窄坦。

3.6. 查看結(jié)果樹

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

image.png

響應(yīng)的數(shù)據(jù)展示(響應(yīng)碼凳寺,響應(yīng)頭,,)

image.png

通過察看結(jié)果樹鸭津,我們可以看到每個請求的結(jié)果,其中紅色的是出錯的請求肠缨,綠色的為通過逆趋。

Thread Name:線程組名稱Sample Start:啟動開始時間Load time:加載時長Latency:等待時長Sizeinbytes:發(fā)送的數(shù)據(jù)總大小Headers sizeinbytes:發(fā)送數(shù)據(jù)的其余部分大小Sample Count:發(fā)送統(tǒng)計Error Count:交互錯誤統(tǒng)計Response code:返回碼Response message:返回信息Response headers:返回的頭部信息

3.7. 聚合報告參數(shù)說明

image.png

lable:對應(yīng)每一個http請求,顯示的是http請求的Name晒奕,如百度http請求name為baidu

#Samples:表示這一次的測試中一共發(fā)出了多少請求闻书,如上圖所示,sougou和baidu的http請求每個都發(fā)出30個請求

Average:平均響應(yīng)時間脑慧,指的是所有的請求的平均響應(yīng)時間魄眉,如上圖的30個請求的總的響應(yīng)時間除以30得出的平均響應(yīng)時間,默認(rèn)的情況下是單個請求的平均響應(yīng)時間闷袒,但當(dāng)使用了“事務(wù)控制器”時坑律,則以事物為單位顯示平均響應(yīng)時間

Median:中位數(shù),也就是50%用戶的響應(yīng)時間

90%Line:90%用戶的響應(yīng)時間

Min:最小響應(yīng)時間

Max:最大的響應(yīng)時間

Error%:本次測試中出現(xiàn)錯誤的請求的數(shù)量/請求的總數(shù)霜运,如上圖所示,本次的測試中蒋腮,sougou的http請求66.6%的請求出錯淘捡,而baidu的請求則沒有出錯的請求

Throughput:吞吐量,默認(rèn)情況下表示每秒完成的請求數(shù)池摧,如上圖所示焦除,每秒完成的請求數(shù)分別為6.6個每秒,6.2個每秒

Recived KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量作彤,以kb為計算的單位

掌握:平均時間膘魄、錯誤率乌逐、吞吐量。

3.8.? 圖形結(jié)果

作用:通過圖形展示出本次性能測試數(shù)據(jù)的分布创葡。 圖形結(jié)果一般作為聚合報告的分析輔佐

image.png

樣本數(shù)目:總共發(fā)送到服務(wù)器的請求數(shù)浙踢。最新樣本:代表時間的數(shù)字,是服務(wù)器響應(yīng)最后一個請求的時間灿渴。吞吐量:服務(wù)器每分鐘處理的請求數(shù)洛波。平均值:總運行時間除以發(fā)送到服務(wù)器的請求數(shù)。中間值:有一半的服務(wù)器響應(yīng)時間低于該值而另一半高于該值骚露。偏離:表示服務(wù)器響應(yīng)時間變化蹬挤、離散程度測量值的大小。

四.? Jmeter主要組件介紹

測試計劃:使用 JMeter 進行測試的起點棘幸,它是其它 JMeter 測試元件的容器焰扳。

線程組:代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求误续。實際的請求內(nèi)容在Sampler中定義吨悍,它被線程組包含∨埃可以在“測試計劃->添加->線程組”來建立它畜份,然后在線程組面板里有幾個輸入欄:線程數(shù)、Ramp-Up Period(in seconds)欣尼、循環(huán)次數(shù)爆雹,其中Ramp-Up Period(in seconds)表示在這時間內(nèi)創(chuàng)建完所有的線程。如有8個線程愕鼓,Ramp-Up = 200秒钙态,那么線程的啟動時間間隔為200/8=25秒,這樣的好處是:一開始不會對服務(wù)器有太大的負(fù)載菇晃。線程組是為模擬并發(fā)負(fù)載而設(shè)計册倒。

取樣器(Sampler):模擬各種請求。所有實際的測試任務(wù)都由取樣器承擔(dān)磺送,存在很多種請求玩般。如:HTTP 、ftp請求等等腔呜。

監(jiān)聽器:負(fù)責(zé)收集測試結(jié)果出爹,同時也被告知了結(jié)果顯示的方式。功能是對取樣器的請求結(jié)果顯示馅袁、統(tǒng)計一些數(shù)據(jù)(吞吐量域慷、KB/S……)等。

斷言:用于來判斷請求響應(yīng)的結(jié)果是否如用戶所期望,是否正確犹褒。它可以用來隔離問題域抵窒,即在確保功能正確的前提下執(zhí)行壓力測試。這個限制對于有效的測試是非常有用的叠骑。

邏輯控制器:允許自定義JMeter發(fā)送請求的行為邏輯李皇,它與Sampler結(jié)合使用可以模擬復(fù)雜的請求序列。

定時器:負(fù)責(zé)定義請求(線程)之間的延遲間隔座云,模擬對服務(wù)器的連續(xù)請求疙赠。

配置元件維護Sampler需要的配置信息,并根據(jù)實際的需要會修改請求的內(nèi)容朦拖。

前置處理器和后置處理器負(fù)責(zé)在生成請求之前和之后完成工作圃阳。前置處理器常常用來修改請求的設(shè)置,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)璧帝。

4.1. 測試計劃

image.png

1.測試計劃就是一個完整的場景2.“獨立運行每個線程組” :勾選以后所有的線程組都是順序執(zhí)行的了捍岳。一般不勾選,讓所有 的線程組并發(fā)啟動睬隶。3.“函數(shù)測試模式” :勾選后會有詳細(xì)的請求記錄锣夹,消耗資源,影響客戶端性能苏潜。一般不勾選银萍。4.用戶定義的變量:全局變量,測試計劃上可以添加用戶定義的變量恤左。一般添加一些系統(tǒng)常用的配置贴唇。如果測試過程中想切換環(huán)境,切換配置飞袋,一般不建議在測試計劃上添加變量

image.png

4.2. 線程組

image.png

(1)thread group(線程組)

這個就是我們通常添加運行的線程戳气。通俗的講一個線程組,可以看做一個虛擬用戶組巧鸭,線程組中的每個線程都可以理解為一個虛擬用戶瓶您。

(2)setup thread group

一種特殊類型的ThreadGroup的,可用于執(zhí)行預(yù)測試操作纲仍。這些線程的行為完全像一個正常的線程組元件呀袱。不同的是,這些類型的線程執(zhí)行測試前進行定期線程組的執(zhí)行郑叠;類似LoadRunner的init夜赵,測試開始時進行初始化的工作。

(3)teardown thread group

一種特殊類型的ThreadGroup的锻拘,可用于執(zhí)行測試后動作油吭。這些線程的行為完全像一個正常的線程組元件。不同的是署拟,這些類型的線程執(zhí)行測試結(jié)束后執(zhí)行定期的線程組婉宰;類似LoadRunnner的end,測試結(jié)束時進行回收工作推穷。

image.png

4.3. 取樣器(Http請求)

image.png

關(guān)于http請求的的屬性參數(shù)說明:

1)名稱:用于標(biāo)識一個sample心包。建議使用一個有意義的名稱2)注釋:對于測試沒任何影響,僅用來記錄用戶可讀的注釋信息3)服務(wù)器名稱或IP:http請求發(fā)送的目標(biāo)服務(wù)器名稱或者IP地址馒铃,比如http://www.baidu.com4)端口號:目標(biāo)服務(wù)器的端口號蟹腾,默認(rèn)值為80,可不填5)協(xié)議:向目標(biāo)服務(wù)器發(fā)送http請求時的協(xié)議区宇,http/https娃殖,大小寫不敏感,默認(rèn)http6)方法:發(fā)送http請求的方法(鏈接:http://www.cnblogs.com/imyalost/p/5630940.html)7)Contentencoding:內(nèi)容的編碼方式(Content-Type=application/json;charset=utf-8)8)路徑:目標(biāo)的URL路徑(不包括服務(wù)器地址和端口)9)自動重定向:如果選中該項议谷,發(fā)出的http請求得到響應(yīng)是301/302炉爆,jmeter會重定向到新的界面10)Usekeep Alive:jmeter 和目標(biāo)服務(wù)器之間使用 Keep-Alive方式進行HTTP通信(默認(rèn)選中)11)Usemultipart/from-dataforHTTPPOST :當(dāng)發(fā)送HTTPPOST 請求時,使用12)Parameters卧晓、BodyData以及FilesUpload的區(qū)別:1.parameter是指函數(shù)定義中參數(shù)芬首,而argument指的是函數(shù)調(diào)用時的實際參數(shù)2.簡略描述為:parameter=形參(formal parameter), argument=實參(actual parameter)3.在不很嚴(yán)格的情況下逼裆,現(xiàn)在二者可以混用郁稍,一般用argument,而parameter則比較少用Whiledefining method,variables passedinthe method are called parameters.當(dāng)定義方法時胜宇,傳遞到方法中的變量稱為參數(shù).Whileusingthose methods,values passed to those variables are called arguments.當(dāng)調(diào)用方法時耀怜,傳給變量的值稱為引數(shù).(有時argument被翻譯為“引數(shù)“)4、BodyData指的是實體數(shù)據(jù)掸屡,就是請求報文里面主體實體的內(nèi)容封寞,一般我們向服務(wù)器發(fā)送請求,攜帶的實體主體參數(shù)仅财,可以寫入這里5狈究、FilesUpload指的是:從HTML文件獲取所有有內(nèi)含的資源:被選中時,發(fā)出HTTP請求并獲得響應(yīng)的HTML文件內(nèi)容后還對該HTML? 進行Parse 并獲取HTML中包含的所有資源(圖片盏求、flash等):(默認(rèn)不選中)? 如果用戶只希望獲取特定資源抖锥,可以在下方的EmbeddedURLsmust match 文本框中填入需要下載的特定資源表達式,只有能匹配指定正則表達式的URL指向資源會被下載

4.4. 監(jiān)聽器

監(jiān)聽器(Listener)負(fù)責(zé)收集測試結(jié)果碎罚,同時也被告知了結(jié)果顯示的方式磅废。我們常用的包括:聚合報告、查看結(jié)果樹荆烈、用表格查看結(jié)果拯勉,都支持將結(jié)果數(shù)據(jù)寫入文件竟趾。其他的添加上去看看就行。聚合報告前面我們介紹過宫峦,后面是查看結(jié)果樹和用表格查看結(jié)果的截圖岔帽。

image.png

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

image.png

image.png

image.png

4.6. 事務(wù)控制器

作用: 事務(wù)控制器會生產(chǎn)一個額外的采樣器,用來統(tǒng)計該控制器子結(jié)點的所有時間导绷。

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

參數(shù):

· Generate parent sample:(選中這個參數(shù)結(jié)果展示如下圖紅框犀勒,否則顯示為下圖藍(lán)框)

· Include duration of timer and pre-post processors in generated sample:選中這一項會統(tǒng)計定時器(timer)的時間,否則只統(tǒng)計采樣器(sample)的時間

image.png

創(chuàng)建sample 訪問首頁和注冊頁面

image.png

生成聚合報告

image.png

勾選

image.png

聚合報告中只有一項事務(wù)報告

image.png

4.7. 斷言---檢查點

斷言(Assertions)可以用來判斷請求響應(yīng)的結(jié)果是否如用戶所期望的妥曲。它可以用來隔離問題域贾费,即在確保功能正確的前提下執(zhí)行壓力測試。這個限制對于有效的測試是非常有用的檐盟。

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

響應(yīng)斷言:

image.png

JSON斷言:

image.png

4.8. 前置處理器和后置處理器

image.png

前置處理器(Pre Processors)和后置處理器(Post Processors)負(fù)責(zé)在生成請求之前和之后完成工作褂萧。前置處理器常常用來修改請求的設(shè)置,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)葵萎。我們主要在動態(tài)關(guān)聯(lián)中用到后置處理器的正則表達式提取器箱玷。

https://www.cnblogs.com/fengpingfan/p/4755411.html

4.9. 定時器

定時器(Timer)負(fù)責(zé)定義請求之間的延遲間隔

image.png

image.png

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

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

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

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

執(zhí)行批量操作,批量添加批量刪除陌宿,人工效率太低運用程序代替人工獲取并設(shè)置數(shù)據(jù)锡足,安全高效比如:對被測系統(tǒng)的用戶名和密碼進行參數(shù)化,來模擬多個用戶同時登錄系統(tǒng)

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

通過這個功能壳坪,能實現(xiàn)多接口共享數(shù)據(jù)舶得,修改一條即可修改全部

image.png

image.png

image.png

image.png

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

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

Variable Names:引用變量時的變量名九孩,對應(yīng)數(shù)據(jù)文件中的每一列,以逗號分隔发框。如不填寫躺彬,文件的第一行數(shù)據(jù)將被讀取為變量名

Delimiter:在.txt、.dat文件中梅惯,可以用逗號(,)或者Tab鍵(\t)來區(qū)分列與列

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

Recycle on EOF:到數(shù)據(jù)文件結(jié)尾時是否循環(huán)讀取宪拥。設(shè)置為True時,線程數(shù)過多铣减,數(shù)據(jù)文件讀取到最后一行時她君,會再次從第一行開始讀取。設(shè)置為False葫哗,到達文件結(jié)尾時如繼續(xù)讀取缔刹,則值會默認(rèn)為球涛,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變該值。

Stop thread on EOF:Recycle on EOF設(shè)置為False校镐,Stop thread on EOF設(shè)置為True宾符,則讀取數(shù)據(jù)文件最后一行后,停止測試灭翔,不管還有多少線程組未執(zhí)行。

Sharing mode:共享模式辣苏。默認(rèn)在所有線程組中使用肝箱,可選擇每個線程組單獨打開

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

只需要修改一次接口

效果展示

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

添加CSV Data Set Config:

image.png

添加界面:

image.png

通過這個組件可以動態(tài)獲取并設(shè)置數(shù)據(jù),實現(xiàn)批量添加操作

名詞解釋:

Filename:所需數(shù)據(jù)文件的路徑稀蟋。如和腳本同一路徑煌张,可直接填寫文件名Fileencoding:編碼和文件保持一致即可,默認(rèn)為ANSI退客。如有中文骏融,建議為UTF-8VariableNames:引用變量時的變量名,對應(yīng)數(shù)據(jù)文件中的每一列萌狂,以逗號分隔档玻。Delimiter:在.txt、.dat文件中茫藏,可以用逗號(,)或者Tab鍵(\t)來區(qū)分列與列Allowquote data:選項選為“true”的時候?qū)θ亲址奶幚沓霈F(xiàn)亂碼Recycleon EOF:到數(shù)據(jù)文件結(jié)尾時是否循環(huán)讀取误趴。設(shè)置為True時,線程數(shù)過多务傲,數(shù)據(jù)文件讀取到最后一行時凉当,會再次從第一行開始讀取。設(shè)置為False售葡,到達文件結(jié)尾時如繼續(xù)讀取看杭,則值會默認(rèn)為<EOF>,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變該值挟伙。Stopthread on EOF:Recycleon EOF設(shè)置為False楼雹,Stopthread on EOF設(shè)置為True,則讀取數(shù)據(jù)文件最后一行后尖阔,停止測試烘豹,不管還有多少線程組未執(zhí)行。Sharingmode:共享模式诺祸。默認(rèn)在所有線程組中使用携悯,可選擇每個線程組單獨打開

添加引用文件:

image.png

引用:

在jmeter中添加

image.png

image.png

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

查看結(jié)果樹:

image.png

其他:

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

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

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

如果數(shù)據(jù)來自數(shù)據(jù)庫

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

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

1、點擊 選項-->函數(shù)助手 調(diào)出函數(shù)助手對話框2筷笨、選擇 _CSVRead 函數(shù)(下圖第一個框)3憔鬼、函數(shù)參數(shù):1)第一個參數(shù):填寫文件路徑龟劲。2)第二個參數(shù):文件列號是從0開始的,第一列0轴或、第二列1昌跌、第三列2、依次類推,然后點擊【生成】按鈕照雁,則會自動生成我們需要的參數(shù)化函數(shù)蚕愤。3)復(fù)制生成的參數(shù)化函數(shù),copy過程需要使用的地方即可饺蚊。4)_Random函數(shù)是從某數(shù)據(jù)段隨機讀取數(shù)據(jù)替換參數(shù)萍诱,當(dāng)需要添加多條數(shù)據(jù)記錄且某些字段需要唯一性時使用。

image.png

image.png

image.png

六. Jmeter正則表達式提取

6.1. 使用正則提取

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

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

字符描述

*匹配前面的子表達式零次或多次饵蒂。例如,zo* 能匹配 "z" 以及 "zoo"酱讶。* 等價于{0,}苹享。

+匹配前面的子表達式一次或多次。例如浴麻,'zo+' 能匹配 "zo" 以及 "zoo"得问,但不能匹配 "z"。+ 等價于 {1,}软免。

?匹配前面的子表達式零次或一次宫纬。例如,"do(es)?" 可以匹配 "do" 膏萧、 "does" 中的 "does" 漓骚、 "doxy" 中的 "do" 。? 等價于 {0,1}榛泛。

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

.匹配除換行符 \n 之外的任何單字符曹锨。要匹配 . 孤个,請使用 . 。

構(gòu)造正則表達式的方法和創(chuàng)建數(shù)學(xué)表達式的方法一樣沛简。也就是用多種元字符與運算符可以將小的表達式結(jié)合在一起來創(chuàng)建更大的表達式齐鲤。正則表達式的組件可以是單個的字符斥废、字符集合、字符范圍给郊、字符間的選擇或者所有這些組件的任意組合。

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

image.png

image.png

說明:

(1)引用名稱:下一個請求要引用的參數(shù)名稱炭庙,如填寫title饲窿,則可用${title}引用它。(2)正則表達式:():括起來的部分就是要提取的煤搜。.:匹配任何字符串。+:一次或多次唧席。?:不要太貪婪淌哟,在找到第一個匹配項后停止迹卢。(3)模板:用$$引用起來,如果在正則表達式中有多個正則表達式徒仓,則可以是$2$$3$等等症见,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值(4)匹配數(shù)字:0代表隨機取值殃饿,1代表全部取值谋作,通常情況下填0(5)缺省值:如果參數(shù)沒有取得到值,那默認(rèn)給一個值讓它取乎芳。

案例:api接口

image.png

image.png

image.png

作者:Anwfly

鏈接:http://www.reibang.com/p/a53b149e6e46

來源:簡書

著作權(quán)歸作者所有遵蚜。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處奈惑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吭净,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肴甸,更是在濱河造成了極大的恐慌寂殉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件原在,死亡現(xiàn)場離奇詭異不撑,居然都是意外死亡文兢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門焕檬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姆坚,“玉大人,你說我怎么就攤上這事实愚〖婧牵” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵腊敲,是天一觀的道長击喂。 經(jīng)常有香客問我,道長碰辅,這世上最難降的妖魔是什么懂昂? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮没宾,結(jié)果婚禮上凌彬,老公的妹妹穿的比我還像新娘。我一直安慰自己循衰,他們只是感情好铲敛,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著会钝,像睡著了一般伐蒋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迁酸,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天先鱼,我揣著相機與錄音,去河邊找鬼奸鬓。 笑死型型,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的全蝶。 我是一名探鬼主播闹蒜,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抑淫!你這毒婦竟也來了绷落?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤始苇,失蹤者是張志新(化名)和其女友劉穎砌烁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡函喉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年避归,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片管呵。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡梳毙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捐下,到底是詐尸還是另有隱情账锹,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布坷襟,位于F島的核電站奸柬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏婴程。R本人自食惡果不足惜廓奕,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望档叔。 院中可真熱鬧桌粉,春花似錦、人聲如沸蹲蒲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽届搁。三九已至,卻和暖如春窍育,著一層夾襖步出監(jiān)牢的瞬間卡睦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工漱抓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留表锻,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓乞娄,卻偏偏與公主長得像瞬逊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仪或,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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

  • 一. 性能測試 1.0 為什么要進行性能測試确镊? 評估當(dāng)前系統(tǒng)的能力 尋找性能瓶頸,優(yōu)化系統(tǒng)性能 評估軟件是否滿足...
    5888eb1818d9閱讀 220評論 0 0
  • 一. 性能測試 1.0 為什么要進行性能測試范删? 評估當(dāng)前系統(tǒng)的能力 尋找性能瓶頸蕾域,優(yōu)化系統(tǒng)性能 評估軟件是否滿足...
    玉奎閱讀 591評論 0 0
  • 一. 性能測試 1.0 為什么要進行性能測試? 評估當(dāng)前系統(tǒng)的能力 尋找性能瓶頸,優(yōu)化系統(tǒng)性能 評估軟件是否滿足...
    745aacb67869閱讀 227評論 0 0
  • 一. 性能測試 1.0 為什么要進行性能測試旨巷? 評估當(dāng)前系統(tǒng)的能力 尋找性能瓶頸巨缘,優(yōu)化系統(tǒng)性能 評估軟件是否滿足...
    boke閱讀 191評論 0 0
  • 一. 性能測試 1.0 為什么要進行性能測試? 評估當(dāng)前系統(tǒng)的能力 尋找性能瓶頸采呐,優(yōu)化系統(tǒng)性能 評估軟件是否滿足...
    jokerj閱讀 521評論 0 1