本文介紹效能測試的各種測試單位。
編寫目的和適用對象
本指標適用於使用效能測試進行效能測試專案技術品質評價依據,規範技術測試結果評價,統一效能測試技術測試品質度量。應用系統技術品質度量指標範圍廣泛,本文難以涵蓋全部。 預期讀者為測試管理員、測試實施人員、技術支援人員、專案管理人員等系統技術品質相關人員。
系統效能指標
交易回應時間
定義及解釋
回應時間指使用者從用戶端發起一個請求開始,到用戶端接收到從伺服器端返回的響應結束,整個過程所耗費的時間。在效能檢測中一般以壓力發起端至被壓測伺服器返回處理結果的時間為計量,單位一般為秒或毫秒。平均回應時間指系統穩定已耗用時間段內,同一交易的平均回應時間。一般而言,交易回應時間均指平均回應時間。 平均回應時間指標值應根據不同的交易分別設定,一般情況下,分為複雜交易回應時間、簡單交易回應時間、特殊交易回應時間。其中,特殊交易回應時間的設定必須明確該交易在回應時間方面的特殊性。
簡稱
Response Time: RT
參考標準
不同行業不同業務可接受的回應時間是不同的,一般情況,對於線上即時交易:
互連網企業:500毫秒以下,例如淘寶業務10毫秒左右。
金融企業:1秒以下為佳,部分複雜業務3秒以下。
保險企業:3秒以下為佳。
製造業:5秒以下為佳。
對於批量交易:
時間視窗:即整個壓測過程的時間,不同資料量則時間不一樣,例如雙11和99大促,資料量級不一樣則時間視窗不同。巨量資料量的情況下,2小時內可完成壓測。
系統處理能力
定義及解釋
系統處理能力是指系統在利用系統硬體平台和軟體平台進行資訊處理的能力。 系統處理能力通過系統每秒鐘能夠處理的交易數量來評價,交易有兩種理解:一是業務人員角度的一筆業務過程;二是系統角度的一次交易申請和響應過程。前者稱為業務交易過程,後者稱為事務。兩種交易指標都可以評價應用系統的處理能力。一般的建議與系統交易日誌保持一致,以便於統計業務量或者交易量。系統處理能力指標是技術測試活動中重要指標。
簡稱
一般情況下,用以下指標來度量:
HPS(Hits Per Second) :每秒點擊次數,單位是次/秒。
TPS(Transaction per Second):系統每秒處理交易數,單位是筆/秒。
QPS(Query per Second):系統每秒處理查詢次數,單位是次/秒。 對於互連網業務中,如果某些業務有且僅有一個請求串連,那麼TPS=QPS=HPS,一般情況下用TPS來衡量整個商務程序,用QPS來衡量介面查詢次數,用HPS來表示對伺服器單擊請求。
標準
無論TPS、QPS、HPS,此指標是衡量系統處理能力非常重要的指標,越大越好,根據經驗,一般情況下:
金融行業:1000 TPS~50000 TPS,不包括互連網化的活動。
保險行業:100 TPS~100000 TPS,不包括互連網化的活動。
製造行業:10 TPS~5000 TPS。
互連網電子商務:10000 TPS~1000000 TPS。
互連網中型網站:1000 TPS~50000 TPS。
互連網小型網站:500 TPS~10000 TPS。
並發使用者
定義及解釋
並發使用者數指在同一時刻內,登入系統並進行業務操作的使用者數量。 並發使用者數對於長串連系統來說最大並發使用者數即是系統的並發接入能力。對於短串連系統而言最大並發使用者數並不等於系統的並發接入能力,而是與系統架構、系統處理能力等各種情況相關。例如系統吞吐能力很強,加上短串連一般都有串連複用,往往並發使用者數大於系統的並發接入串連數。所以對於大部分短連線類型的系統,輸送量模式(RPS模式,Request Per Second)比較適合,也是阿里的最佳實務,PTS支援RPS模式的壓測,輸送量的壓測構建和衡量一步到位。 在測試中,採用虛擬使用者來類比現實中使用者進行業務操作。
簡稱
Virtual User:VU
標準
一般情況下,效能測試是將系統處理能力容量測出來,而不是測試並發使用者數,除了伺服器長串連可能影響並發使用者數外,系統處理能力不受並發使用者數影響,可以用最小的使用者數將系統處理能力容量測試出來,也可以用更多的使用者將系統處理能力容量測試出來。
錯誤率
定義及解釋
錯誤率指系統在負載情況下,失敗交易的機率。錯誤率=(失敗交易數/交易總數)×100%。穩定性較好的系統,其錯誤率應該由逾時引起,即為逾時率。
簡稱
Virtual Failure Ratio:FR: VU
標準
不同系統對錯誤率的要求不同,但一般不超出千分之六,即成功率不低於99.4%。
資源指標
CPU
定義及解釋
中央處理器是一塊超大規模的整合電路,是一台電腦的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋電腦指令以及處理電腦軟體中的資料。CPU Load:系統正在幹活的多少的度量,隊列長度。系統平均負載。
簡稱
Central Processing Unit:CPU
標準
CPU指標主要指的CPU使用率、利用率,包括使用者態(user)、系統態(sys)、等待態(wait)、空閑態(idle)。CPU使用率、利用率要低於業界警戒值範圍之內,即小於或者等於75%、CPU sys%小於或者等於30%,CPU wait%小於或者等於5%。單核CPU也需遵循上述指標要求。CPU Load要小於CPU核心數。
Memory
定義及解釋
記憶體是電腦中重要的組件之一,它是與CPU進行溝通的橋樑。電腦中所有程式的運行都是在記憶體中進行的,因此記憶體的效能對電腦的影響非常大。
簡稱
Memory就是記憶體的簡稱。
標準
現代的作業系統為了最大利用記憶體,在記憶體中存放了緩衝,因此記憶體利用率100%並不代表記憶體有瓶頸,衡量系統內有瓶頸主要靠SWAP(與虛擬記憶體交換)交換空間利用率,一般情況下,SWAP交換空間利用率要低於70%,太多的交換將會引起系統效能低下。
磁碟輸送量
定義及解釋
磁碟輸送量是指在無磁碟故障的情況下單位時間內通過磁碟的資料量。
簡稱
Disk Throughput。
標準
磁碟指標主要有每秒讀寫多少兆,磁碟繁忙率,磁碟隊列數,平均服務時間,平均等待時間,空間利用率。其中磁碟繁忙率是直接反映磁碟是否有瓶頸的重要依據,一般情況下,磁碟繁忙率要低於70%。
網路輸送量
定義及解釋
網路輸送量是指在無網路故障的情況下單位時間內通過的網路的資料數量。單位為Byte/s。網路輸送量指標用于衡量系統對於網路裝置或鏈路傳輸能力的需求。當網路輸送量指標接近網路裝置或鏈路最大傳輸能力時,則需要考慮升級網路裝置。
簡稱
Network Throughput
標準
網路輸送量指標主要有每秒有多少兆流量進出,一般情況下不能超過裝置或鏈路最大傳輸能力的70%。
核心參數
作業系統核心參數主要包括訊號量、進程、檔案控制代碼,一般不要超過設定的參數值即可,具體如下:
一級指標
二級指標
單位
解釋
核心參數
Maxuprc
個
限制每個使用者的使用者進程的最大數量
Max_thread_proc
個
定義每個進程允許的最大線程數量
Filecache_max
位元組
最大可用於cache file I/O的實體記憶體
Ninode
個
記憶體中HFS檔案系統開啟i節點的最大數量
Nkthread
個
限制允許同時啟動並執行線程數量
Nproc
個
限制允許同時啟動並執行進程數量
Nstrpty
個
基於STREAMS的偽終端 (pts) 的最大數量
Maxdsiz
位元組
任何使用者進程的資料區段的最大大小(以位元組為單位)
maxdsiz_64bit
位元組
任何使用者進程的資料區段的最大大小(以位元組為單位)
maxfiles_lim
個
每個進程的檔案描述符的最大數目硬限制
maxssiz_64bit
位元組
任何使用者進程的堆棧的最大大小
Maxtsiz
位元組
任一使用者進程的文本段的最大大小
nflocks
個
檔案鎖的最大數量
maxtsiz_64bit
位元組
任一使用者進程的文本段的最大大小
msgmni
個
系統級System V IPC訊息佇列 (ID) 所允許的最大數量
msgtql
個
系統中任意時間的最大System V IPC訊息數
npty
個
BSD偽終端 (pty) 的最大數量
nstrtel
個
指定核心可支援傳入telnet會話的telnet裝置檔案的數量
nswapdev
個
可用於交換的裝置的最大數量
nswapfs
個
可用於交換的檔案系統的最大數量
semmni
個
System V IPC系統級訊號量標識符的數量
semmns
個
System V系統級訊號量的數量
shmmax
位元組
System V共用記憶體段的最大大小
shmmni
個
系統中System V共用記憶體段標識符的數量
shmseg
個
每個進程System V共用記憶體段的最大數量
中介軟體指標
定義及解釋
常用的中介軟體例如Tomcat、Weblogic等指標主要包括JVM、ThreadPool、JDBC,具體如下:
一級指標
二級指標
單位
解釋
GC
GC頻率
每秒多少次
Java虛擬機器垃圾部分回收頻率
Full GC頻率
每小時多少次
Java虛擬機器垃圾完全回收頻率
Full GC平均時間長度
秒
用於垃圾完全回收的平均時間長度
Full GC最大時間長度
秒
用於垃圾完全回收的最大時間長度
堆使用率
百分比
堆使用率
ThreadPool
Active Thread Count
個
活動的線程數
Pending User Request
個
處於排隊的使用者請求個數
JDBC
JDBC Active Connection
個
JDBC活動串連數
標準
當前正在啟動並執行線程數不能超過設定的最大值。一般情況下系統效能較好的情況下,線程數最小值設定50和最大值設定200比較合適。
當前啟動並執行JDBC串連數不能超過設定的最大值。一般情況下系統效能較好的情況下,JDBC最小值設定50和最大值設定200比較合適。
GC頻率不能頻繁,特別是FULL GC更不能頻繁,一般情況下系統效能較好的情況下,JVM最小堆大小和最大堆大小分別設定1024 M比較合適。
資料庫指標
定義及解釋
常用的資料庫例如MySQL指標主要包括SQL、輸送量、快取命中率、串連數等,具體如下:
一級指標
二級指標
單位
解釋
SQL
耗時
微秒
執行SQL耗時
輸送量
QPS
個
每秒查詢次數
TPS
個
每秒事務次數
命中率
Key Buffer命中率
百分之
索引緩衝命中率
InnoDB Buffer命中率
百分之
InnoDB緩衝區命中率
Query Cache命中率
百分之
查詢快取命中率
Table Cache命中率
百分之
表快取命中率
Thread Cache命中率
百分之
線程快取命中率
鎖
等待次數
次
鎖等待次數
等待時間
微秒
鎖等待時間
標準
SQL耗時越小越好,一般情況下微秒層級。
命中率越高越好,一般情況下不能低於95%。
鎖等待次數越低越好,等待時間越短越好。
前端指標
定義及解釋
前端指標主要包括頁面展示和網路所花的時間,具體如下:
一級指標
二級指標
單位
解釋
頁面展示
首次顯示時間
毫秒
在瀏覽器地址欄輸入URL按斷行符號到使用者看到網頁的第一個視覺標誌為止。
OnLoad事件時間
毫秒
瀏覽器觸發onLoad事件的時間,當原始文檔和所有引用的內容完全下載後才會觸發這個事件。
完全載入的時間
毫秒
所有onLoad JavaScript處理常式執行完畢,所有動態或消極式載入的內容都通過這些處理常式觸發的時間。
頁面數量
頁面大小
KB
整個頁面大小。
請求數量
次
從網站下載資源時所有網路請求的總數,盡量少。
網路
DNS時間
毫秒
DNS尋找時間。
連線時間
毫秒
連線時間就是瀏覽器與Web伺服器建立TCP/IP串連的時間。
伺服器時間
毫秒
伺服器處理時間。
傳輸時間
毫秒
內容傳輸所用時間。
等待時間
毫秒
等待某個資源釋放的時間。
標準
頁面要儘可能小及壓縮。
頁面展示和花費時間越短越好。
穩定性指標
定義及解釋
最短穩定時間:系統按照最大容量的80%或標準壓力(系統的預期日常壓力)情況下運行,能夠穩定啟動並執行最短時間。 一般來說,對於正常工作日(8小時)啟動並執行系統,至少應該能保證系統穩定運行8小時以上。對於7×24啟動並執行系統,至少應該能夠保證系統穩定運行24小時以上。 如果系統不能穩定的運行,上線後,隨著業務量的增長和長時間運行,將會出現效能下降甚至崩潰的風險。
標準
TPS曲線穩定,沒有大幅度的波動。
各項資源指標沒有泄露或異常情況。
批量處理指標
定義及解釋
指批量處理常式單位時間內處理的資料數量。一般用每秒處理的資料量來衡量。處理效率是估算批量處理時間視窗最重要的計算指標。 關於批量處理時間視窗,不同系統的批量處理時間視窗在起止時間上可以部分重疊。另外,同一系統內部,也可能存在多個批量處理過程同時進行,其時間視窗相互疊加。 長時間批量處理將會對聯機線上即時交易產生重大的效能影響。
標準
在資料量很大的情況下,批處理時間視窗時間越短越好。
不能影響即時交易系統效能。
可擴充性指標
定義及解釋
指應用軟體或作業系統以叢集方式部署,增加的硬體資源與增加的處理能力之間的關係。計算公式為:(增加效能/原始效能)/(增加資源/原始資源)×100%。 擴充能力應通過多輪測試獲得擴充指標的變化趨勢。 一般擴充能力非常好的應用系統,擴充指標應是線性或接近線性,現在很多大規模的分布式系統的擴充能力非常好。
標準
理想的擴充能力是資源增加幾倍,效能就提升幾倍。
擴充能力至少在70%以上。
可靠性指標
雙機熱備
對於將雙機熱備作為可靠性保障手段的系統,可衡量的指標如下:
節點切換是否成功及其消耗時間。
雙機切換是否有業務中斷。
節點回切是否成功及其耗時
雙機回切是否有業務中斷。
節點回切過程中的資料丟失量。在進行雙機切換的同時,使用壓力發生工具類比實際業務發生情況,對應用保持一定的效能壓力,保證測試結果符合生產實際情況。
叢集
對於使用叢集方式的系統,主要通過以下方式考量其叢集可靠性:
叢集中某個節點出現故障時,系統是否有業務中斷情況出現。
在叢集中新增一個節點時,是否需要重啟系統。
當故障節點恢複後,加入叢集,是否需要重啟系統。
當故障節點恢複後,加入叢集,系統是否有業務中斷情況出現。
節點切換需要多長時間。在驗證叢集可靠性的同時,需根據具體情況使用壓力工具類比實際業務發生相關情況,對應用保持一定的效能壓力,確保測試結果符合生產實際情況。
備份和恢複
本指標為了驗證系統的備份、恢複機制是否有效可靠,包括系統的備份和恢複、資料庫的備份和恢複、應用的備份和恢複,包括以下測試內容:
備份是否成功及其消耗時間。
備份是否使用指令碼自動化完成。
恢複是否成功及其消耗時間。
恢複是否使用指令碼自動化完成指標體系的運用原則。
指標項的採用和考察取決於對相應系統的測試目的和測試需求。被測系統不一樣,測試目的不一樣,測試需求也不一樣,考察的指標項也有很大差別。
部分系統涉及額外的前端使用者接入能力的,需要考察使用者接入並發能力指標。
對於批量處理過程的效能驗證,主要考慮批量處理效率並估算批量處理時間視窗。
如測試目標涉及到系統效能容量,測試需求中應根據相關指標項的定義,明確描述效能指標需求。
測試單位擷取後,需說明相關的前提條件(如多少業務量、系統資源情況等)。