【Jmeter】常用配置及使用


一、測試計划

    

 


 

、添加線程組

    

    setUp線程組:執行測試計划時,在普通線程組前執行

    tearDown線程組:執行測試計划時,在普通線程組后執行

    線程組:普通線程組,組與組之間獨立運行 

      示例:

        

  

  線程設置

    取樣器錯誤后要執行的動作

      繼續:忽略錯誤,繼續執行

      啟動下一進程循環: 忽略錯誤,線程當前循環終止,執行下一個循環。

      停止線程:當前線程停止執行,不影響其他線程正常執行。

      停止測試:整個測試會在所有當前正在執行的線程執行完畢后停止

      立即停止測試:整個測試會立即停止執行,當前正在執行的取樣器可能會被中斷。

        

 

     線程屬性

      線程數:並發測試,每個線程獨立完成測試計划;常用與模擬對服務器的並發訪問

      Ramp-Up時間:啟動所有線程數 所需要的的時間,上一個線程與下一個線程啟動間隔時間=Ramp-Up時間/未總線程數  [僅在線程數>1時有效]

            (示例:線程數5 Ramp-Up時間50 第二次線程在第一次線程啟動10s后啟動 

      循環次數:全部線程結束后的循環次數

        

    Tips:壓測qps - 線程數設置30,請求10s,再請求20s,再請求30s,分別看下吞吐量

 

 

     調度器配置

      調度配置:循環次數勾選 永遠 時可以通過調度器控制線程執行時間

      持續時間(秒):控制測試執行的持續時間(啟動線程后的執行時間),以秒為單位。(循環次數 優先級高於 持續時間)

      啟動延遲(秒):控制測試在多久后啟動執行(例:30s,則啟動測試計划30s后執行此線程,循環次數永遠時延遲后啟動線程開始計算持續時間),以秒為單位。

        

 


 

、添加參數變量的方法

  說明:調試取樣器:線程組- 右鍵 - 添加 - 取樣器 - 調試取樣器(常用來查看Jmeter運行前后 的參數值是否為預期數據

 

  1、用戶參數:線程組 - 右鍵 - 添加 - 前置處理器 - 用戶參數

      

      運行效果:

      

 

  2、隨機變量:線程組 - 右鍵 - 添加 - 配置元件 - 隨機變量

      

      運行結果:

       

 

 

   3、用戶定義的變量:線程組 - 右鍵 - 添加 - 配置元件 - 用戶定義的變量 

       

 

   4、CSV 數據文件設置:線程組 - 右鍵 - 添加 - 配置元件 - CSV 數據文件設置 (從本地文件(格式:.csv  .txt等)讀取

       

      運行結果:

      

   

  5、BeanShell 設置變量

//設置變量
vars.put("case_id","case_00001");

 

    執行結果

    

 


 

四、連接數據庫

  1、引用jar包

     oracle :引用JDBC驅動jar包;ojdbc14.jar 放到lib/ext下

     mysql :引用mysql驅動jar包; mysql-contentor-java-8.0.18.jar 放到lib/ext下

  2、連接Oracle

  添加 JDBC Connection Configuration(線程組--右鍵--添加--配置元件--JDBC Connection Configuration)並配置    

Database URL:
    oracle:jdbc:oracle:thin:@IP:端口/名稱
    mysql:jdbc:mysql:// 數據庫IP:端口/名稱

JDBC Driver Class:
    Oracle:oracle.jdbc.driver.OracleDriver
    mysql:com.mysql.jdbc.Driver;

 

 

       

  3、添加JDBC Reques(線程組--右鍵--添加--取樣器--JDBC Request)

      

 

       運行結果

      

 


 

 五、http請求

  1、 http請求默認值 

     用於設置其作用范圍內的所有HTTP的默認值,可被設置的內容包括HTTP請求的host、端口(不填寫默認為80)、協議等 

        

        

      • 作用范圍內,添加任一或多個http請求時可以省略web服務器的配置,獲取默認值
      •         
      •  作用范圍內,如果其中http請求 有不一樣的ip或端口時http請求中的配置值優先獲取)
      •  

  2、 HTTP信息頭管理器

      用於定制Sampler發出的HTTP請求的請求頭的內容。不同的瀏覽器發出的HTTP請求具有不同的Agent,訪問某些有防盜鏈的頁面時需要正確的Refer...這些情況下都需要通過HTTP Header Manager來保證發送的HTTP請求是正確的

      

 

 

       幾種常見的信息頭

Accept

    作用: 瀏覽器端可以接受的媒體類型

    例如:  Accept: text/html  代表瀏覽器可以接受服務器回發的類型為 text/html  也就是我們常說的html文檔, 

Accept-Encoding

    作用: 瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支持壓縮,支持什么壓縮方法。例如:Accept-Encoding: zh-CN,zh;q=0.8

Accept-Language

    作用: 瀏覽器申明自己接收的語言。 

Connection

    例如: Connection: keep-alive   當一個網頁打開完成后,客戶端和服務器之間用於傳輸HTTP數據的TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接

    例如:  Connection: close  代表一個Request完成后,客戶端和服務器之間用於傳輸HTTP數據的TCP連接會關閉, 當客戶端再次發送Request,需要重新建立TCP連接。

Host(發送請求時,該報頭域是必需的)

    作用: 請求報頭域主要用於指定被請求資源的Internet主機和端口號,它通常從HTTP URL中提取出來的

    例如: 我們在瀏覽器中輸入:http://www.hzau.edu.cn

    瀏覽器發送的請求消息中,就會包含Host請求報頭域,如下:

Host:www.hzau.edu.cn

    此處使用缺省端口號80,若指定了端口號,則變成:Host:指定端口號

Referer

    當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,
服務器籍此可以獲得一些信息用於處理。比如從我主頁上鏈接到一個朋友那里,
他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。

User-Agent

    作用:告訴HTTP服務器, 客戶端使用的操作系統和瀏覽器的名稱和版本.

    我們上網登陸論壇的時候,往往會看到一些歡迎信息,其中列出了你的操作系統的名稱和版本,
你所使用的瀏覽器的名稱和版本,這往往讓很多人感到很神奇,實際上,
服務器應用程序就是從User-Agent這個請求報頭域中獲取到這些信息User-Agent請求報頭域允許客戶端將它的操作系統、瀏覽器和其它屬性告訴服務器。

cookie

    Cookie是用來存儲一些用戶信息以便讓服務器辨別用戶身份的(大多數需要登錄的網站上面會比較常見),
比如cookie會存儲一些用戶的用戶名和密碼,當用戶登錄后就會在客戶端產生一個cookie來存儲相關信息,
這樣瀏覽器通過讀取cookie的信息去服務器上驗證並通過后會判定你是合法用戶,從而允許查看相應網頁。
當然cookie里面的數據不僅僅是上述范圍,還有很多信息可以存儲是cookie里面,比如sessionid等。

Cache-Control

    用來指定當前的請求/回復中的,是否使用緩存機制。

Content-Type

    請求體的MIME類型 (用於POST和PUT請求中)

Expect

    表示客戶端要求服務器做出特定的行為
View Code

 

 

    3、HTTP Cookie管理器

          用於管理Test Plan運行時的所有Cookie。像Web瀏覽器一樣存儲和發送Cookie。如果您有HTTP請求並且響應包含cookie,則Cookie管理器會自動存儲該cookie,並將其用於將來對該特定網站的所有請求。

       JMeter檢查收到的cookie是否對URL有效,這意味着不存儲跨域cookie。

          如果您有行為錯誤或希望使用跨域cookie,請定義JMeter屬性“ CookieManager.check.cookies = false ”

          如果收到的Cookie可以存儲為JMeter線程變量。要將cookie保存為變量,請定義屬性“ CookieManager.save.cookies = true ”

          cookie名稱在存儲之前以“ COOKIE_ ” 為前綴 要恢復原始行為;(這可以避免意外損壞局部變量),請定義屬性“ CookieManager.name.prefix = ”(一個或多個空格)。eg:引用變量時格式:$ {COOKIE_TEST}

          您可以手動將Cookie添加到Cookie管理器;cookie將由所有JMeter線程共享

          默認情況下,將忽略 具有空值的Cookie 。這可以通過設置JMeter屬性來更改:CookieManager.delete_null_cookies = false。(這也適用於手動定義的cookie - 任何此類cookie將在更新時從顯示中刪除

          cookie名稱必須是唯一的 - 如果第二個cookie使用相同的名稱定義,則它將替換第一個cookie

         1、手動添加cookie到Cookie管理器

          

          運行結果

          

 

 

         2、cookie設置為Jmeter線程變量

          定義屬性“ CookieManager.save.cookies = true ”

          

  

         

    4、固定定時器  

      設定每個線程請求之前的等待時間(固定定時器的延時不會計入當前sampler 的響應時間里,但是會計入事務控制器的時間(相當於模擬用戶的思考時間))

      

 

 

     5、BeanShell 后置處理程序

      編寫代碼時注意每行代碼以分號結尾

FileWriter fstream=new FileWriter("D:\\testdata\\case.txt",true);
BufferedWriter out=new BufferedWriter(fstream);

out.write("打印數據" + vars.get("name_id"));

out.close();
fstream.close();
源碼(保存數據到本地)

 

       

 

 

     6、響應斷言

       對某個請求的結果進行判定

··      

 

 

 


 

六、響應中提取信息

  1、正則表達式提取

正則說明:
    . 表示除“\r\n”之外的任意字符
    * 表示匹配前面的子表達式任意次
    + 表示匹配前面的子表達式1次或多次
    ? 表示匹配前面的子表達式0次或1次
    .*:貪婪匹配原則,即匹配到不能匹配為止
    .*?:非貪婪匹配,即在匹配成功的情況下盡可能少的匹配
說明

 

    

 

 

 

  2、邊界值提取

    左邊界數據盡量唯一,否則會提取到重復數值

 

 

     

 

 

       運行結果

     

 

 

 

  


    

 七、控制器

  1、循環控制器

       控制控制器下內容的循環次數

      

 

      運行結果

      

 

 

 

   2、if控制器

    判斷該控制器下的內容是否執行

       

 

 

       運行結果

      

 

 

  3、簡單控制器 

    沒有邏輯及運行判斷校驗,可當做分組、分類使用

    

 

 

   4、僅一次控制器

    在一個線程多次循環時,僅一次控制器中的內容只會執行1

    

 

 

   5、ForEach控制器

    

    

 

 

   6、事務控制器

    

 

 

 八 監聽器

   1、查看結果樹

    

    查看結果樹保存到文件  https://www.cnblogs.com/phoenixy/p/16481349.html

 

2、聚合報告

 

    樣本:請求的次數,計算公式是線程數*循環次數,如果線程組配置勾選了永遠,那么就是你停止測試時實際發送的請求數
    平均值:響應時間的平均用時,單位是毫秒。比如這里的平均響應時間是38毫秒
    中位數:響應時間的中位數,單位是毫秒。
    90%百分位:90%的響應時間小於該數值,單位是毫秒。這里有90%的響應時間小於22毫秒
    95%百分位:含義和90%類似
    99%百分位:含義和90%類似
    最小值:本輪測試最小響應時間,單位是毫秒。
    最大值:本輪測試最大響應時間,單位是毫秒。
    異常%:本輪測試出現異常的請求比例。
    吞吐量:可以理解為QPS,即是我們測試的接口處理請求的能力。比如這里是平均每秒可以處理2.2次請求
    接收KB/Sec:響應數據的接收速率
    發送KB/Sec:請求數據的發送速率

 

1、Lable:Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這里顯示的就是 Name 屬性的值;

2、#Samples:表示這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那么這里顯示100;【我的是用戶有100,只迭代一次,因此也是100】

3、Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 為單位顯示平均響應時間;

4、Median:中位數,也就是 50% 用戶的響應時間;

5、90% Line ~ 99% Line:90% ~99%用戶的響應時間;

6、Min:最小響應時間;

7、Maximum:最大響應時間;

8、Error%:本次測試中出現的錯誤率,即 錯誤的請求的數量/請求的總數;

9、Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction ;

10、Received KB/src:每秒從服務器端接收到的數據量;

11、Sent KB/src:每秒從客戶端發送的請求的數量。
聚合報告

 

 3、圖形結果

樣本數目:總共發送到服務器的請求數.
最新樣本:代表時間的數字,是服務器響應最后一個請求的時間.
吞吐量:服務器每分鍾處理的請求數.
平均值:總運行時間除以發送到服務器的請求數.
中間值:時間的數字,有一半的服務器響應時間低於該值而另一半高於該值.
偏離:服務器響應時間變化、離散程度測量值的大小,或者,換句話說,就是數據的分布.

 

 

 

 


拓展

查看異常原因

  

 

 連接數據庫遇到的問題

  1、運行提示:Name for DataSoure must not be empty in JDBC Request

      

 

    解決方法:檢查JDBC Connection ConfigurationJDBC Request下的:Variable Name Bound to Pool是否一致

  2、運行提示:Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver' 

 

       

 

 

     解決方法:檢查或導入jar包( jar包只需要導入一次 )

      

      ojdbc14.jar 或 ojdbc6-1.0.jar

 

 

  3、錯誤代碼解釋

"100" : Continue
        "101" : witching Protocols
        "200" : OK
        "201" : Created
        "202" : Accepted
        "203" : Non-Authoritative Information
        "204" : No Content
        "205" : Reset Content
        "206" : Partial Content
        "300" : Multiple Choices
        "301" : Moved Permanently
        "302" : Found
        "303" : See Other
        "304" : Not Modified
        "305" : Use Proxy
        "307" : Temporary Redirect
        HTTP 400 - 請求無效
        HTTP 401.1 - 未授權:登錄失敗
        HTTP 401.2 - 未授權:服務器配置問題導致登錄失敗
        HTTP 401.3 - ACL 禁止訪問資源
        HTTP 401.4 - 未授權:授權被篩選器拒絕
        HTTP 401.5 - 未授權:ISAPI 或 CGI 授權失敗
        HTTP 403 - 禁止訪問
        HTTP 403 - 對 Internet 服務管理器 (HTML) 的訪問僅限於 Localhost
        HTTP 403.1 禁止訪問:禁止可執行訪問
        HTTP 403.2 - 禁止訪問:禁止讀訪問
        HTTP 403.3 - 禁止訪問:禁止寫訪問
        HTTP 403.4 - 禁止訪問:要求 SSL
        HTTP 403.5 - 禁止訪問:要求 SSL 128
        HTTP 403.6 - 禁止訪問:IP 地址被拒絕
        HTTP 403.7 - 禁止訪問:要求客戶證書
        HTTP 403.8 - 禁止訪問:禁止站點訪問
        HTTP 403.9 - 禁止訪問:連接的用戶過多
        HTTP 403.10 - 禁止訪問:配置無效
        HTTP 403.11 - 禁止訪問:密碼更改
        HTTP 403.12 - 禁止訪問:映射器拒絕訪問
        HTTP 403.13 - 禁止訪問:客戶證書已被吊銷
        HTTP 403.15 - 禁止訪問:客戶訪問許可過多
        HTTP 403.16 - 禁止訪問:客戶證書不可信或者無效
        HTTP 403.17 - 禁止訪問:客戶證書已經到期或者尚未生效
        HTTP 404.1 - 無法找到 Web 站點
        HTTP 404 - 無法找到文件
        HTTP 405 - 資源被禁止
        HTTP 406 - 無法接受
        HTTP 407 - 要求代理身份驗證
        HTTP 410 - 永遠不可用
        HTTP 412 - 先決條件失敗
        HTTP 414 - 請求 - URI 太長
        HTTP 500 - 內部服務器錯誤
        HTTP 500.100 - 內部服務器錯誤 - ASP 錯誤
        HTTP 500-11 服務器關閉
        HTTP 500-12 應用程序重新啟動
        HTTP 500-13 - 服務器太忙
        HTTP 500-14 - 應用程序無效
        HTTP 500-15 - 不允許請求 global.asa
        Error 501 - 未實現
        HTTP 502 - 網關錯誤

 

 

 

 


免責聲明!

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



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