1. 程式人生 > 其它 >效能測試(2)理論

效能測試(2)理論

1 效能測試模型

1.1效能測試模型也可以理解為效能測試步驟,具體彙總為如下:

  •  測試前期準備
• 測試工具技術引入
• 效能測試計劃
• 測試設計與開發
• 測試執行與管理,資料收集
• 測試分析
 

1.2 工作流程的思路為:

1、目標是什麼?

2、怎麼去做

3、過程中你需要收集資料

4、一定要有結論

 

1.3效能測試具體描述

測試前期準備工作:

1、梳理清楚效能測試的目標(參考之前的歷史資料,效能的目標由測試主導梳理出來,但是是和大家一起溝通決定下來)
2、在目標清楚的基礎上,梳理出測試場景,和準備測試資料
3、準備資源(人力和機器資源)

測試工具技術引入:

1、LoadRunner  HP公司研發的工具,主要在工業級的效能測試中具備非常大的優勢,它是收費的。
2、JMeter Apache基金會頂級專案,是Java語言100%開發的,它是開源的,在頭部網際網路公司基本都進行二次開發,應用也是非常廣泛的 https://jmeter.apache.org/
3、Locust 是Python程式碼級別的效能測試工具,它是基於協程(微小的執行緒)https://locust.io/

效能測試計劃:

1、具體測試場景執行的負責人,和執行的開始結束時間
2、前置工作內容
3、具體使用到的測試技術

測試設計與開發:

編寫測試指令碼來執行驗證具體的測試場景

測試執行與管理,資料收集:

1、在指令碼編寫的基礎上執行以及驗證測試場景
2、我們在測試的過程中需要收集資料(效能計數器)
    A、伺服器系統資源:CPU和Memory
    B、DB的資源:IOPS,連線數
    C、服務資源:響應時間(最大,最小,平均,中位數(50%),90%,95%,99%),吞吐量,併發數
3、資料收集的思路:把這些資料寫到InfluxDB(時序資料庫),最後展示在Grafana的平臺上

測試分析:

1、結合收集到的資料分析是否和最初制定的效能測試目標吻合,如果達到了目標,輸出效能測試的報告
2、如果沒有達到目標,那麼開發繼續調整,優化,測試繼續測試
  場景:針對一碼通的系統,需要做併發的測試,目標資料是每秒併發15萬,那麼需要測:
1、5萬         2、10萬 3、15萬 4、20萬 5、25萬  

2 效能測試的方法

2.1驗收負載測試

   在QA的環境模擬生產執行的業務壓力和使用場景組合,測試系統的效能是否滿足生產環境的效能訴求。

環境:

1、測試環境(QA)

2、預釋出環境

3、生產環境(線上)

 

問題: 如果測試好了 ,每次釋出到生產環境都有問題,怎麼辦?

那麼就需要增加預釋出環境,在預釋出環境進行測試,預釋出環境就是為了規避這種問題,預釋出環境和生產環境是一樣的,只是資料庫不同。

 

2.2負載測試

    在被測系統上持續不斷的增加壓力,直到效能指標(響應時間等)超過預定指標或者某種資源(CPU&記憶體)使用已達到飽和狀態。核心是找到系統的處理極限,為系統調優提供資料,從而達到了解系統性能的容量。

 

2.3壓力測試

   該方法是指系統在一定飽和狀態下(負載測試後系統就處於飽和狀態),具體的如CPU,記憶體等飽和使用的情況下,系統能夠處理的會話能力 以及系統是否會出現錯誤(比如TimeOut(超時),OOM(記憶體洩漏),OverStackExpection(堆疊異常))。
壓力測試的特點:
•檢查系統在處於壓力情況下時 應用的效能表現
•等價於負載測試,使系統的資源處於一個瓶頸的狀態(建議CPU和記憶體在75%以上)
•這種方式一般用於測試系統的穩定性

TimeOut: 超時

OOM(Java.lang.Out Of Memory):記憶體洩露

OverStackExpection: 堆疊溢位

系統的穩定性:

被測系統在系統資源飽和的狀態下,依然能夠很好的處理系統的業務邏輯。比如嘀嘀打車在系統資源飽和的狀態下,依然能夠正常的接單。

 

2.4配置測試

 被測環境軟硬體環境引數的調整,達到最優的分配原則。

 

2.5併發測試

   模擬使用者的併發訪問,測試多使用者併發訪問同一個應用時是否存在死鎖或者其他的問題,併發測試的特點是:
• 發現系統中可能隱藏的併發訪問的問題
• 關注系統可能存在的併發問題,如記憶體洩露,執行緒鎖,資源爭用情況
• 使用的測試工具如profiler等

2.6可靠性測試

    給系統載入一定的業務壓力,讓應用持續執行一段時間,測試系統在這種條件下是否能穩定執行。

 

2.7被測物件

被測物件往往是一個服務,服務一般都會提供介面,那麼我們直接訪問這個介面可以來測試這個服務。

   

3 效能測試相關問題(面試題)

1、怎麼區分負載測試與壓力測試?

 答:負載測試 通過在被測系統上持續不斷的增加壓力,直到效能指標(響應時間等)超過預定指標或者某種資源(CPU&記憶體)使用已達到飽和狀態,找出系統能夠達到的最大負載量的測試。

壓力測試是指系統在一定飽和狀態下(負載測試後系統就處於飽和狀態),也可以說是在高負載的狀態下,如CPU,記憶體等飽和使用的情況下,系統能夠處理的會話能力 以及系統是否會出現錯誤(比如TimeOut(超時),OOM(記憶體洩漏),OverStackExpection(堆疊異常))。

也就是說負載測試是不斷的對系統增加壓力,從而對系統的最大負載量進行的測試。而壓力測試 是在強負載的基礎上 對系統處理能力的測試,並且檢查系統是否會出現超時、記憶體洩漏等錯誤。

2、怎麼理解系統穩定性測試

 答:壓力測試的方式可以反應出系統的穩定性,被測系統在系統資源飽和的狀態下,檢查應用的效能表現,是否依然能夠很好的處理系統的業務邏輯,用來保證系統的穩定執行。比如嘀嘀打車在系統資源飽和的狀態下,依然能夠正常的接單。

3、如果做效能測試過程中,開發要求增加伺服器,此時你會?

答: 在效能測試的過程中,測試環境的資源配置與生產環境的資源必須是一致的。不能同意開發的方案,或者叫上相關的人,對生成環境也增加伺服器才行。

4、做效能測試需要準備哪些工作,為什麼?

答:主要是測試前期的準備工作和測試技術的引入:

前期準備:

1、梳理清楚效能測試的目標(參考之前的歷史資料,效能的目標由測試主導梳理出來,但是是和大家一起溝通決定下來)
2、在目標清楚的基礎上,梳理出測試場景,和準備測試資料
3、準備資源(人力和機器資源)

測試工具技術引入:

1、LoadRunner  HP公司研發的工具,主要在工業級的效能測試中具備非常大的優勢,它是收費的。
2、JMeter Apache基金會頂級專案,是Java語言100%開發的,它是開源的,在頭部網際網路公司基本都進行二次開發,應用也是非常廣泛的 https://jmeter.apache.org/
3、Locust 是Python程式碼級別的效能測試工具,它是基於協程(微小的執行緒)https://locust.io/

5、效能測試中測試環境和生產環境的配置必須一樣嘛?為什麼?

答:進行效能測試時,不同的環境配置測試得到的效能指標可能會有非常大的差別。如果配置不一樣就不具備參考價值。

6、618或雙11的之前,阿里這邊會給出今年的流量比往年的流量是多少量級。面試過程中:效能測試你測什麼?關注的點是什麼?

答:測程式的響應時間 ,系統的吞吐量,以及併發使用者數,和tps,qps,以及DB

IOPS,和伺服器的系統資源(CPU和記憶體)

通過一定的工具或者程式碼的方式,來驗證被測試的程式是否滿足效能測試的目標,以及驗證程式是否會出現OOM,系統崩潰,系統無響應等情況。

 

 

4 工具:jmeter

https://jmeter.apache.org/download_jmeter.cgi(下載二進位制 Binaries)

1.把jmeter的bin目錄 搭建到PATH環境變數

 2.在cmd 中輸入 jmeter -v 出現以下畫面,這時就配置好了:

 3.在控制檯輸入jmeter就能開啟jmeter工具了,開啟後控制檯不能退出