1.什么是性能測試
什么是軟件性能?
定義:軟件的性能是軟件的一種非功能特性
,它關注的不是軟件是否能夠完成特定的功能,而是在完成該功能是展示出來的及時性
。
比如:一個登錄功能他能實現登錄操作,但是登錄過程需要10s才能進入主頁面,這就說明軟件的性能不好。
什么是性能測試?
定義:指通過自動化的測試工具模擬多種正常、峰值以及異常負載條件
來對系統的各項性能指標進行測試。
功能測試的時候關注的是1個人的操作,性能測試關注的是多個人。
性能測試什么時候做?
接口測試是最先做,性能測試是最后
做。
性能測試是基於所有功能都測試完畢並且修復完成,基本不改變,正常測試流程已經全部走完,在上線前的兩三天做性能測試,性能測試通過則可以上線。
2.不同群體眼中的性能
用戶的視角:
- 響應時間(還要讓我等多久?需要加載老半天才出現頁面?)
- 確定性(為什么總是失敗?閃退?無響應?)
開發視角:
- 架構設計是否合理?——架構設計
- 數據庫設計是否合理?——數據庫設計
- 代碼是否存在性能問題?——代碼
- 是否有不合理的內存使用?——代碼
- 是否有不合理的線程同步操作?——代碼
- 是否有不合理的資源競爭?——代碼
- 代碼算法是否還能進一步提升?——代碼
系統管理員(運維)視角:
- 服務器資源使用合理嗎?——資源利用率
- 數據庫使用合理嗎?——資源利用率
- 系統是否實現擴展?——可擴展性(比如:服務器動態擴展)
- 最多支撐多少用戶訪問?——系統容量
- 最大業務處理量?——系統容量
- 系統有哪些潛在的瓶頸?——可擴展性
- 更換哪些設備,添加哪些機器可以提高系統性能?——可擴展性
- 7×24小時連續不間斷業務訪問?——穩定性
測試眼中的性能:
官方回答:
- 測試人員通常是作為軟件質量控制的一個角色,不僅僅是找BUG,更需要對整個軟件的質量負責,性能也屬於質量的一部分,因此測試人員眼中的性能應該是全面的,考慮的東西也需要全面。
- 測試人員需要考慮全面的性能,包括用戶、開發、運維等各個視角的性能。
- 測試人員在做性能測試時除開要關注表面的現象,比如:響應時間,也需要關注本質,比如:用戶看不到的服務器資源利用率,架構設計是否合理,代碼是否合理等方面。
實際測試:
- 將開發視角看成一塊,運維視角也看成一塊,站在用戶的角度,模擬用戶操作。
- 如果達標就通過,上線。
- 如果不達標,就要判斷是開發的問題還是運維的問題。
- 監控系統的物理資源,比如:CPU占用100%(一般是85%以內,70%、60%、50%都ok),就是運維問題,或者是內存占滿,帶寬打滿。
- 運維已經調過物理資源,CPU、內存、帶寬等也都達標,測試發現還有性能問題,那就是開發問題。就要指派給開發去處理。
性能測試的指標?是誰定的?
產品經理和項目經理制定。
3.性能測試的場景維度和類型
基准測試:
在給系統施加較低壓力時,查看系統的運行狀況並記錄相關數據作為基礎參考。
比如:一個系統的性能要求是滿足100個人使用,我們就會取10-20個人去做測試就會得到一組數據,這個數就作為基准測試的基礎參考值
負載測試:
是指對系統不斷地增加壓力或增加一定壓力下的持續時間,直到系統的某項或多項性能指標達到安全臨界值,例如:某種資源已經達到飽和狀態。
正常是由小往大增加,需要注意的點是需要往安全的臨界值去加,而不是往超負荷的去加,也就是說性能是走上坡路的,尋找最佳性能的那個點。如果加到發現性能下降,就需要往回退,取更小的差值,比如60直接加到70的時候出現性能指標下降,就需要取65、66、67等慢慢嘗試,找到系統最優點。
壓力測試:
壓力測試是評估系統處於或超過預期負載時系統的運行情況,關注點在於系統在峰值負載或超出最大載荷情況下的處理能力。
70往上加,觀察軟件是如何處理這種情況:
①系統崩潰
②所有人都無法訪問
③一部分人可以訪問,一部分人無法訪問,需要錯峰訪問(比如:考試系統查分)
穩定性測試:
在給系統加載一定業務壓力(40%-60%)的情況下,使系統運行一段時間,以此檢測系統是否穩定。
並發測試:
測試多個用戶同時訪問同一個應用、同一個模塊或者數據記錄時是否存在死鎖或者其他性能問題。
4.性能測試指標確立及分析
-
響應時間
(RT——Response-time)-
定義:從
用戶發送一個請求
到用戶接受到服務器返回的響應數據
的這段時間就是響應時間。 -
關鍵路徑:http請求經過網絡發送到web服務器進行處理,如果需要操作DB,再由網絡轉發到數據庫進行處理,然后返回值給web服務器,web服務器最終把結果數據通過網絡返回給客戶端。
-
響應時間計算方法:
響應時間=呈現時間+網絡傳輸時間+服務器端響應時間+應用延時時間
-
響應時間和負載對應關系:
理發店模型:10個理發師,理1個客戶需要1分鍾,當同時來的客戶數量小於等於10個,總時間只需1分鍾,當同時來11個客戶,總時間就需要2分鍾,以此類推21個客戶就需要3分鍾......
拐點:
- 響應時間突然增加。
- 意味系統的一種或多種資源利用達到極限。
- 通常可以利用拐點來進行性能測試分析與定位。
-
-
吞吐量
-
定義:單位時間內系統處理的客戶端請求的數量。(判斷系統處理能力的一個指標)
-
計算單位:一般使用
請求數/秒
作為吞吐量的單位,可以使用頁面數/秒
表示。另外,從業務角度來說也可以使用訪問人數/天
或頁面訪問量/天
作為單位。 -
計算方法:throughput = (number of requests)/(total time)
-
吞吐量和負載對應關系:
拐點:
- 吞吐量逐漸達到飽和。
- 意味着系統一種或多種資源利用達到了極限。
- 通常可以利用拐點來進行性能測試分析與定位。
-
-
並發數
- 並發用戶數:某一物理時刻同時向系統提交請求的用戶數,提交的請求可能是同一個場景或功能,也可以是不同場景或功能。
- 在線用戶數:某段時間內訪問系統的用戶數,這些用戶並不一定同時向系統提交請求。(日活——每日活躍用戶數)
- 系統用戶數:系統注冊的總用戶數據。
- 三者之間的關系:系統用戶數 >= 在線用戶數 >= 並發用戶數
-
資源利用率
-
定義:指的是對不同系統資源的使用程度,通常以占用最大值的百分比來衡量(CPU、內存)。
-
通常需要關注的服務器資源如下:
- CPU:就像人的大腦,主要負責相關事物的判斷以及實際處理的機制。(一般不超過80%-90%)
- 內存:大腦中的記憶塊區,將眼睛、皮膚等收集到的信息記錄起來的地方,以供CPU進行判斷,但是是臨時的,訪問速度快,如果關機或斷電,內存中的數據就會消失。
- 磁盤IO:大腦中的記憶區塊,將重要的數據保存起來,永久保存,關機或斷電也不會丟失,速度慢,以便將來再次使用這些數據。(通過查看讀寫)
- 網絡:帶寬。(發送/接收的速率)
-
資源利用率和負載對應關系:
拐點:
- 服務器某資源使用逐漸達到飽和。
- 通常可以利用拐點來進行性能測試分析與定位。
-
windows的資源監視器:
任務管理器 --> 性能 --> 資源監視器
-
-
其他常用概念
PV
(Page View,頁面訪問量):訪問一個URL,產生一個PV,每日每個網站的總PV量是形容一個網站規模的重要指標。UV
(Unique Visitor,用戶訪問):作為獨立的用戶,訪問站點的所有頁面均算一個UV。