一篇文章入門Jmeter性能測試【經典長文】

今天跟你們分享一下Jmeter性能測試,首先須要瞭解性能測試的定義是什麼,爲何要作性能測試,性能測試指標、性能測試分類是什麼呢?接下來就跟你們聊一聊這些問題。面試

一、性能測試定義

百度&知乎
性能測試是經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,二者能夠結合進行。經過負載測試,肯定在各類工做負載下系統的性能,目標是測試當負載逐漸增長時,系統各項性能指標的變化狀況。壓力測試是經過肯定一個系統的瓶頸或者不能接受的性能點,來得到系統能提供的最大服務級別的測試。
Wiki
In software quality assurance, performance testing is in general, a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
【六級】翻譯:
在確保軟件質量方面,性能測試通常來講是一種爲肯定一個系統在一些特殊工做負擔(負載)狀況下的響應和穩定性而作的測試。它能夠用來研究、測量、證實(確認)或者斷定系統的一些其餘質量屬性,好比健壯性、可靠性和資源使用(率)等。apache

二、爲何要作性能測試【面試】

一、頁面響應速度:Compuware公司分析了超過150個網站和150萬個瀏覽頁面,發現頁面響應時間從2秒增加到10秒,會致使38%的頁面瀏覽放棄率。
二、高併發:系統能承載的負荷
三、CPU使用率,太高會致使系統卡頓
四、特殊狀況:電源、網絡不穩定的狀況
總結就是一句話:爲了確保軟件(App、網站)在用戶使用的過程當中運行流暢。服務器

三、性能測試指標和分類【面試】

3.1 指標

一、響應時間:評估系統的能力,主要從測試結果中的負荷和響應時間
二、吞吐量/率:發送消息,根據測試過程當中的負荷或代碼走差方式找出系統的極端或繁瑣的代碼邏輯,從而找到體系中的瓶頸或薄弱地方
三、事務處理能力
1)系統調優:重複進行測試,驗證系統活動是否達到預期結果、CPU使用率、內存利用率、磁盤I/O、網絡帶寬
2)驗證穩定性和可靠性:既要驗證系統的穩定性和可靠性,還要驗證人爲因素的穩定性網絡

3.2 分類

1)負載測試:是經過逐步增長系統負載,測試系統性能的變化,並在知足最終肯定性能指標的狀況下,系統所能承受的最大負載量的測試;負載測試是正常範圍的測試
2)壓力測試:逐步增長系統負載,測試系統性能的變化,並最終肯定在什麼負載下系統性能處於失效狀態,並以此來得到系統能提供的最大服務級別的測試
3)容量測試:系統的極限或苛刻的環境中系統的性能表現併發

負載測試和壓力測試的區別:
1.負載測試強調系統正常工做狀況下的性能指標
2.壓力測試的目的是發如今什麼條件下系統的性能變得不可接受,發現應用程序性能降低的拐點ide

四、Jmeter性能測試實戰

4.1 Jmeter安裝

使用Jmeter你須要安裝:高併發

1) jdk
2)Jmeter工具

  • 系統:Windows性能

  • jdk版本

一篇文章入門Jmeter性能測試【經典長文】

Jmeter測試

一篇文章入門Jmeter性能測試【經典長文】

Java和Jmeter下載很少說了,網上有的是,並且Jmeter是解壓即用。

進入...\apache-jmeter-5.1\bin目錄,雙擊jmeter.bat啓動Jmeter,若是正常打開,則安裝成功。

4.2 Jmeter性能測試實戰【入門級】

4.2.1 接口信息

  • 接口地址

https://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試

  • 請求參數

從上面接口地址能夠看到,請求參數有兩個

ie:編碼方式,默認爲utf-8

wd:搜索詞,此處爲「jmeter性能測試」

一篇文章入門Jmeter性能測試【經典長文】

4.2.2 Jmeter腳本

  1. 右鍵點擊【測試計劃】 -> 【添加】 -> Threads(Users) -> 【線程組」】

一篇文章入門Jmeter性能測試【經典長文】

  2. 點擊線程組,可修改線程程序屬性值

一篇文章入門Jmeter性能測試【經典長文】

線程組參數詳解: 

  1. 線程數:虛擬用戶數。一個虛擬用戶佔用一個進程或線程。設置多少虛擬用戶數在這裏也就是設置多少個線程數。 
  2. Ramp-Up Period(in seconds)準備時長:設置的虛擬用戶數須要多長時間所有啓動。若是線程數爲10,準備時長爲2,那麼須要2秒鐘啓動10個線程,也就是每秒鐘啓動5個線程。 
  3. 循環次數:每一個線程發送請求的次數。若是線程數爲10,循環次數爲100,那麼每一個線程發送100次請求。總請求數爲10*100=1000 。若是勾選了「永遠」,那麼全部線程會一直髮送請求,一到選擇中止運行腳本。 
  4. Delay Thread creation until needed:直到須要時延遲線程的建立。 
  5. 調度器:設置線程組啓動的開始時間和結束時間(配置調度器時,須要勾選循環次數爲永遠) 
    持續時間(秒):測試持續時間,會覆蓋結束時間 
    啓動延遲(秒):測試延遲啓動時間,會覆蓋啓動時間 
    啓動時間:測試啓動時間,啓動延遲會覆蓋它。當啓動時間已過,手動只需測試時當前時間也會覆蓋它。 
    結束時間:測試結束時間,持續時間會覆蓋它。

由於接口調試須要,咱們暫時均使用默認設置,待後面真正執行性能測試時再回來配置。

三、添加HTTP請求

右鍵點擊「線程組」 -> 「添加」 -> 「Sampler」 -> 「HTTP請求」
一篇文章入門Jmeter性能測試【經典長文】

四、填寫腳本

一篇文章入門Jmeter性能測試【經典長文】
Http請求主要參數詳解:
一、Web服務器
協議:向目標服務器發送HTTP請求協議,能夠是HTTP或HTTPS,默認爲HTTP
服務器名稱或IP :HTTP請求發送的目標服務器名稱或IP
端口號:目標服務器的端口號,默認值爲80
2.Http請求
方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路徑:目標URL路徑(URL中去掉服務器地址、端口及參數後剩餘部分)
Content encoding :編碼方式,默認爲ISO-8859-1編碼,這裏配置爲utf-8
三、同請求一塊兒發送參數
在請求中發送的URL參數,用戶能夠將URL中全部參數設置在本表中,表中每行爲一個參數(對應URL中的 name=value),注意參數傳入中文時須要勾選「編碼」

五、添加查看結果樹

右鍵點擊「線程組」 -> 「添加」 -> 「監聽器」 -> 「察看結果樹」
一篇文章入門Jmeter性能測試【經典長文】

這時,咱們運行Http請求,修改響應數據格式爲「HTML Source Formatted」,能夠看到本次搜索返回結果頁面標題爲「jmeter性能測試_百度搜索」
一篇文章入門Jmeter性能測試【經典長文】

六、添加用戶自定義變量

咱們能夠添加用戶自定義變量用以Http請求參數化,右鍵點擊【線程組】->【添加】->【配置元件】->【用戶定義的變量】
新增一個參數wd,存放搜索詞,在HTTP請求中使用該自定義變量,用法爲:${wd}
一篇文章入門Jmeter性能測試【經典長文】

七、添加斷言

右鍵點擊【HTTP請求】->【添加】->【斷言】->【響應斷言】
一篇文章入門Jmeter性能測試【經典長文】

校驗返回的文本中是否包含搜索詞,添加參數${wd}到要測試的模式中。
一篇文章入門Jmeter性能測試【經典長文】

八、添加斷言結果

右鍵點擊【HTTP請求】->【添加】->【監聽器】-> 【斷言結果】
一篇文章入門Jmeter性能測試【經典長文】
添加好之後,注意,腳本結構是這樣的哦:
一篇文章入門Jmeter性能測試【經典長文】
執行:
一篇文章入門Jmeter性能測試【經典長文】
上圖就是斷言結果成功的界面,若是把響應斷言修改成${wd}123:
一篇文章入門Jmeter性能測試【經典長文】
執行後斷言結果爲:
一篇文章入門Jmeter性能測試【經典長文】

九、添加聚合報告

右鍵點擊【線程組】->【添加】->【監聽器】->【聚合報告】,用以存放性能測試報告
一篇文章入門Jmeter性能測試【經典長文】
這樣,咱們就完成了一個完整Http接口的JMeter性能測試腳本編寫

十、配置線程組

點擊線程組,配置本次性能測試相關參數:線程數,循環次數,持續時間等,這裏咱們配置併發用戶數爲10,持續時間爲10s
一篇文章入門Jmeter性能測試【經典長文】

十一、執行腳本、查看聚合報告

一篇文章入門Jmeter性能測試【經典長文】
若是對軟件測試、接口測試、自動化測試、面試經驗交流。感興趣能夠加軟件測試交流:1085991341,還會有同行一塊兒技術交流。

十二、分析聚合報告

  1. Label:每一個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值
  2. Samples:請求數——表示此次測試中一共發出了多少個請求,若是模擬10個用戶,每一個用戶迭代10次,那麼這裏顯示100
  3. Average:平均響應時間——默認狀況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 爲單位顯示平均響應時間
  4. Median:中位數,也就是 50% 用戶的響應時間
  5. 90% Line:90% 用戶的響應時間
  6. Min:最小響應時間
  7. Max:最大響應時間
  8. Error%:錯誤率——錯誤請求數/請求總數
  9. Throughput:吞吐量——默認狀況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也能夠表示相似 LoadRunner 的 Transaction per Second 數
  10. KB/Sec:每秒從服務器端接收到的數據量,至關於LoadRunner中的Throughput/Sec

通常而言,性能測試中咱們須要重點關注的數據有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。以上內容但願對你有幫助,有被幫助到的朋友歡迎點贊,評論。

相關文章
相關標籤/搜索