一.什么是性能測試
什么是軟件性能?
對於一個使用者來說,性能就是響應速度的快和慢.但是對於性能測試人員來說,性能指的不光是響應時間,還包括穩定性,並發,同時在線人數,內存使用情況,是否能橫向擴展,資源的使用率,應用服務器使用率,cpu,內存,磁盤等.
在實際使用過程中,cpu使用率不能達到100%.
軟件性能(資源利用率):應用程序線程池:當連接池占滿后,應用服務器的請求不能再發
數據庫連接池:一個數據庫的對外提供的連接池,一個是應用程序里面建立的通道,一般我們說的數據庫連接池指的是這個.當數據庫連接池滿了之后,在新的請求過來之后要等待.
表面性能:響應時間 並發用戶數 tps
底層性能:硬件的資源利用率(cpu,mem,I/O,network) 軟件的資源利用率(線程池,數據庫連接池,sql執行效率,JVM)
一般公司的並發:
單機--------業務(走業務邏輯,最終訪問關系型數據庫(表跟表之間有關聯關系))---------接口/功能 並發/tps 20-200用戶/每秒
單機 接口 非關系型數據庫 並發/TPS 1000+
關系型數據庫:采用關系模型來組織數據,數據之間有關聯關系,將數據對應起來
mysql,orcal,數據存儲是存在硬盤中,如果存 到緩存,一重啟電腦就沒了.當進行sql查詢時,從硬盤里面讀數據到內存里面
一般數據存儲使用關系型數據庫
非關系型數據庫:鍵值對
讀取時從內存里讀,讀取速度快.數據之間沒有關聯關系,只存鍵值對.
一般當做緩存來使用,臨時存放.
軟件性能需要快慢,穩定性,並發都屬於軟件性能,另外比如說是否能進行橫向擴展,硬件資源使用率,應用服務器使用率,軟件資源使用率(web容器的線程池,數據庫連接池)
線程池:
什么是軟件性能測試?
性能測試主要是通過自勱化的測試工具或者手段對服務器模擬發起多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試.
軟件性能測試的目的
1.使軟件達到一個正常的性能指標要求
2.在異常情況下能否正常使用
3.系統在長時間穩定情況下是否能正常使用
4.找到系統的瓶頸並進行優化
性能測試三大指標
二.並發
狹義並發:在同一個瞬間或者同一 時刻對同一個應用的同一個接口發起相同的訪問.
同一時刻 同一應用 同一接口 同時發起請求
廣義並發:在同一個時間段內向同一個應用發起請求.
同一個時間段內 向同一個應用
並發用戶數:同一時間段內向服務器發起請求的數量.
eg.3人 1h內 15min每人 並發用戶數是60min/15min=4
此時,用戶角度是3個並發,但是在性能角度講是4個並發.做性能測試要從性能角度考慮
eg2.
LR10個並發訪問 登錄 響應時間0.2s 並發用戶數:此時不能計算並發數,因為沒有時間段.
若計算1s內,則並發用戶數=1s/0.2s*10=50個並發用戶/s(服務器角度:每秒鍾處理50個請求)
2s 1s 1s/2s*10=5個並發用戶/s(服務器角度:每秒處理5個請求)
故:計算並發用戶數的三要素:時間段,多少個並發,響應時間
總結:並發用戶數三要素 用戶角度/工具角度 系統角度(級別)
三.響應時間
性能測試時間----響應時間(reseponse time)
請求的響應時間:從開始發送請求到接收到整個返回結果,叫做響應時間.如下圖,響應時間=(N1+N2+N3+N4)+(A1+A2+A3+A4)
服務器的響應時間(服務器處理時間):從服務器拿到請求開始到服務器接到請求.服務器響應時間=A1+N2+A2+N3+A3
LR計算的響應時間是:請求的響應時間
當請求開始進入數據庫處理后應用程序處理暫時停止,線程或者進程暫時停止,將線程給下一個請求,數據庫開始執行sql語句
執行sql語句時,數據庫先進行語法檢查--語義分析(檢查權限)--打開所操作的表--檢查緩存利用率(如果有直接從緩存里面去,如果沒有)--執行sql語句.--表關閉--關閉連接
通過網絡返回給服務器
這個時候線程恢復工作,繼續執行
四.TPS(transacation processing systems)
每秒通過的事務數
事務:計時開始到計時結束,可以放一個請求,也可以放多個請求,建議一個事務放一個請求.
事務不是對頁面的一次操作,事務是自己定義的一個行為.
eg.事務開始(登錄)--url=登錄--事務結束(登錄)
tps:每秒鍾可以處理的事務
LR 10個並發 登錄 響應時間2s 並發用戶數:每秒處理5個用戶 tps=5/s
響應時間0.2s 並發用戶數:每秒處理50個用戶 tps=50/s
eg.
一個售票窗口,10個人去買票,每1s賣一張票,平均響應時間多少
[測響應時間要在一個特定的並發用戶數前提條件下,測哪個接口]
請求響應時間=(1+2+3+4+5+6+7+8+9+10)/10
服務器響應時間:1s
答案:
1題:
一個人買票,響應時間1s.
3題:
同上面的例子.不是賣票慢了,也不是處理慢了,解決方法:可以增加售票窗口
4題:
平均RT=1s
5題:
平均RT=(1+2+3...+15)/15=(150個並發,10個線程)
10個並發用戶數,10個線程處理,一塊處理.150個並發,10個線程來處理,每個線程15個人