您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
JMeter測(cè)試WEB性能入門(mén)
作者:白灰 發(fā)布時(shí)間:[ 2017/6/28 10:09:44 ] 推薦標(biāo)簽:性能測(cè)試 性能測(cè)試工具 單元測(cè)試

  四.主要參數(shù)設(shè)置和聚合報(bào)告分析
  1.創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試內(nèi)容
  1.測(cè)試目標(biāo)網(wǎng)站是www.baidu.com
  2.測(cè)試目的是該網(wǎng)站在負(fù)載達(dá)到20 QPS時(shí)的響應(yīng)時(shí)間
  2.建立測(cè)試計(jì)劃
  1.啟動(dòng)JMeter后,JMeter會(huì)自動(dòng)生成一個(gè)空的測(cè)試計(jì)劃,用戶可以基于該測(cè)試計(jì)劃建立自己的測(cè)試計(jì)劃。

  2.一個(gè)性能測(cè)試請(qǐng)求負(fù)載是基于一個(gè)線程組完成的。一個(gè)測(cè)試計(jì)劃必須有一個(gè)線程組。測(cè)試計(jì)劃添加線程組非常簡(jiǎn)單。在測(cè)試計(jì)劃右鍵彈出下拉菜單(添加-->Threads(Users)--->線程組)中選擇線程組即可。
  JMeter中 每個(gè)測(cè)試計(jì)劃至少需要包含一個(gè)線程組,當(dāng)然也可以在一個(gè)計(jì)劃中創(chuàng)建多個(gè),這些線程組是同時(shí)被初始化并同時(shí)執(zhí)行線程組下的Sampler的。

  3.設(shè)置基本參數(shù)

  線程組主要包含三個(gè)參數(shù):線程數(shù)、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))、循環(huán)次數(shù)。
  1.線程數(shù):虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。設(shè)置多少虛擬用戶數(shù)在這里也是設(shè)置多少個(gè)線程數(shù)
  2.準(zhǔn)備時(shí)長(zhǎng):設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dò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)求的次數(shù)。如果線程數(shù)為20 ,循環(huán)次數(shù)為100 ,那么每個(gè)線程發(fā)送100次請(qǐng)求?傉(qǐng)求數(shù)為20*100=2000 。如果勾選了“永遠(yuǎn)”,那么所有線程會(huì)一直發(fā)送請(qǐng)求,一到選擇停止運(yùn)行腳本
  這里我們根據(jù)20QPS的負(fù)載分別設(shè)置這三個(gè)參數(shù)為20、10、10
  4.添加HTTP請(qǐng)求
  添加完成線程組后,在線程組上右鍵菜單(添加--->Sampler--->HTTP請(qǐng)求)選擇HTTP請(qǐng)求。對(duì)于JMeter來(lái)說(shuō),取樣器(Sampler)是與服務(wù)器進(jìn)行交互的單元

  一個(gè)HTTP請(qǐng)求的配置參數(shù)主要包括:
  1.名稱(chēng):本屬性用于標(biāo)識(shí)一個(gè)取樣器,建議使用一個(gè)有意義的名稱(chēng)
  2.注釋:對(duì)于測(cè)試沒(méi)有任何作用,僅用戶記錄用戶可讀的注釋信息
  3.服務(wù)器名稱(chēng)或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或IP地址
  4.端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80
  5.協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求時(shí)的協(xié)議,可以是http或者是https ,默認(rèn)值為http
  6.方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等
  7.Content encoding :內(nèi)容的編碼方式,默認(rèn)值為iso8859
  8.路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)
  9.自動(dòng)重定向:如果選中該選項(xiàng),當(dāng)發(fā)送HTTP請(qǐng)求后得到的響應(yīng)是302/301時(shí),JMeter 自動(dòng)重定向到新的頁(yè)面。
  10.Use keep Alive :當(dāng)該選項(xiàng)被選中時(shí),JMeter 和目標(biāo)服務(wù)器之間使用 Keep-Alive方式進(jìn)行HTTP通信,默認(rèn)選中
  11.Use multipart/from-data for HTTP POST :當(dāng)發(fā)送HTTP POST 請(qǐng)求時(shí),使用Use multipart/from-data方法發(fā)送,默認(rèn)不選中
  12.同請(qǐng)求一起發(fā)送參數(shù):在請(qǐng)求中發(fā)送URL參數(shù),對(duì)于帶參數(shù)的URL ,JMeter提供了一個(gè)簡(jiǎn)單的對(duì)參數(shù)化的方法
  13.同請(qǐng)求一起發(fā)送文件:在請(qǐng)求中發(fā)送文件,默認(rèn)不選中,如果用戶只希望獲取頁(yè)面中的特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達(dá)式,這樣,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載。
  14用作監(jiān)視器:此取樣器被當(dāng)成監(jiān)視器,在Monitor Results Listener 中可以直接看到基于該取樣器的圖形化統(tǒng)計(jì)信息。默認(rèn)不選中


  這里我們添加一個(gè)百度的HTTPS請(qǐng)求

  5.設(shè)置qps
  (1)JMeter提供了一個(gè)非常有用的定時(shí)器,稱(chēng)為Constant Throughput Timer (常數(shù)吞吐量定時(shí)器),該定時(shí)器可以方便地控制給定的取樣器發(fā)送請(qǐng)求的吞吐量。右鍵點(diǎn)擊fnng.cnblogs.com ,彈出菜單(添加--->定時(shí)器--->Constant Throughput Timer)選擇Constant Throughput Timer

 。2)Constant Throughput Timer 的屬性包括:
  Target throughput(in samples per minute):目標(biāo)吞吐量。注意這里是每分鐘發(fā)送的請(qǐng)求數(shù),因此,對(duì)應(yīng)測(cè)試需求中所要求的20 QPS ,這里的值應(yīng)該是1200
  Calculate Throughput based on :有5個(gè)選項(xiàng),分別是:
  This thread only :控制每個(gè)線程的吞吐量,選擇這種模式時(shí),總的吞吐量為設(shè)置的 target Throughput 乘以線程的數(shù)量
  All active threads :設(shè)置的target Throughput 將分配在每個(gè)活躍線程上,每個(gè)活躍線程在上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。活躍線程指同一時(shí)刻同時(shí)運(yùn)行的線程。
  All active threads in current thread group :設(shè)置的target Throughput將分配在當(dāng)前線程組的每一個(gè)活躍線程上,當(dāng)測(cè)試計(jì)劃中只有一個(gè)線程組時(shí),該選項(xiàng)和All active threads選項(xiàng)的效果完全相同。
  All active threads (shared ):與All active threads 的選項(xiàng)基本相同,的區(qū)別是,每個(gè)活躍線程都會(huì)在所有活躍線程上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行
  All cative threads in current thread group (shared ):與All active threads in current thread group 基本相同,的區(qū)別是,每個(gè)活躍線程都會(huì)在所有活躍線程的上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行
  這里為我們?cè)O(shè)置定時(shí)器的Target throughput為1200/分鐘(20 QPS),設(shè)置Calculate Throughput based on 的值為All active threads

  6.添加聚合報(bào)告
  腳本的主要部分設(shè)置完成后,需要通過(guò)某種方式獲得性能測(cè)試中的測(cè)試結(jié)果,在本例中,我們關(guān)心的是請(qǐng)求的響應(yīng)時(shí)間。JMeter 中我們可在添加聚合報(bào)告,更為直觀的查看測(cè)試結(jié)果。添加聚合報(bào)告,右鍵點(diǎn)擊線程組,在彈的菜單(添加--->監(jiān)聽(tīng)器--->聚合報(bào)告)中選擇聚合報(bào)告。

  7.執(zhí)行腳本
  剛剛我們?cè)O(shè)置的參數(shù)如下
  ---------------------------------------------------------------------------------------------------------------------------
  線程組:
  線程數(shù):20
  準(zhǔn)備時(shí)長(zhǎng):10
  循環(huán)次數(shù):10
  --------------------------------------------------------------------------------------------------------------------------
  HTTP請(qǐng)求:
  名稱(chēng):baidutest
  服務(wù)器名稱(chēng)或IP :www.baidu.com
  端口號(hào):443
  Implementation :java
  協(xié)議:https
  方法:GET
  路徑:/
  --------------------------------------------------------------------------------------------------------------------------
  常數(shù)吞吐量定時(shí)器:
  Target throughput(in samples per minute):1200.0
  Calculate Throughput based on :All active threads
  ---------------------------------------------------------------------------------------------------------------------------
  點(diǎn)擊工具欄上的運(yùn)行按鈕,或者點(diǎn)擊菜單欄“ 運(yùn)行--->啟動(dòng) ” 或者使用快捷鍵ctrl+r 來(lái)運(yùn)行程序。
  8.聚合報(bào)告
  執(zhí)行后的聚合報(bào)告如下圖


  其中每列的意義為
  label:每個(gè)JMeter的http request都有一個(gè)name屬性,這里是name屬性的值
  samples:表示這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求,例如這次我們模擬20個(gè)用戶,每個(gè)用戶迭代10次,那么這里顯示的是200
  average:平均響應(yīng)時(shí)間
  median:50%用戶的響應(yīng)時(shí)間
  90%line:90%用戶的響應(yīng)時(shí)間
  min:小響應(yīng)時(shí)間
  max:大響應(yīng)時(shí)間
  error%:本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量/請(qǐng)求總數(shù)
  throughput:吞吐量-每秒完成的請(qǐng)求數(shù)
  KB/sec:每秒從服務(wù)器接收到的數(shù)據(jù)量
  通過(guò)結(jié)果可知本次測(cè)試baidu網(wǎng)站在負(fù)載達(dá)到20 QPS時(shí)的200個(gè)請(qǐng)求平均響應(yīng)時(shí)間為61sec,通過(guò)
  接下來(lái)我們來(lái)看看如何根據(jù)我們的場(chǎng)景需要,進(jìn)行腳本錄制和測(cè)試
  五.使用badboy錄制腳本
  1.badboy介紹
  Badboy是一款不錯(cuò)的Web自動(dòng)化測(cè)試工具,如果你將它用于非商業(yè)用途,或者用于商業(yè)用途安裝Badboy 的機(jī)器數(shù)量不超過(guò)5臺(tái),你是不需要為它支付任何費(fèi)用的。Badboy提供了將Web測(cè)試腳本直接導(dǎo)出生成JMeter 腳本的功能,并且這個(gè)功能非常好用,下面我們來(lái)看如何使用badboy錄制一個(gè)JMeter腳本,并供JMeter使用
  2.badboy安裝
  1.通過(guò)Badboy的官方網(wǎng)站下載Badboy的新版本http://www.badboy.com.au/
  2.安裝Badboy。安裝過(guò)程同一般的Windows 應(yīng)用程序沒(méi)有什么區(qū)別,安裝完成后你可以在桌面和Windows開(kāi)始菜單中看到相應(yīng)的快捷方式——如果找不到,可以找一下Badboy安裝目錄下的Badboy.exe 文件,直接雙擊啟動(dòng)Badboy
  3.使用badboy錄制腳本
  1.啟動(dòng)Badboy,你可以看到下面的界面
  在地址欄中輸入你需要錄制的Web應(yīng)用的URL——http://www.baidu.com

  2.點(diǎn)擊 開(kāi)始錄制 按鈕(圖中藍(lán)色圓圈標(biāo)注的部分)開(kāi)始錄制
  開(kāi)始錄制后,你可以直接在Badboy內(nèi)嵌的瀏覽器(主界面的右側(cè))中對(duì)被測(cè)應(yīng)用進(jìn)行操作,所有的操作都會(huì)被記錄在主界面左側(cè)的編輯窗口中(圖中黃色方框標(biāo) 注的部分)——在這個(gè)試驗(yàn)中,我們?cè)赽aidu的搜索引擎中輸入 JMeter 進(jìn)行搜索。不過(guò)錄制下來(lái)的腳本并不是一行行的代碼,而是一個(gè)個(gè)Web對(duì)象——這有點(diǎn)像LoadRunner的VuGen中的Tree View視圖

  3.錄制完成后,點(diǎn)擊工具欄中的“停止錄制”按鈕(圖中紫色方框標(biāo)注的部分),完成腳本的錄制。選擇“File -> Export to JMeter”菜單,填寫(xiě)文件名“baidu.jmx”,將錄制好腳本導(dǎo)出為JMeter腳本格式。

  4.啟動(dòng)JMeter并打開(kāi)剛剛生成的測(cè)試腳本,可以用JMeter進(jìn)行測(cè)試了。

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd