一、定義前端
對響應時間的評估、分析,結合應用的架構和實現細節找出問題,並最終確認問題獲得解決的過程 web
二、影響軟件性能的因素數據庫
網絡環境、數據庫服務器、應用服務器、業務邏輯的實現方式、系統採用的架構、代碼的優化程度、使用者的使用方式等服務器
三、測試模型網絡
通用的軟件測試過程模型(PTGM)、敏捷軟件測試模型(ATPM)架構
四、軟件性能測試的應用領域 併發
能力驗證、規劃能力、性能調優、瓶頸發現、性能基準比較框架
一:基礎篇前端性能
一、軟件性能測試的基本概念數據庫設計
1.1 性能是一種指標(軟件性能對其及時性要求的符合程度)
性能的及時性用響應時間或者吞吐量表示
響應時間:對請求作出響應所須要的時間
例子:交互式的應用(web):用戶感覺到的響應時間
非交互式的應用(嵌入式或者銀行等業務處理系統):系統對事件產生響應的time
1.1.1 用戶視角的軟件性能
端→端
用戶操做——數據操做請求——(應用服務器)服務端響應——返回數據——用戶端
1.1.2 管理員視角的軟件性能
服務器資源使用情況是否合理 資源利用率
數據庫資源使用情況是否合理 資源利用率
系統可否能夠實現擴展 系統可擴展性
系統的最大併發,壓力是多少
併發:最多能支持多少用戶訪問 系統容量
壓力:最大的業務處理量
系統可能的瓶頸在哪裏 系統可擴展性
更換什麼設備能提高系能 系統可擴展性
可否支持7*24小時的業務訪問 系統穩定性
1.1.3 開發視角的軟件性能
架構設計是否合理 系統架構
數據庫設計是否存在問題 數據庫設計
代碼是否存在性能方面的問題 代碼
系統中是否存在不合理的內存使用方式 代碼
系統中是否存在不合理的線程同步方式 設計與代碼
系統中是否存在不合理的資源競爭 設計與代碼
1.1.4 web前端性能
Web應用的前端響應時間:頁面加載時間
其中包括:
1.對HTML的解析讀取
2.對頁面圖片及CSS等文件的獲取和加載
3.客戶端腳本(JavaScript)的執行時間
4.對頁面進行展示所花的時間
1.2軟件性能的幾個主要術語
1.2.1
合理的響應時間取決於實際用戶需求
1.2.2
併發用戶數:N數值的用戶同時訪問系統
1.服務器實際承受的壓力不僅取決於併發用戶數,還取決於用戶的業務場景
2.服務端承受的最大併發訪問數取決於併發用戶數+業務場景
業務場景:經過服務器日誌的分析得出的結果
日誌分析方法:對服務器日誌進行分析,瞭解系統用戶的使用狀態,計算出服務器承受的最大併發用戶數量
特色:準確度/可信度高
適用:internet應用(沒法估算用戶量和行爲方式)
推薦日誌分析工具:AWStats:http://awstats.sourceforge.net/
這是一個基於Perl的日誌分析工具,可對Apache/IIS的日誌進行分析,還有良好的擴展支持
用於估算併發用戶數的公式(僅供參考)
平均用戶併發數:C=n*L/T
峯值併發用戶數:C›≈C+3√C
其中,C是平均併發數,n是用戶從登錄到退出系統的時間段,L是系統使用時間段的平均值,T是使用系統的時間段數值,C›指併發用戶數的峯值
對於企業內部使用的web系統,還有精度更小的一種公式
平均用戶併發數:C=n/10
峯值用戶併發數:C›≈r*C
其中,r值通常取2—3.這種方法要求不太嚴格,只有不多數據支持分析的性能測試中使用
1.2.3 吞吐量
定義:單位時間內系統處理客戶請求的數量
通常來講,請求數/每秒OR頁面數/每秒來衡量
從業務角度來講,訪問人數/天OR處理的業務數/小時來衡量(PV、UV)
從網絡角度來講,字節數/天來考察網絡流量
對於交互式應用,吞吐量指標反映服務器承受的壓力,在容量規劃測試中,吞吐量是個很重要的指標,由於它能說明系統級別的負載能力
Web系統的性能測試中,吞吐量指標能夠在兩個方面發揮做用
1.協助設計性能測試場景,以及衡量性能測試場景是否達到預期的設計目標
2.協助分析性能瓶頸
3.沒有遇到瓶頸以前,吞吐量和併發用戶之間存在的關係能夠用下面的公式表達:
F=N(vu)*R/T
F表示吞吐量,N表示VU的個數,R表示每一個VU發送的請求(點擊)數量,T表示性能測試所用的時間
不一樣併發用戶數量狀況下,對同一系統施加相同的吞吐量,極可能獲得不一樣結果
PS:大部分性能測試中,單擊數(Hits)指客戶端發出的HTTP的請求數量,而不是指用戶在頁面上的一次單擊事件。
好比:一次單擊事件請求頁面A,頁面A包含3張圖片和一個框架(Frame),則此次單擊共產生了5個Hits(包括對頁面A自己的請求)
1.2.4性能計數器(Counter)
定義:描述服務器或者操做系統性能的一些數據指標
做用:監控、分析
分析系統可擴展性,進行性能瓶頸的定位時,計數器取值很是關鍵
相關指標:資源利用率:系統各類資源的使用狀況
1.2.5思考時間(Think Time)
休眠時間:用戶操做時間每一個請求的間隔時間
體如今腳本中,就是操做之間放一個Think函數,使腳本在執行兩個操做之間等待一段時間
公式F=N(vu)*R/T吞吐量是VU數量N,請求數R和時間T的函數,其中,R又能夠用時間T和用戶的思考時間Ts來計算:
R=T/Ts (請求數=時間/請求間隔時間)
推薦一個計算思考時間的方法:
1.首先計算出系統的併發用戶數
2.統計出系統平均的吞吐量
3.統計出平均每用戶發出的請求數量
4.根據上面的公式得出請求時間