JMeter 簡單回顧

之前公衆號推文一上手就分享如何測接口, 其實忽略了一些概念性的東西, 今天來給大家拾遺補缺, 做個回顧吧.


一. JMeter介紹

jmeter能做什麼,來自官網的解釋:

Ability to load and performance test many different applications/server/protocol types:

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET …)

  • SOAP / REST Webservices

  • FTP

  • Database via JDBC

  • LDAP

  • Message-oriented middleware (MOM) via JMS

  • Mail - SMTP(S), POP3(S) and IMAP(S)

  • Native commands or shell scripts

  • TCP

  • Java Objects

Jmeter可以模擬大量負載測試網絡或者對象, JMeter是用java語言開發的application,比較消耗memory和CPU, 當模擬大併發用戶時候, 單臺模擬就有些力不從心. 同時jmeter可以幫助我們進行迴歸測試, 通過測試腳本和斷言來驗證程序返回的預期值.


JMeter與 LR 比較:

Jmeter是apache 組織下的開源測試工具(長得不太英俊),  與LR比較有很多不足, 但是它具備很多優點, 讓無數測試工程師對它欲罷不能, 而放棄了LR的華而不實(雖然很帥, 但功能太多,上手困難).

  1. 開源, 就意味着免費

  2. 小巧, 相比LR的龐大(好幾個G的安裝包),jmeter非常小巧, 無需安裝, 僅java環境

  3. 功能強大, 一個簡單的web性能測試工具, 不斷更新擴展, 可以完成DB, FTP, LDAP, webservice, TCP 等測試, 還可以自由擴展豐富插件.

  4. 跨平臺, 可以在任意系統上運行, Linux, Unix, Mac os, Ubuntu, centos, windows等.

LR運行環境無法脫離windows, 且是商業收費軟件.

缺點:

Jmeter不支持IP欺騙, LR支持.

結果分析能力相對LR不夠詳細.


二 .Jmeter 下載安裝

1)安裝

官網提供jmeter 版本下載: http://jmeter.apache.org/

jmeter 3.2以後版本都需要jdk1.8 環境

2)插件安裝

下載插件後到%jmeter_home%/lib/ext目錄下, 重啓jmeter即可生效

3)運行jmeter

1. 進入bin目錄運行jmeter

windows環境, 進入jmeter/bin 目錄, jmeter.bat即可運行jmeter

Mac os, Ubuntu等環境, 進入jmeter/bin 目錄, 點擊jmeter 即可運行jmeter

2.語言選擇

菜單: 選項->選擇語言->選擇個人喜好的語言

3. classPath

如果是自己開發的jar包在jmeter中使用, 那方法和插件是一樣的, 放在lib/ext目錄下

三.Jmeter測試計劃

1)test plan

打開jmeter默認已經創建了測試計劃

來自官網的說明, 可以創建多種test plan

2) Threads

  • setup Thread Group

是所有真正開始線程併發之前的準備工作,必須是在線程組開始之前完成並且擁有自己獨立的線程設置;setUp Thread Group類似於lr的init.可用於執行預測試操作。

  • teardown thread group

是所有線程執行測試結束後執行定期的線程組. 擁有自己獨立的線程設置;

tearDown Thread Group類似於lr的end.可用於執行測試後動作。

  • thread group

我們通常添加運行的線程。可以看做是一個虛擬用戶組,線程組中的每個線程都可以理解爲一個虛擬用戶。線程組中包含的線程數量在測試執行過程中是不會發生變化的.

Ramp-Up Period(in seconds)表示在這個時間內創建完所有的線程。如有3個線程,Ramp-Up=10秒,那麼線程的啓動時間間隔爲10/3=3.33秒. 這樣的好處是:一開始不會對服務器有太大的負載,線程組是爲模擬併發負載而設計。

循環次數:表示每個線程執行多少次請求

3)模板

模板是一個非常好用功能

點擊模板, jmeter GUI已經爲你預定好了各種test plan,選擇一個自己需要的類型, 所見即所得的創建線程組裏的內容, 你只要做的就是修修改改

這種方式爲我們節省了很多時間


4)Sampler

這個我們非常熟悉了, HTTP Request Sampler 、 FTP  Request Sampler 、TCP  Request Sampler 、 JDBC Request Sampler 等,每一種不同類型的 sampler 可以根據設置的參數向服務器發出不同類型的請求,其中還有兩種比較特殊的sampler, java sampler和Beanshell sampler

5)Timer

定時器用於設置等待時間. 等待時間是性能測試中常用的控制客戶端QPS/TPS的手段。類似於LoadRunner裏面的“thinktime”。 JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同類型的Timer。

6) Pre-Processor Elements

意爲前置處理器,用於對於取樣器進行處理,且是在sampler啓動之前執行,此處和後置處理器是有所區別的, 如用戶參數 beanshell PreProcess 等

7) Post-Processor Elements

在測試過程中,經常需要從響應數據中找到某些參數,作爲下一個請求的參數,這時候需要用到後置處理器 如正則表達式, json取樣器, beanshell PostProcess,就屬於這一類

8)  Assertions

斷言就不用多介紹了, 我們經常在使用, 同時jmeter提供豐富的斷言, 還可以組合着一起用.

9) Listeners

監聽器提供了很多豐富的結果信息, 包含圖形的和數字的, 是用來對測試結果數據進行處理和可視化展示的一系列元件, 圖形結果、查看結果樹、聚合報告、用表格察看結果都是我們經常用到的元件

10) Configuration Elements

配置元件, 類似的有csv 數據元件, http信息管理頭, http cookie管理器, 用戶定義變量, 計數器, 隨機變量等 都屬於配置元件.

配置元件在我們的線程組裏經常出現, 比如接收到的cookie可以存儲爲JMeter線程變量。要將cookie保存爲變量,需定義屬性“cookiemanager .save.cookie =true”


11) Execution order

執行順序, 來自官網的解釋

  1. Configuration elements

  2. Pre-Processors

  3. Timers

  4. Sampler

  5. Post-Processors (unless SampleResult is null)

  6. Assertions (unless SampleResult is null)

  7. Listeners (unless SampleResult is null)

12) Properties and Variables

屬性和變量, jmeter的屬性都定義在jmeter.properties,這個屬性作用域是global, 用戶也可以自定義變量


13) jmeter命令行

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

& increase Java Heap to meet your test requirements:

   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file

Check : https://jmeter.apache.org/usermanual/best-practices.html



今日精選推薦

JMeter接口測試-if控制器

JMeter數據庫操作

Jmeter接口測試-正則表達式

JMeter中文返回亂碼

Jmeter接口測試-參數化

JMeter接口測試-基礎

測試-感想



諮詢工作加微信

掃描二維碼


歡迎自薦和推薦, 需要的微信推送簡歷!

請猛戳下面二維碼瞭解更多


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章