JMeter3.2入門使用教程


JMeter3.2入門使用教程

背景說明    本文轉載自    https://www.cnblogs.com/NiceTime/p/8565529.html

1.1. 背景簡介

JMeter是Apache軟件基金會下的一個開源項目,純java開發的應用工具,可以作為進行負載和壓力測試的工具來使用。從最開始時被設計成測試應用程序到現在擴展到了可測試其他功能。

JMeter可以測試靜態或動態的資源或是動態的應用程序,並且支持的應用、服務、協議的類型包括有:

1) Web(HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET)、...)

2) SOAP/REST Webservices

3) FTP

4) 通過jdbc的方式操作數據庫

5) LDAP

6) JMS(基於中間件的消息)

7) Mail(SMTP、SMTPS、POP3、POP3S、IMAP、IMAPS)

8) TCP

9) Java Objects

支持基於瀏覽器或本地應用的錄制,及構建和調試腳本。

支持以命令行及圖形界面方式來運行,可運行在Windwos、Linux、Mac OSX操作系統上。

可基於已有jtl數據文件生成html報告文件,或是在壓測完成后生成html報告文件。

支持從html、json、xml、txt的文件中來獲取所需要的關聯數據。

支持以多線程、多線程組的方式進行不同類別的測試。

支持各類組件的擴展及第3放的開源庫擴展:如Maven、Jenkins、Graddle。

  1. 下載安裝

2.1. 下載JDK和JMeter

2.1.1. 下載說明

下載地址:https://archive.apache.org/dist/jmeter/binaries/

2.1.2. 下載JDK

因運行3.2版本的JMeter需要JDK環境,並且需要JDK8+版本,因此還需要下載JDK8的安裝包。Oracle官方網站地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

 

由於安裝包有區分是支持32、64位操作系統,因此,可根據你需要什么操作系統上來運行及位數,來下載對應支持的系統和位數JDK的安裝包。其中:X86表示支持32操作系統,x64表示支持64位操作系統。

Windows操作系統位數查看:點擊開始菜單-右鍵計算機-進入的界面-系統欄

(路徑:控制面板\所有控制面板項\系統)

 

 

Linux操作系統位數查看:

輸入命令:uname -a,在結果中出現x86_64,表明系統為64位的操作系統。

 

 

2.1.3. 下載JMeter

JMeter官方網站地址:http://jmeter.apache.org/

 

 

現在JMeter最新版本為3.2,因此下載3.2版本。如果想在windows上運行,就下載apache-jmeter-3.2.zip包,想在Linux上運行,就下載apache-jmeter-3.2.tgz包。

1) tgz包的下載地址:

http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.2.tgz

 

2) zip包的下載地址:

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

 

 

2.2. 安裝JDK和JMeter

2.2.1. 安裝JDK1.8

2.2.1.1. 安裝

在windows機器上,找到安裝包的exe文件,直接雙擊運行exe,如果需要修改安裝路徑,則在安裝時選擇安裝的路徑,然后按提示默認操作即可完成。

我計算機上安裝的JDK路徑:D:\Program Files\Java

 

 

2.2.1.2. 配置環境變量

修改環境變量,點擊開始按鈕-右鍵計算機-點擊高級系統設置-選擇高級-點擊環境變量-選擇系統變量或某用戶變量,如果已存在某變量就將值放在對應變量后面,以英文;分割,如果不存在某變量,就新增變量及值。變量值的配置參考下方,其中路徑是你安裝JDK時的路徑。

JAVA_HOME=D:\Program Files\Java\jdk1.8.0_131

PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%JMETER_HOME%\bin;

CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

 

 

2.2.1.3. 檢查是否安裝成功

可通過java javac java -version javac -version 個命令來驗證安裝和配置JDK是否成功,如果出現如下結果,則表明安裝和配置JDK成功。

部分命令如圖:

 

 

2.2.2. 安裝JMeter3.2

2.2.2.1. 安裝

JMeter是免安裝的工具,直接解壓后,配置好環境變量就可運行。

2.2.2.2. 配置環境變量

配置環境變量參考配置JDK的操作方式。

JMETER_HOME=D:\jmeter\jmeter3.2

CLASSPATH=%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;

PATH=%JMETER_HOME%\bin;

2.2.2.3. 檢查是否安裝成功

進入JMeter安裝目錄,運行bin目錄下的jmeter.bat腳本,出現一個DOC窗口,及一個JMeter圖形界面窗口,表明安裝和配置JMeter成功,啟動JMeter圖形界面有點慢,請耐心等待一會。我計算機上JMeter的安裝路徑:D:\jmeter\jmeter3.2

 

 

 

DOS界面窗口

 

 

圖形界面窗口

 

 

 

非圖形界面啟動:

jmeter -n -t ..\script\某系統_Ver*.*.*_某功能_yyyy-mm-dd_某人.jmx

-l ..\result\某系統_Ver*.*.*_某功能_yyyy-mm-dd_某人.jtl

-j ..\result\某系統_Ver*.*.*_某功能_yyyy-mm-dd_某人.log

-e -o ..\result\report\某系統_Ver*.*.*_某功能_yyyy-mm-dd_某人

-n 以非圖形界面方式運行jmx腳本

-t 要運行的jmx腳本文件

-j 運行腳本過程中生成的日志記錄文件

-l 運行腳本過程中生成的結果記錄文件 可以為jtl(-l result.jtl)、xml(-l result.xml)格式的文件,同時需要修改jmeter.properties

-e 運行腳本完成后,需要生成html格式的報告文件

-o 存放生成報告文件的路徑,目錄不能在原路徑中存在

如果jmx腳本不在% JEMTER_HOME %\bin目錄下,則運行的jmx文件路徑需為絕對路徑

2.2.2.4. 修改其他配置項

為了提升啟動JMeter的啟動速度,及正確顯示響應結果中的中文數據,則需要修改配置文件中的一些配置項。

修改jmeter.bat文件:set HEAP=-Xms3072m -Xmx3072m,調整堆的最大和最小值,建議為計算機內存的30%左右。

 

修改jmeter.properties文件:

jmeter.gui.action.save.backup_on_save=false

 

jsyntaxtextarea.font.family=宋體

jsyntaxtextarea.font.size=14

sampleresult.default.encoding=UTF-8

 

2.2.2.5. 插件安裝

如果想要使用一些高級的功能操作,則需要下載一些擴展的包。首先需要將擴展管理包(jmeter-plugins-manager-0.16.jar)放到lib\ext目錄下,重啟JMeter后,在選項中可看到Plugins Manager選項,點擊該選項,進入插件安裝、升級界面,選擇所需要的插件安裝完成后,JMeter會自動重啟,之后可在JMeter中使用你現在的擴展組件了。

JMeter插件網站:https://jmeter-plugins.org/downloads/all/

插件包名稱:jmeter-plugins-manager-0.16.jar

 

2.2.2.6. 目錄結構

從官網上下載的jmeter包中,不包含(data、script、result)目錄,需要手動新建這3個目錄。

  1. 界面結構

3.1. 結構簡說

包含1標題欄、2菜單欄、3左側組件欄、4右側上部分、5右側下部分,共5部分。

 

  1. 原理及作用域

4.1. 運行原理

JMeter通過線程組來啟動1個或多個線程,向被測試應用發起請求操作,在測試過程中搜集壓測的數據,可以圖表或文件的方式保存及展示結果數據。

4.2. 作用域簡介

1) 配置元件(影響作用域范圍內的元件),前置處理器(在其作用域范圍內每個取樣器之前執行),后置處理器(在其作用域范圍內每個取樣器之后執行),定時器(影響作用域范圍內的每個取樣器),斷言(在其作用域范圍內每個取樣器的結果執行校驗),監聽器(搜集在其作用域范圍內每個取樣器結果數據並展示在界面)

2) 取樣器不存在作用域

3) 邏輯控制器僅對其子節點的邏輯控制器和取樣器起作用。

4) 除了邏輯控制器和取樣器外的元件,如果是某個取樣器的子節點,則該元件對其父子節點起作用。

5) 除了邏輯控制器和取樣器外的元件,如果父節點不是取樣器,則該元件對其父子節點及后代節點都起作用。

4.3. 執行順序簡介

1) 在同一個作用域范圍內,元件按(配置元件-前置處理器-定時器-取樣器-后置處理器-斷言-監聽器)執行。

2) 前置處理器、后置處理器、斷言等元件僅對取樣器啟作用,如果在其作用域內沒有取樣器,則這些元件不被執行。

3) 同一作用域中存在同一類型的元件,則按元件在測試計划中的順序來執行。

  1. 元件簡介

5.1. 測試計划

5.1.1. 用途

JMeter中各個組件需要放在測試計划中來運行,並且只有1個測試計划,1個測試計划下可以放多個線程組。

圖標:

 

5.2. 測試片段

5.2.1. 用途

主要用於備份開發過程中的腳本,及該項下的組件可被模塊控制器來使用。

 

 

5.3. 工作台

5.3.1. 用途

高級特性的使用,包括監控和錄制壓測時的請求信息,錄制腳本,查看jmeter屬性。

5.3.2. 常用類型介紹

5.3.2.1. 鏡像服務器

HTTP Mirror Server:用於測試時的監控。

5.3.2.2. 代理服務器

HTTP代理服務器:設置好后可錄制請求的URL信息。

5.3.2.3. 屬性顯示

Property Display:顯示jmeter屬性信息。

 

5.4. 線程組

5.4.1. 用途

用於設置怎樣去模擬發起請求的用戶。

5.4.2. 常用類型介紹

5.4.2.1. 普通線程組

圖標:如下圖

原生的線程組有3個,一種只用其中的普通線程組,如果安裝了插件,則可使用其他線程組,線程組的使用可根據需要測試的類型和達到的目的去選擇使用。一般使用普通線程組就可以達到目標。

 

可通過快捷鍵ctrl+t鍵,來啟用和禁用線程組,其他組件也可通過該方式來啟用和禁用。

5.5. 配置元件

5.5.1. 用途

用於設置在請求中使用到的參數化的數據和其他默認值。

5.5.2. 常用類型介紹

5.5.2.1. 自定義變量

 

5.5.2.2. HTTP請求默認值

 

5.5.2.3. HTTP Cookie管理器

 

5.5.2.4. HTTP信息頭管理器

 

 

5.5.2.5. CSV Data Set Config

 

5.6. 邏輯控制器

5.6.1. 用途

用於設置運行腳本的流程和場景。

5.6.2. 常用類型介紹

5.6.2.1. 簡單控制器

用於管理作用域范圍內的各類元件,方便編寫和閱讀。

 

5.6.2.2. While Controller

設置作用域范圍內請求,根據填寫的條件的值,是否繼續循環執行。

Condition:取值分3種。

保持空:迭代執行該控制器下的所有子節點,直到最后一個子節點失敗時停止,如果不是最后一個執行失敗,也會繼續執行。

LAST:迭代執行該控制器下的所有子節點,直到最后一個子節點失敗時停止,並且當控制器的上一個節點失敗,則執行時不會進入該控制器。

填寫表達式:表達式取值等於false字符時,退出循環。比如:varvar,{__javascript(“{var}”==”found”)},{var}”==”found”)},{_P(var)}的結果為false時退出循環。

 

5.6.2.3. 事務控制器

 設置綜合統計作用域范圍內請求的響應時間、吞吐量等信息並匯總。

 

5.6.2.4. 如果(If)控制器

類似編程中的if語句,設置作用域范圍內的請求,根據表達式的值,來判斷是否執行。如果表達式為字符串,則用””包裹起來,選中Evaluate for all children?后,其字節點執行時都會被執行1次。

 

5.6.2.5. 循環控制器

用於設置作用域范圍內的請求執行的次數,或者一直執行。

 

5.6.2.6. ForEach控制器

類似編程語言中的for循環語句的作用,設置作用域范圍內的請求,按照指定的條件去執行。

 

5.7. 定時器

5.7.1. 用途

用於設置控制請求之間時間的長短。

5.7.2. 常用類型介紹

5.7.2.1. 固定定時器

 

5.7.2.2. 同步定時器

Number of Simulated Users to Group by:設置該項中的數字要小於等於線程數,否則一直會線程處於等待狀態。

Timeout in milliseconds:設置為0,當集合的線程達到上面項中的數字后,開始執行請求。設置>0,則超過等待固定的時間后,集合的線程還未達到上面項中的數字后,也會開始執行請求。

 

5.8. 前置處理器

5.8.1. 用途

用於設置在發起請求之前需要進行的操作。

5.8.2. 常用類型介紹

5.8.2.1. Bean Shell PreProcessor

BeanShell是一種免費的java源碼解釋器,支持對象式的腳本語言,也可以嵌入到java源碼中。添加了該處理器后,可直接在里面編寫java代碼,實現你要的功能操作。

 

參考文件:

jmeter中通過beanshell訪問eclipse中導出jar中的java類的方法

benshell使用手冊

5.8.2.2. JSR223 PreProcessor

 

5.9. 取樣器

5.9.1. 用途

用於設置模擬用戶發起URL的請求信息。

5.9.2. 常用類型介紹

5.9.2.1. Debug Sampler

加上該取樣器,可顯示請求過程中各參數的值,用於跟蹤調試請求是否存在問題。

 

5.9.2.2. HTTP請求

 

5.9.2.3. Java請求

 

5.9.2.4. JDBC Request

 

5.10. 后置處理器

5.10.1. 用途

用於設置在響應之后需要進行的操作。

5.10.2. 常用類型介紹

5.10.2.1. Bean Shell PostProcessor

參考BeanShellPreProcessor

5.10.2.2. JSR223 PostProcessor

參考JSR223 PreProcessor

5.10.2.3. JSON Path Extractor

 

5.10.2.4. 正則表達式提取器

 

5.11. 斷言

5.11.1. 用途

用於設置驗證響應結果。

5.11.2. 常用類型介紹

5.11.2.1. 響應斷言

 

5.12. 監聽器

5.12.1. 用途

用於設置收集運行腳本中的結果數據及顯示數據圖形的走勢等。

5.12.2. 常用類型介紹

5.12.3. 察看結果樹

 

5.12.4. 聚合報告

 

6.編寫腳本

如果有開發文檔,參考開發文檔,如果沒有開發文檔,則需要抓取對應請求的URL的相關信息,分為對pc端Web系統上請求的抓取,及對mobile端APP上請求的抓取,及對https請求的抓取。抓取的工具分為:獨立工具Fiddler,及瀏覽器上的開發者工具,如果谷歌的f12開發者工具。

6.1. 使用badbo方式錄制(不推薦

1) 安裝Badboy工具,下載地址:http://www.badboy.com.au/

2) 設置IE代理(連接局->域網設置->高級 localhost或127.0.0.1 端口號:9088,沒有被占用)

3) IE瀏覽器設置

 

4) 打開Badboy工具,點擊錄制按鈕,在內嵌的瀏覽器中訪問要錄制的系統,之后Badboy對你操作系統的步驟進行錄制。

 

5) 錄制好后將文件導出為jmx文件。

 

6.2. 使用代理方式錄制(也不推薦)

1) 設置IE代理(同上)

2) 啟動jmeter並在工作台中:新增1個HTTP代理服務器、在測試計划中:新增1個線程組,端口:要與IE代理中的端口相同,如:9089,分組:選每個組放入一個新的控制器,目標控制器:選擇你建的線程組,目的是將錄制的URL放入該線程組,包含模式、排除模式,在錄制過程中,你希望哪些URL被錄制和不被錄制,排除模式:.*\.js等,其他如圖:

 

3) 點擊啟動按鈕,訪問被測系統,你操作的每一步對應的URL信息都被jmeter給錄制下來了。

 

6.3. Fiddler方式抓取(推薦

 

需要對被抓包的手機進行設置

 

6.4. 開發者工具抓取(推薦

按F12鍵打開開發者工具,選中Preserve log復選框,后再訪問被測系統,獲取對應的URL信息,再將URL信息錄入到jmeter中。

點擊左側的URL,右側出現詳細信息,點擊Response標簽項,可顯示url對應的響應結果,然后在jmeter中錄入對應的URL信息。

 

7.怎么測試接口

7.1. 示例截圖

 

8.分布式測試

 

8.1. 使用默認端口方式

8.1.1. 主控機器配置說明

1) 控制機器(master、controler)

修改配置文件,文件在bin目錄下:jmeter.properties

remote_hosts=ip1:port1,ip2:port2

比如:remote_hosts=192.168.0.1:1099,192.168.0.2:1099

 

控制機器上啟動程序:jemter.bat

8.1.2. 負載機器配置說明

1) 負載機器(salver、agent)

a)默認使用端口:1099 ,ip1的機器,ip2的機器上都要先啟動程序:jemter-server.bat

 

8.2. 使用自定義端口方式

8.2.1. 主控機器配置說明

1) 控制機器(master、controler)

修改配置文件,文件在bin目錄下:jmeter.properties

remote_hosts=ip1:port1,ip2:port2

比如:remote_hosts=192.168.0.1:9901,192.168.0.2:9902

 

控制機器上啟動程序:jemter.bat

 

8.2.2. 負載機器配置說明

1) 負載機器(salver、agent)

a)自定義端口:

修改配置文件,文件在bin目錄下:jmeter.properties

server_port=port2

server.rmi.localport=port2

比如:

server_port=9901

server.rmi.localport=9901

 

b)啟動程序:ip1的機器,ip2的機器上都要先啟動程序:jemter-server.bat

說明:控制機器和負載機器的jmeter的版本和插件需一致,參數文件需在控制機器和負載機器上都要有一份,且放在同一路徑下。


免責聲明!

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



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