1.什么是性能測試
1.1性能測試的定義:
性能測試:指通過自動化的測試工具模擬多種正常妓柜,峰值以及異常負載條件來對系統(tǒng)的各項性能指標(biāo)進行測試回梧。
1.2性能測試的類型:
1.基準(zhǔn)測試:在各系統(tǒng)施加較低壓力時壁袄,查看系統(tǒng)的運行狀況并記錄相關(guān)參數(shù)來作為基礎(chǔ)
2.負載測試:指對系統(tǒng)不斷增加壓力或增加一定壓力下的持續(xù)時間亡脑,直到系統(tǒng)的某項或多項指標(biāo)達到安全臨界值
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ù)記錄時是否存在死鎖或其他性能問題
1.3性能測試應(yīng)用場景
作用 | 主要用途 | 典型場景 | 特點 | 常用性能測試方法 |
---|---|---|---|---|
能力驗證 | 關(guān)注在給定的軟硬件條件下姨伟,系統(tǒng)是否具有預(yù)期的能力表現(xiàn) | 在要求平均響應(yīng)時間小于2秒的前提下,如何判斷系統(tǒng)是否支持50萬用戶/天的訪問量? | 1.要求在給定的環(huán)境下運行2.需要根據(jù)典型場景設(shè)計測試方案和用例 | 1.負載測試 2.壓力測試 3.穩(wěn)定性測試 |
規(guī)劃能力 | 關(guān)注如何使系統(tǒng)具有我們要求的性能能力 | 某某系統(tǒng)計劃在一年內(nèi)獲客量在XXX萬豆励,系統(tǒng)到時候是否支持用戶量夺荒?如果不能,如何調(diào)整系統(tǒng)? | 1.它常是一種探索性的測試 2.常用于了解系統(tǒng)性能和獲得擴展性能的方法 | 1.負載測試 2. 壓力測試 3.配置測試 |
性能調(diào)優(yōu) | 主要是對系統(tǒng)進行調(diào)優(yōu) | 某某系統(tǒng)上線運行一段時間后響應(yīng)速度越來越慢般堆,此時如何辦在孝? | 每次只改變一個配置诚啃,切忌無止境的調(diào)優(yōu) | 1.并發(fā)測試 2.壓力測試 3.配置測試 |
缺陷發(fā)現(xiàn) | 發(fā)現(xiàn)缺陷或問題重現(xiàn)淮摔,定位手段 | 某些缺陷只有在高負載的情況下才能暴露出來,如線程鎖始赎,資源競爭或內(nèi)存泄露 | 做為系統(tǒng)測試的補充和橙,用來發(fā)現(xiàn)并發(fā)問題,或者對系統(tǒng)已出現(xiàn)的問題進行重現(xiàn)和定位 | 1.并發(fā)測試 2.壓力測試 |
性能基準(zhǔn) | 常用于敏捷開發(fā)過程中造垛,敏捷開發(fā)流程的特點是小步快走魔招,快速試錯,迭代周期短 | 很難定義完整的性能測試目標(biāo)五辽,也沒有時間在每個迭代開展詳細的性能測試办斑,可以通過建立性能基線,判斷迭代 |
2.什么時候需要性能測試
3.性能測試流程
3.1性能測試流程
1.需求分析
2.測試準(zhǔn)備
3.測試執(zhí)行
4.結(jié)果分析與調(diào)優(yōu)
5.報告與總結(jié)
4.測試前需要準(zhǔn)備什么
4.1性能測試專業(yè)術(shù)語
響應(yīng)時間:從用戶發(fā)送一個請求到用戶收到服務(wù)器返回的響應(yīng)數(shù)據(jù)這段時間
數(shù)據(jù)路徑:客戶端發(fā)送請求杆逗,通過網(wǎng)絡(luò)發(fā)送到web服務(wù)器進行處理乡翅,如果需要操作數(shù)據(jù)庫,再由網(wǎng)絡(luò)轉(zhuǎn)發(fā)到數(shù)據(jù)庫進行處理罪郊,然后返回值給Web服務(wù)器蠕蚜,Web服務(wù)器最后把結(jié)果數(shù)據(jù)通過網(wǎng)絡(luò)返回客戶端
計算方法:Response Time = 網(wǎng)絡(luò)時間 + 應(yīng)用程序處理時間
圖中拐點說明:
1.響應(yīng)時間突然增加
2.意味著系統(tǒng)的一種或多種資源利用達到極限
3.通常可以利用拐點進行性能測試分析與定位
吞吐量:單位時間內(nèi)系統(tǒng)處理的客戶端請求的數(shù)量
計算單位:一般使用請求數(shù)/秒作為吞吐量的單位悔橄,也可以使用頁面數(shù)/秒表示
計算方法:Throughput=(number of requests)/(total time)
圖中拐點說明:
1.吞吐量逐漸達到飽和
2.意味著系統(tǒng)的一種或多種資源利用達到極限
3.通嘲欣郏可以利用拐點進行性能分析和定位
1.并發(fā)用戶數(shù):某一物理時刻同時向系統(tǒng)提交請求的用戶數(shù),提交的請求可以是同一場景或功能癣疟,也可以是不同的
2.在線用戶數(shù):某段時間內(nèi)系統(tǒng)訪問系統(tǒng)的用戶數(shù)挣柬,并不一定同時向系統(tǒng)提交請求
3.系統(tǒng)用戶數(shù):系統(tǒng)注冊的總用戶數(shù)
其中三者的關(guān)系:系統(tǒng)用戶數(shù)>在線用戶數(shù)>并發(fā)用戶數(shù)
資源利用率:指對不同系統(tǒng)資源的使用程度,通常用以占用最大值的百分比來衡量
通常指關(guān)注服務(wù)器的以下資源:
1.CPU:主要負責(zé)相關(guān)事情的判斷以及實際處理的機制
2.內(nèi)存:電腦中的記憶塊區(qū)睛挚,以供CPU進行判斷邪蛔,但是臨時的,訪問速度快竞川,遇到關(guān)機或斷電數(shù)據(jù)會丟失
3.磁盤IO:數(shù)據(jù)讀寫到硬件
4.網(wǎng)絡(luò):
圖中拐點說明:
1.服務(wù)器某資源利用逐漸達到飽和
2.通车暌纾可以利用拐點來進行性能測試分析與定位
1.TPS: Transactions Per Second,每秒事務(wù)數(shù)
2.思考時間:用戶每個操作后的暫停時間,或者叫操作之間的間隔時間
3.點擊數(shù):每秒鐘用戶向WEB服務(wù)器提交的HTTP請求數(shù)
4.PV:訪問一個URL,產(chǎn)生一個PV(Page View,頁面訪問量),每日每個網(wǎng)站的總PV是衡量一個網(wǎng)站規(guī)模的重要手段
5.UV:作為一個獨立的用戶委乌,訪問站點的所以頁面均算作一個UV(Unique Visitor床牧,用戶訪問)
4.2需求分析數(shù)據(jù)量化
4.3測試模型與測試數(shù)據(jù)準(zhǔn)備
曲線拐點模型:
地鐵模型:
4.4性能負載工具與系統(tǒng)監(jiān)控工具
性能負載工具:
系統(tǒng)監(jiān)控你工具:
5.測試需要解決哪些問題
5.1 項目具體需求
-
通過解讀項目需求,需要提取出來的指標(biāo)有:
響應(yīng)時間:
并發(fā)數(shù):
Tps數(shù)目:
總Tps數(shù):
穩(wěn)定性交易總量:
事務(wù)成功率:
交易波動范圍:
穩(wěn)定運行時長:
資源利用率:
測試交易場景:
需要測試的接口:
需要測試的場景:
項目對應(yīng)的生產(chǎn)與測試環(huán)境:
系統(tǒng)通訊使用的協(xié)議:
需要安排的壓力機數(shù)量:
交易占比:分析線上日志得出Tps占比
系統(tǒng)架構(gòu):
5.2 測試需要得出的數(shù)據(jù)
需要明確一個基準(zhǔn):例如一個用戶迭代100次遭贸,關(guān)注響應(yīng)時間戈咳,事務(wù)成功率100%
關(guān)注系統(tǒng)負載能力:例如十個用戶跑十分鐘,關(guān)注響應(yīng)時間,事務(wù)成功率100%
關(guān)注系統(tǒng)容量能力:估算一個總TPS著蛙,根據(jù)公式計算出每個交易的PACING和VU删铃,獲取系統(tǒng)最大處理能力,再冊數(shù)三個梯度作為對比踏堡,四組容量VU等差猎唁,TPS等差,對比每組容量實際占比和測試占比,關(guān)注響應(yīng)時間顷蟆,總TPS诫隅,TPS,事務(wù)成功率帐偎,APP CPU利用率逐纬,數(shù)據(jù)庫CPU利用率,線程死鎖削樊,數(shù)據(jù)庫死鎖
注:響應(yīng)時間應(yīng)小于負載測試時間豁生,總TPS應(yīng)約等于預(yù)估總TPS,每個交易的TPS應(yīng)接近預(yù)估總TPS占比漫贞,事務(wù)成功率100%甸箱,APP CPU小于60%,DB CPU小于80%绕辖,DUMP線程棧檢測是否有線程死鎖摇肌,查看數(shù)據(jù)庫日志是否有數(shù)據(jù)庫死鎖
- 關(guān)注系統(tǒng)穩(wěn)定能力:采用最有容量的80%作為壓力持續(xù)運行一段時間,觀察長時間運行的性能表現(xiàn)仪际,關(guān)注響應(yīng)時間围小,TPS,總TPS树碱,事務(wù)成功率肯适,交易總數(shù),觀察是否有內(nèi)存溢出成榜,CPU利用率是否達標(biāo)框舔,內(nèi)存是否不持續(xù)增長,是否正常出發(fā)fullgc,gc時間赎婚,gc頻率
6.系統(tǒng)性能有哪些關(guān)注點
6.1 用戶角度出發(fā)
- 響應(yīng)時間
對于用戶來說刘绣,使用系統(tǒng)時最為關(guān)注的是點擊按鈕,提交請求到系統(tǒng)返回結(jié)果挣输,整個過程所消耗的時間就是用戶對于該系統(tǒng)性能最為直觀的感受纬凤。
6.2 管理員角度
響應(yīng)時間
服務(wù)器使用資源是否合理
應(yīng)用服務(wù)器和數(shù)據(jù)庫使用資源是否合理
系統(tǒng)能否實現(xiàn)擴展
系統(tǒng)最多支持多少用戶訪問,系統(tǒng)最大業(yè)務(wù)處理量
系統(tǒng)性能是否存在的瓶頸在哪
更換哪些設(shè)備可以提高系統(tǒng)性能
系統(tǒng)是否支持全天候的業(yè)務(wù)訪問
6.3 開發(fā)人員角度
架構(gòu)是否合理
數(shù)據(jù)庫設(shè)計是否合理
代碼是否存在性能方面的問題
系統(tǒng)是否有不合理的內(nèi)存使用情況
系統(tǒng)是否存在不合理的線程同步方式
系統(tǒng)是否存在不合理的資源競爭
6.4 測試人員角度
連接超時
系統(tǒng)崩潰
系統(tǒng)交互
CPU使用問題
內(nèi)存使用問題