jmeter性能測試基礎實戰


一、前言

  “紙上得來終覺淺,絕知此事要躬行。”學習了理論知識,要實操起來。本文主要介紹jmeter性能測試基礎實戰。
二、Jmeter 性能測試基礎實戰
  1.測試需求:測試20個用戶訪問 https://www.cnblogs.com/huainanhai/ 在負載達到30 QPS時的平均響應時間。
  QPS: Query Per Second每秒查詢率:是一台查詢服務器每秒能夠處理的查詢次數。在因特網上,作為域名系統服務器的性能經常用每秒查詢率來衡量。
  2.測試步驟:
   第一步:添加線程組
  線程組主要包含三個參數:線程數、准備時長( Ramp-Up Period(in seconds) ).循環次數。
  • 線程數: 虛擬用戶數。一個虛擬用戶占用一一個進程或線程。設置多少虛擬用戶數在這里也就是設置多少個線程數。
  • 准備時長為10 , 那么需要10秒鍾啟動20個線程。也就是每秒鍾啟動2個線程。
  • 循環次數:每個線程發送請求的次數。如果線程數為20,循環次數為5,那么每個線程發送5次請求。總請求數為20*5=100。如果勾選了“永遠”,那么所有線程會一直發送請求,一直到選擇停止運行腳本

  第二步:增加HTTP請求

  一個HTTP請求有着許多的配置參數,下面將詳細介紹:

  ✧名稱: 本屬性用於標識一個取樣器,建議使用一個有意義的名稱。

  ✧注釋:對於測試沒有任何作用,僅用戶記錄用戶可讀的注釋信息。

  ✧服務器名稱或IP : HTTP請求發送的目標服務器名稱或IP地址。

  ✧端口號:目標服務器的端口號,默認值為80。

  ✧Timeouts ( milliseconds) : 設置請求和響應的超時時間

  ✧協議:向目標服務器發送HTTP請求時的協議,可以是http或者是https , 默認值為http。

  ✧方法:發送HTTP請求的方法,可用方法包括GET. POST. HEAD. PUT. OPTIONS. TRACE、DELETE等。

  ✧Content encoding : 內容的編碼方式,默認值為iso8859

  ✧路徑:目標URL路徑(不包括服務器地址和端口)

  ✧自動重定向:如果選中該選項,當發送HTTP請求后得到的響應是302/301時,JMeter自動重定向到新的頁面。

  ✧Use keep Alive :當該選項被選中時, jmeter和目標服務器之間使用Keep-Alive方式(又稱持久連接、連接重用)進行HTTP通信,默認選中。

  ✧Use multipart/form-data for HTTP POST : 當發送HTTP POST請求時,使Use multipart/form-data方法發送,默認不選中。

  ✧同請求一起發送參數(Send Parameters With the Request):在請求中發送URL參數。對於帶參數的URL , jmeter提供了一個簡單的對參數化的方法。用戶可以將URL中所有參數設置在本表中, 表中的每一行是一 個參數值對(對應URL中的名稱1=值1)。

  ✧同請求-一起發送文件:在請求中發送文件,通常HTTP文件上傳行為可以通過這種方式模擬。

  ✧從HTML文件獲取所有有內含的資源:當該選項被選中時, jmeter在發出HTTP請求並獲得

響應的HTML文件內容后,還對該HTML進行分析並獲取HTML中包含的所有資源(圖片、flash等) , 默認不選中,如果用戶只希望獲取頁面中的特定資源,可以在下方的Embedded的URLs must match文本框中填入需要下載的特定資源表達式,這樣,只有能匹配指定正則表達式的URL指向資源會被下載。

  ✧用作監視器 :此取樣器被當成監視器,在Monitor Results Listener中可以直接看到基於該取樣器的圖形化統計信息。默認為不選中。

  ✧Save response as MD5 hash? : 選中該項,在執行時僅記錄服務端響應數據的MD5值,而.不記錄完整的響應數據。在需要進行數據量非常大的測試時,建議選中該項以減少取樣器記錄響應數據的開銷。

  tips:默認時間單位是毫秒;報告輸出文件后綴 .jtl

  第三步:設置QPS限制

  Jmeter提供了一一個非常有用的定時器,稱為Constant Throughput Timer ( 常數吞吐量定時器) ,該定時器可以方便地控制給定的取樣器發送請求的吞吐量。

  Constant Throughput Timer的主要屬性介紹:

  Target throughput ( in samples per minute ) :目標吞吐量。注意這里是每分鍾發送的請求數,實際填的數值為: 60*QPS,其次Calculate Throughput based on : 有5個選項,分別是:

  • This thread only : 控制每個線程的吞吐量,選擇這種模式時,總的吞吐量為設置的target Throughput 乘以該線程的數量。
  • All active threads :設置的target Throughput將分配在每個活躍線程上,每個活躍線程在上一次運行結束后等待合理的時間后再次運行。活躍線程指同一時刻同時運行的線程。
  • All active threads ( shared ) :與All active threads的選項基本相同,唯一 的區別是,每個活躍線程都會在所有活躍線程上一次運行結束后等待合理的時間后再次運行。
  • 一個活躍線程 上,當測試計划中只有一個線程組時 , 該選項和All active threads選項的效果完全相同。
  • All cative threads in current thread grotmy ( shared ) :與All active threads in current thread group基本相同,唯一的區別是,每個活躍線程都會在所有活躍線程的上一次運行結束后等待合理的時間后再次運行。

  30 QPS換算后,Target throughput(in samples per minute:30*60=1800)

   第四步:添加監視器

  腳本的主要部分設置完成后,需要通過某種方式獲得性能測試中的測試結果,在本例中,我們關心的是請求的響應時間。

  Jmeter中使用監聽器元件收集取樣器記錄的數據並以可視化的方式來呈現。Jmeter 有各種不同的監聽器類型, 對於HTTP請求,我們可添加聚合報告,更為直觀的查看測試結果。

  添加聚合報告,右鍵點擊線程組,在彈的菜單(添加--->監聽器--->聚合報告)中選擇聚合報告。

  添加查看結果樹( 添加--->監聽器--->查看結果樹)

  第五步:運行腳本

  第六步:聚合報告分析

  20個用戶訪問https://www.cnblogs.com/huainanhai/ 在負載達到30 QPS時的平均響應時間為1986ms

  下圖是聚合報告的性能指標解釋說明(PS:響應時間單位為ms)

 

 


免責聲明!

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



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