【工具】jmeter使用教程

一、概述

      JMeter是Apache下一款在國外非常流行和受歡迎的開源性能測試工具,JMeter可用於模擬大量負載來測試一臺服務器,網絡或者對象的健壯性或者分析不同負載下的整體性能。

1、壓測不同的協議和應用

    1) Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)

    2) SOAP / REST Webservices

    3) FTP

    4) Database via JDBC

    5) LDAP 輕量目錄訪問協議

    6) Message-oriented middleware (MOM) via JMS

    7) Mail - SMTP(S), POP3(S) and IMAP(S)

    8) TCP等等

2、使用場景

    1)功能測試

    2)壓力測試

    3)分佈式壓力測試

3、優點

    1)純java開發

    2)上手容易,高性能

    3)提供測試數據分析

    4)各種報表數據圖形展示

4、本地快速安裝Jmeter4.x

   1)需要安裝JDK8或者JDK9,JDK10

   2)快速下載

    windows: http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip

    mac或者linux:http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.tgz

   3)、文檔地址:http://jmeter.apache.org/usermanual/get-started.html

 

二、Jmeter目錄文件講解

1、目錄

 bin:核心可執行文件,包含配置

    •       jmeter.bat: windows啓動文件:
    •       jmeter: mac或者linux啓動文件:
    •       jmeter-server:mac或者Liunx分佈式壓測使用的啓動文件
    •       jmeter-server.bat:mac或者Liunx分佈式壓測使用的啓動文件
    •       jmeter.properties: 核心配置文件

extras:插件拓展的包

lib:核心的依賴包

ext:核心包

junit:單元測試包

2、Jmeter語言切換

Jmeter默認是英文版本的,你想改成中文版本可以在控制檯:menu -> options -> choose language

當然如果你閒每次都手動修改語言麻煩,那麼可以通過修改配置文件,直接設置成中文,設置方式:bin目錄 -> jmeter.properties 默認 #language=en改爲 language=zh_CN

 

四、壓測HTTP

1. 創建線程組右擊-->添加-->Threads(Users)-->線程組

下面對比較重要的幾個參數,講解下:

    •           名稱: 就是給你這個線程組起名字。
    •           線程數:指壓力測試時候模擬幾個用戶測試接口。
    •          Ramp-Up:這裏指幾秒運行完上面的模擬用戶數。
    •          循環次數:指循環幾次線程數。

總的理解下:上面的意思是2秒內模擬5個用戶請求API,循環2次。

 

  2、添加HTTP      在線程組上右擊-->添加-->Sampler-->HTTP請求

在java代碼中添加API接口 

   @RequestMapping(value = "users", method = RequestMethod.GET)  
    public @ResponseBody Object users() {
        List<String> userList = new ArrayList<>();
        userList.add("張三");
        userList.add("李四");
        userList.add("王五");
        System.out.println("獲取用戶接口......");
        return userList;
    } 

 

  3、查看結果樹,在線程組上右擊-->添加-->監聽器-->察看結果樹

    運行JMter查看結果:

    通過測試可以發現,已經向users接口請求10次,10次都成功,也都有返回數據。

 

4、響應斷言

     響應斷言: 斷言用於檢查測試中得到的相應數據等是否符合預期,斷言一般用來設置檢查點,用以保證性能測試過程中的數據交互是否與預期一致。 增加斷言: 在線程組上右擊--> 添加--> 斷言 --> 響應斷言

apply to(應用範圍):

     Main sample only: 僅當前父取樣器 進行斷言,一般一個請求,如果發一個請求會觸發多個,則就有sub sample(比較少用)

常用響應字段:

      •         響應文本:即響應的數據,比如json等文本
      •         響應代碼:http的響應狀態碼,比如200,302,404這些
      •         響應信息:http響應代碼對應的響應信息,例如:OK, Found
      •         Response Header: 響應頭

模式匹配規則:

       包括:包含在裏面就成功

    equals:完全匹配,區分大小寫

 再次運行JMeter,查看結果:

發現http請求報錯,因爲返回數據不包含斷言中所設定的數據。(一般調試階段可以設置斷言,但真實壓力測試情況下建議不要開啓斷言和查看結果樹,因爲會因爲性能問題,使測試結果不十分準確)

 

5、聚合報告,    線程組右擊-->添加->監聽器->聚合報告(Aggregate Report)

 

  • lable: sampler的名稱
  • Samples: 一共發出去多少請求,例如5個用戶,循環2次,則是 10
  • Average: 平均響應時間
  • Median: 中位數,也就是 50% 用戶的響應時間
  • 90% Line : 90% 用戶的響應不會超過該時間 (90%的樣本不超過這個時間。 剩下的樣本至少與此一樣長)
  • 95% Line : 95% 用戶的響應不會超過該時間
  • 99% Line : 99% 用戶的響應不會超過該時間
  • min : 最小響應時間
  • max : 最大響應時間
  • Error%:錯誤的請求的數量/請求的總數
  • Throughput: 吞吐量——默認情況下表示每秒完成的請求數(Request per Second) 可類比爲qps
  • KB/Sec: 每秒接收數據量

 

6、自定義變量 

          爲什麼使用:很多變量在全局中都有使用,或者測試數據更改,可以在一處定義,四處使用比如服務器地址你如果每一個裏面都手動輸入127.0.0.1,那萬一那天服務器地址變了,總不能在一                    個一個改服務器地址吧,那麼這裏我們可以寫在全局配置文件中。

                    線程組->add -> Config Element(配置原件)-> User Definde Variable(用戶定義的變量)

上面配置了兩個全局變量:

引用方式${XXX},在接口中變量中使用:

 

7、CSV可變參數壓測

     作用:你在API接口傳入參數的時候,不可能100次請求都傳一樣的參數,爲了更真是的模擬用戶,所傳的參數當然也是隨機的,這樣才更真實。

     線程組右擊-->add -> Config Element(配置原件)--> CSV data set config (CSV數據文件設置)

比較關鍵的參數:

       文件名:就是你引用的文件地址(因爲大量的數據都會寫在外部文件中)

    變量名稱:如果有多個用逗號隔開

        分隔符:csv默認用逗號,如果是txt文件這個需要設置符號

 1、user.csv文件

2、HTTP請求

3、API接口

    @RequestMapping(value = "login", method = RequestMethod.POST)  
    public @ResponseBody Object login(String name, String pwd) {
        
         List<String> userList = new ArrayList<>();
            userList.add(name);
            userList.add(pwd);
            userList.add(name.length()+"");
            //輸出客戶端傳來的值
            System.out.println("name:"+name+"----pwd:"+pwd);
            return userList;
    }

  

 

 測試運行(看java控制檯)

 

 

五、壓測MySql

  1、添加MySQL驅動jar包

         在測試計劃(Test Plan)頁面添加jar包

 

  2、添加MySQL連接配置

      添加線程組右擊-->添加(add)-->配置元件(config element)-->JDBC connection configuration

    核心配置

  •      variable name for created pool(已創建池的變量名稱)
  •      Max Number of connections : 最大連接數
  •      MAX wait :最大等待時間
  •      Auto Commit: 是否自動提交事務
  •      DataBase URL : 數據庫連接地址 jdbc:mysql://127.0.0.1:3306/blog
  •      JDBC Driver Class : 數據庫驅動,選擇不同數據庫對應的驅動
  •      username:數據庫用戶名
  •      password:數據庫密碼

 

  3、添加JDBC Request

       首先是添加線程組,然後右擊-->添加-->Samplar-->JDBC Request

參數講解:(注意:上面的sql結尾不要加";")

  •        variable name of pool declared in JDBC connection configuration(注意:這裏要和上面的variable name for created pool裏面一致)
  •       Query Type :查詢類型
  •       parameter values: 參數值
  •       parameter types :參數類型
  •       variable names :sql執行結果變量名
  •       result variable names: 所有結果當做一個對象存儲
  •       query timeouts:  查詢超時時間
  •       handle results :處理結果集

 

   執行不同語句選擇不同的Query Type

   數據庫信息

 

4、運行結果 

 

 說明數據庫壓測

 

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