JMeter基礎(chǔ)之——一個簡單的性能測試
上一節(jié)中,我們了解了jmeter的一此主要元件,那么這些元件如何使用到性能測試中呢。這一節(jié)創(chuàng)建一個簡單的測試計劃來使用這些元件。該計劃對應(yīng)的測試需求。
1)測試目標網(wǎng)站是fnng.cnblogs.com 和 tt-topia.rhcloud.com
2)測試目的是該網(wǎng)站在負載達到20 QPS 時的響應(yīng)時間。
QPS 解釋
QPS:Query Per Second 每秒查詢率。是一臺查詢服務(wù)器每秒能夠處理的查詢次數(shù)。在因特網(wǎng)上,作為域名系統(tǒng)服務(wù)器的機器的性能經(jīng)常用每秒查詢率來衡量。
為了達成預(yù)期的測目的,需要需要在jmeter中建立一個測試計劃。因為本次測試僅要求完成對fnng.cnblogs.com 和 tt-topia.rhcloud.com 兩個博客首頁請求,因此只需要使用HTTP Request Sampler 即可。
建立測試計劃
啟動jmeter后,jmeter會自動生成一個空的測試計劃,用戶可以基于該測試計劃建立自己的測試計劃。
添加線程組
--------------------------------------------------------------------------------
一個性能測試請求負載是基于一個線程組完成的。一個測試計劃必須有一個線程組。測試計劃添加線程組非常簡單。在測試計劃右鍵彈出下拉菜單(添加-->Threads(Users)--->線程組)中選擇線程組即可。
jmeter中 每個測試計劃至少需要包含一個線程組,當然也可以在一個計劃中創(chuàng)建多個線程組,那么多個線程組之間又會怎樣的順序執(zhí)行(串行還是并行)?在測試計劃下面多個線程是并行執(zhí)行的,也就是說這些線程組是同時被初始化并同時執(zhí)行線程組下的Sampler的。
線程組主要包含三個參數(shù):線程數(shù)、準備時長(Ramp-Up Period(in seconds))、循環(huán)次數(shù)。
線程數(shù):虛擬用戶數(shù)。一個虛擬用戶占用一個進程或線程。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個線程數(shù)。
準備時長:設(shè)置的虛擬用戶數(shù)需要多長時間全部啟動。如果線程數(shù)為20 ,準備時長為10 ,那么需要10秒鐘啟動20個線程。也就是每秒鐘啟動2個線程。
循環(huán)次數(shù):每個線程發(fā)送請求的次數(shù)。如果線程數(shù)為20 ,循環(huán)次數(shù)為100 ,那么每個線程發(fā)送100次請求。總請求數(shù)為20*100=2000 。如果勾選了“永遠”,那么所有線程會一直發(fā)送請求,一到選擇停止運行腳本。
設(shè)置合理的線程數(shù)對于能否達到測試目標有決定性的影響。在本例中,要求得到網(wǎng)站首頁在20 QPS 負載情況下的響應(yīng)時間,如果如果線程數(shù)量設(shè)置的過小,則很可能無法達到設(shè)定的QPS要求。另外,設(shè)置合理的循環(huán)次數(shù)也很重要,除了上面介紹的固定循環(huán)次數(shù)與永遠外;也可以靈活的選擇設(shè)定測試運行時間。勾選“調(diào)度器”,進行調(diào)度器配置。
添加HTTP請求
--------------------------------------------------------------------------------
添加完成線程組后,在線程組上右鍵菜單(添加--->Sampler--->HTTP請求)選擇HTTP請求。對于jmeter來說,取樣器(Sampler)是與服務(wù)器進行交互的單元。一個取樣器通常進行三部分的工作:
向服務(wù)器發(fā)送請求
記錄服務(wù)器的響應(yīng)數(shù)據(jù)
記錄相應(yīng)時間信息
一個HTTP請求有著許多的配置參數(shù),下面將詳細介紹: 名稱:本屬性用于標識一個取樣器,建議使用一個有意義的名稱。 注釋:對于測試沒有任何作用,僅用戶記錄用戶可讀的注釋信息。 服務(wù)器名稱或IP:HTTP請求發(fā)送的目標服務(wù)器名稱或IP地址。 端口號:目標服務(wù)器的端口號,默認值為80 。 協(xié)議:向目標服務(wù)器發(fā)送HTTP請求時的協(xié)議,可以是http或者是https ,默認值為http 。 方法:發(fā)送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。 Content encoding:內(nèi)容的編碼方式,默認值為iso8859 路徑:目標URL路徑(不包括服務(wù)器地址和端口) 自動重定向:如果選中該選項,當發(fā)送HTTP請求后得到的響應(yīng)是302/301時,JMeter 自動重定向到新的頁面。 Use keep Alive:當該選項被選中時,jmeter 和目標服務(wù)器之間使用 Keep-Alive方式進行HTTP通信,默認選中。 Use multipart/from-data for HTTP POST:當發(fā)送HTTP POST 請求時,使用Use multipart/from-data方法發(fā)送,默認不選中。 同請求一起發(fā)送參數(shù):在請求中發(fā)送URL參數(shù),對于帶參數(shù)的URL ,jmeter提供了一個簡單的對參數(shù)化的方法。用戶可以將URL中所有參數(shù)設(shè)置在本表中,表中的每一行是一個參數(shù)值對(對應(yīng)RUL中的 名稱1=值1)。 同請求一起發(fā)送文件:在請求中發(fā)送文件,通常,HTTP文件上傳行為可以通過這種方式模擬。 從HTML文件獲取所有有內(nèi)含的資源:當該選項被選中時,jmeter在發(fā)出HTTP請求并獲得響應(yīng)的HTML文件內(nèi)容后,還對該HTML進行Parse 并獲取HTML中包含的所有資源(圖片、flash等),默認不選中,如果用戶只希望獲取頁面中的特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,這樣,只有能匹配指定正則表達式的URL指向資源會被下載。 用作監(jiān)視器:此取樣器被當成監(jiān)視器,在Monitor Results Listener 中可以直接看到基于該取樣器的圖形化統(tǒng)計信息。默認為不選中。 Save response as MD5 hash?:選中該項,在執(zhí)行時僅記錄服務(wù)端響應(yīng)數(shù)據(jù)的MD5值,而不記錄完整的響應(yīng)數(shù)據(jù)。在需要進行數(shù)據(jù)量非常大的測試時,建議選中該項以減少取樣器記錄響應(yīng)數(shù)據(jù)的開銷。 在這里我們添加兩個HTTP請求,分別用于對fnng.cnblogs.com 和 tt-topia.rhcloud.com發(fā)送請求。 設(shè)置QPS限制 -------------------------------------------------------------------------------- 本次性能測試的需求中提到測試的目的是“了解博客的首頁在負載達到20 QPS時的響應(yīng)時間”,因此需要控制向博客首頁發(fā)送請求的負載為20QPS。 一種可行的方法是逐步調(diào)整測試計劃中的線程計算的數(shù)量以及為取樣器(Sampler)添加定時器(Timer),以使HTTP取樣器發(fā)出的請求的QPS保持在20個左右。但這種方法耗時耗力,需要經(jīng)過多次嘗試才能達到;另一方法,完全通過設(shè)置定時器來控制QPS,一旦取樣器的響應(yīng)時間發(fā)生改變(網(wǎng)絡(luò)環(huán)境發(fā)生改變),就需要重新調(diào)整定時器的等待時間。 Jmeter提供了一個非常有用的定時器,稱為Constant Throughput Timer (常數(shù)吞吐量定時器),該定時器可以方便地控制給定的取樣器發(fā)送請求的吞吐量。 右鍵點擊fnng.cnblogs.com ,彈出菜單(添加--->定時器--->Constant Throughput Timer)選擇Constant Throughput Timer Constant Throughput Timer 的主要屬性介紹: 名稱:定時器的名稱 Target throughput(in samples per minute):目標吞吐量。注意這里是每分鐘發(fā)送的請求數(shù),因此,對應(yīng)測試需求中所要求的20 QPS ,這里的值應(yīng)該是1200 。 Calculate Throughput based on:有5個選項,分別是: This thread only:控制每個線程的吞吐量,選擇這種模式時,總的吞吐量為設(shè)置的 target Throughput 乘以矣線程的數(shù)量。 All active threads:設(shè)置的target Throughput 將分配在每個活躍線程上,每個活躍線程在上一次運行結(jié)束后等待合理的時間后再次運行。活躍線程指同一時刻同時運行的線程。 All active threads in current thread group:設(shè)置的target Throughput將分配在當前線程組的每一個活躍線程上,當測試計劃中只有一個線程組時,該選項和All active threads選項的效果完全相同。 All active threads (shared ):與All active threads 的選項基本相同,唯一的區(qū)別是,每個活躍線程都會在所有活躍線程上一次運行結(jié)束后等待合理的時間后再次運行。 All cative threads in current thread group (shared ):與All active threads in current thread group 基本相同,唯一的區(qū)別是,每個活躍線程都會在所有活躍線程的上一次運行結(jié)束后等待合理的時間后再次運行。 如上圖,該元件僅作用于fnng.cnblogs.com ,設(shè)置定時器的Target throughput為1200/分鐘(20 QPS),設(shè)置Calculate Throughput based on 的值為All active threads 。 當然,Constant Throughput Timer只有在線程組中的線程產(chǎn)生足夠多的request 的情況下才有意義,因此,即使設(shè)置了Constant Throughput Timer的值,也可能由于線程組中的線程數(shù)量不夠,或是定時器設(shè)置不合理等原因?qū)е驴傮w的QPS不能達到預(yù)期目標。 添加監(jiān)聽器(Listener) -------------------------------------------------------------------------------- 腳本的主要部分設(shè)置完成后,需要通過某種方式獲得性能測試中的測試結(jié)果,在本例中,我們關(guān)心的是請求的響應(yīng)時間。 Jmeter 中使用監(jiān)聽器元件收集取樣器記錄的數(shù)據(jù)并以可視化的方式來呈現(xiàn)。Jmeter有各種不同的監(jiān)聽器類型,因為上HTTP請求,我們可在添加聚合報告,更為直觀的查看測試結(jié)果。 添加聚合報告,右鍵點擊線程組,在彈的菜單(添加--->監(jiān)聽器--->聚合報告)中選擇聚合報告。 運行腳本 -------------------------------------------------------------------------------- 添加完成聚合報告后,我們來運行腳本,稍后介紹聚合報告的參數(shù)。 在運腳本之前,我們來查看一下,各個元件的參數(shù)設(shè)置: --------------------------------------------------------------- 線程組: 線程數(shù):20 準備時長:10 循環(huán)次數(shù):10 --------------------------------------------------------------- HTTP請求: 名稱:fnng.cnblogs.com。 服務(wù)器名稱或IP:fnng.cnblogs.com 端口號:80 Implementation:java 協(xié)議:http 方法:GET 路徑:/ --------------------------------------------------------------- 常數(shù)吞吐量定時器: Target throughput(in samples per minute):1200.0 Calculate Throughput based on :All active threads --------------------------------------------------------------- 點擊工具欄上的運行按鈕,或者點擊菜單欄“ 運行--->啟動 ” 或者使用快捷鍵ctrl+r 來運行程序。 聚合報告分析 -------------------------------------------------------------------------------- 查看聚合報告的運行結(jié)果: OK!到此一次完整的性能測試結(jié)束,如果你從中有所收獲,推薦一記~! 相關(guān)鏈接: JMeter基礎(chǔ)之—錄制腳本 Jmeter基礎(chǔ)之——jmeter基礎(chǔ)概念
posted on 2012-12-31 12:47 順其自然EVO 閱讀(2751) 評論(2) 編輯 收藏 所屬分類: jmeter and badboy 、性能測試