【JMeter】(2)---HTTP壓測


JMeter---HTTP壓測

 

一、創建線程組

        右擊-->添加-->Threads(Users)-->線程組

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

          名稱: 就是給你這個線程組起名字。

       線程數:指壓力測試時候模擬幾個用戶測試接口。

   Ramp-Up:這里指幾秒運行完上面的模擬用戶數。

    循環次數:指循環幾次線程數。

總的理解下:上面的意思是2秒內模擬5個用戶請求API,循環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;
    }

 

三、查看結果樹

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

    運行JMter查看結果:

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

 

四、響應斷言

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

 增加斷言: 在線程組上右擊--> 添加--> 斷言 --> 響應斷言

apply to(應用范圍):

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

常用響應字段:

        響應文本:即響應的數據,比如json等文本

        響應代碼:http的響應狀態碼,比如200,302,404這些

        響應信息:http響應代碼對應的響應信息,例如:OK, Found

        Response Header: 響應頭

模式匹配規則:

       包括:包含在里面就成功

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

 再次運行JMeter,查看結果:

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

 

五、聚合報告

     線程組右擊-->添加->監聽器->聚合報告(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: 每秒接收數據量

 

六、自定義變量 

      為什么使用:很多變量在全局中都有使用,或者測試數據更改,可以在一處定義,四處使用比如服務器地址你如果每一個里面都手動輸入127.0.0.1,那萬一那天服務器地址變了,總不能在一個一個改服務器地址

吧,那么這里我們可以寫在全局配置文件中。

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

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

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

 

七、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控制台)

 

 

想太多,做太少,中間的落差就是煩惱。想沒有煩惱,要么別想,要么多做。少校【20】 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM