JMeter——使用JMeter測試工具對服務器併發執行能力,響應速度等方面進行壓力測試

測試內容

使用JMeter測試工具對服務器併發執行能力,響應速度等方面進行壓力測試。

測試工具以及環境配置

  • 測試工具:JMeter,版本:apache-jmeter-3.1

  • 環境配置:配置JDK環境變量,以及JMeter的環境變量
    1)JDK環境變量配置:
    變量名:JAVA_HOME變量值:C:\Program Files\Java\jdk1.8.0_51 (即jdk安裝的位置)
    變量名:Path 變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    變量名:CLASSPATH 變量值:.;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar
    配置完成之後點擊“確定”,jdk就配置完成。

    2)JMeter環境變量配置:
    變量名:JMETER_HOME 變量值:I:\apache-jmeter-5.0
    變量名:CLASSPATH
    變量值:
    %JMETER_HOME% \lib\ext\ApacheJMeter_core.jar;
    %JMETER_HOME%\lib\jorphan.jar;
    %JMETER_HOME%\lib/logkit-2.0.jar;
    創建完成之後點擊“確定”即可。

  • 測試環境
    1) 服務器
    Windows10 64位操作系統
    處理器:Intel® Core™ i5-4590 CPU @ 3.30GHz 3.30GHz
    內存(RAM):8GB
    應用服務器:apache-tomcat-7.0.88 最大線程200

    2) 客戶端
    Windows10 64位操作系統
    處理器:Intel® Core™ i5-4590 CPU @ 3.30GHz 3.30GHz
    內存(RAM):8GB

    3) 測試軟件
    apache-jmeter-5.0

測試說明

  1. 名詞定義(時間單位ms)
    Sample:本次測試場景共運行多少線程;
    Average:平均響應時間;
    Median:統計意義上的響應時間中值;
    90% line:所有線程中90%的線程響應時間都小於xx的值;
    Min:響應最小時間;
    Max:響應最大時間;
    Error:出錯率;
    Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”來衡量。 時間單位已經被選取爲second,所以,顯示速率至少是1.0,即每秒1個請求;
    Kb/sec - 以Kilobytes/seond來衡量的吞吐量。

入門教程參考 https://blog.csdn.net/zl1zl2zl3/article/details/78194194

測試過程

啓動JMeter,下載安裝包解壓後,進入bin/目錄,點擊箭頭所示文件,雙擊打開,即可進入JMeter界面。
在這裏插入圖片描述
啓動過程圖
在這裏插入圖片描述

  • 單個服務以登錄爲例

    相關設置,登錄請求。
    在這裏插入圖片描述
    在這裏插入圖片描述
    然後根據需求設置併發線程數,查看聚合報告中相關參數結果,比如10個線程併發的聚合報告如下:
    10個線程併發執行的聚合報告

  • 多個服務按比例併發執行

    如果在一個線程組中執行,設置多個服務併發比例爲1:1:1:…想要按比例測試多個服務,則需要創建多個線程組,創建方法同之前創建的線程組,只不過在線程組的線程數選項中設置不同,線程組1,2…的線程數比例即爲所想要的比例。在此之前需要先右鍵測試計劃添加一個HTTP請求默認值(HTTP Request Defaults),設置訪問的服務器IP地址,端口號,協議等。

    示例:八個服務同時啓動,包括用戶登錄,查看個人信息,獲得一張艦船圖片,獲得所有艦船
    照片,修改用戶信息,獲得所有國家,獲取搭載關係,獲取被搭載關係。
    聚合報告如下:
    各10個線程併發執行的聚合報告
    當不需要多個線程組同時存在運行時,可以右鍵關閉(Disable)不需要的線程組。

  • 保持登錄狀態,多個服務併發執行

  1. 在進行多服務按比例併發執行時,需要保持登錄狀態,所以在跨線程組調用變量時,要先將登錄後服務器返回的JSESSIONID設置爲全局變量。

    1) 設置全局變量用到的函數爲__setProperty(),調用全局變量的函數爲__property()。首先打開函數助手,輸入需要的值點擊生成按鈕即可生成對應的腳本代碼。所以可以得到設置全局變量的腳本代碼爲KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(ne…{JSESSIONID},)};調用全局變量的代碼爲 {__property(newjsessionid,)}。
    在這裏插入圖片描述
    2) 右鍵登錄的HTTP請求,新建正則表達式提取器,從服務器返回的響應信息頭中 利用正則表達式JSESSIONID=(.*); Path=/獲取JSESSIONID。
    在這裏插入圖片描述
    3) 在登錄所在的線程組新建BeanShell Sampler,將設置全局變量的腳本代碼寫進去。
    在這裏插入圖片描述
    4) 在需要用到全局變量的HTTP請求所在線程組建立HTTP Cookie管理器,用來傳遞 JSESSIONID,使用方式如下圖。其中域是要填寫服務器的IP地址,表示訪問該IP地址的服務都將使用此緩存。
    在這裏插入圖片描述
    參考博客:
    jmeter如何設置全局變量以及調用方法 https://blog.csdn.net/r455678/article/details/53576182?utm_source=blogxgwz1

    JMeter的慣用函數使用-字符串相關 https://www.cnblogs.com/qmfsun/p/5945310.html

示例:
用戶登錄後,對分類型查詢所有設備,裝備內碼列表和國家列表三個服務進行壓力測試。
各100個線程併發執行


(以上,比較亂,整合了很久之前的報告,在過程中出現的錯誤沒有截圖保存,寫此博客只是想記錄一下,測試也沒有很深入。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章