一. 性能測試
1.0 為什么要進行性能測試踊挠?
評估當前系統(tǒng)的能力
尋找性能瓶頸,優(yōu)化系統(tǒng)性能
評估軟件是否滿足未來的需要
招聘需要
1.1 什么是性能
時間:系統(tǒng)處理用戶請求的響應時間
資源:系統(tǒng)運行過程中适肠,系統(tǒng)資源的消耗情況
1.2. 性能測試是什么
1.2.1 廣義定義
基于協(xié)議模擬用戶發(fā)出請求,對服務器形成一定負載候引,來測試服務器的性能指標是否滿足要求性能指標關注點:時間性能侯养、空間性能性能測試與頁面無關
1.2.1 狹義定義
指通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統(tǒng)的各項性能指標進行測試澄干。
1.3 功能和性能測試
不同
功能測試驗證系統(tǒng)的功能需求規(guī)格蔚润,聚焦功能。
性能測試驗證系統(tǒng)的業(yè)務性需求場景辐啄,聚焦時間和資源。
關系
一般項目中惧笛,先功能測試通過后,后進行性能測試逞泄。
1.4 性能測試的分類
1.4.1 基準測試
狹義:單用戶測試
廣義:建立基準線徐紧,當系統(tǒng)軟硬件環(huán)境發(fā)生變化之后再進行一次基準測試以確定變化對性能的影響。
1.4.2 負載測試
概念
通過逐步增加系統(tǒng)負載炭懊,確定在滿足性能指標的情況下,找出系統(tǒng)所能承受最大負載量的測試拂檩。
作用
系統(tǒng)最大負載量達到用戶要求時侮腹,系統(tǒng)才能正式上線使用。
案例
電梯行業(yè)規(guī)范:電梯從1樓到5樓的運行時間不超過24s稻励。
注意
通過負載測試父阻,可以確定系統(tǒng)的最大負載量和極限負載量
系統(tǒng)對外宣稱的最大負載量
負載測試的時間一般為1-2小時
1.4.3 穩(wěn)定性測試
概念:在服務器穩(wěn)定運行(用戶正常業(yè)務負載下)的情況進行長時間測試(1天-一周等),并最終保證服務器能滿足線上業(yè)務需求望抽。
系統(tǒng)在用戶需求的業(yè)務負載下運行達到規(guī)定的時間時加矛,系統(tǒng)才能正式上線使用。
1.4.4 壓力測試
概念:在強負載下的測試煤篙,查看系統(tǒng)在峰值下是否功能隱患斟览、系統(tǒng)是否具有良好的容錯能力和可恢復的能力。
測試場景
高負載下的長時間穩(wěn)定性壓力測試 (如:B-C區(qū)間內(nèi)進行24/3*24小時長時間測試)
極限負載下的破壞性壓力測試(如:C-D區(qū)間內(nèi)進行測試)
1.4.5 并發(fā)測試
概念:在極短時間內(nèi)辑奈,發(fā)送多個請求苛茂,來驗證服務器對并發(fā)的處理能力。
應用場景
特定的活動場景:搶紅包鸠窗、秒殺妓羊、搶購等。
與負載測試對比:
負載測試:主要目的是測試高負載情況下稍计,對系統(tǒng)資源的消耗躁绸,是否會耗盡的問題(雙11活動)
并發(fā)測試:主要目的是測試極短時間內(nèi),并發(fā)請求時臣嚣,系統(tǒng)資源爭搶的問題(搶紅包净刮、秒殺)
1.5 性能測試的指標
1.5.1 響應時間
指從客戶端發(fā)起請求開始,到客戶端接收到結果的總時間
包括:服務器處理時間 + 網(wǎng)絡傳輸時間
1.5.2 并發(fā)用戶數(shù)
某一時刻同時向服務器發(fā)送請求的用戶數(shù)
1.5.3 吞吐量(Throughout)
1.概念:單位時間內(nèi)處理客戶端的請求數(shù)量茧球,直接體現(xiàn)軟件系統(tǒng)能能承載能力庭瑰。
吞吐量單位分類
1.5.4 QPS
QPS(Query Per Second)每秒查詢數(shù),即控制服務器每秒處理的指定請求的數(shù)量抢埋。
1.5.5 TPS
TPS(Transaction Per Second)每秒事務數(shù)弹灭,即控制服務器每秒處理事務請求的數(shù)量督暂。
如:支付請求事務=查詢用戶余額請求+校驗支付安全請求+發(fā)送支付請求
每秒處理查詢用戶余額15請求,每秒處理校驗支付安全15個請求穷吮,每秒處理發(fā)送支付15個請求
支付tsp為15
1.5.6 點擊數(shù)
所有的頁面元素(如:圖片逻翁、鏈接、框架等)的請求總數(shù)量
注意:
點擊數(shù)是請求數(shù)捡鱼,不是頁面上的一次點擊
1.5.7 錯誤率
指系統(tǒng)在負載情況下八回,失敗業(yè)務的概率
注意:
錯誤率是性能指標,是高負載下的失敗業(yè)務的概率
-隨機bug是功能bug驾诈,先解決隨機bug才能進行性能測試
1.5.8 資源利用率
概念:系統(tǒng)各種資源的使用情況缠诅,率=資源使用量/總資源可用量x100%
常見資源指標
CPU使用率:不高于75%-85%
內(nèi)存大小使用率:不高于80%
磁盤IO(速率):不高于90%
網(wǎng)路(速率):不高于80%
二. Jmeter簡介
2.1. 我們?yōu)槭裁词褂肑meter
開源,免費乍迄,基于Java編寫管引,可集成到其他系統(tǒng)可拓展各個功能插件
支持接口測試,壓力(負載和壓力)測試等多種功能闯两,支持錄制回放褥伴,
入門簡單相較于自己編寫框架活其他開源工具,有較為完善的UI界面漾狼,便于接口調(diào)試
多平臺支持重慢,可在Linux,Windows逊躁,Mac上運行似踱,支持多協(xié)議
2.2. Jmeter的作用
接口測試? 面試說postman,因為方便好用稽煤。
性能測試? jmeter屯援,也可以用postman(runner),但是沒有性能指標
數(shù)據(jù)庫測試
2.3. Jmeter怎么用
Windows下Jmeter下載安裝念脯,登錄?狞洋,根據(jù)自己平臺,下載對應文件百度去查
2.4. 安裝JAVA環(huán)境
安裝JDK绿店,配置環(huán)境變量
將下載Jmeter文件解壓吉懊,打開/bin/jmeter.bat
3.1.2. 線程組主要包含三個參數(shù):
線程數(shù)、準備時長(Ramp-Up Period(in seconds))假勿、循環(huán)次數(shù)借嗽。
3.1.3.? 線程數(shù):
虛擬用戶數(shù)。一個虛擬用戶占用一個線程转培。設置多少虛擬用戶數(shù)在這里也就是設置多少個線程數(shù)恶导。
3.1.4.? 準備時長(秒):
設置的虛擬用戶數(shù)需要多長時間全部啟動。如果線程數(shù)為20 浸须,準備時長為10 惨寿,那么需要10秒鐘啟動20個線程邦泄。也就是每秒鐘啟動2個線程。
3.1.5. 循環(huán)次數(shù):
每個線程發(fā)送請求的次數(shù)裂垦。如果線程數(shù)為20 顺囊,循環(huán)次數(shù)為100 ,那么每個線程發(fā)送100次請求蕉拢√靥迹總請求數(shù)為20*100=2000 。如果勾選了“永遠”晕换,那么所有線程會一直發(fā)送請求午乓,一直到選擇停止運行腳本。
3.1.6. 調(diào)度器
設置線程組啟動的開始時間和結束時間(配置調(diào)度器時闸准,需要勾選循環(huán)次數(shù)為永遠)
3.1.7. 持續(xù)時間(秒)
測試持續(xù)時間硅瞧,會覆蓋結束時間
3.1.8. 啟動延遲(秒)
測試延遲啟動時間,會覆蓋啟動時間
3.1.9. 啟動時間
測試啟動時間恕汇,啟動延遲會覆蓋它。當啟動時間已過或辖,手動只需測試時當前時間也會覆蓋它瘾英。
3.1.10.? 結束時間
測試結束時間,持續(xù)時間會覆蓋它颂暇。
作者:Anwfly
鏈接:http://www.reibang.com/p/a53b149e6e46
來源:簡書
簡書著作權歸作者所有缺谴,任何形式的轉載都請聯(lián)系作者獲得授權并注明出處。3.1.2. 線程組主要包含三個參數(shù):
線程數(shù)耳鸯、準備時長(Ramp-Up Period(in seconds))湿蛔、循環(huán)次數(shù)。
3.1.3.? 線程數(shù):
虛擬用戶數(shù)县爬。一個虛擬用戶占用一個線程阳啥。設置多少虛擬用戶數(shù)在這里也就是設置多少個線程數(shù)。
3.1.4.? 準備時長(秒):
設置的虛擬用戶數(shù)需要多長時間全部啟動财喳。如果線程數(shù)為20 察迟,準備時長為10 ,那么需要10秒鐘啟動20個線程耳高。也就是每秒鐘啟動2個線程扎瓶。
3.1.5. 循環(huán)次數(shù):
每個線程發(fā)送請求的次數(shù)。如果線程數(shù)為20 泌枪,循環(huán)次數(shù)為100 概荷,那么每個線程發(fā)送100次請求÷笛啵總請求數(shù)為20*100=2000 误证。如果勾選了“永遠”继薛,那么所有線程會一直發(fā)送請求,一直到選擇停止運行腳本雷厂。
3.1.6. 調(diào)度器
設置線程組啟動的開始時間和結束時間(配置調(diào)度器時惋增,需要勾選循環(huán)次數(shù)為永遠)
3.1.7. 持續(xù)時間(秒)
測試持續(xù)時間,會覆蓋結束時間
3.1.8. 啟動延遲(秒)
測試延遲啟動時間改鲫,會覆蓋啟動時間
3.1.9. 啟動時間
測試啟動時間诈皿,啟動延遲會覆蓋它。當啟動時間已過像棘,手動只需測試時當前時間也會覆蓋它稽亏。
3.1.10.? 結束時間
測試結束時間,持續(xù)時間會覆蓋它缕题。