性能測試
*系統(tǒng)性能測試是為了保證產(chǎn)品發(fā)布后其性能能夠滿足用戶的需求,下文結(jié)合具體案例介紹應(yīng)用系統(tǒng)性能測試過程的六大步驟和測試內(nèi)容。
一、什么是性能測試**
是不斷的通過不同場景的系統(tǒng)表現(xiàn)去探究系統(tǒng)設(shè)計與資源消耗之間的平衡。
我們可以認為性能測試是:通過在測試環(huán)境下對系統(tǒng)或構(gòu)件的性能進行探測,用以驗證在生產(chǎn)環(huán)境下系統(tǒng)性能是否達到預(yù)估的性能,發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸,進而改善優(yōu)化并系統(tǒng)的性能,提高系統(tǒng)的可擴展性、穩(wěn)定性。
從上面的描述可以看出,性能測試的主要工作包括:獲得預(yù)估的性能需求、搭建測試環(huán)境、執(zhí)行測試、分析測試結(jié)果。其中,最為重要兩個工作是確定測試的目的、方案,并對結(jié)果進行分析。
二、性能測試的目的
(1)驗證系統(tǒng)是否滿足預(yù)期需求;
(2)驗證系統(tǒng)在高壓下的表現(xiàn);
(3)驗證系統(tǒng)是否能持續(xù)穩(wěn)定的運行;
(4)探測系統(tǒng)的瓶頸和產(chǎn)生瓶頸的原因;
(5)探測系統(tǒng)設(shè)計與資源之間的最佳平衡,改善并優(yōu)化系統(tǒng)的性能。
三、如何做性能測試
負載測試:找到系統(tǒng)穩(wěn)定時(或滿足性能需求下)的最大吞吐量;(要有響應(yīng)時間、成功率的限制,比如定義:99.9%的響應(yīng)時間必需在1ms之內(nèi),平均響應(yīng)時間在1ms以內(nèi),100%的請求成功)
穩(wěn)定性(通過浸泡測試soak test):以系統(tǒng)穩(wěn)定時的最大吞吐量(或滿足性能需求時的最大吞吐量),長時間對系統(tǒng)進行測試,已檢查系統(tǒng)是否穩(wěn)定
-
壓力測試:找到系統(tǒng)極限值,系統(tǒng)瓶頸(系統(tǒng)崩潰臨界值)(要求:響應(yīng)時間可以變慢,但系統(tǒng)不能崩潰;)
image.png 并發(fā)有兩個概念:
多個用戶同時進行相同操作,訪問同一接口——單個業(yè)務(wù)接口并發(fā);
多個用戶同時訪問系統(tǒng),但進行不同的操作,訪問不同的接口——系統(tǒng)級并發(fā)測試流程:確定測試目的與需求——根據(jù)需求與場景,梳理測試要點——根據(jù)測試目的,制定測試方案——準備測試環(huán)境與數(shù)據(jù)——測試執(zhí)行(腳本或工具)——統(tǒng)計測試結(jié)果——分析結(jié)果——測試報告
PS:
1 .測試執(zhí)行時,執(zhí)行多次,取平均結(jié)果更為準確。單機并發(fā)不夠時,采用多機分布式并發(fā);
測試過程,一定要盡可能模擬實際應(yīng)用場景;
四、性能測試關(guān)注的指標
測試人員關(guān)注(單次業(yè)務(wù)相關(guān)指標):
- 并發(fā)用戶
- 數(shù)響應(yīng)時間:TP(百分比分布統(tǒng)計)
- 吞吐量:tps/qps
- 成功率
- 失敗率
開發(fā)人員關(guān)注(系統(tǒng)層面指標):
- Tomcat、數(shù)據(jù)庫等;
- 容量:系統(tǒng)能承載的最大訪問量是多少?系統(tǒng)最大的業(yè)務(wù)處理量是多少?
-
穩(wěn)定性:是否支持7*24小時(一周)的業(yè)務(wù)訪問?
運維人員關(guān)注:硬件資源消耗情況:CPU、內(nèi)存、I/O讀寫速度、網(wǎng)絡(luò)帶寬等
image.png
image.png
五、性能結(jié)果分析
1.響應(yīng)時間要和吞吐量TPS掛鉤.
- 響應(yīng)時間吞吐量要和成功率掛鉤
- 不難理解,如果請求可以并發(fā)10w,但是成功率只有40%,那也沒什么用。
性能測試的失敗率的容忍應(yīng)該是非常低的。對于一些關(guān)鍵系統(tǒng),成功請求數(shù)必須在100%,一點都不能含糊
3.CPU、內(nèi)存等硬件資源占比持續(xù)超過90%,說明性能存在瓶頸
4.帶寬波動起伏很大,說明帶寬受限
jemter操作性能測試
1.打開登錄界面
2.注冊跳轉(zhuǎn)到登錄頁面
3.打開fiddler抓包:用正確的用戶名登錄,并且輸入姓名查詢
導(dǎo)出添加到j(luò)meter看前面幾天的簡書有詳細說明.
4.填好信息,啟動cookie,設(shè)置好斷言跑一下觀察!
5.關(guān)閉cookie跑一下 查詢掛了
*這是為什么呢?為什么cookie把用戶名和密碼儲存在本地中,我們查詢的時候會調(diào)用登錄的狀態(tài),是否登錄.登錄我們才能查詢.這里cookie就其到了很好的作用,我們直接可以調(diào)用本地cookie存的ID.因此禁用了cookie管理器,查詢就掛了.那么我們怎么做可以關(guān)閉登錄和COOKIE還能跑通呢?
我們只需要在查詢請求里面的http信息頭管理器添加Set-Cookie后面的值A(chǔ)就行了.
添加:cookie=A如下步驟圖
*首先我們要知道Set-Cookie的值
切換到登錄接口,找到登錄取樣器結(jié)果里面cookie的值復(fù)制
*粘貼到查詢接口http信管管理頭,添加cookie 的值 等于復(fù)制的內(nèi)容
6.我們禁用cookie管理器和登錄接口 看跑得通不
對查詢頁面做性能測試
-
首先我們需要些什么?
1.請求里面的參數(shù) IP http 請求方法 編碼格式 請求參數(shù)值
2.請求里面添加http信息管理頭 響應(yīng)斷言 和固定定時器
image.png
3.接下來全部從監(jiān)聽器添加 **
1.聚合報告 **
2.jp@gc - Active Threads Over Time(活躍線程組) **
3.jp@gc - Transactions per Second(TPS)
image.png -
循環(huán)次數(shù)給50作為固定 線程組數(shù) 已從少到從多的方式記錄
image.png
用EXCEL 記錄 請求數(shù) 線程數(shù) 循環(huán)次數(shù) 平均值 最小 最大 TPS
- 可以分析得出線程組40附近已經(jīng)瓶頸,之后就要超負載了.怪我這條電腦渣渣!也就是說請求達到2250條時候,性能瓶頸之后將要超負荷.我們實時觀看一下自己的CPU 內(nèi)存 硬盤I/O
帶寬 等等 -
聚合報告
image.png - samples 請求數(shù)量
- average 平均響應(yīng)時間
- median 中間值
- 90%Line 百分之90用戶響應(yīng)時間
- min 最小
- max 最大
- error 錯誤請求數(shù)量百分比
- throughput 吞吐量 每秒完成的請求數(shù)