Jmeter壓力測試:菜鳥的性能測試成長之路

2020-12-05 51Testing軟體測試網

做軟體測試,專項測試是必不可少的一部分任務,此前文章只能跟推送過Apache Bench,接下來我會利用Apache Jmeter來進行壓力測試。

那麼接下來我要對我們的測試伺服器進行壓力測試,包括登錄前的頁面和登錄後的頁面,主要目的是測試負載均衡的實現效果。在網上也參考了不少資料,我把能踩的坑都踩了一遍,也算是能從坑裡爬出來了,至少是能實現了當初的目標。

安裝Jmeter

我用的版本是3.0版本,在這裡建議大家和我一樣,不要輕易使用最新版本,次新版本就可以了,因為最新版本有可能和其他插件和環境還不能很好兼容。至於怎麼安裝就不闡述了,網上有大把的教程。要注意的是,由於Jmeter是用Java語言編寫的,所以同時也要把java環境部署好。安裝好了之後,Jmeter的bin目錄下有個Jmeter.bat文件,雙擊就能運行了。

首次打開Jmeter頁面

未登錄測試

運行軟體之後,我們右擊「測試計劃」——「添加」——「Threads(Users)——線程組」,這樣就建好了一個線程組了,作用當然是用來跑線程。

有了線程組之後,我們再右擊線程組,「添加」——「配置元件」——「http請求默認值」,在這裡面可以設置一些常用的默認的設置,這裡我輸入我們的測試伺服器的IP或域名,這裡我輸入「10.1.xx.xx」,埠號則輸入「6502」,(因為我要測試的地址是:10.1.xx.xx:6502)協議是「http」,如果要測試的網址是https開頭那就填「https」,其他則默認,這時候點擊左上角保存會彈出一個保存框,這是讓你保存你現在所做的測試配置,以後需要再測試的話的直接打開保存的jmx文件就行了。

保存完了之後,我們再右擊「線程組」——「添加」——「Sampler」——「http請求」。這裡和剛才的「http請求默認值」不是一樣的嗎?剛剛那個只是默認值,只是用來設置一些默認配置。真正發起請求的是「http請求」,在http請求裡面我們在「路徑」裡面輸入斜槓「/」就ok了,表示默認路徑,IP那一欄就不用輸入了。這是因為在http請求默認值裡面已經輸過IP位址,以後可以新建多個http請求,只要修改路徑就行了,這樣就可以訪問同一個網站的不同頁面,這就是「http請求默認值」的意義所在,把一些共用的設置寫一遍就好了。

接著,我們再右擊「線程組」——「添加」——「監聽器」——「察看結果數」,在這裡可以查看到http請求和結果。每次新建組件和修改配置信息都要點擊保存,頁面配置圖如下所示:

http請求默認值

http請求

接下來點擊工具欄的綠色運行按鈕,就可以在「察看結果樹」中看到結果了。

察看結果樹的結果

我們新建的「http請求」返回結果200,表明請求成功,從綠色打鉤也能看出,上圖中的下拉列表框可以選擇顯示格式,我們選擇HTML,切換到「響應數據」就可以看到返回的頁面。

設置線程並發數

接下來點擊「線程組」可以看到線程組的設置頁面,默認設置是1個線程,1秒啟動,循環1次。線程數表示啟動多少個線程,Ramp-Up Period表示花多長時間啟動所有線程,循環次數表示每個線程的執行次數。例如,我設置線程數為3,Ramp-Up Period為6,循環次數3,表示軟體將在6秒內啟動3個線程,也就是2秒啟動1個線程,每個線程執行3次請求。

線程並發設置

此外還可以勾選「調度器」,比如我填入持續時間50,啟動延遲0,將循環次數勾選「永遠」,表示線程立即啟動,執行50秒後停止。要注意,如果設置了持續時間和啟動延遲,那麼下面的啟動時間和結束時間就不起作用了,就不用管了,點擊運行即可。

設置其他監聽器

之前僅僅設置了「察看結果樹」這個監聽器,這時候可以右擊「線程組」——「添加」——「監聽器」,裡面有很多監聽器可供選擇,比如圖形結果,用表格查看結果,聚合報告等等,這些都是反映測試過程的指標數據。圖形結果以圖形的形式顯示吞吐量、偏移、平均值等信息,表格結果顯示每一次請求的時間,返回,發送字節數,連接時間等等,聚合報告裡面顯示總體請求的吞吐量,錯誤率等等。下圖為表格結果的樣式。

用表格察看結果

可以看出,圖中顯示了9個Http請求,分別由3個線程執行,每個線程執行3次,正好符合我們對於線程組的設置。圖中每一列的含義分別表示請求序號,開始時間,線程序號,請求名,請求所花的時間,請求狀態,請求字節數,發送字節數,等待時長,連接時間。

聚合報告如下圖所示,每一列的含義分別表示請求名稱,請求總數,請求的平均響應時間(毫秒),50%的請求的響應時間,90%的請求的響應時間,95%的請求的響應時間,99%的請求的響應時間,最小的響應時間,最大的響應時間,錯誤的請求率(錯誤請求數/總的請求數),吞吐量(每秒處理的請求數),接收的字節速率,發送的字節速率。

聚合報告

登錄測試

前面我測試的頁面是不需要登錄的,現在來測試一下登錄的操作。關於登錄需要的參數,一般來說就是用戶名和密碼,但是往往還需要其他參數,我們可以通過抓包工具Fiddler進行抓包,我們在網站中進行一次正常登錄,可以在Fiddler中看到登錄需要的post參數。例如我這裡的Fiddler中顯示我的測試頁面登錄操作post參數有txtUserName, txtUsePws, 那麼需要在「http請求」或「http請求默認值」裡面填入,下圖所示。

點擊「添加」按鈕就可以添加參數了,保存好後,我們點擊運行,就可以在察看結果樹中看到登錄成功後的頁面了,具體的操作和前面一樣的。

會話保持

進入登錄後的頁面後,還想訪問例如「個人信息」,「個人設置」等模塊,這些網頁需要登錄成功後才能訪問到,這裡就需要進行會話的保持,我們右擊「線程組」——「添加」——「配置元件」——「http cookie管理器」,要添加的內容我們可以在察看結果樹的「請求」選項卡裡面看到,裡面可以看到登錄需要的cookie,如果沒有找到cookie或cookie為空,就不用填,無須再手動配置。如圖所示。

Cookie管理器

此時,我們在http請求裡面輸入登錄後的頁面網址就可以請求成功了。

利用文件讀取訪問多個網頁

我在「http請求」的路徑裡面填入的是我要訪問的網頁,每次只能填一個。假如我想訪問好幾個網頁,例如首頁,通知頁,介紹頁等等,除了新建http請求外,我們還可以將這些網頁的地址存儲在TXT文件裡。例如在我的測試伺服器上,想要訪問Preloan/xxx, LoanManage/xxx, AfterLoan/xxx等頁面,如下:

TXT存放多個地址

網址填入後,我們在Jmeter裡面的「選項」——「函數助手對話框」——「StringFromFile」,將TXT的完整路徑貼到圖中位置,點擊生成,可以在框裡生成TXT文件的讀取路徑。

函數助手

我們將$開頭的那串路徑貼到「http請求」的路徑裡面,就可以訪問到TXT裡面的所有網頁了,如圖所示。

伺服器狀態實時監聽

上面介紹了幾個Jmeter自帶的監聽器,但是我發現,裡面顯示的指標好像都不是我特別需要的。

目前我更關心我的請求執行過程中伺服器狀態的改變,例如CPU,內存,磁碟,網絡,TPS,響應時間圖等等,因為這才是壓力測試的目的所在,伺服器狀態隨著請求增加的變化曲線才是我們更加需要看到的。

想看到伺服器變化的曲線圖,需要下載JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,將這兩個jar包放入Jmeter的安裝路徑下的lib/ext/下面,重啟Jmeter後,右擊「線程組」——「添加」——「監聽器」,這時候可以看到多了好多監聽器,大多數以「jp@gc」開頭的監聽器。

這裡選擇「PerfMon Metrics Collector」,裡面將會顯示伺服器的狀態信息,現在還看不到,因為要測試的伺服器需要安裝一個包,叫ServerAgent.zip,譬如我的伺服器是Windows的,我將ServerAgent在伺服器中解壓,運行裡面的StartAgent批處理文件就可以了。到這裡也要注意一點,因為這個文件是屬於Jmeter的插件,所以測試伺服器也要裝上Java的jdk文件才可以運行起來。啟動起來後如下所示:

伺服器端的服務啟動

ServerAgent的默認埠是4444,按下圖填入伺服器的地址和埠號,以及需要監控的硬體,如CPU,內存,磁碟,網絡等等。

PerfMon Metrics Collector

OK,接下來點擊運行,可以在chart下看到伺服器的狀態變化曲線如下:

Chart

其實監聽器裡面還有很多其他的曲線,比如TPS曲線,響應時間曲線等等,都可以自己添加。到這裡,基本已經實現了當初想要的指標和目的了。

題外話:

其實我發現如果是單臺伺服器測試的話,用我們測試伺服器自帶的性能監視器會更好用,數據也更全面一些。不過不同公司的測試環境不一樣,按自己的需求來走就好。

性能監視器

相關焦點

  • 如何用Jmeter做壓力測試
    Jmeter是一個性能測試工具,同loadrunner類似,他功能較多,我們常用的功能是用jmeter模擬多瀏覽器對網站做壓力測試。下載jmeter地址 :http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi我們一般的網站,在進入業務功能前先需登錄,然後才能訪問業務功能。下面介紹如何用jmeter登錄系統再對主業務做壓力測試。1. 運行jmeter2. 左邊樹將出現測試計劃、工作檯兩根節點。
  • 軟體測試中的性能測試 負載測試 壓力測試
    1.之前有做過性能測試嗎,做過的話是做了哪些呢這個可以說使用常用的工具(jmeter,loadrunner)來完成,也可以說用的第三方軟體(這種普遍都是傻瓜型軟體,直接裝好就能用,騰訊gt等)。jmeter可以通過線程組驅動多個線程,運行測試腳本對被測伺服器發起負載,每個負載機都可以運行多個線程組。控制機:參與腳本的運行,可以指揮遠程負載機運行,收集遠程負載機的測試結果。
  • 10大主流壓力/負載/性能測試工具推薦
    ,為了保證網際網路產品的服務交付質量,往往還需要做壓力/負載/性能測試。那麼網際網路產品為什麼要進行壓力/負載/性能測試,又有哪些工具幫我們實現呢,本文將為您細說端詳。壓力/負載/性能測試之異同在產品研發過程中,常常會混淆壓力/負載/性能測試這三者之間的區別,這三種測試到底有什麼不同呢?
  • 「雙十一」,馬雲給菜鳥網絡的壓力測試-虎嗅網
    比如傳統的服裝企業,就常年遭受庫存壓力,這個消耗周期往往以年計算,這個成本更是可怕,幾乎所有的成本都壓在了庫存,對於資金鍊的壓力是極大的。 在電商銷售過程中,除了經驗之外,如何判斷銷量的變化和重點城市的庫存數量,超配和少配都是令人頭疼的事情。
  • 軟體測試工具有哪些?10款常見的軟體測試工具推薦
    、MaxQ、WebInject開源性能自動化測試工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web ApplicaTIon Load SimulatorQuality Center:基於Web的測試管理工具,可以組織和管理應用程式測試流程的所有階段
  • 壓力測試是什麼?為什麼要壓力測試?怎麼使用壓力測試?
    想必很多人在第一次接觸壓力測試時都會發出如同題目中的疑惑,壓力測試是什麼?為什麼要進行壓力測試?我第一次接觸壓力測試是在電腦突然死機的情況下,裝機師傅給我重裝系統後進行了壓力測試後才有所了解;這時候才知道壓力測試的必要性。
  • 常用軟體性能測試工具
    【IT168技術資訊】  目前市場上的性能測試的工具種類很多,可以簡單的劃分為以下幾種:負載壓力測試工具、資源監控工具、故障定位工具以及調優工具。  1.主流負載性能測試工具  負載性能測試工具的原理通常是通過錄製、回放腳本、模擬多用戶同時訪問被測試系統,製造負載,產生並記錄各種性能指標,生成分析結果,從而完成性能測試的任務。  主流的負載性能測試工具有:  QA Load:Compuware公司的QALoad是客戶/伺服器系統、企業資源配置(ERP)和電子商務應用的自動化負載測試工具。
  • 如何壓力測試電子商務網站?
    您想快速、準確地定位電子商務網站中潛在的性能瓶頸嗎?思博倫通信專業化測試服務部一定可以幫到您。數月前,2014巴西世界盃在我們的最大電視媒體一場場直播和互動節目的伴隨下曲終人散。為了保證該媒體《xx贏》——這個球迷的掌中娛樂大餐在世界盃期間能順暢服務於千百萬手機球迷答題互動,思博倫專業化測試服務團隊應邀與《xx贏》網站開發團隊一起,伴著機房的隆隆聲,對網站系統進行了全面的仿真測試。為《xx贏》手機網站的優化提供了重要的分析依據,為該網站的性能優化做出了突出貢獻。
  • 不懂性能測試,被面試官掛了……
    本文將為大家詳細介紹性能測試主要類型、性能測試流程規劃以及面對項目如何開展性能測試策略,如何設計不同場景下的性能測試用例,助你從此遠離性能測試的盲區。 性能測試類型 性能測試主要有[負載測試],[壓力測試],[容量測試]和[可靠性/可恢復性測試]這四大主要類型,下面將對這四大主流性能測試類別逐一展開介紹:
  • 得軟體測試的門檻低?工程師有話說
    而且對於企業來說,時間就是金錢,產品上線的速度對於企業至關重要,但同等的工作讓手工測試人員來做需要花費的時間要遠遠多於中高級測試開發工程師,所以企業需要能夠節約成本,提高產品質量和上線速度的測試開發工程師,這就要求測試人員至少要會一種程式語言,需要用程式語言在測試中開發一些測試工具,編寫測試腳本,能夠更全面的保證產品的質量,上線之後帶給用戶更好的體驗。
  • jmeter(八)-參數化(一)
    什麼是參數化   參數化:是測試腳本的一種常用技巧,可將腳本中的某些輸入項使用參數來代替,在腳本中指定參數的取值範圍和規則等。  1.2.   用戶參數-不勾選,每次迭代更新一次;測試結果  勾選時,測試結果:
  • 好消息,星際飛船SN8通過低溫壓力測試,接下來靜態火力測試
    近日,SpaceX老闆馬斯克公布一條關於星際飛船的好消息,稱第一架高空飛行星際飛船原型SN8終於在10月8日通過了低溫壓力測試,SN8是大家一直都很期望的星際飛船,因為不再是之前的在2020年10月,星際飛船原型SN8在首次擺動大型後襟翼後,就開始準備進行低溫壓力測試
  • EMC測試_電波暗室的性能指標及測試
    電波暗室主要有三個性能指標,每個指標都對應不同的測試項目,如圖a所示。EMC測試電波暗室的性能指標1)歸一化場地衰減(NSA)測試:電波暗室在牆面和天花板的鐵氧體及角錐吸波材料安裝完畢後,應該進行場地性能的測試。
  • 後網際網路時代Web應用壓力測試最佳方案
    然而部署在防火牆內部的傳統壓力測試產品,無法滿足混合環境下的複雜應用全鏈路性能測試需求,更不能從真實用戶體驗入手對真實生產環境進行「全覆蓋」式的深度性能追蹤。因此,無論是網際網路企業還是進行數位化轉型的傳統企業,都需要更加真實、全面、深度的壓力測試方法來滿足網際網路服務敏捷開發、持續交付的需求。
  • 高效液相色譜儀性能的測試方法
    一、範圍 本標準規定了高效液相色譜儀主要性能的測試方法。本標準適用於高效液相色譜儀(HPLC)、超高效液相色譜儀(UPLC)。本標準測試方法分為單元部件和儀器整機兩部分。四、單元部件性能指標的測試4.1 恆流泵4.1.1 密封性4.1.1.1 設備與試劑高壓截止閥一個,耐壓不小於儀器壓力上限 120%;精密壓力表一個,量程不小於儀器壓力上限的 120%,0.4 級;三通一個
  • 採用RS-485總線實現對多臺測試裝置進行土工膜水力性能測試
    它的滲透係數和耐靜水壓是土工膜水力性能的主要指標,因此在質量檢測中是國家標準要求的必測項目。在工程應用中,土工膜在一定水壓下不能破裂,還要保證最小的滲透率,防止水的流失。為了在施工前就能確定某一種土工膜是否符合工程需要,必須在實驗室中對所使用的土工膜進行測定。其測試裝置要求較高,測試過程複雜,國家標準要求每組試樣不得少於五塊。
  • 開發三年轉測試,除了Python基礎外,還需哪些必備測試技能?
    所以,一名優秀的測試開發工程師是必須具備優秀的代碼能力,甚至知識面是需要比普通的開發人員更廣的,比如他需要熟悉自動化測試、伺服器部署、網絡架構、軟體性能、軟體安全等等方面的知識。所以開發工程師轉測試之後可做的內容非常的多,測試這塊領域也需要更多有開發背景的人員加入。
  • SpaceX 對 SN7.1 的壓力極限測試成功!!
    北京時間 24 日凌晨,SpaceX 在位於德克薩斯州的飛船工廠內,給名為 SN7.1 的宇宙飛船原型機連續添加液氮,經過長達 7 小時左右的低溫加壓測試,SN7.1 終於在巨大壓力下爆炸其實今天被成功爆破的 SN7.1 在登場之前已經被賦予了悲壯的使命:裝載新型的燃料艙並進行極限低溫加壓測試,直至爆炸,以獲得極限的壓力數據。
  • 基於RS485總線的土工膜水力性能測試系統
    它的滲透係數和耐靜水壓是土工膜水力性能的主要指標,因此在質量檢測中是國家標準要求的必測項目。在工程應用中,土工膜在一定水壓下不能破裂,還要保證最小的滲透率,防止水的流失。為了在施工前就能確定某一種土工膜是否符合工程需要,必須在實驗室中對所使用的土工膜進行測定。其測試裝置要求較高,測試過程複雜,國家標準要求每組試樣不得少於五塊。
  • R407C組分質量誤差對壓縮機性能測試
    隨著企業競爭日益激烈,家電行業提出「零缺陷生產」,主導產品之一的空調,其性能測試手段、可靠性、自動化程度都得到了顯著提高。壓縮機內氣體流動十分複雜,目前不能單純用理論計算方法準確地計算壓縮機性能及各種損失。因此用實驗方法進行壓縮機性能測試顯的尤為重要。