效能測試的流程及常用工具介紹

宜信技術學院發表於2019-09-12

一、效能測試

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

1.1 類別

效能測試包括負載測試、壓力測試、基準測試等。

1.1.1 負載測試

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

1.1.2 壓力測試

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

1.1.3 基準測試

二、效能測試目的

驗證軟體系統是否能夠達到使用者提出的效能指標,同時發現軟體系統中存在的效能瓶頸,對程式碼進行最佳化,最後起到最佳化系統的目的。

  • 系統調優

  • 識別系統中的弱點

  • 評估系統的能力

  • 驗證系統的穩定性、可靠性

三、效能測試流程

制定效能測試目標à選擇效能測試工具à設計效能測試à執行效能測試指令碼à監控分析系統à效能調優

3.1 目標

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

3.2 工具

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

3.3 設計

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

3.4 執行

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

3.5 監控

監控各個節點的執行情況。

3.6 分析

對資料進行分析,需要眾多人員共同協作,罩住資料背後的問題,確定效能瓶頸。

3.7 調優

確定以後,進行軟硬體調優,然後重複之前的步驟,找到最合適的最佳化方案。

3.8 效能指標

3.8.1 響應時間

  • 針對頁面操作,使用者感官滿意響應時間<2s,可以接受響應時間2~5s,如果響應時間>5s使用者將無法接受。

  • 針對內部呼叫的介面響應時間需要更快,具體與介面種類相關。

3.8.2 吞吐量

  • 一般結合業務需求而定

3.8.3 伺服器資源佔用

  • CPU佔用率

  • 記憶體使用率

  • Cache命中率

四、LR篇

HPLoadRunner 是一種預測系統行為和效能的負載測試工具。透過以模擬上千萬使用者實施併發負載及實時效能監測的方式來確認和查詢問題。

4.1 輕鬆建立虛擬使用者

使用LoadRunner 的Virtual User Generator,您能很簡便地創立起系統負載。該引擎能夠生成虛擬使用者,以虛擬使用者的方式模擬真實使用者的業務操作行為。

4.2 建立真實負載

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

4.3 錄製指令碼

4.3.1 引數化

  • 引數化可以讓指令碼更好的適應環境變化,提高指令碼適應能力。

  • 場景執行時,每個使用者使用不同引數,提高真實性。

4.3.2 關聯與session

  • 對於指令碼,很多時候,我們處理資料的時候,是需要對服務端返回的資料進行解析,而服務端返回的資料如果每次都是變化的話,每次我們都是需要動態獲取,這個時候就需要關聯。簡單來說,就是處理服務端返回的動態資料。

4.3.3 建立集合點

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

4.4 執行監控

在啟動效能測試之後,系統會按照設定的場景產生壓力。在執行過程中,需要觀察指令碼執行的情況,被測試系統的效能指標情況。LR監控來檢視這些資訊。

4.5 分析報表

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

五、JmETER篇

5.1 jmeter簡介

Apache jmeter 是一個100%的純java桌面應用,用於壓力測試和效能測量。它最初被設計用於Web應用測試但後來擴充套件到其他測試領域。Apache jmeter 可以用於對靜態的和動態的資源(檔案,Servlet,Perl指令碼,java 物件,資料庫和查詢,FTP伺服器等等)的效能進行測試。它可以用於對伺服器,網路或物件模擬繁重的負載來測試它們的強度或分析不同壓力型別下的整體效能。

  • 優點:開源,輕量級,免安裝,跨平臺。可支援二次開發和擴充。

  • 缺點:效能整體流程缺失,報告展示不夠友好(逐漸被外掛彌補)。

5.2 jmeter進行效能測試原理

jmeter指令碼執行原理:jmeter核心程式碼封裝多種頁面請求型別和多種API請求型別,提供GUI頁面來填充引數,生成可執行的xml指令碼檔案,jmeter能對指令碼檔案進行解析,並呼叫相應協議。這種方式方便指令碼的編寫,易上手,對程式碼要求較低,只需要掌握相應請求協議相關引數即可,且方便除錯。插拔式的取樣器支援無限制擴充測試能力,對於不支援的新協議,可以進行二次開發進行擴充套件。

jmeter效能執行原理:Jmeter效能原理與loadRunner類似。採用多執行緒來模擬多使用者,透過對執行緒的開啟執行的控制來達到實際使用者增長的複雜需求。配置(可擴充套件)多種計時器,定時器。來實現使用者集中某時間刻訪問,即集合點概念,或著採取等待時間定時器模擬使用者操作時間等待。實現更貼近於實際訪問情況的效能測試方式,使效能結果資料更真實。

jmeter資料採集原理:jmeter提供對執行緒的監聽,能將執行結果進行處理,如傳遞給GUI進行資料展示,和曲線生成,記錄生成日誌檔案可以供非gui方式執行,提供執行完成後的效能資料分析。可以實時傳送給時序資料庫,提供監控使用,可以動態監控檢視。

5.3 jmeter效能測試步驟(前提:選型使用jmeter作為測試工具)

效能需求分析確定:先確定此次效能測試目標,需求,收集效能需求引數,確定效能測試的測試環境情況與透過與否的判斷條件。確定測試各種場景。

指令碼分析編寫並除錯:根據前期確定的各種場景進行指令碼編寫,設定請求,定時器模擬集合點,等待時間,設定為單執行緒執行指令碼,測試指令碼是否按預期執行,除錯使指令碼能夠按預期執行。

搭建好測試環境:根據需求搭建符合要求的測試環境,提前做好能夠監控伺服器執行狀況的方式(cpu,記憶體,網路,DB等),確保測試環境被測系統,執行引數配置正確,執行無誤。

執行效能測試,執行效能指令碼:確定傳送請求的使用者數,執行測試的壓力機是否能夠支援傳送這些併發數(根據壓力機cpu與記憶體確定)如果達不到可以使用分散式壓力機進行壓測,確定測試機與測試環境網路互通且網路足夠支撐壓力測試執行。確定完成後即可根據需求確定指令碼執行引數,使用NO-GUI方式進行效能指令碼執行。

對效能測試資料進行分析:執行完成後收集效能測試資料,對測試資料進行分析,可以匯入到jmeter內監聽器進行資料處理,或著採用其他處理方式,根據資料來驗證需求是否滿足,確認此次效能測試是否透過。

5.4 基於jmeter效能測試平臺

思路:統一管理jmeter的版本,效能需求維護,效能指令碼與結果資料的統一管理,增加伺服器的執行情況監視,從需求制定到結果分析在測試平臺一站解決,簡化了效能測試工作,將效能測試變成可視可控可管理狀態。

六、總結

6.1 效能測試是什麼?

效能測試是透過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。負載測試與壓力測試都是效能測試。負載測試主要是透過各種工作負載下系統的效能。隨著負載的變化,來確定系統的效能變化。壓力測試主要是確定的系統所能承受的極限。網際網路金融客戶群體相當龐大,所以對於我們來說系統的效能尤為重要。

6.2 效能測試做什麼?

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

6.3 效能測試做怎麼做?

我們系統的效能測試利用市面上測試工具進行效能測試。這種測試方法可以捕獲部分問題,但很難模擬業務場景組合。而且測試工具五花八門,不利於蒐集測試效能結果。我們現在進行的效能測試開發,利用統一的效能測試工具Jmeter做為核心。利用influxDB資料庫做資料收集,Grafana做效能資料展示平臺。搭建完整的效能測試平臺,開放統一的效能測試通道,建立通一的效能指標收集平臺。平臺根據我們自己的業務要求建立效能測試計劃,推出不同的業務模板。透過平臺介面可進行合理的效能測試。我們可根據不同業務展示不同的效能圖形。有利於測試人員及時定位問題。

作者:閆亞威

來源:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2656868/,如需轉載,請註明出處,否則將追究法律責任。

相關文章