性能測試總結(一)---基礎理論篇

    隨着軟件行業的快速發展,現代的軟件系統愈來愈複雜,功能愈來愈多,測試人員除了須要保證基本的功能測試質量,性能也隨愈來愈受到人們的關注。可是一提到性能測試,不少人就直接連想到Loadrunner。認爲LR就等於性能測試,其實這是不對的。LR只是性能測試的一個工具,但性能測試不只僅是LR。本文會從如下幾個方面介紹基礎的性能測試理論,後續也會持續更新相關文章,儘可能理論結合實踐,讓性能測試學習不在是工具的學習。html

 

目錄:web

1、 什麼是軟件性能數據庫

2、不一樣羣體眼中的性能apache

3、性能測試類型編程

4、性能測試應用場景tomcat

5、性能測試基本概念安全

6、理髮店模型和地鐵進站模型服務器

7、作好性能測試須要掌握的知識網絡

 

正文:架構

1、 什麼是軟件性能

      定義:軟件的性能是軟件的一種非功能特性,它關注的不是軟件是否可以完成特定的功能,而是在完成該功能時展現出來的及時性

  由定義可知性能關注的是軟件的非功能特性,因此通常來講性能測試介入的時機是在功能測試完成以後。另外,由定義中的及時性可知性能也是一種指標,能夠用時間或其它指標來衡量,一般咱們會使用某些工具或手段來檢測軟件的某些指標是否達到了要求,這就是性能測試。 

  性能測試定義指經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。

 

2、不一樣羣體眼中的性能

       不一樣的人因爲人生觀、世界觀、價值觀以及教育背景、知識體系、人生閱歷的不一樣,對於同一事物或問題的見解可能不一樣。對於軟件性能也是如此,不一樣的人因爲視角的不一樣,所關注的點也可能不一樣。下面來看看在不一樣的人羣眼中性能分別是什麼樣的。

  • 用戶眼中的性能

  

  • 開發眼中的性能

  

  • 系統管理員眼中的性能

  

      

  • 測試眼中的性能是什麼樣的呢?

             

    測試人員一般是作爲軟件質量控制的一個角色,不只僅是找bug,須要對整個軟件的質量負責,性能也屬於質量的一部分,所以測試人員眼中的性能應該是全面的,考慮的東西也須要全面:

              一、測試人員須要考慮全面的性能,包括用戶、開發、管理員等各個視角的性能。

              二、測試人員在作性能測試時除開要關注表面的現象如響應時間,也須要關注本質,好比用戶看不到的服務器資料利用率,架構設計是否合理?代碼是否合理等言方方面面。

 

3、性能測試類型

  1. 基準測試:在給系統施加較低壓力時,查看系統的運行情況並記錄相關數作爲基礎參考
  2. 負載測試:是指對系統不斷地增長壓力或增長必定壓力下的持續時間,直到系統的某項或多項性能指標達到安全臨界值,例如某種資源已經達到飽和狀態等 。
  3. 壓力測試:壓力測試是評估系統處於或超過預期負載時系統的運行狀況,關注點在於系統在峯值負載或超出最大載荷狀況下的處理能力。
  4. 穩定性測試:在給系統加載必定業務壓力的狀況下,使系統運行一段時間,以此檢測系統是否穩定。
  5. 併發測試:測試多個用戶同時訪問同一個應用、同一個模塊或者數據記錄時是否存在死鎖或者其餘性能問題,

 

4、性能測試應用場景(領域) 

一、性能測試應用場景(領域)主要有:能力驗證、規劃能力、性能調優、缺陷發現、性能基準比較,下表簡單介紹和對比了這幾個場景的各自用途和特色: 

  主要用途 典型場景 特色

經常使用性能

測試方法

能力驗證 關注在給定的軟硬件條件下,系統可否具備預期的能力表現 在要求平均響應時間小於2秒的前提下,如何判斷系統是否可以支持50萬用戶/天的訪問量? a)要求在已肯定的環境下運行
b)須要根據典型場景設計測試方案和用例,包括操做序列和併發用戶量,須要明確的性能目標。
a)負載測試
b)壓力測試
c)穩定性能測試
規劃能力 關注如何使系統具備咱們要求的性能能力

某某系統計劃在一年內獲客量在到xxx萬,系統到時候是否能支持這麼多用戶量?若是不能須要如何調整系統的配置? a) 它是一種探索性的測試
b) 經常使用於瞭解系統性能和得到擴展性能的方法
a) 負載測試
b) 壓力測試
c) 配置測試
性能調優 主要用於對系統性能進行調優 某某系統上線運行一段時間後響應速度愈來愈慢,此時應該如何辦? 每次只改變一個配置,切忌無 休止的調優 a) 併發測試
b) 壓力測試
c) 配置測試
缺陷發現 發現缺陷或問題重現、定位手段 某些缺陷只有在高負載的狀況下才能暴露出來,如線程鎖、資源競爭或內存泄露。 作爲系統測試的補充,用來發現併發問題,或是對系統已經出現的問題進行重現和定位 a) 併發測試
b) 壓力測試

性能基準比較    經常使用於敏捷開發過程當中,敏捷開發流程的特色是小步快走,快速試錯,迭代週期短,需求變化頻繁。很難定義完善的性能測試目標,也沒有時間在每一個迭代開展詳細的性能測試,能夠經過創建性能基線,經過比較每次迭代中的性能表現變化,判斷迭代是否達到了目標。

二、一般在某個性能場景(領域)中須要聯合使用多種性能測試方法一塊兒進行性能測試,下表爲性能測試應用領域與測試方法關聯:

 

能力驗證

規劃能力

性能調優

缺陷發現

性能基準比較

基準測試

 

 √

 

 

負載測試

 √

 

 

壓力測試

併發測試

 

 

 

穩定性測試

 

 

 

 

 

5、性能測試基本概念

  一、響應時間

    a)定義:從用戶發送一個請求到用戶接收到服務器返回的響應數據這段時間就是響應時間

    b) 關鍵路徑:下圖爲一次http請求通過的路徑,請求會通過網絡發送到web服務器進行處理,若是須要操做DB,再由網絡轉發到數據庫進行處理,而後返回值給web服務器,web服務器最後把結果數據經過網絡返回給客戶端。

    

    c) 計算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(網絡時間 + 應用程序處理時間)

    d) 響應時間-負載對應關係:

         

     圖中拐點說明:

      一、響應時間忽然增長

      二、意味着系統的一種或多種資源利用達到的極限

      三、一般能夠利用拐點來進行性能測試分析與定位

  二、吞吐量

    a)定義:單位時間內系統處理的客戶端請求的數量

    b)計算單位:通常使用請求數/秒作爲吞吐量的單位,出可使用 頁面數/秒錶表示。

      另外,從業務角度來講也可使用 訪問人數 /天 或 頁面訪問量/天 作爲單位。

    c)計算方法:Throughput = (number of requests) / (total time).

    d吞吐量-負載對應關係:

            

     圖中拐點說明:

      一、吞吐量逐漸達到飽和

      二、意味着系統的一種或多種資源利用達到的極限

      三、一般能夠利用拐點來進行性能測試分析與定位 

  三、併發數:

    併發用戶數:某一物理時刻同時向系統提交請求的用戶數,提交的請求多是同一個場景或功能,也能夠是不一樣場景或功能。

    在線用戶數:某段時間內訪問系統的用戶數,這些用戶並不必定同時向系統提交請求

    系統用戶數:系統註冊的總用戶數據

    

    三者之間的關係:系統用戶數 >= 在線用戶數 >= 併發用戶數

  四、資源利用率

    a) 定義:指的是對不一樣系統資源的使用程度,一般以佔用最大值的百分比來衡量

    b) 一般須要關注的服務器資源以下:

      一、CPU:就像人的大腦,主要負責相關事情的判斷以及實際處理的機制

      二、內存:大腦中的記憶塊區,將眼睛,皮膚等收集到的信息記錄起來的地方,以供cpu進行判斷,可是是臨時的,訪問速度快,若是關機或斷電這裏的數據會消失。

      三、磁盤IO:大腦中的記憶區塊,將重要的數據保存起來(永久保存,關機或斷電不會丟失,速度慢),以便未來再次使用這些數據。

      四、網絡:

    c)資源利用-負載對應關係:

      

     圖中拐點說明:

      一、服務器某薦資源使用逐漸達到飽和

      二、一般能夠利用拐點來進行性能測試分析與定位

  五、其它經常使用概念:

    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,用戶訪問)

 

6、理髮店模型和曲線拐點模型

  上面介紹了不少性能測試中的基本概念,比較抽象,能夠經過性能測試理髮店模型 或 地鐵進站模型來幫忙咱們更好的理解這些概念。這裏不作詳細介紹了,須要的可直接查看原文。

 

7、作好性能測試須要掌握的知識:

  • 掌握一門編程語言
  • 掌握計算機原理和操做系統知識
  • 良好的網絡基礎
  • 掌握數據庫知識
  • 中間件(apache,tomcat)
  • 經常使用抓包工具
  • 性能測試工具
相關文章
相關標籤/搜索