效能測試總結-基礎理論篇(極好的文章)
隨著軟體行業的快速發展,現代的軟體系統越來越複雜,功能越來越多,測試人員除了需要保證基本的功能測試質量,效能也隨越來越受到人們的關注。但是一提到效能測試,很多人就直接連想到Loadrunner。認為LR就等於效能測試,其實這是不對的。LR只是效能測試的一個工具,但效能測試不僅僅是LR。本文會從以下幾個方面介紹基礎的效能測試理論,後續也會持續更新相關文章,儘量理論結合實踐,讓效能測試學習不在是工具的學習。
目錄:
一、 什麼是軟體效能
二、不同群體眼中的效能
三、效能測試型別
四、效能測試應用場景
五、效能測試基本概念
六、理髮店模型和地鐵進站模型
七、做好效能測試需要掌握的知識
正文:
一、 什麼是軟體效能
定義:軟體的效能是軟體的一種非功能特性,它關注的不是軟體是否能夠完成特定的功能,而是在完成該功能時展示出來的及時性。
由定義可知效能關注的是軟體的非功能特性,所以一般來說效能測試介入的時機是在功能測試完成之後。另外,由定義中的及時性可知效能也是一種指標,可以用時間或其它指標來衡量,通常我們會使用某些工具或手段來檢測軟體的某些指標是否達到了要求,這就是效能測試。
效能測試定義:指通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。
二、不同群體眼中的效能
不同的人由於人生觀、世界觀、價值觀以及教育背景、知識體系、人生閱歷的不同,對於同一事物或問題的看法可能不同。對於軟體效能也是如此,不同的人由於視角的不同,所關注的點也可能不同。下面來看看在不同的人群眼中效能分別是什麼樣的。
- 使用者眼中的效能
- 開發眼中的效能
- 系統管理員眼中的效能
- 測試眼中的效能是什麼樣的呢?
測試人員通常是做為軟體質量控制的一個角色,不僅僅是找bug,需要對整個軟體的質量負責,效能也屬於質量的一部分,因此測試人員眼中的效能應該是全面的,考慮的東西也需要全面:
1、測試人員需要考慮全面的效能,包括使用者、開發、管理員等各個視角的效能。
2、測試人員在做效能測試時除開要關注表面的現象如響應時間,也需要關注本質,比如使用者看不到的伺服器資料利用率,架構設計是否合理?程式碼是否合理等言方方面面。
三、效能測試型別
- 基準測試:在給系統施加較低壓力時,檢視系統的執行狀況並記錄相關數做為基礎參考
- 負載測試:是指對系統不斷地增加壓力或增加一定壓力下的持續時間,直到系統的某項或多項效能指標達到安全臨界值,例如某種資源已經達到飽和狀態等 。
- 壓力測試:壓力測試是評估系統處於或超過預期負載時系統的執行情況,關注點在於系統在峰值負載或超出最大載荷情況下的處理能力。
- 穩定性測試:在給系統載入一定業務壓力的情況下,使系統執行一段時間,以此檢測系統是否穩定。
- 併發測試:測試多個使用者同時訪問同一個應用、同一個模組或者資料記錄時是否存在死鎖或者其他效能問題,
四、效能測試應用場景(領域)
1、效能測試應用場景(領域)主要有:能力驗證、規劃能力、效能調優、缺陷發現、效能基準比較,下表簡單介紹和對比了這幾個場景的各自用途和特點:
主要用途 | 典型場景 | 特點 |
常用效能 測試方法 |
|
能力驗證 | 關注在給定的軟硬體條件下,系統能否具有預期的能力表現 | 在要求平均響應時間小於2秒的前提下,如何判斷系統是否能夠支援50萬用戶/天的訪問量? | a)要求在已確定的環境下執行 b)需要根據典型場景設計測試方案和用例,包括操作序列和併發使用者量,需要明確的效能目標。 | a)負載測試 b)壓力測試 c)穩定效能測試 |
規劃能力 | 關注如何使系統具有我們要求的效能能力 | 某某系統計劃在一年內獲客量在到xxx萬,系統到時候是否能支援這麼多使用者量?如果不能需要如何調整系統的配置? | a) 它是一種探索性的測試 b) 常用於瞭解系統性能和獲得擴充套件效能的方法 | a) 負載測試 b) 壓力測試 c) 配置測試 |
效能調優 | 主要用於對系統性能進行調優 | 某某系統上線執行一段時間後響應速度越來越慢,此時應該如何辦? | 每次只改變一個配置,切忌無 休止的調優 | a) 併發測試 b) 壓力測試 c) 配置測試 |
缺陷發現 | 發現缺陷或問題重現、定位手段 | 某些缺陷只有在高負載的情況下才能暴露出來,如執行緒鎖、資源競爭或記憶體洩露。 | 做為系統測試的補充,用來發現併發問題,或是對系統已經出現的問題進行重現和定位 | a) 併發測試 b) 壓力測試 |
效能基準比較 | 常用於敏捷開發過程中,敏捷開發流程的特點是小步快走,快速試錯,迭代週期短,需求變化頻繁。很難定義完善的效能測試目標,也沒有時間在每個迭代開展詳細的效能測試,可以通過建立效能基線,通過比較每次迭代中的效能表現變化,判斷迭代是否達到了目標。 |
2、通常在某個效能場景(領域)中需要聯合使用多種效能測試方法一起進行效能測試,下表為效能測試應用領域與測試方法關聯:
能力驗證 |
規劃能力 |
效能調優 |
缺陷發現 |
效能基準比較 |
|
基準測試 |
√ |
√ |
|||
負載測試 |
√ |
√ |
√ |
||
壓力測試 |
√ |
√ |
√ |
√ |
√ |
併發測試 |
√ |
√ |
|||
穩定性測試 |
√ |
五、效能測試基本概念
1、響應時間
a)定義:從使用者傳送一個請求到使用者接收到伺服器返回的響應資料這段時間就是響應時間
b) 關鍵路徑:下圖為一次http請求經過的路徑,請求會經過網路傳送到web伺服器進行處理,如果需要操作DB,再由網路轉發到資料庫進行處理,然後返回值給web伺服器,web伺服器最後把結果資料通過網路返回給客戶端。
c) 計算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(網路時間 + 應用程式處理時間)
d) 響應時間-負載對應關係:
圖中拐點說明:
1、響應時間突然增加
2、意味著系統的一種或多種資源利用達到的極限
3、通常可以利用拐點來進行效能測試分析與定位
2、吞吐量
a)定義:單位時間內系統處理的客戶端請求的數量
b)計算單位:一般使用請求數/秒做為吞吐量的單位,出可以使用 頁面數/秒錶表示。
另外,從業務角度來說也可以使用 訪問人數 /天 或 頁面訪問量/天 做為單位。
c)計算方法:Throughput = (number of requests) / (total time).
d)吞吐量-負載對應關係:
圖中拐點說明:
1、吞吐量逐漸達到飽和
2、意味著系統的一種或多種資源利用達到的極限
3、通常可以利用拐點來進行效能測試分析與定位
3、併發數:
併發使用者數:某一物理時刻同時向系統提交請求的使用者數,提交的請求可能是同一個場景或功能,也可以是不同場景或功能。
線上使用者數:某段時間內訪問系統的使用者數,這些使用者並不一定同時向系統提交請求
系統使用者數:系統註冊的總使用者資料
三者之間的關係:系統使用者數 >= 線上使用者數 >= 併發使用者數
4、資源利用率
a) 定義:指的是對不同系統資源的使用程度,通常以佔用最大值的百分比來衡量
b) 通常需要關注的伺服器資源如下:
1、CPU:就像人的大腦,主要負責相關事情的判斷以及實際處理的機制
2、記憶體:大腦中的記憶塊區,將眼睛,面板等收集到的資訊記錄起來的地方,以供cpu進行判斷,但是是臨時的,訪問速度快,如果關機或斷電這裡的資料會消失。
3、磁碟IO:大腦中的記憶區塊,將重要的資料儲存起來(永久儲存,關機或斷電不會丟失,速度慢),以便將來再次使用這些資料。
4、網路:
c)資源利用-負載對應關係:
圖中拐點說明:
1、伺服器某薦資源使用逐漸達到飽和
2、通常可以利用拐點來進行效能測試分析與定位
5、其它常用概念:
a) TPS:Transactions Per Second,每秒事務數
b) 思考時間:使用者每個操作後的暫停時間,或者叫操作之間的間隔時間,此時間內是不對伺服器產生壓力的
c) 點選數:每秒鐘使用者向WEB伺服器提交的HTTP請求數。這個指標是WEB應用特有的一個指標:WEB應用是"請求-響應"模式,使用者發出一次申請,伺服器就要處理一次,所以點選是WEB應用能夠處理的交易的最小單位。如果把每次點選定義為一個交易,點選率和TPS就是一個概念。容易看出,點選率越大,對伺服器的壓力越大。點選率只是一個性能參考指標,重要的是分析點選時產生的影響。需要注意的是,這裡的點選並非指滑鼠的一次單擊操作,因為在一次單擊操作中,客戶端可能向伺服器發出多個HTTP請求.
d)PV:訪問一個URL,產生一個PV(Page View,頁面訪問量),每日每個網站的總PV量是形容一個 網站規模的重要指標。
UV:作為一個獨立的使用者,訪問站點的所有頁面均算作一個UV(Unique Visitor,使用者訪問)
六、理髮店模型和曲線拐點模型
上面介紹了很多效能測試中的基本概念,比較抽象,可以通過效能測試理髮店模型 或 地鐵進站模型來幫忙我們更好的理解這些概念。這裡不做詳細介紹了,需要的可直接檢視原文。
七、做好效能測試需要掌握的知識:
- 掌握一門程式語言
- 掌握計算機原理和作業系統知識
- 良好的網路基礎
- 掌握資料庫知識
- 中介軟體(apache,tomcat)
- 常用抓包工具
- 效能測試工具