論性能測試

Part 1:性能測試

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

A. 類別

性能測試包括負載測試、壓力測試、基準測試等。數據庫

i. 負載測試服務器

經過測試系統在資源超負荷狀況下的表現,以發現設計上的錯誤或驗證系統的負載能力。網絡

ii. 壓力測試session

也稱爲強度測試、負載測試。壓力測試是模擬實際應用的軟硬件環境及用戶使用過程的系統負荷,長時間或超大負荷地運行測試軟件,來測試被測系統的性能、可靠性、穩定性等多線程

iii. 基準測試併發

Part 2:性能測試目的

驗證軟件系統是否可以達到用戶提出的性能指標,同時發現軟件系統中存在的性能瓶頸,對代碼進行優化,最後起到優化系統的目的分佈式

i. 系統調優工具

ii. 識別系統中的弱點性能

iii. 評估系統的能力

iv. 驗證系統的穩定性、可靠性

Part 3:性能測試流程

制定性能測試目標à選擇性能測試工具à設計性能測試à執行性能測試腳本à監控分析系統à性能調優

A. 目標

例如:知足3000用戶在線、240個用戶同時訪問,訪問響應時間不超過2秒,系統資源使用率不超過30%

B. 工具

可選LR、JMeter、Locust等主流測試工具,這篇文章主要介紹LR和JMeter相關

C. 設計

測試腳本開發、負載生成規則、場景設計及監控方式、測試環境的搭建

D. 執行

根據須要進行基準測試、負載測試、壓力測試等,蒐集結果

E. 監控

監控各個節點的運行狀況

F. 分析

對數據進行分析,須要衆多人員共同協做,罩住數據背後的問題,肯定性能瓶頸

G. 調優

肯定之後,進行軟硬件調優,而後重複以前的步驟,找到最合適的優化方案

H. 性能指標

i. 響應時間

針對頁面操做,用戶感官滿意響應時間<2s,能夠接受響應時間2~5s,若是響應時間>5s用戶將沒法接受。

針對內部調用的接口響應時間須要更快,具體與接口種類相關。

ii. 吞吐量

通常結合業務需求而定

iii. 服務器資源佔用

  • CPU佔用率
  • 內存使用率
  • Cache命中率

Part 4:LR篇

HPLoadRunner 是一種預測系統行爲和性能的負載測試工具。經過以模擬上千萬用戶實施併發負載及實時性能監測的方式來確認和查找問題

A. 輕鬆建立虛擬用戶

i. 使用LoadRunner 的Virtual User Generator,您能很簡便地創立起系統負載。該引擎可以生成虛擬用戶,以虛擬用戶的方式模擬真實用戶的業務操做行爲。

B. 建立真實負載

i. Virtual users 創建起後,您須要設定您的負載方案,業務流程組合和虛擬用戶數量。用LoadRunner 的Controller,您能很快組織起多用戶的測試方案。

C. 錄製腳本

i. 參數化

參數化可讓腳本更好的適應環境變化,提升腳本適應能力

場景運行時,每一個用戶使用不一樣參數,提升真實性

ii. 關聯與session

對於腳本,不少時候,咱們處理數據的時候,是須要對服務端返回的數據進行解析,而服務端返回的數據若是每次都是變化的話,每次咱們都是須要動態獲取,這個時候就須要關聯。簡單來講,就是處理服務端返回的動態數據

iii. 建立集合點

集合點就是爲了讓Vuser集合,而後同時作某個操做,只要在相應的請求前設定有意義的集合點lr_rendezvous便可

D. 執行監控

i. 在啓動性能測試以後,系統會按照設定的場景產生壓力。在執行過程當中,須要觀察腳本執行的狀況,被測試系統的性能指標狀況。LR監控來查看這些信息

E. 分析報表

i. 一次性能測試執行完成,會建立各類性能分析報表,包括cpu相關、吞吐率、併發數等。

Part 5:JmETER篇

A. jmeter簡介

Apache jmeter 是一個100%的純java桌面應用,用於壓力測試和性能測量。它最初被設計用於Web應用測試但後來擴展到其餘測試領域。Apache jmeter 能夠用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它能夠用於對服務器,網絡或對象模擬繁重的負載來測試它們的強度或分析不一樣壓力類型下的總體性能。

優勢:開源,輕量級,免安裝,跨平臺。可支持二次開發和拓展。

缺點:性能總體流程缺失,報告展現不夠友好(逐漸被插件彌補)。

B. jmeter進行性能測試原理

jmeter腳本運行原理:jmeter核心代碼封裝多種頁面請求類型和多種API請求類型,提供GUI頁面來填充參數,生成可運行的xml腳本文件,jmeter能對腳本文件進行解析,並調用相應協議。這種方式方便腳本的編寫,易上手,對代碼要求較低,只須要掌握相應請求協議相關參數便可,且方便調試。插拔式的取樣器支持無限制擴充測試能力,對於不支持的新協議,能夠進行二次開發進行擴展。

jmeter性能運行原理:Jmeter性能原理與loadRunner相似。採用多線程來模擬多用戶,經過對線程的開啓運行的控制來達到實際用戶增加的複雜需求。配置(可擴展)多種計時器,定時器。來實現用戶集中某時間刻訪問,即集合點概念,或着採起等待時間定時器模擬用戶操做時間等待。實現更貼近於實際訪問狀況的性能測試方式,使性能結果數據更真實。

jmeter數據採集原理:jmeter提供對線程的監聽,能將運行結果進行處理,如傳遞給GUI進行數據展現,和曲線生成,記錄生成日誌文件能夠供非gui方式運行,提供運行完成後的性能數據分析。能夠實時發送給時序數據庫,提供監控使用,能夠動態監控查看。

C. jmeter性能測試步驟(前提:選型使用jmeter做爲測試工具)

性能需求分析肯定:先肯定這次性能測試目標,需求,收集性能需求參數,肯定性能測試的測試環境狀況與經過與否的判斷條件。肯定測試各類場景。

腳本分析編寫並調試:根據前期肯定的各類場景進行腳本編寫,設置請求,定時器模擬集合點,等待時間,設置爲單線程運行腳本,測試腳本是否按預期執行,調試使腳本可以按預期執行。

搭建好測試環境:根據需求搭建符合要求的測試環境,提早作好可以監控服務器運行情況的方式(cpu,內存,網絡,DB等),確保測試環境被測系統,運行參數配置正確,運行無誤。

執行性能測試,運行性能腳本:肯定發送請求的用戶數,執行測試的壓力機是否可以支持發送這些併發數(根據壓力機cpu與內存肯定)若是達不到可使用分佈式壓力機進行壓測,肯定測試機與測試環境網絡互通且網絡足夠支撐壓力測試運行。肯定完成後便可根據需求肯定腳本運行參數,使用NO-GUI方式進行性能腳本執行。

對性能測試數據進行分析:運行完成後收集性能測試數據,對測試數據進行分析,能夠導入到jmeter內監聽器進行數據處理,或着採用其餘處理方式,根據數據來驗證需求是否知足,確認這次性能測試是否經過。

D. 基於jmeter性能測試平臺

思路:統一管理jmeter的版本,性能需求維護,性能腳本與結果數據的統一管理,增長服務器的運行狀況監視,從需求制定到結果分析在測試平臺一站解決,簡化了性能測試工做,將性能測試變成可視可控可管理狀態。

Part 6:總結

一、性能測試是什麼?

性能測試是經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。負載測試與壓力測試都是性能測試。負載測試主要是經過各類工做負載下系統的性能。隨着負載的變化,來肯定系統的性能變化。壓力測試主要是肯定的系統所能承受的極限。互聯網金融客戶羣體至關龐大,因此對於咱們來講系統的性能尤其重要。

二、性能測試作什麼?

性能測試是經過使用各類工具,來模擬各類可控與不可控的請求。經過模擬生產運行的業務以及使用場景的組合造成多種性能測試點,測試系統的性能是否可以知足生產性能要求。在特定條件下運行驗證系統承受能力。經過各項性能指標來判斷系統是否達到生產需求,及時對系統作出風險評估。發現問題、解決問題,回饋用戶高質量的體驗。

三、性能測試作怎麼作?

咱們系統的性能測試利用市面上測試工具進行性能測試。這種測試方法能夠捕獲部分問題,但很難模擬業務場景組合。並且測試工具五花八門,不利於蒐集測試性能結果。咱們如今進行的性能測試開發,利用統一的性能測試工具Jmeter作爲核心。利用influxDB數據庫作數據收集,Grafana作性能數據展現平臺。搭建完整的性能測試平臺,開放統一的性能測試通道,創建通一的性能指標收集平臺。平臺根據咱們本身的業務要求創建性能測試計劃,推出不一樣的業務模板。經過平臺接口可進行合理的性能測試。咱們可根據不一樣業務展現不一樣的性能圖形。有利於測試人員及時定位問題。

相關文章
相關標籤/搜索