概念
(百度百科 JMeter ) Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工具。用于對(duì)軟件做壓力測(cè)試咐旧,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,但后來擴(kuò)展到其他測(cè)試領(lǐng)域室埋。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源,例如靜態(tài)文件姚淆、Java 小服務(wù)程序、CGI 腳本腌逢、Java 對(duì)象、數(shù)據(jù)庫佳鳖、FTP 服務(wù)器, 等等系吩。JMeter 可以用于對(duì)服務(wù)器妒蔚、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能肴盏。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試菜皂,通過創(chuàng)建帶有斷言的腳本來驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性但壮,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。
環(huán)境搭建
- 基于java開發(fā), 所以必須的JDK環(huán)境是要的, 在此基礎(chǔ)上下載JMeter
-
下載完成后解壓, 打開bin目錄, 雙擊執(zhí)行 jmeter.bat
界面大致介紹
這里是英文版的, 大家也可以對(duì)應(yīng)找漢化的
- Test Plan (測(cè)試計(jì)劃)
- Threads (Users)線程 用戶
- 測(cè)試片段(Test Fragment)
- 取樣器(Sampler)
- 邏輯控制器(Logic Controller)
- 配置元件(Config Element)
- ...
這里就略過簡介了, 可以自行搜索相關(guān)介紹.
腳本錄制
JMeter的腳本錄制, 大致是兩類: 一個(gè)是JMeter自身設(shè)置代理錄制, 另一個(gè)是借助其他工具錄.
web測(cè)試的腳本工具有 Badboy
這里要介紹的是通過Fiddler抓包錄制, 適合App腳本錄制.
關(guān)于Fiddler抓包的操作技巧, 這里就不介紹了. 主要講怎么結(jié)合JMeter操作, Fiddler本身是不能導(dǎo)出JMeter格式的腳本, 所以要先對(duì)Fiddler動(dòng)個(gè)手腳:
- 下載擴(kuò)展插件 提取密碼 wby5
-
打開本地Fiddler安裝目錄, windows10 默認(rèn)是C:\Users\Administrator\AppData\Local\Programs\Fiddler, 打開里面的ImportExport, 粘貼進(jìn)去
- 重啟Fiddler
-
之后可以設(shè)置手機(jī)代理, Fiddler抓取App操作的網(wǎng)絡(luò)請(qǐng)求后, 過濾出需要的請(qǐng)求, 點(diǎn)擊 "File -> Export Sessions" 導(dǎo)出JMeter腳本
- 用JMeter打開剛才導(dǎo)出的文件即可操作.
操作技巧
-
js處理器
處理器分Pre/Post, 前置/后置處理器, 看意思能猜到是對(duì)請(qǐng)求的前/后做處理.
經(jīng)常使用的場(chǎng)景就是處理請(qǐng)求里面的參數(shù)加工, 比如參數(shù)加密, 生成校驗(yàn)碼...JMeter可以支持Java的jar和JavaScript的執(zhí)行.
這里說下JS的執(zhí)行, 我們可以添加前置處理器 JSR223 PreProcessor.
添加后選擇腳本語言js, 然后在Script面板寫上我們要執(zhí)行的js方法(其他js的復(fù)雜操作大家可以去找下相關(guān)資料). 配合 Log Viewer 可以查看調(diào)試執(zhí)行結(jié)果.
順便提下js里面的JMeter變量"vars", vars的本質(zhì)是Map, 可以使用put("xxx", abc), get("xxx"), 用來設(shè)置值和取值. 這在我們下面將要用到的管理器里面很有用.
-
請(qǐng)求頭管理器
右擊線程組添加請(qǐng)求頭管理器 Header Manager.
這里的設(shè)置會(huì)對(duì)我們發(fā)起的請(qǐng)求自動(dòng)加上這個(gè)值, 達(dá)到自定義請(qǐng)求頭header設(shè)置的效果.
在管理器面板添加參數(shù), value對(duì)應(yīng)的是我們需要從js處理后的值, 用${xxx}取vars里面put進(jìn)去的值.
-
請(qǐng)求默認(rèn)設(shè)置
右擊線程組添加請(qǐng)求默認(rèn)設(shè)置 RequestDefaults.
這個(gè)面板管理的是所有http請(qǐng)求發(fā)起的默認(rèn)設(shè)置. 這里要提下的是高級(jí)設(shè)置Advanced里面(Proxy Server)可以設(shè)置代理IP和端口, 可以代理到Fiddler去驗(yàn)證我們的腳本測(cè)試結(jié)果.
PS
JMeter安裝目錄bin文件夾下有JMeter的屬性設(shè)置jmeter.properties
JMeter默認(rèn)是ISO-8859-1, 如果使用過程中請(qǐng)求產(chǎn)生亂碼, 可以在這里設(shè)置編碼格式: 去掉注釋#, 把值改為UTF-8.
類似的, 去掉language的注釋, 改成zh_CN可以改默認(rèn)語言為簡體中文