【性能測試】JMeter性能測試

一、Jmeter介紹

官網:Jmeter

Apache JMeter是Apache組織開發的基於Java的開源壓力測試工具。用於對軟件做壓力測試。

Apache JMeter的功能包括:

  • 能夠加載和性能測試許多不同的應用程序/服務器/協議類型:
    1、網絡-HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET等)
    2、SOAP / REST Web服務
    3、FTP
    4、通過JDBC的數據庫
    5、LDAP
    6、通過JMS的面向消息的中間件(MOM)郵件-SMTP(S),POP3(S)和IMAP(S)
    7、本機命令或Shell腳本
    8、TCP協議
    9、Java對象
  • 功能齊全的Test IDE,可進行快速的Test Plan 記錄(來自瀏覽器或本機應用程序),構建和調試。
  • CLI模式(命令行模式(以前​​稱爲Non GUI)/無頭模式)可從任何Java兼容的操作系統(Linux,Windows,Mac OSX等)加載測試
  • 完整且隨時可以呈現的動態HTML報告
  • 通過從大多數流行的響應格式,HTML,JSON, XML或任何文本格式中提取數據的能力,輕鬆實現關聯
  • 完全的可移植性和100%Java純度。
  • 完整的多線程框架允許通過多個線程進行併發採樣,並通過單獨的線程組同時對不同的函數進行採樣。
  • 緩存和脫機分析/重放測試結果。
  • 高度可擴展的核心:
    1、可插拔採樣器允許無限的測試功能。
    2、可腳本化的採樣器(與Groovy和BeanShell 等JSR223兼容的語言)
    3、可以通過可插入計時器選擇幾個負載統計信息。
    4、數據分析和可視化插件可實現出色的可擴展性和個性化。
    5、函數可用於爲測試提供動態輸入或提供數據處理。
    6、通過針對Maven,Gradle和Jenkins的第三方開源庫輕鬆進行持續集成。

二、準備工作-安裝

2.1、依賴jdk,jdk安裝

JMeter與Java 8或更高版本兼容。

  • 下載

下載方式一官網下載地址.

嫌註冊下載麻煩的可以使用方式二獲取
在這裏插入圖片描述
根據自己的使用環境,下載對應的jdk:
在這裏插入圖片描述
下載方式二

鏈接:https://pan.baidu.com/s/1cOVLkxLH5_cHrigg3AxoBQ
提取碼:kgi9
在這裏插入圖片描述

  • 安裝下載的JDK
    在這裏插入圖片描述
    在這裏插入圖片描述

在這裏插入圖片描述

  • 配置系統環境變量
    在這裏插入圖片描述

新建變量名:JAVA_HOME ,變量值爲 jdk 的安裝路徑。
在這裏插入圖片描述

新建變量名:CLASSPATH ,變量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
在這裏插入圖片描述
找到Path變量,雙擊編輯 Path變量
在值得最後增加;%JAVA_HOME%\bin
在這裏插入圖片描述

驗證是否安裝配置正確
打開cmd,輸入java -version
在這裏插入圖片描述

2.2、JMeter安裝

鏈接: 官網下載地址.
在這裏插入圖片描述
下載完成後解壓zip包
在這裏插入圖片描述
進入apache-jmeter-5.2.1\bin,雙擊jmeter.bat
在這裏插入圖片描述
在這裏插入圖片描述

三、JMeter中常用功能釋義

JMeter裏面的元件很多,邏輯控制器,配置元件,定時器,Sampler,監聽器等等,先給出一個實例,慢慢了解元件的使用方法。測試一個網站,我們至少需要:用戶,發送請求,查看結果這三個過程。

3.1、測試計劃

本節描述測試計劃的不同部分。

最少的測試將包括測試計劃,線程組和一個或多個採樣器。

測試計劃對象具有一個稱爲「 功能測試 」 的複選框。如果選擇該選項,它將使JMeter記錄每個樣本從服務器返回的數據。如果您在測試偵聽器中選擇了文件,則此數據將被寫入文件。如果要進行少量運行以確保正確配置JMeter並確保服務器返回預期結果,這將很有用。結果是文件將快速增長,JMeter的性能將受到影響。如果要進行壓力測試,則應禁用此選項(默認情況下處於禁用狀態)。

如果您沒有將數據記錄到文件中,則此選項沒有區別。

您還可以使用偵聽器上的「 配置」按鈕來確定要保存的字段。

3.2、線程組

線程組元素是任何測試計劃的起點。所有控制器和採樣器必須在線程組下。其他元素(例如,偵聽器)可以直接放在測試計劃下,在這種情況下,它們將應用於所有線程組。顧名思義,線程組元素控制JMeter將用於執行測試的線程數。線程組的控件使您可以:

設置線程數
設置加速時間
設置執行測試的次數
每個線程將完整地執行測試計劃,並且完全獨立於其他測試線程。多個線程用於模擬與服務器應用程序的併發連接。

加速期告訴JMeter將「加速」到所選線程的總數需要多長時間。如果使用了10個線程,並且啓動週期爲100秒,那麼JMeter將花費100秒來啓動和運行所有10個線程。每個線程將在上一個線程開始後10(100/10)秒開始。如果有30個線程,啓動週期爲120秒,則每個連續線程將延遲4秒。

升級需要足夠長的時間,以避免在測試開始時工作量過大,還應足夠短,以使最後一個線程在第一個線程完成之前開始運行(除非有人希望這樣做)。

從「 Ramp-up =線程數」開始,然後根據需要向上或向下調整。

默認情況下,線程組配置爲在其元素之間循環一次。

線程組還提供了一個調度程序。單擊「線程組」面板底部的複選框以啓用/禁用其他字段,您可以在其中輸入測試持續時間,啓動延遲,運行的開始和結束時間。您可以配置持續時間(秒)和啓動延遲(秒)來控制每個線程組的持續時間以及啓動後的秒數。當測試開始時,JMeter將在啓動線程組的線程之前等待啓動延遲(秒),然後運行配置的持續時間(秒)。請注意,這兩個選項會覆蓋「 開始時間」和「 結束時間」。

另外,您也可以使用其他兩個字段Start time和End time(儘管不建議這樣做,因爲它不太靈活)。測試開始時,如有必要,JMeter將等待直到達到啓動時間。在每個週期的末尾,JMeter會檢查是否已達到結束時間,如果已結束,則運行將停止,否則,將允許測試繼續進行直到達到迭代限制。

四、如何使用JMeter

4.1、切換中英文模式

在這裏插入圖片描述

4.2、添加‘測試計劃’

具體操作:添加測試計劃,並且可以自定義計劃名稱
在這裏插入圖片描述

4.2.1、在‘測試計劃’中添加‘線程組’

在這裏插入圖片描述
比如:這裏我設置10個線程,一直循環發請求
在這裏插入圖片描述

4.2.2、在‘測試計劃’中添加‘HTTP請求默認值’

在這裏插入圖片描述
一般會添下面的一些內容,路徑填寫請求ur中l除了ip+port的後面的部分

在這裏插入圖片描述
在這裏插入圖片描述

4.2.3、在‘測試計劃’中添加‘查看結果樹’

發送請求的響應結果,會在這裏顯示
在這裏插入圖片描述

在這裏插入圖片描述

4.2.4、在‘測試計劃’中添加‘圖形結果’

在這裏插入圖片描述

4.2.5、在‘測試計劃’中添加‘聚合報告’

在這裏插入圖片描述

在這裏插入圖片描述

4.3、執行

你還可以根據自己的需要添加別的功能進來。添加設置完後,執行
在這裏插入圖片描述