JMeter入門

JMeter簡介

JMeter基本概念

Apache JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設(shè)計用于Web應(yīng)用測試,但后來擴展到其他測試領(lǐng)域。 它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對象、數(shù)據(jù)庫、FTP 服務(wù)器, 等等。JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達式創(chuàng)建斷言。

為什么要使用JMeter

  • 開源免費,基于Java編寫,可集成到其他系統(tǒng)可拓展各個功能插件
  • 支持接口測試,壓力測試等多種功能,支持錄制回放,入門簡單
  • 相較于自己編寫框架活其他開源工具,有較為完善的UI界面,便于接口調(diào)試
  • 多平臺支持,可在Linux,Windows,Mac上運行

JMeter安裝配置

Windowns下安裝

  1. 點擊下載,根據(jù)自己將要使用的平臺,下載相應(yīng)的文件
    Jmeter1.jpg
  2. 安裝JDK,配置環(huán)境變量
  • JAVA_HOME【C:\Program Files\Java\jdk1.8.0_73】
  • classpath【.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar】
  • Path【;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;】
  1. 解壓下載的JMeter壓縮包,打開/bin/jmeter.bat


    Jmeter2.jpg

    Jmeter3.jpg

配置環(huán)境變量
JMETER_HOME【E:\1-必備工具\35-JMeter\apache-jmeter-4.0】
Path【;%JMETER_HOME%\bin】

其它平臺安裝

與windowns一致,除打開入口不同,如Linux下/bin/jmeter.sh

JMeter目錄結(jié)構(gòu)

Jmeter4.jpg
  1. bin目錄常用文件介紹
  • examples:目錄下包含Jmeter使用實例
  • ApacheJMeter.jar:JMeter源碼包
  • jmeter.bat:windows下啟動文件
  • jmeter.sh:Linux下啟動文件
  • jmeter.log:Jmeter運行日志文件
  • jmeter.properties:Jmeter配置文件
  • jmeter-server.bat:windows下啟動負載生成器服務(wù)文件
  • jmeter-server:Linux下啟動負載生成器文件
  1. /docs目錄——Jmeter幫助文檔
  2. /extras目錄——提供了對Ant的支持文件,可也用于持續(xù)集成
  3. /lib目錄——存放Jmeter依賴的jar包,同時安裝插件也放于此目錄
  4. /licenses目錄——軟件許可文件,不用管
  5. /printable_docs目錄——Jmeter用戶手冊

JMeter插件安裝

JMeter插件安裝很簡單,只需要下載相應(yīng)的插件解壓即可。

  1. 點擊下載
  2. 下載后解壓放入:apache-jmeter-2.12\lib\ext\目錄下
  3. 重啟jmeter

數(shù)據(jù)庫鏈接驅(qū)動如果需要需要專門下載,例如mysql需要jdbc的jar包,地址:http://dev.mysql.com/downloads/file/?id=462850
使用注意事項:添加第三方插件并使用后保存的jmx文件在未添加該插件的運行環(huán)境下會導(dǎo)致無法打開該文件并報錯,請保持環(huán)境一致性。

JMeter命令行模式

  1. 配置環(huán)境變量
    JMETER_HOME 【E:\1-必備工具\33-雜亂工具\apache-jmeter-4.0】
    path 【;%JMETER_HOME%\bin】
  2. 命令:
    jmeter -n -t <testplan filename> -l <listener filename>
  3. 參數(shù):
    -h 幫助 -> 打印出有用的信息并退出
    -n 非 GUI 模式 -> 在非 GUI 模式下運行 JMeter
    -t 測試文件 -> 要運行的 JMeter 測試腳本文件
    -l jtl文件 -> 記錄結(jié)果的文件
    -r 遠程執(zhí)行 -> 啟動遠程服務(wù)
    -H 代理主機 -> 設(shè)置 JMeter 使用的代理主機
    -P 代理端口 -> 設(shè)置 JMeter 使用的代理主機的端口號
    -j 日志文件->設(shè)置JMeter日志文件的名稱

JMeter分布式測試(windows下)

作為一個純 JAVA 的GUI應(yīng)用,JMeter 對于CPU和內(nèi)存的消耗還是很驚人的,所以當(dāng)需要模擬數(shù)以千計的并發(fā)用戶時,使用單臺機器模擬所有的并發(fā)用戶就有些力不從心,甚至還會引起JAVA內(nèi)存溢出的錯誤。不過,JMeter 也可以像 LoadRunner 一樣通過使用多臺機器運行所謂的 Agent 來分擔(dān) Load Generator 自身的壓力,并借此來獲取更大的并發(fā)用戶數(shù)。

  1. 在所有期望將JMeter作為Load Generator(負載生成器)的機器上安裝JMeter,并確定其中一臺作為Controller,其他的機器作為Agent。然后運行所有Agent機器上的JMeter-server.bat文件(假定使用192.168.0.11和192.168.0.12作為Agent,Agent機器上必須安裝JDK,并設(shè)置環(huán)境變量)
  2. 在Controller機器的%JMETER_HOME%\bin下,找到JMeter.properties文件,編輯該文件,查找“remote_hosts=”這個字符串,可以找到這樣一行“remote_hosts=127.0.0.1”。其中的127.0.0.1表示運行JMeter Agent的機器,這里需要修改成為“remote_hosts=192.168.0.11:1099,192.168.0.12:1099”(其中1099為端口號)。一般資料顯示1644為JMeter的Controller和Agent之間進行通訊的RMI端口號,但是在測試時發(fā)現(xiàn)設(shè)置的1644運行不成功,改成1099后運行通過。
  3. 雙擊啟動Controller機器上的jmeter.bat,選擇菜單Rum->Remote Start,將會看到有兩臺Agent。

常見問題:

  1. 確定在controller機器上安裝jdk,版本和jmeter一致,配置環(huán)境變量:Java_home等
    在Agent機器上安裝jdk,配置環(huán)境變量:Java_home和JMeter_home
  2. 在Controller端上控制某臺機器Run,提示"Bad call to remote host"。
    解決方法:檢查被控制機器上的jmeter-server有沒有啟動,或者JMeter.properties中remote_hosts的端口配置錯誤。
  3. Agent機器啟動Jmeter_server.bat時,后臺提示:"could not find ApacheJmeter_core.jar"
    解決方法:確定在Agent機器安裝jdk,并設(shè)置環(huán)境變量:java_home、path、classpath和jmeter_home
  4. 查看1099端口是否被占用
    netstat -ano | findstr "1099"
    tasklist | findstr "1099"
  5. 啟動遠程時,報錯:


    Jmeter6.jpg

    只要將本機的jmter-server.bat執(zhí)行即可。要是在jmeter.properties配置的地方寫了127.0.0.1 的話就要開本機的 jmeter-sever.bat.。不寫的話就不用開了。

JMeter使用

  1. 切換中文
  • 【Options】--> 【Choose Language】--> 【Chinese】


    Jmeter5.jpg
  • Jmeter_home/bin/jmeter.properties,設(shè)置language=zh_CN
  1. 正則表達式

    Jmeter9.jpg

    引用名稱:代表下一個請求要引用的參數(shù)名稱,如填寫“openid”,那么則可用“${openid}”引用它。
    正則表達式:
    ():括起來的部分就是要取的
    . :匹配任何字符
    +:一次或多次
    ?:在找到第一個匹配項后停止
    模板:用$$引起來,$2$表示取第2個值給openid
    匹配:匹配多個值時,0代表隨機取值,1代表取第一個
    缺省值:如果參數(shù)沒有取到值,那就默認給它一個值

  2. 圖形結(jié)果

    圖形結(jié)果.jpg

    樣本數(shù)目:總共發(fā)送到服務(wù)器的請求數(shù)。
    最新樣本:代表時間的數(shù)字,是服務(wù)器響應(yīng)最后一個請求的時間。
    吞吐量:服務(wù)器每分鐘處理的請求數(shù)。
    平均值:是總運行時間除以發(fā)送到服務(wù)器的請求數(shù),即每個請求的平均響應(yīng)時間。
    中間值:是代表時間的數(shù)字,有一半的服務(wù)器響應(yīng)時間低于該值而另一半高于該值。
    偏離:表示服務(wù)器響應(yīng)時間變化、離散程度測量值的大小,即數(shù)據(jù)的分布。

  3. 聚合報表

    聚合報告.jpg

    90%line:90%的響應(yīng)時間都比這個時間小
    Min:代表時間的數(shù)字,是服務(wù)器響應(yīng)的最短時間。
    Max:代表時間的數(shù)字,是服務(wù)器響應(yīng)的最長時間。
    Error%:請求的錯誤百分比。
    KB/sec:是每秒鐘請求的字節(jié)數(shù)。

  4. 操作mysql數(shù)據(jù)庫
    操作數(shù)據(jù)庫基本有四個步驟:

  • 導(dǎo)入mysql的jdbc的jar包,存放到\apache-jmeter-4.0\lib下;
  • 創(chuàng)建數(shù)據(jù)庫的連接配置,線程組里添加配置元件-JDBC Connection Configuration;


    JDBC.jpg
  • 線程組里添加jdbc request,寫sql語句;


    JDBC_1.jpg
  • 添加察看結(jié)果樹,點擊啟動按鈕,就能看到執(zhí)行的SQL。


    JDBC_2.jpg

    特別說明:jmeter還可以操作oracle、postgreSQL、msSQL、mongodb等等數(shù)據(jù)庫,同時不同的數(shù)據(jù)庫,JDBC Connection Configuration填寫的Database url格式和JDBC Driver驅(qū)動名稱也不相同。jmeter數(shù)據(jù)庫驅(qū)動列表如下表所示:


    JDBC_3.jpg

    JDBC Driver class是固定的,Jmeter操作各類數(shù)據(jù)的Driver參考下圖;
    jdbc_4.jpg
  1. jmeter3.2以后沒有SOAP/XML-Request

  2. Jmeter的參數(shù)化方法

  • 利用函數(shù)助手獲取參數(shù)值
    選項->函數(shù)助手對話框
    __CSVRead
    生成的函數(shù)字符串: ${__CSVRead(,)}第一個參數(shù)是文件名(包含路徑),第二個參數(shù)是文件中的列(列數(shù)從0開始);
    csvread.jpg

    csvread1.jpg

__Random
生成的函數(shù)字符串:${__Random(,,)}第一個參數(shù)為隨機數(shù)的下限,第二個參數(shù)為隨機數(shù)的上限,第三個參數(shù)為儲存隨機數(shù)的變量名;

random.jpg

r.jpg

  • 利用配置元件(CSV Data Set Config)
    選中線程組,右擊,添加->配置元件->CSV Data Set Config


    csv.jpg

選中線程組,右擊,添加->sampler->HTTP 請求,在http請求參數(shù)中引用變量


http.jpg
  • 用戶自定義變量
    選中純種組,右擊,添加->配置元件->用戶自定義變量


    用戶自定義變量.jpg
  1. HTTP Cookie Manager
    用于需要登錄cookie的接口中

JMeter使用注意事項

  1. 變量問題
    使用過程中,一定要注意控件的執(zhí)行順序以及變量的作用域。

  2. 路徑問題
    Windows下支持"/"""并存模式,推薦使用"/",方便跨平臺使用。
    在linux格式下支持"/"格式。

  3. Jmeter自身性能問題
    命令行模式:命令相同。
    UI模式:操作方式相同,但會存在windows下能打開linux下打不開的情況,暫不知道原因。

監(jiān)控內(nèi)存及CPU等(jconsole)

  1. 直接點擊:開始——》運行——》輸入cmd——》然后在出現(xiàn)的命令行界面輸入“jconsole”即可彈出一個【java監(jiān)視和管理控制臺】


    3.jpg
  2. 選擇本地進程,并點擊一下sun.tools.jconsole.JConsole這一行,然后點擊連接
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在使用Jmeter進行接口的性能測試時,由于Jmeter 是JAVA應(yīng)用,對于CPU和內(nèi)存的消耗比較大,所以,當(dāng)需...
    燕京博士閱讀 4,309評論 0 16
  • 轉(zhuǎn)自:http://www.itdecent.cn/p/ce0e4cf5dbc7 首先了解下什么是接口測試: 一、...
    夜境閱讀 708評論 1 1
  • 本文版權(quán)歸xmeter.net[http://www.xmeter.net]所有。歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處。 簡介...
    XMeter性能測試云服務(wù)閱讀 205,792評論 29 204
  • 我終于將戴了三年的碧玉珠取了下來,轉(zhuǎn)身換上了一根純金項鏈,墜子也是金的。看著鏡子里畫風(fēng)陡轉(zhuǎn)的人,陌生到想要落淚。 ...
    繹如閱讀 289評論 0 2
  • 我的家鄉(xiāng)位于華北平原腹地,西有魏巍太行,北有起伏燕山,東可觀浩瀚渤海,實乃沃野千里之地,人杰地靈之鄉(xiāng)。 這里自古就...
    地中海的傳說閱讀 1,344評論 0 2

友情鏈接更多精彩內(nèi)容