电竞比分网-中国电竞赛事及体育赛事平台

分享

jmeter入門(mén)實(shí)操

 一枚平凡的葉子 2019-05-08

原文轉(zhuǎn)自:https://blog.csdn.net/lovesoo/article/details/78579547

https://blog.csdn.net/qq_40646143/article/details/79578270

Apache JMeter是一款純java編寫(xiě)負(fù)載功能測(cè)試和性能測(cè)試開(kāi)源工具軟件。相比Loadrunner而言,JMeter小巧輕便且免費(fèi),逐漸成為了主流的性能測(cè)試工具,是每個(gè)測(cè)試人員都必須要掌握的工具之一。

本文為JMeter性能測(cè)試完整入門(mén)篇,從Jmeter下載安裝到編寫(xiě)一個(gè)完整性能測(cè)試腳本、最終執(zhí)行性能測(cè)試并分析性能測(cè)試結(jié)果。

運(yùn)行環(huán)境為Windows 10系統(tǒng),JDK版本為1.8,JMeter版本為3.3。

2. Jmeter安裝

2.1 JDK安裝

可以先確認(rèn)下自己電腦有沒(méi)有安裝JDK,開(kāi)始->運(yùn)行->然后輸入cmd->進(jìn)入命令行界面,輸入java -version , 出現(xiàn)以下信息就是此電腦已安裝了JDK

由于Jmeter是基于java開(kāi)發(fā),首先需要下載安裝JDK (目前JMeter只支持到Java 8,尚不支持 Java 9) 
1. 官網(wǎng)下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 
2. 選擇Java SE 8u151/ 8u152,點(diǎn)擊JDK下載 


3. 安裝下載的JDK 
4. 配置系統(tǒng)環(huán)境變量

2.2 JMeter安裝

  1. 官網(wǎng)下載地址:http://jmeter./download_jmeter.cgi
  2. 下載最新JMeter 5.1.1版本:apache-jmeter-5.1.1.zip 
  3. 下載完成后解壓zip包
  4. 解壓到指定文件夾   D:\1\apache-jmetes\apache-jmeter-5.1.1

    接下來(lái)就是配置Jmeter環(huán)境變量

    (1)“我的電腦”>鼠標(biāo)右鍵菜單>"屬性">"高級(jí)系統(tǒng)設(shè)置">"環(huán)境變量";

     ( 2 )   在系統(tǒng)變量中添加倆個(gè)屬性 

     ①      JMETER_HOME=D:\1\apache-jmetes\apache-jmeter-5.1.1     (就是jmeter保存的路徑)

                

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

                (這個(gè)復(fù)制上去就ok)

                

    ( 3 )  在用系統(tǒng)變量path后面加上%JMETER_HOME%\bin  如圖 注意是系統(tǒng)變量

            

    最后在cmd輸入jmeter 直接打開(kāi) 如圖

  5. 啟動(dòng)JMeter 
    雙擊JMeter解壓路徑(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可(右鍵,可以發(fā)送到桌面快捷方式) 

3. 測(cè)試實(shí)例

我們選取最常見(jiàn)的百度搜索接口:

3.1 接口地址

http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測(cè)試

3.2 請(qǐng)求參數(shù)

ie:編碼方式,默認(rèn)為utf-8 
wd: 搜索詞

3.3 返回結(jié)果

搜索結(jié)果,我們可以通過(guò)校驗(yàn)結(jié)果中是否含有搜索詞wd來(lái)判斷本次請(qǐng)求成功或失敗。

4. JMeter腳本編寫(xiě)

4.1 添加線(xiàn)程組

右鍵點(diǎn)擊“測(cè)試計(jì)劃” -> “添加” -> “Threads(Users)” -> “線(xiàn)程組” 
這里寫(xiě)圖片描述 
這里可以配置線(xiàn)程組名稱(chēng),線(xiàn)程數(shù),準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))循環(huán)次數(shù),調(diào)度器等參數(shù): 
這里寫(xiě)圖片描述 
線(xiàn)程組參數(shù)詳解: 
1. 線(xiàn)程數(shù):虛擬用戶(hù)數(shù)。一個(gè)虛擬用戶(hù)占用一個(gè)進(jìn)程或線(xiàn)程。設(shè)置多少虛擬用戶(hù)數(shù)在這里也就是設(shè)置多少個(gè)線(xiàn)程數(shù)。 
2. Ramp-Up Period(in seconds)準(zhǔn)備時(shí)長(zhǎng):設(shè)置的虛擬用戶(hù)數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)。如果線(xiàn)程數(shù)為10,準(zhǔn)備時(shí)長(zhǎng)為2,那么需要2秒鐘啟動(dòng)10個(gè)線(xiàn)程,也就是每秒鐘啟動(dòng)5個(gè)線(xiàn)程。 
3. 循環(huán)次數(shù):每個(gè)線(xiàn)程發(fā)送請(qǐng)求的次數(shù)。如果線(xiàn)程數(shù)為10,循環(huán)次數(shù)為100,那么每個(gè)線(xiàn)程發(fā)送100次請(qǐng)求??傉?qǐng)求數(shù)為10*100=1000 。如果勾選了“永遠(yuǎn)”,那么所有線(xiàn)程會(huì)一直發(fā)送請(qǐng)求,一到選擇停止運(yùn)行腳本。 
4. Delay Thread creation until needed:直到需要時(shí)延遲線(xiàn)程的創(chuàng)建。 
5. 調(diào)度器:設(shè)置線(xiàn)程組啟動(dòng)的開(kāi)始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選循環(huán)次數(shù)為永遠(yuǎn)) 
持續(xù)時(shí)間(秒):測(cè)試持續(xù)時(shí)間,會(huì)覆蓋結(jié)束時(shí)間 
啟動(dòng)延遲(秒):測(cè)試延遲啟動(dòng)時(shí)間,會(huì)覆蓋啟動(dòng)時(shí)間 
啟動(dòng)時(shí)間:測(cè)試啟動(dòng)時(shí)間,啟動(dòng)延遲會(huì)覆蓋它。當(dāng)啟動(dòng)時(shí)間已過(guò),手動(dòng)只需測(cè)試時(shí)當(dāng)前時(shí)間也會(huì)覆蓋它。 
結(jié)束時(shí)間:測(cè)試結(jié)束時(shí)間,持續(xù)時(shí)間會(huì)覆蓋它。

因?yàn)榻涌谡{(diào)試需要,我們暫時(shí)均使用默認(rèn)設(shè)置,待后面真正執(zhí)行性能測(cè)試時(shí)再回來(lái)配置。

4.2 添加HTTP請(qǐng)求

右鍵點(diǎn)擊“線(xiàn)程組” -> “添加” -> “Sampler” -> “HTTP請(qǐng)求” 
這里寫(xiě)圖片描述 
對(duì)于我們的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測(cè)試,可以參考下圖填寫(xiě): 
這里寫(xiě)圖片描述 
Http請(qǐng)求主要參數(shù)詳解:

  1. Web服務(wù)器 
    協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求協(xié)議,可以是HTTP或HTTPS,默認(rèn)為HTTP 
    服務(wù)器名稱(chēng)或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或IP 
    端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80 
    2.Http請(qǐng)求 
    方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。 
    路徑:目標(biāo)URL路徑(URL中去掉服務(wù)器地址、端口及參數(shù)后剩余部分) 
    Content encoding :編碼方式,默認(rèn)為ISO-8859-1編碼,這里配置為utf-8
  2. 同請(qǐng)求一起發(fā)送參數(shù) 
    在請(qǐng)求中發(fā)送的URL參數(shù),用戶(hù)可以將URL中所有參數(shù)設(shè)置在本表中,表中每行為一個(gè)參數(shù)(對(duì)應(yīng)URL中的 name=value),注意參數(shù)傳入中文時(shí)需要勾選“編碼”

4.3 添加察看結(jié)果樹(shù)

右鍵點(diǎn)擊“線(xiàn)程組” -> “添加” -> “監(jiān)聽(tīng)器” -> “察看結(jié)果樹(shù)” 
這里寫(xiě)圖片描述 
這時(shí),我們運(yùn)行Http請(qǐng)求,修改響應(yīng)數(shù)據(jù)格式為“HTML Source Formatted”,可以看到本次搜索返回結(jié)果頁(yè)面標(biāo)題為”jmeter性能測(cè)試_百度搜索“。 
這里寫(xiě)圖片描述

4.4 添加用戶(hù)自定義變量(一般不用這個(gè))

我們可以添加用戶(hù)自定義變量用以Http請(qǐng)求參數(shù)化,右鍵點(diǎn)擊“線(xiàn)程組” -> “添加” -> “配置元件” -> “用戶(hù)定義的變量”: 
這里寫(xiě)圖片描述 
新增一個(gè)參數(shù)wd,存放搜索詞: 
這里寫(xiě)圖片描述 
并在Http請(qǐng)求中使用該參數(shù),格式為:${wd} 
這里寫(xiě)圖片描述

4.5 添加斷言

右鍵點(diǎn)擊“HTTP請(qǐng)求” -> “添加”-> “斷言” -> “響應(yīng)斷言” 
這里寫(xiě)圖片描述 
我們校驗(yàn)返回的文本中是否包含搜索詞,添加參數(shù)${wd}到要測(cè)試的模式中: 
這里寫(xiě)圖片描述

類(lèi)似loadrunner的檢查點(diǎn),可以檢查響應(yīng)碼是否為200

4.6 添加斷言結(jié)果(成功的時(shí)候沒(méi)有信息,可以添加“察看結(jié)果樹(shù)”)

右鍵點(diǎn)擊“HTTP請(qǐng)求” -> “添加”-> “監(jiān)聽(tīng)器” -> “斷言結(jié)果” 
這里寫(xiě)圖片描述

這時(shí),我們?cè)龠\(yùn)行一次就可以看到斷言結(jié)果成功或失敗了 (成功時(shí)沒(méi)信息)
這里寫(xiě)圖片描述

4.7 添加聚合報(bào)告

右鍵點(diǎn)擊“線(xiàn)程組” -> “添加” -> “監(jiān)聽(tīng)器” -> “聚合報(bào)告”,用以存放性能測(cè)試報(bào)告 
這里寫(xiě)圖片描述 
這樣,我們就完成了一個(gè)完整Http接口的JMeter性能測(cè)試腳本編寫(xiě)。

4.8參數(shù)化

  1. 右鍵【添加】-【配置元件】-【Csv Data Set Config】

    jmeter-如何進(jìn)行參數(shù)化

  2. 這個(gè)配置元件可以允許從你輸入的路徑來(lái)讀取文件,然后根據(jù)分隔符獲取到數(shù)據(jù)。

    jmeter-如何進(jìn)行參數(shù)化

  3. 如下圖,輸入的數(shù)據(jù)。

    講解:

    a,名稱(chēng)和注釋不需要過(guò)多解釋?zhuān)约憾x。

    b,Filename:參數(shù)化文件的讀取位置。這個(gè)路徑可以是絕對(duì)路徑也是可以相對(duì)路徑。在分布式測(cè)試中,還是利用相對(duì)路徑比較方便,因?yàn)橛械臋C(jī)器可能安裝路徑不一樣。

    c,File Encoding:編碼格式,選擇utf-8

    d,Variable Names:變量名稱(chēng)。這里定義的變量名稱(chēng),后面就可以直接用來(lái)引用了。(多個(gè)變量名稱(chēng)以逗號(hào)隔開(kāi)。例如username,passwd。參數(shù)化文件中同樣有對(duì)應(yīng)的兩列數(shù)據(jù)。)

    e,Ignore first line:忽略第一行數(shù)據(jù)。(類(lèi)似loadrunner中第一行數(shù)據(jù)是變量名稱(chēng),如果你的配置文件中為了記憶第一行也是變量名,可以選擇是忽略這行數(shù)據(jù))

    f,Delimiter:分隔符,默認(rèn)逗號(hào)。

    g,Allow quoted data:是非選項(xiàng),是否允許變量中間有分隔符,這里最好先默認(rèn)false,數(shù)據(jù)中間最好不要有分隔符。

    h,Recycle on EOF和Stop thread on EOF按需設(shè)置。是否循環(huán),到結(jié)尾是否停止測(cè)試。我這里設(shè)置了True和False

    i,Sharing mode:先選擇所有的線(xiàn)程都可以利用此參數(shù)化。

    jmeter-如何進(jìn)行參數(shù)化

  4. 準(zhǔn)備測(cè)試數(shù)據(jù)。這里只是簡(jiǎn)單的寫(xiě)了幾個(gè)數(shù)據(jù)來(lái)演示效果。

    jmeter-如何進(jìn)行參數(shù)化

  5. 在請(qǐng)求中引用該變量。

    引用方法是 ${}   ;其中{}內(nèi)寫(xiě)入?yún)?shù)化中的變量。

    注:在parameter中加入一些多余的參數(shù)沒(méi)有問(wèn)題,故在訪(fǎng)問(wèn)百度的請(qǐng)求后面隨意加了一個(gè)參數(shù)。

    jmeter-如何進(jìn)行參數(shù)化

  6. 修改循環(huán)次數(shù)。這里設(shè)置6次,是因?yàn)閰?shù)里面有5個(gè)數(shù)據(jù),測(cè)試一下數(shù)據(jù)取完之后的效果。

    jmeter-如何進(jìn)行參數(shù)化

  7. 點(diǎn)擊運(yùn)行,查看結(jié)果樹(shù)。

    可以看到共發(fā)送了6次請(qǐng)求,而且請(qǐng)求參數(shù)中已經(jīng)獲取了變量的數(shù)據(jù)。

    jmeter-如何進(jìn)行參數(shù)化

  8. 打開(kāi)第二個(gè)請(qǐng)求??梢钥吹降诙€(gè)請(qǐng)求的參數(shù)里面變量值為data-b。

    順序讀取的。

    jmeter-如何進(jìn)行參數(shù)化

  9. 找到最后一個(gè)請(qǐng)求,點(diǎn)開(kāi)查看。

    請(qǐng)求參數(shù)中searchid是data-a,說(shuō)明數(shù)據(jù)是從頭開(kāi)始取的,也就是數(shù)據(jù)是遍歷后循環(huán)的。

    參數(shù)化完成了。

    jmeter-如何進(jìn)行參數(shù)化

5. 執(zhí)行性能測(cè)試

5.1 配置線(xiàn)程組

點(diǎn)擊線(xiàn)程組,配置本次性能測(cè)試相關(guān)參數(shù):線(xiàn)程數(shù),循環(huán)次數(shù),持續(xù)時(shí)間等,這里我們配置并發(fā)用戶(hù)數(shù)為10,持續(xù)時(shí)間為60s 
這里寫(xiě)圖片描述

5.2 執(zhí)行測(cè)試

點(diǎn)擊綠色小箭頭按鈕即可啟動(dòng)測(cè)試,測(cè)試之前需要點(diǎn)擊小掃把按鈕清除之前的調(diào)試結(jié)果。 
這里寫(xiě)圖片描述

6. 分析測(cè)試報(bào)告

待性能測(cè)試執(zhí)行完成后,打開(kāi)聚合報(bào)告可以看到: 
這里寫(xiě)圖片描述

聚合報(bào)告參數(shù)詳解: 
1. Label:每個(gè) JMeter 的 element(例如 HTTP Request)都有一個(gè) Name 屬性,這里顯示的就是 Name 屬性的值 
2. #Samples:請(qǐng)求數(shù)——表示這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求,如果模擬10個(gè)用戶(hù),每個(gè)用戶(hù)迭代10次,那么這里顯示100 
3. Average:平均響應(yīng)時(shí)間——默認(rèn)情況下是單個(gè) Request 的平均響應(yīng)時(shí)間,當(dāng)使用了 Transaction Controller 時(shí),以Transaction 為單位顯示平均響應(yīng)時(shí)間 
4. Median:中位數(shù),也就是 50% 用戶(hù)的響應(yīng)時(shí)間 
5. 90% Line:90% 用戶(hù)的響應(yīng)時(shí)間 

6. Min:最小響應(yīng)時(shí)間 
7. Max:最大響應(yīng)時(shí)間 
8. Error%:錯(cuò)誤率——錯(cuò)誤請(qǐng)求數(shù)/請(qǐng)求總數(shù) 
9. Throughput:吞吐量
——默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)(Request per Second),當(dāng)使用了 Transaction Controller 時(shí),也可以表示類(lèi)似 LoadRunner 的 Transaction per Second 數(shù) 
10. KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec

一般而言,性能測(cè)試中我們需要重點(diǎn)關(guān)注的數(shù)據(jù)有: #Samples 請(qǐng)求數(shù),Average 平均響應(yīng)時(shí)間,Min 最小響應(yīng)時(shí)間,Max 最大響應(yīng)時(shí)間,Error% 錯(cuò)誤率及Throughput 吞吐量。

7. 源碼下載

至此,我們使用JMeter完成了一個(gè)完整的Http接口性能測(cè)試流程,從腳本編寫(xiě),執(zhí)行到最終結(jié)果分析。

完整的腳本源碼下載鏈接: https://pan.baidu.com/s/1eS90cVo 密碼: st15

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多