本文章主要介紹JMeter的安裝及使用。
JMeter是一個開源的web程序測試工具嫡意。在課程大作業(yè)中,我們使用JMeter進行微信后端的壓力測試。挑選JMeter作為測試工具的原因主要是:操作簡單猪落、使用純Java容易移植巩剖、開源睛蛛。
我們的文章主要介紹以下內(nèi)容:
1.JMeter的安裝與配置
2.JMeter的使用簡介
3.微信后臺壓力測試示例
JMeter的安裝與配置
因為JMeter是純Java程序痴怨,所以我們只需要配置好java環(huán)境即可棵癣。
1.安裝Java
我們使用的是Apache-JMeter的5.0版本苞七,所以我們需要配置Java8.0或者9.0藐守。
下載地址如下:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
這里下載的JDK是8u191版本的,(事實上蹂风,這也是目前推薦的Java環(huán)境)
下載好之后卢厂,一路回車,即可安裝惠啄。接下來配置環(huán)境變量足淆。
變量名:JAVA_HOME
變量值:C:\Program Files\Java\jdk1.8.0_191 // 要根據(jù)自己的實際路徑配置
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //記得前面有個"."
變量名:Path
變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
打開cmd,驗證Java配置環(huán)境礁阁。
# cmd
java -version
2.安裝JMeter
我們只需要下載JMeter再安裝即可巧号,下載網(wǎng)址如下:http://jmeter.apache.org/download_jmeter.cgi
需要注意,我們要下載二進制文件姥闭,否則還需要將JMeter配置進入Java的環(huán)境丹鸿。
JMeter的使用簡介
JMeter主要可以分為以下幾塊:
1)負(fù)載發(fā)生器:產(chǎn)生負(fù)載,多進程或多線程模擬用戶行為
2)用戶運行器:腳本運行引擎棚品,用戶運行器附加在進程或線程上靠欢,根據(jù)腳本模擬指定的用戶行為
3)資源生成器:生成測試過程中服務(wù)器、負(fù)載機的資源數(shù)據(jù)
4)報表生成器:根據(jù)測試中獲得的數(shù)據(jù)生成報表铜跑,提供可視化的數(shù)據(jù)顯示方式
其實它的工作原理比較容易理解门怪。
我們首先開了很多很多進程或者線程。然后讓這些線程去模擬訪問Web程序锅纺。
在訪問過程中掷空,如果存在數(shù)據(jù)產(chǎn)生,那么我就保存下來。最后由報表生成器進行顯示坦弟。
下面讓我們看一下具體的使用方式护锤。
事實上,我們只要按照上面所說的分塊酿傍,放置好測試結(jié)構(gòu)烙懦,并且設(shè)置好主體區(qū)域的參數(shù)即可。
下面逐次介紹負(fù)載發(fā)生赤炒、用戶運行氯析、報表生成。
1.負(fù)載發(fā)生器
我們右鍵TestPlan的名稱莺褒,然后添加Threads(users)->線程組魄鸦。然后設(shè)置線程組參數(shù)。
線程數(shù):虛擬用戶的數(shù)目
Ramp—Up Period(in seconds):啟動所有線程所用準(zhǔn)備時長癣朗。
循環(huán)次數(shù):每個線程發(fā)送請求的次數(shù)拾因。如果選擇forever,那么就會一直發(fā)送請求直到腳本運行結(jié)束旷余。
2.用戶運行器
我們以模擬發(fā)送http請求為例子绢记,只需要右鍵點擊剛剛創(chuàng)建的線程組,然后選擇添加sampler->http request即可正卧。
設(shè)置參數(shù)如下:
1)服務(wù)器名稱或IP:http請求發(fā)送的目標(biāo)服務(wù)器名稱或者IP地址
2)端口號:目標(biāo)服務(wù)器的端口號蠢熄,默認(rèn)值為80,可不填
3)協(xié)議:向目標(biāo)服務(wù)器發(fā)送http請求時的協(xié)議炉旷,http/https签孔,大小寫不敏感,默認(rèn)http
4)方法:發(fā)送http請求的方法窘行,可以用post和get等
5)Content encoding:內(nèi)容的編碼方式(Content-Type=application/json;charset=utf-8)
6)路徑:目標(biāo)的URL路徑饥追,比如我輸入/wechat,那么其實是http://127.0.0.1/wechat
3.報表生成器
報表生成器用來進行返回數(shù)據(jù)的整合罐盔。我們右鍵線程組但绕,添加監(jiān)聽,這里我們選擇“查看結(jié)果樹”惶看。
實際上捏顺,這個報表生成器主要是做反饋的匯總。
我們最終得到的結(jié)果如下:
微信后臺壓力測試
我們這里使用的測試方法是纬黎,測試1ms內(nèi)并發(fā)的錯誤率幅骄。
我們以10000個線程在1ms內(nèi)啟動為例,說明操作順序本今。
1.設(shè)置線程組
實際上拆座,我們可以設(shè)置100個線程主巍,每個線程post200次,但是這樣并不能有效的測試出1ms內(nèi)并發(fā)的錯誤率懂拾。
2.設(shè)置計數(shù)器
因為我們實現(xiàn)的搶票程序需要不同的用戶煤禽,向后端postXML格式的數(shù)據(jù)铐达,所以我們這里岖赋,設(shè)置一個計數(shù)器,每執(zhí)行一個post瓮孙,計數(shù)器加一唐断。
相當(dāng)于是設(shè)置了一個名字為id的變量,這個變量的起始值和最大值以及遞增度均已經(jīng)設(shè)置好杭抠。
3.設(shè)置http請求管理
為http header Manager添加content_type屬性脸甘。
4.request設(shè)置
這里的IP填寫服務(wù)器ip即可,然后向http://yourip//wechat這個地方發(fā)送下面的XML偏灿。
這里我么使用到了定義的變量id丹诀,${id}即可使用此變量。
我們也可以在配置元件里面選擇自己定義的變量翁垂,進行使用
4.查看結(jié)果
添加結(jié)果樹铆遭,可以在主界面中看到每個request是否成功以及他們的返回值。
5.生成測試報告(windows)
我們使用的JMeter自帶的功能實現(xiàn)沿猜。
首先將TEST PLAN文件(.jmx)放在JMeter的bin目錄下枚荣,然后在目錄下執(zhí)行下面的命令行。
./jmeter -n -t Request.jmx -l result1000_10000.jtl -e -o ./tmp/ResultReport1000_10000
# ./jmeter -n 指無GUI狀態(tài)下執(zhí)行jmeter
# Request.jmx 為test plan文件
# 最終的html將生成在./tmp/ResultReport1000_10000/下
產(chǎn)生報告非常方便啼肩,包含各項數(shù)據(jù)橄妆。
本文介紹了JMeter的使用原理和實踐,在微信搶票大作業(yè)實現(xiàn)過程中祈坠,通過測試并發(fā)發(fā)現(xiàn)了一些數(shù)據(jù)庫操作的問題害碾,希望之后可以寫出更高質(zhì)量的代碼。
參考資料
1.http://jmeter.apache.org/usermanual/index.html
2.http://www.cnblogs.com/imyalost/p/5790268.html
3.https://www.runoob.com/java/java-environment-setup.html
4.https://blog.csdn.net/cyjs1988/article/details/80268357