1、Jmeter基礎(chǔ)知識

基礎(chǔ)知識:

認識jmeter:

JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。具有開源免費、框架靈活、多平臺支

持等優(yōu)勢。除了壓力測試外,JMeter在接口測試方面也有廣泛的應(yīng)用。

常見的接口測試工具有哪些?

手工測試的話可以用postman ,自動化測試多是用到 Jmeter(開源)、soupUI(開源&商業(yè)版)

什么叫做性能測試?

1、 軟件的性能是軟件的一種非功能特性,它關(guān)注的不是軟件是否能夠完成特定的功能,所以一般來說性能測試介入的時機是在功能測試完成之后。另外,由定義中的及時性可知性能也是一種指標,可以用時間或其它指標來衡量,通常我們會使用某些工具或手段來檢測軟件的某些指標是否達到了要求,這就是性能測試。

2、指通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系

統(tǒng)的各項性能指標進行測試

為什么要做性能測試?

1、評估系統(tǒng)的能力

2、驗證系統(tǒng)的穩(wěn)定性和可靠性

3、識別系統(tǒng)中的弱點

4、系統(tǒng)調(diào)優(yōu)

針對上面這幾種目的,針對不同的結(jié)果,給出不同的應(yīng)對方案和措施,這才是性能測試的最終目標

? a、測試中得到的負荷和響應(yīng)時間數(shù)據(jù)可以被用于驗證所計劃的模型的能力,并幫助作出決策

?b、受控的負荷可以被增加到一個極端的水平,并突破它,從而修復(fù)體系的瓶頸或薄弱的地方。

? c、重復(fù)運行測試,驗證調(diào)整系統(tǒng)的活動得到了預(yù)期的結(jié)果,從而改進性能。

? d、檢測軟件中的問題:長時間的測試執(zhí)行可導(dǎo)致程序發(fā)生由于內(nèi)存泄露引起的失敗,揭示程序中的隱含的問題或沖突。

? e、在一個生產(chǎn)負荷下執(zhí)行測試一定的時間是評估系統(tǒng)穩(wěn)定性和可靠性是否滿足要求的唯一方法

性能測試的流程:

1、需求的分析

2、性能場景的設(shè)計

3、性能計劃的編寫

4、腳本的開發(fā)

5、性能環(huán)境和數(shù)據(jù)的準備

6、性能的執(zhí)行

7、性能結(jié)果分析

8、性能總結(jié)報告

性能測試的類型:

1. 基準測試:在給系統(tǒng)施加較低壓力時,查看系統(tǒng)的運行狀況并記錄相關(guān)數(shù)做為基礎(chǔ)參考

2. 負載測試:是指對系統(tǒng)不斷地增加壓力或增加一定壓力下的持續(xù)時間,直到系統(tǒng)的某項或多項性能指標達到安全臨界值,例如某種資源已經(jīng)達到飽和狀態(tài)等 。

3. 壓力測試:壓力測試是評估系統(tǒng)處于或超過預(yù)期負載時系統(tǒng)的運行情況,關(guān)注點在于系統(tǒng)在峰值負載或超出最大載荷情況下的處理能力。

4. 穩(wěn)定性測試:在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運行一段時間,以此檢測系統(tǒng)是否穩(wěn)定。

5. 并發(fā)測試:測試多個用戶同時訪問同一個應(yīng)用、同一個模塊或者數(shù)據(jù)記錄時是否存在死鎖或者其他性能問題

jmeter安裝環(huán)境:

在Windows平臺下搭建jmeter步驟如下:第一步:打開瀏覽器,在jmeter官網(wǎng)https://jmeter.apache.org/download_jmeter.cgi,選擇合適的版本,點擊下載

jmeter目錄基本介紹已經(jīng)常見文件:

1、bin目錄:核心可執(zhí)行文件(二進制文件),包含配置文件

jmeter.bat:windows啟動文件

jmeter-server.bat:分布式壓測使用的啟動文件

jmeter.properties:核心配置文件

examples(例子):該目錄下存放Jmeter官方給的請求模板

report-template(報告模板):該目錄下存放Jmeter的報告模板

(Jmeter是有自己的報告的)

templates(模板):該目錄下存放Jmeter的各類配置模板,

例如:JDBC、Beanshell、ThinkTime等

2、docs:api:前面談到Jmeter是開源的,此處便是它的API文檔。

3、extras:存放Build等配置,用于第三方集成構(gòu)建

4、lib:存放各類jar包,組件類函數(shù)類等

5、licenses:許可證等

6、printable_docs:用戶手冊

7、backups(備份):顧名思義,該目錄是個備份目錄,是將自己的各

個Jmx腳本進行備份,所謂備份便是每次保存都會將該腳本進行保存到

該目錄下,如果保存多次便會保存多個同樣的文件,文件名進行默認遞

增更改。

使用教程:

jmeter工具基本結(jié)構(gòu):

1、test plan(測試計劃):測試計劃是用來描述本次性能測試的需求,所有相關(guān)

的內(nèi)容都是基于該測試計劃展開的。

2、thread group(線程組):線程組可以理解為虛擬用戶的組線程組包括哪些

內(nèi)容:

(1)線程數(shù):表示虛擬用戶-----20個虛擬用戶

(2)ramp-up period:用來設(shè)置虛擬用戶多久時間加載完成-----10s

(表示20個虛擬用戶在10s內(nèi)完成加載,每秒加載2個虛擬用戶)

(3)循環(huán)次數(shù):每個線程發(fā)送請求的次數(shù)------2(線程循環(huán)2次總共循環(huán)

40次,就是發(fā)送了40次請求,時間等于20)

3、添加一個http請求

注:http請求設(shè)置-保持默認即可

頁面字段介紹:

名稱:本屬性用于標識一個取樣器,建議根據(jù)實際場景來取

服務(wù)器名稱或ip:http請求發(fā)送的目標服務(wù)器名稱或者ip地址

端口號:目標服務(wù)器的端口號,默認為80,后面的超時定義可以不寫

協(xié)議:向目標服務(wù)器發(fā)送http請求的協(xié)議,可以是http或者https,默認值為

http方法:發(fā)送http請求的方法,可用方法包括:get、post、head,put等

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

自動重定向:如果選擇該選項,當發(fā)送http請求后得到的響應(yīng)是301和302時,jmeter自動重定向到新的頁面

use keep alive(持久長鏈接):勾選后,jmeter和目標服務(wù)器采用keep-alive方式通信

use multipart/from-data for http post:當發(fā)送http post請求,需要勾選同請求一起發(fā)送文件:在請求中發(fā)送URL參數(shù),對于帶參數(shù)的URL,jmeter提供一個簡單的對參數(shù)的方法從html文件獲取所有有內(nèi)容含資源:當該項被選中時,jmeter在發(fā)出http請求并獲取得響應(yīng)的html文件內(nèi)容后,還對該html進行parse(解析)并獲取html中包含的所有資源(圖片,flash等),默認不選中,如果用戶希望獲取特定資源,可以在下方的embedded urls must match文本框中填入需要下載的特定資源表達式。


4、查看結(jié)果樹:監(jiān)控http請求結(jié)果的詳細結(jié)果

5、聚合報告:生成此次性能的測試數(shù)據(jù)報告

Samples:測試一共發(fā)出的請求 ,虛擬用戶循環(huán)次數(shù)

Average:平均響應(yīng)時間,是單個 Request 的平均響應(yīng)時間

Median:中位數(shù),50%用戶的響應(yīng)時間在小于該值,這個值是指把所有數(shù)據(jù)

按由小到大將其排列,就是排列在第50%的值。

90%line:90%用戶的響應(yīng)時間小于該值,這個值是指把所有數(shù)據(jù)按由小到

大將其排列,就是排列在第90%的值。

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

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

error%:錯誤的請求數(shù)/請求總數(shù)

Throughput:吞吐量---每秒完成的請求數(shù)

KB:耗流量,每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當于LoadRunner中的

Throughput/Sec


性能術(shù)語:

jmeter線程組中元器件的作用

1. 邏輯控制器:業(yè)務(wù)上有需要循環(huán)去處理一些數(shù)據(jù)

2. 配置元器件:處理一些默認請求所需要攜帶的數(shù)據(jù)如http的頭部信息和cookie信息的處理

3. 前置處理器:http請求之前需要完成的一些工作,如數(shù)據(jù)庫測試中的連接數(shù)據(jù)庫的功能

4. 后置處理器:關(guān)聯(lián)需要用后置處理器,需要對響應(yīng)數(shù)據(jù)做處理需要用到后置處理器

5. 斷言:對結(jié)果進行校驗

6. 監(jiān)聽器:作用范圍的每一個sample元件的信息并呈現(xiàn)。

7. CSV Data Set Config

8. 定時器:(重點)

loadrunner中集合點可以設(shè)置多個虛擬用戶等待到一個點,同時觸發(fā)一個事務(wù),以達到模擬真實環(huán)境下多個用戶同時操作,實現(xiàn)性能測試的最終目的。jmeter中使用Synchronizing Timer實現(xiàn)Lr中集合點的功能,模擬多用戶并發(fā)測試,即多個線程在同一時刻并發(fā)請求。

1)添加同步定時器

線程組右擊 -> 定時器 -> Synchronizing Timer

2)參數(shù)設(shè)置

a. Number of Simulated Users to Group by: 此處填寫并發(fā)數(shù)量

b. Timeout in milliseconds: 超時時間設(shè)置Jmeter默認沒有超時時間,如果沒有設(shè)置,一旦沒有達到集結(jié)數(shù)量的請求系統(tǒng)就一直等待。計算超時時間方法參考(毫秒): 并發(fā)數(shù)量 * 1000 / (線程數(shù)/在多少時間啟動這么多線程

3)定時器的作用域

作用于該定時器之后的所有請求,也就是說定時器是在請求執(zhí)行前起作用的并發(fā)數(shù)和線程數(shù)一致時,并發(fā)啟動時間,一定要大于線程組啟動的時間,如果小于這個時間,并發(fā)數(shù)量不準確(注意:線程組里的啟動時間單位是秒,定時器里的等待時間是毫秒,要注意單位換算,1秒=1000毫秒)

4)常用的性能指標插件

1. jp@gc - Bytes Throughput Over Time:不同時間吞吐量展示(圖表) 聚合報告里,Throughput是按請求個數(shù)來展示的,比如說1.9c,就是每s發(fā)送1.9個請求;而這里的

展示是按字節(jié)Bytes來展示的圖表

2. jp@gc - Composite Graph: 混合圖表 在它的Graphs里面可以設(shè)置多少個圖表一起展示,它可以同時展示多個圖表

3. jp@gc - Hits per Second:每秒點擊量

4. jp@gc - PerfMon Metrics Collector:服務(wù)器性能監(jiān)測控件,包括CPU,Memory,Network,I/O等等

5. jp@gc - Reponse Latencies Over Time:記錄客戶端發(fā)送請求完成后,服務(wù)器端返回請求之前這段時間

6. jp@gc - Reponse Times Distribution: 顯示測試的響應(yīng)時間分布,X軸顯示由時間間隔分組的響應(yīng)時間,Y軸包含每個區(qū)間的樣本數(shù)

7. jp@gc - Transactions per Second: 每秒事務(wù)數(shù),服務(wù)器每秒處理的事務(wù)數(shù)(性能測試中,最重要的2個指標之一。該插件的作用是在測試腳本執(zhí)行過程中,監(jiān)控查看服務(wù)器的TPS表現(xiàn)————比如整體趨勢、實時平均值走向、穩(wěn)定性等。)

8、jp@gc - Response Times Over Time,即TRT:事務(wù)響應(yīng)時間。

性能測試中,最重要的兩個指標的另外一個。該插件的主要作用是在測試腳本執(zhí)行過程中,監(jiān)控查看響應(yīng)時間的實時平均值、整體響應(yīng)時間走向等。

常見的性能指標(重點)

(1)什么是吞吐量

吞吐量,指的是單位時間內(nèi)處理的客戶端請求數(shù)量。通常情況下,吞吐量用請求數(shù)/秒Or頁面數(shù)/秒來衡量。從業(yè)務(wù)角度看,吞吐量也可以用訪問人數(shù)/天Or頁面訪問量/天來衡量。

(2)什么是吞吐率

吞吐率通常指單位時間內(nèi)從服務(wù)器返回的字節(jié)數(shù),也可以單位時間內(nèi)客戶提交的請求數(shù)。吞吐率是大型web系統(tǒng)衡量自身負載能力的一個重要指標,一般來說,吞吐率越大,單位時間內(nèi)處理的數(shù)據(jù)就越多,系統(tǒng)的負載能力也強。吞吐率與很多因素有關(guān),服務(wù)器的硬件配置,網(wǎng)絡(luò)的寬帶及拓撲結(jié)構(gòu),軟件的技術(shù)架構(gòu)

(3)什么是事務(wù)

? 事務(wù)是腳本的一個特性,每個事務(wù)都包含開始事務(wù)和結(jié)束事務(wù)。事務(wù)用來衡量腳本中一行代碼或多行代碼的執(zhí)行所耗費的時間。

? 將開始事務(wù)放置在腳本中某行代碼的前面,將結(jié)束事務(wù)放置在該行代碼的后面,在該腳本的虛擬用戶運行時,這個事務(wù)將衡量該行代碼的執(zhí)行花費了多長時間。

(4)什么是響應(yīng)時間

? 對請求作出響應(yīng)所需要的時間

(5)什么是每秒點擊事務(wù)數(shù)

? TPS表示服務(wù)器每秒處理的事務(wù)數(shù),他是衡量系統(tǒng)處理能力的一個非常重要的指標,在性能測試中,通過檢測不同用戶的TPS,可以估算出系統(tǒng)處理能力的拐點。

(6)什么是每秒點擊次數(shù)

? 每秒點擊數(shù)是指每秒鐘向web服務(wù)器提交的HTTP請求數(shù),它是衡量服務(wù)器處理能力

的一個常用指標。需要注意的是,這里的相應(yīng)時間并非鼠標的一次單擊操作,因為

在一次單擊操作中,客戶端可能向服務(wù)器發(fā)出多個HTTP請求,切勿混淆。

(7)并發(fā):

? 同一時間內(nèi)向服務(wù)器發(fā)送同一請求并發(fā)的3種情況:

a、所有用戶同一時間內(nèi)做同一件事情或者同一個操作,這里同一個操作是

指同一個業(yè)務(wù)類型,如同時提交訂單(流程性)

b、所有用戶同一時間內(nèi)做同一件事情或者同一個操作,同時修改一個數(shù)據(jù),

同時一個操作(一個流程中的具體環(huán)節(jié))

c、所有用戶同一時間內(nèi)對系統(tǒng)做不同的操作

所有用戶包含如下:

a、注冊用戶:當前平臺有多少人注冊了

b、在線用戶:當前平臺有多少人在線

c、并發(fā)用戶:測試過程中需要進行測試同一時刻操作的用戶(測試數(shù)據(jù))

1、什么是事務(wù)?

定義一:某個用戶操作步驟(功能)的集合

定義二:性能測試中,事務(wù)是指從端到端,一個完整的操作過程,比如一次登錄、一次篩選條件查詢,一次支付,一次發(fā)朋友圈;無論流程步驟是多是少,一定要保證事務(wù)存在的意義性

2、什么是斷言/檢查點?

響應(yīng)會有2種情況:

第一:正確的響應(yīng)

第二:錯誤的響應(yīng)

斷言:

jmeter中有個元器件叫做斷言(Assertion),它的作用和loadrunner中的檢查點類似,用于檢查測試中得到的響應(yīng)數(shù)據(jù)等等是否符合預(yù)期結(jié)果,用以保證性能測試中的數(shù)據(jù)交互與預(yù)期一致。

使用斷言的目的:在request的返回層增加一層判斷機制;因為request成功了,并不代表結(jié)果一定正確; 所謂的檢查點,就是系統(tǒng)根據(jù)用戶輸入,按照業(yè)務(wù)要求的邏輯處理后產(chǎn)生的數(shù)據(jù),不同的業(yè)務(wù)場景、不同的結(jié)果會有不一樣的要求;部分輸出是在客戶的需求中明確要求展示;比如展示的字段可以直接觀察到或者獲取到,部分輸出是服務(wù)于系統(tǒng)維護人員、客服人員;當然還有部分輸出也 不包括不能輸出或者加密輸出;比如客戶的銀行賬號要求部分數(shù)字用*號來代替,客戶的密碼不能在日志中輸出等等;檢查點的檢查包括客戶或者系統(tǒng)質(zhì)量要求的必須輸出的或者不應(yīng)該輸出的兩種情況。

3、什么是參數(shù)化

參數(shù)化是自動化測試腳本中的一種常用技巧。簡單來說,參數(shù)化的一般用法就是將腳本中的某些輸入使用參數(shù)來代替,在腳本運行時指定參數(shù)的取值范圍和規(guī)則;這樣腳本在運行時就可以根據(jù)需要選取不同參數(shù)值作為輸入。

這種方式通常被稱為數(shù)據(jù)驅(qū)動測試(Data Driven Test),參數(shù)的取值范圍被稱為數(shù)據(jù)池(Data Pool)

性能調(diào)優(yōu)

1、硬件上的調(diào)優(yōu)

一般指的是CPU、內(nèi)存、磁盤I/O 方面的問題,分為服務(wù)器硬件瓶頸、網(wǎng)絡(luò)瓶頸(對局域網(wǎng)可以不考慮)、服務(wù)器操作系統(tǒng)瓶頸(參數(shù)配置)、中間件瓶頸(參數(shù)配置、數(shù)據(jù)庫、web服務(wù)器等)、應(yīng)用瓶頸(SQL 語句、數(shù)據(jù)庫設(shè)計、業(yè)務(wù)邏輯、算法等)。

2、應(yīng)用軟件上的性能瓶頸

一般指的是應(yīng)用服務(wù)器、web 服務(wù)器等應(yīng)用軟件,還包括數(shù)據(jù)庫系統(tǒng)。

例如:中間件weblogic 平臺上配置的JDBC連接池的參數(shù)設(shè)置不合理,造成的瓶頸。

注意:JDBC連接池: 連接池的作用:連接池是將已經(jīng)創(chuàng)建好的連接保存在池中,當有請求來時,直接使用已經(jīng)創(chuàng)建好的連接對數(shù)據(jù)庫進行訪問。這樣省略了創(chuàng)建連接和銷毀連接的過程。這樣性能上得到了提高。

(1)建立數(shù)據(jù)庫連接池對象(服務(wù)器啟動)。

(2)按照事先指定的參數(shù)創(chuàng)建初始數(shù)量的數(shù)據(jù)庫連接(即:空閑連接數(shù))。

(3)對于一個數(shù)據(jù)庫訪問請求,直接從連接池中得到一個連接。如果數(shù)據(jù)庫連接池對象中沒有空閑的連接,且連接數(shù)沒有達到最大(即:最大活躍連接數(shù)),創(chuàng)建一個新的數(shù)據(jù)庫連接。

(4)存取數(shù)據(jù)庫。

(5)關(guān)閉數(shù)據(jù)庫,釋放所有數(shù)據(jù)庫連接(此時的關(guān)閉數(shù)據(jù)庫連接,并非真正關(guān)閉,而是將其放入空閑隊列中。如實際空閑連接數(shù)大于初始空閑連接數(shù)則釋放連接)。

(6)釋放數(shù)據(jù)庫連接池對象(服務(wù)器停止、維護期間,釋放數(shù)據(jù)庫連接池對象,并釋放所有連接)。

3、應(yīng)用程序上的性能瓶頸

一般指的是開發(fā)人員新開發(fā)出來的應(yīng)用程序。

例如,程序架構(gòu)規(guī)劃不合理,程序本身設(shè)計有問題(串行處理、請求的處理線程不

夠),造成系統(tǒng)在大量用戶方位時性能低下而造成的瓶頸。

4、操作系統(tǒng)上的性能瓶頸

一般指的是windows、UNIX、Linux等操作系統(tǒng)。

例如,在進行性能測試,出現(xiàn)物理內(nèi)存不足時,虛擬內(nèi)存設(shè)置也不合理,虛擬內(nèi)存

的交換效率就會大大降低,從而導(dǎo)致行為的響應(yīng)時間大大增加,這時認為操作系統(tǒng)

上出現(xiàn)性能瓶頸。

5、網(wǎng)絡(luò)設(shè)備上的性能瓶頸

一般指的是防火墻、動態(tài)負載均衡器、交換機等設(shè)備。

例如,在動態(tài)負載均衡器上設(shè)置了動態(tài)分發(fā)負載的機制,當發(fā)現(xiàn)某個應(yīng)用服務(wù)器上

的硬件資源已經(jīng)到達極限時,動態(tài)負載均衡器將后續(xù)的交易請求發(fā)送到其他負載較

輕的應(yīng)用服務(wù)器上。在測試時發(fā)現(xiàn),動態(tài)負載均衡器沒有起到相應(yīng)的作用,這時可

以認為網(wǎng)絡(luò)瓶頸。

接口測試思路


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

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