下載:
Apache JMeter - Download Apache JMeterhttps://jmeter.apache.org/download_jmeter.cgi
安裝:
JDK 版本要求為 1.8。
一、Jmeter 介紹
1.1、Jmeter 有什么樣功能
Apache JMeter 是一個(gè)開源、純 Java、優(yōu)秀的性能測(cè)試工具
能夠測(cè)試許多不同的應(yīng)用程序/服務(wù)器/協(xié)議類型:
HTTP、HTTPS
REST、SOAP
JDBC
FTP
LDAP
JMS 消息類
郵件類(SMTP、POP3、和IMAP)
命令或 shell 腳本
TCP
Java 請(qǐng)求擴(kuò)展
主要特性:
可視化設(shè)計(jì)、功能齊全 (可視化)
快速設(shè)計(jì)測(cè)試計(jì)劃、簡(jiǎn)單構(gòu)建和調(diào)試程序 (簡(jiǎn)易性)
內(nèi)置八大組件,功能強(qiáng)大,高度靈活設(shè)計(jì) (高靈活)
完全、快速的可移植性和 100% Java 純度 (跨平臺(tái))
核心功能高度可擴(kuò)展,可以快速進(jìn)行二次開發(fā)(高擴(kuò)展)
1.2、Jmeter 與 LoadRunner 比較
總結(jié):
在目前市場(chǎng)來講,Jmeter 為必備技能、LoadRunner 為加強(qiáng)技能(個(gè)人技能)
Jmeter 為一款輕量級(jí)、跨平臺(tái)、功能強(qiáng)大的性能測(cè)試工具,目前熱度已然超過 LoadRunner
1.3、常用性能測(cè)試工具
目前市場(chǎng)上性能測(cè)試工具多達(dá)幾十種,筆者選取了幾種比較實(shí)在的測(cè)試工具,供大家參考
性能測(cè)試工具?? ?使用協(xié)議?? ?支持協(xié)議?? ?支持場(chǎng)景化?? ?主要用途?? ?說明
Jmeter?? ?開源?? ?多協(xié)議?? ?是?? ?http 測(cè)試,其它測(cè)試?? ?JMeter 是 Apache 開源基金會(huì)提供的完全開源的性能測(cè)試工具,旨在加載測(cè)試功能行為和衡量性能。它最初是為測(cè)試 Web 應(yīng)用程序而設(shè)計(jì)的,但此后已擴(kuò)展到其他測(cè)試功能
LoadRunner?? ?商業(yè)?? ?多協(xié)議?? ?是?? ?http 測(cè)試,其它測(cè)試?? ?LoadRunner 是一種預(yù)測(cè)系統(tǒng)行為和性能的負(fù)載測(cè)試工具。通過以模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)的方式來確認(rèn)和查找問題,LoadRunner 能夠?qū)φ麄€(gè)企業(yè)架構(gòu)進(jìn)行測(cè)試
Kylinpetl/kylinTOP?? ?國(guó)產(chǎn)商業(yè)?? ?多協(xié)議?? ?是?? ?http 測(cè)試,其它測(cè)試?? ?奇林性能測(cè)試軟件(簡(jiǎn)稱:kylinPET,performance emulation tool)是一款功能強(qiáng)大的性能測(cè)試工具;界面友好、操作方便,資源占用率低;與 LoadRunner 非常類似
ApacheBench?? ?開源?? ?http?? ?否?? ?簡(jiǎn)易性 http?? ?ApacheBench 是一個(gè)輕量級(jí)工具。主要用于 HTTP 協(xié)議的性能測(cè)試。非常簡(jiǎn)單快捷,不支持場(chǎng)景化測(cè)試
Webbench?? ?開源?? ?http?? ?否?? ?簡(jiǎn)易性 http?? ?Webbench 是知名的網(wǎng)站壓力測(cè)試工具,非常簡(jiǎn)單快捷,不支持場(chǎng)景化測(cè)試
Sysbench?? ?開源?? ?多協(xié)議?? ?#?? ?數(shù)據(jù)庫基準(zhǔn)測(cè)試?? ?sysbench 是一款開源的多線程性能測(cè)試工具,可以執(zhí)行 CPU/內(nèi)存/線程/IO/數(shù)據(jù)庫等方面的性能測(cè)試
Locust?? ?開源?? ?http?? ?是?? ?http 測(cè)試?? ?Locust 是易于使用的分布式用戶負(fù)載測(cè)試工具。它旨在對(duì)網(wǎng)站進(jìn)行負(fù)載測(cè)試,并確定系統(tǒng)可以處理多少個(gè)并發(fā)用戶。非常易用。很方便地基于 Python 進(jìn)行腳本擴(kuò)展和業(yè)務(wù)請(qǐng)求實(shí)現(xiàn)
1.4、性能測(cè)試工具如何選型
ab(ApacheBench)、Webbench 使用場(chǎng)景:簡(jiǎn)單接口測(cè)試,無場(chǎng)景化,無參數(shù)化處理,命令行工具
Jmter 使用場(chǎng)景:免費(fèi)+復(fù)雜場(chǎng)景化
LoadRunner 使用場(chǎng)景:商業(yè)+復(fù)雜場(chǎng)景化
Kylinpet/kylinTOP 使用場(chǎng)景:與 LoadRunner 類似,部分功能更為強(qiáng)大
Locust 使用場(chǎng)景:對(duì) Python 熟悉度高,無 UI 設(shè)計(jì)界面,使用輕量級(jí)協(xié)程,高并發(fā)
工具只是一種形式,無論是性能測(cè)試還是功能自動(dòng)化測(cè)試,在學(xué)至后面,本質(zhì)是一種測(cè)試編程,工具只是簡(jiǎn)化了一些功能,但并不能完全替代;Jmeter、LoadRunner 任意掌握一種,就算以后有需要學(xué)習(xí)其它的,也會(huì)變得簡(jiǎn)單很多
1.5、學(xué)習(xí) Jmeter 對(duì) Java 編程的要求
Jmeter 中的腳本編程本質(zhì)上是 Java 的編程,要求對(duì) Java 有一定的掌握
編寫 Jmeter 腳本,熟悉 Java 的基本編程即可,如變量定義、數(shù)據(jù)類型、條件、循環(huán)、Map 及 List 的結(jié)構(gòu)……
Jmter 的二次開發(fā),對(duì) Java 要求上關(guān)注較高,要求熟悉使用 Java 和第三方協(xié)議的使用,如 Kafaka,Redis 等
2.配置與使用
2.1、JDK環(huán)境配置
Linux 系統(tǒng)下面環(huán)境變量設(shè)置
export JAVA_HOME=/home/xiangsl/softwares/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
windows下面環(huán)境變量設(shè)置
JAVA_HOME=D:\Program Files\Java\jdk1.8.0_261;
PATH=%JAVA_HOME%\bin;.......
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
2.2、Jmeter 三種模式
Jmeter 模式?? ?設(shè)計(jì)測(cè)試計(jì)劃?? ?性能壓測(cè)?? ?角色說明?? ?說明
GUI 模式?? ?√?? ?√?? ?圖形端與壓力機(jī)在本機(jī)?? ?設(shè)計(jì)測(cè)試計(jì)劃,同時(shí)可以作輕量級(jí)性能測(cè)試
客戶端模式?? ??? ?√?? ?命令行模式?? ?命令行模式來進(jìn)行性能壓測(cè),使用上快捷方便,跨平臺(tái)
遠(yuǎn)程模式?? ??? ?√?? ?圖形端與壓力機(jī)分開?? ?遠(yuǎn)程模式下可以水平擴(kuò)容,一般配合圖形界面使用
2.4、主要配置介紹
2.4.1、setenv 配置
win 下面以 setenv.bat 存在,linux 下面以 setenv.sh 存在,默認(rèn)不存在,需要手工創(chuàng)建主要是用于配置一些系統(tǒng)環(huán)境變量,如 JVM 啟動(dòng)參數(shù),默認(rèn)語言等
配置詳情見官網(wǎng)(1.4 Running JMeter):https://jmeter.apache.org/uscrmanual/get-started.htmI#frunning
2.4.2、jmeter.properties
幾乎所有的配置都可以通過該文件進(jìn)行修改,比較常用的有:19.7 Remote hosts and RMl configuration
配置詳情見官網(wǎng):https://jmeter.apache.org/usermanual/properties_reference.html
2.4.3、user.properties
用戶自定義參數(shù),一般用于測(cè)試計(jì)劃;在這里,我們可以定義任何自己需要的參數(shù)
2.4.4、常用命令介紹
windows 命令,一般用于圖形界面,主要命令如下:
啟動(dòng)命令?? ?作用
jmeter.bat?? ?圖形模式下啟動(dòng)界面(有 cmd 命令框),如果有控制臺(tái)消息的時(shí)候建議使用
jmeterw.cmd?? ?圖形模式下啟動(dòng)界面(沒有 cmd 命令框)
jmeter-server.bat?? ?以服務(wù)端模式啟動(dòng)
mirror-server.cmd?? ?啟動(dòng)一個(gè)鏡像服務(wù)器
linux 命令,一般用于服務(wù)端,主要命令如下:
啟動(dòng)命令?? ?作用
jmeter?? ?圖形模式下啟動(dòng)界面(有終端命令框),如果有控制臺(tái)消息的時(shí)候建議使用
jmeter.sh?? ?圖形模式下啟動(dòng)界面(沒有終端命令框)
jmeter-server?? ?以服務(wù)端模式啟動(dòng)
mirror-server.sh?? ?啟動(dòng)一個(gè)鏡像服務(wù)器
2.5、Jmeter 圖形端安裝
2.5.1、前置條件
操作系統(tǒng): 不限,一般是win系統(tǒng)居多
JDK: 1.8+
下載后解壓至某一文件夾
2.5.2、參數(shù)修改
(1)、在 bin 目錄下面增加 setenv.bat 文件
rem This is the content of bin\setenv.bat,rem it will be called by bin\jmeter.bat
set JVM_ARGS=-Xms2g -Xmx2g -Dpropname=longge
這里根據(jù)自行調(diào)整內(nèi)存大小,默認(rèn)為1024m,做大型測(cè)試時(shí)起步4G
其它參考選項(xiàng),詳見官網(wǎng)(1.4 Running JMeter)
https://jmeter.apache.org/usermanual/get-started.html#running
?
(2)、修改 jmeter.properties 配置文件
server.rmi.ssl.disable=true
sampleresult.default.encoding=UTF-8 ?// 未設(shè)置的話,采樣器結(jié)果有可能亂碼
2.5.3、啟動(dòng)/檢測(cè)
(1)、運(yùn)行 jmeter.bat 或者 jmeterw.cmd 啟動(dòng)
(2)、啟動(dòng)后,打開 cmd,采用如下命令,檢測(cè)進(jìn)程詳細(xì),如下表示進(jìn)程存在且參數(shù)配置生效
wmic process where caption="java.exe" get processid,caption,commandline /value
wmic process where caption="javaw.exe" get processid,caption,commandline /value
?
2.6、Jmeter 服務(wù)端安裝
2.6.1、前置條件
操作系統(tǒng): 不限,一般為 Linux 系統(tǒng)居多
JDK: 1.8+
下載后解壓至某一文件夾
2.6.2、參數(shù)修改
(1)、在 bin 目錄下面增加 setenv.sh 文件
#This is the content of bin\setenv.sh,
#it will be called by bin\jmeter.sh
export JVM_ARGS="-Xms2g -Xmx2g -Dpropname=longge"
這里根據(jù)自行調(diào)整內(nèi)存大小,默認(rèn)為 1024m,做大型測(cè)試時(shí)起步 4G
其它參考選項(xiàng),詳見官網(wǎng)(1.4 Running JMeter)
https://jmeter.apache.org/usermanual/get-started.html#running
(2)、修改 jmeter.properties 配置文件
server.rmi.ssl.disable=true
sampleresult.default.encoding=UTF-8
1
2
(3)、修改 jmeter-server 文件
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.128.166
這里根據(jù)主機(jī)地址修改
2.6.3、啟動(dòng)&檢測(cè)
(1)、運(yùn)行 sh jmeter-server 啟動(dòng)
(2)、啟動(dòng)后,采用如下命令,檢測(cè)進(jìn)程詳細(xì),如下表示進(jìn)程存在且參數(shù)配置生效
ps -ef|grep longge
缺圖
2.6.4、圖形端修改
修改 jmeter.properties 文件,多個(gè)主機(jī)用逗號(hào)隔開
remote_hosts=192.168.128.166:1099,192.168.128.167:1099,192.168.128.168:1099
圖形端啟動(dòng)后,在 Run/Remote Start 里面能夠看到相關(guān)主機(jī)表示安裝成功
?
2.7、安裝小結(jié)
(1)、大部分配置采用純手工修改,一定要細(xì)小,注意空格,中英文,端口的影響
(2)、理解 Jmeter 的三種模式的應(yīng)用場(chǎng)景,對(duì)我們后續(xù)有比較好的指導(dǎo)意義
三、Jmeter 常規(guī)配置
3.1、設(shè)置中文
3.1.1、臨時(shí)設(shè)置中文
依次點(diǎn)擊 Options <<< Choose Languse <<< Chinese(Simplified)
3.1.2、永久設(shè)置中文
進(jìn)入 jmeter 安裝路徑的 bin 目錄下,找到 jmeter.properties 文件
打開 jmeter.properties 文件,找到 #language=en,修改成language=zh_CN,并將前面的 “#” 號(hào)去掉,最后保存文件
最后重新打開 jmeter ,就變成中文了
3.2、設(shè)置外觀(白色)
依次點(diǎn)擊 選項(xiàng) <<< 外觀 <<< Windows
3.3、中文亂碼
(1)、進(jìn)入 Jmeter 的bin目錄下,找到 jmeter.properties 文件
(2)、找到 #sampleresult.default.encoding=UTF-8,將前面的 # 號(hào)去掉,并保存
(3)、重啟 Jmeter
測(cè)試用例創(chuàng)建
創(chuàng)建一個(gè)測(cè)試分組
每個(gè)項(xiàng)目用一個(gè)組,如APP一個(gè),Web一個(gè),或者說當(dāng)前公司的項(xiàng)目按模塊分組也可以。
?創(chuàng)建線程池分組
此分組可以根據(jù)模塊功能來分,如:login,或者用戶管理,用一個(gè)線程池組來統(tǒng)一管理測(cè)試。
創(chuàng)建成功之后,在當(dāng)前TestPlan生成一個(gè)子級(jí)別的線程組,保存:ctrl +s,或者點(diǎn)擊工具欄保存按鈕 :
1)線程數(shù):即虛擬用戶數(shù)。設(shè)置多少個(gè)線程數(shù)也就是設(shè)置多少虛擬用戶數(shù)
(2)Ramp-Up時(shí)間(秒):設(shè)置虛擬用戶數(shù)全部啟動(dòng)的時(shí)長(zhǎng)。如果線程數(shù)為20,準(zhǔn)備時(shí)長(zhǎng)為10秒,那么需要10秒鐘啟動(dòng)20個(gè)線程。也就是平均每秒啟動(dòng)2個(gè)線程。
(3)循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的個(gè)數(shù)。如果線程數(shù)為20,循環(huán)次數(shù)為10,那么每個(gè)線程發(fā)送10次請(qǐng)求。總請(qǐng)求數(shù)為20*10=200。如果勾選了“Infinite(無限次)”,
那么所有線程會(huì)一直發(fā)送請(qǐng)求,直到手動(dòng)點(diǎn)擊工具欄上的停止按鈕,或者設(shè)置的線程時(shí)間結(jié)束。
添加Http請(qǐng)求
確定模塊線程池之后,那么?當(dāng)前登錄就有一個(gè)http接口測(cè)試需求。接下來創(chuàng)建用于測(cè)試的,具體的http請(qǐng)求接口。
啟動(dòng)Http接口壓力測(cè)試,點(diǎn)擊啟動(dòng)按鈕 :
剛才配置時(shí)候不小心勾選了,無限次(Infinite),需要手動(dòng)點(diǎn)Stop按鈕 ,終止測(cè)試,要不看后端服務(wù)一直接收到請(qǐng)求。?
判斷測(cè)試結(jié)果:添加斷言
配置好接口信息后,配置斷言,用于檢查測(cè)試結(jié)果是否符合預(yù)期,
創(chuàng)建成功之后,如上圖所示,此項(xiàng)是在http請(qǐng)求接口子級(jí),因?yàn)樯蠑嘌允侵会槍?duì)當(dāng)前登錄接口的。
斷言編寫配置
?如我的測(cè)試返回是一個(gè)字符串:Person{name="lani",age="18"},響應(yīng)的header這樣的:
?所以我添加一個(gè)斷言,如下 ,Reponse Code里有200,那我這個(gè)測(cè)試就OKb?
查看當(dāng)前接口測(cè)試結(jié)果?
配置預(yù)期結(jié)果,之后,配置監(jiān)聽此接口壓力的測(cè)試的結(jié)果
?此項(xiàng)是在http請(qǐng)求接口子級(jí),如下圖,View Result Tree,是在當(dāng)前登錄htttp接串口的子級(jí),每一個(gè)結(jié)果一個(gè)測(cè)試result集。?
文章來源:http://www.zghlxwxcb.cn/news/detail-436953.html
查看我的此次運(yùn)行此接口測(cè)試結(jié)果,顯示都成功了,每一次測(cè)試結(jié)果頭都有:200,這個(gè)code。?文章來源地址http://www.zghlxwxcb.cn/news/detail-436953.html
到了這里,關(guān)于JMeter自動(dòng)化壓力測(cè)試-http的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!