Jmeter介紹&安裝

1. Jmeter概述

1.1 Jmeter是什么

?Apache組織開發(fā)的基于Java的壓力測(cè)試工具

?100%純Java開發(fā)、完全的可移植性

?可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源

?多協(xié)議——http/ftp/socket/Java/數(shù)據(jù)庫(kù)(JDBC)

?完全多線程,jmeter已線程的方式來用戶的并發(fā)訪問的

?高可擴(kuò)展性


PS:在控制臺(tái)打印輸出:測(cè)試計(jì)劃→線程組→sampler→beanshell sampler:system out.print(${var})


性能測(cè)試流程:

需求分析:熟悉這個(gè)項(xiàng)目是做什么的,用戶在在程序上是如何操作的,哪些是重點(diǎn),哪些是重要業(yè)務(wù)流程,這些就是需求分析需要做的事。了解完需求分析時(shí)候呢,我們進(jìn)入的就是性能指標(biāo)制定,比如說響應(yīng)時(shí)間啊,吞吐量啊就是在這個(gè)環(huán)境定義的,為什么藥定義這些指標(biāo)呢,因?yàn)槲覀冃阅軠y(cè)試要有一個(gè)目標(biāo),因?yàn)橐粋€(gè)軟件啊,他總歸有一個(gè)性能瓶頸,我們要定義他,假如滿足一百個(gè)并發(fā)就OK了,前面我們了解了業(yè)務(wù)流程,也了解了性能指標(biāo),接下來需要做的就是腳本開發(fā),可以自己寫腳本,也可以利用工具,工具也有多種選擇,看你對(duì)哪一種工具比較熟悉,如jmeter啊,loadrunner啊等等;腳本開發(fā)完畢之后,我們進(jìn)入場(chǎng)景設(shè)置,腳本在開發(fā)完成之后啊,不能直接應(yīng)用于性能測(cè)試,我們要有調(diào)試,有設(shè)置的過程,設(shè)置場(chǎng)景主要跟第一步需求分析關(guān)聯(lián),符合用戶在軟件上的使用流程,用戶經(jīng)常做哪些操作,我們就把這些操作作為性能測(cè)試的重點(diǎn);場(chǎng)景設(shè)置完成后就監(jiān)控部署,如服務(wù)器硬件,中間件,數(shù)據(jù)庫(kù)等等,把他監(jiān)控起來,只有監(jiān)控起來才能發(fā)現(xiàn)他的運(yùn)行狀態(tài),對(duì)后面的調(diào)優(yōu)提供依據(jù)等等,監(jiān)控一定要有,監(jiān)控部署完成之后進(jìn)入測(cè)試執(zhí)行,第一階段,基礎(chǔ)測(cè)試,少量的用戶跑一邊,看有沒有問題,先解決問題后進(jìn)入正式的性能測(cè)試,性能執(zhí)行完了后進(jìn)入性能分析,結(jié)合之前的監(jiān)控?cái)?shù)據(jù)進(jìn)行分析了,分析完之后就進(jìn)入性能調(diào)優(yōu)了,性能調(diào)優(yōu)完成后就進(jìn)入下一輪性能執(zhí)行,這是一個(gè)循環(huán)的過程。


常見系統(tǒng)應(yīng)用分層:

顯示層(view):web、Android、IOS、H5

邏輯控制處(controller):API

數(shù)據(jù)存儲(chǔ)層(model):MySQL、MongoDB、Redis


性能指標(biāo)定義:

事務(wù):從發(fā)起請(qǐng)求到收到從服務(wù)端返回的響應(yīng)的一個(gè)閉環(huán),一個(gè)事務(wù)可能包含多個(gè)請(qǐng)求

TPS(transaction per second):每秒鐘系統(tǒng)能夠處理的事務(wù)數(shù)

響應(yīng)時(shí)間:從發(fā)起請(qǐng)求到收到從服務(wù)端返回的響應(yīng)的一個(gè)閉環(huán)所花費(fèi)的時(shí)間

并發(fā):沒有嚴(yán)格意義上的并發(fā),并發(fā)總有先后,有時(shí)間差,可能是一毫秒,一微妙等,所以并發(fā)講的是一個(gè)時(shí)間范圍,比如一秒內(nèi)

并發(fā)用戶數(shù):同一單位時(shí)間內(nèi)對(duì)系統(tǒng)發(fā)起請(qǐng)求的用戶數(shù)

吞吐量:一次性能測(cè)試過程中網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量的總和

吞吐率:?jiǎn)挝粫r(shí)間內(nèi)網(wǎng)絡(luò)上傳的數(shù)據(jù)量

點(diǎn)擊率:表示用戶每秒向服務(wù)器發(fā)起的請(qǐng)求數(shù),一次鼠標(biāo)單擊可能會(huì)發(fā)起多個(gè)請(qǐng)求,最佳或理想狀態(tài)下隨著用戶數(shù)的增加而上升

資源使用率:如CPU,內(nèi)存,網(wǎng)絡(luò)等


性能測(cè)試需求分析:

明確測(cè)試指標(biāo):哪些是重點(diǎn)關(guān)注指標(biāo),指標(biāo)定義是什么,把定義明確了,不要產(chǎn)生分歧,指標(biāo)要求是什么

明確測(cè)試場(chǎng)景:緊跟業(yè)務(wù)掛鉤,明確哪些是重點(diǎn)業(yè)務(wù),指標(biāo)評(píng)審,場(chǎng)景評(píng)審,用例評(píng)審

同行業(yè)比較、業(yè)務(wù)預(yù)期(跟產(chǎn)品、市場(chǎng)溝通)


性能測(cè)試工具對(duì)比:


1.2 JDK安裝及版本對(duì)應(yīng)

JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK版本要求:

?JMeter2.x—最低jdk1.6

?JMeter3.0/3.1—最低jdk1.7

?JMeter3.2/3.3—最低jdk1.8


1.3 JMeter下載及安裝n

JMeter下載地址:http://jmeter.apache.org/download_jmeter.cgi

系統(tǒng)要求:Java開發(fā),可跨平臺(tái)

Windows:apache-jmeter-xx.zip

Linux/Mac:apache-jmeter-xx.t


1.4 JDK環(huán)境變量配置n

1.4.1計(jì)算機(jī)右鍵→屬性→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量n

1.4.2新建變量JAVA_HOME,變 量 值 填 JDK 安 裝 的 D:\Java\jdk1.7.0_76_x64n

1.4.3編輯Path變量,在末尾加%JAVAHOME%\bin;%JAVAHOME%\jre\bin

1.4.4打開cmd輸入javac驗(yàn)證是否配置成功


1.5 JMeter環(huán)境變量配置

1.5.1計(jì)算機(jī)右鍵→屬性→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量

1.5.2新建變量JMeter_HOME,變 量 值 填 JMeter 安 裝 的 路 徑 , 如D:\apache-jmeter-3.3

1.5.3編輯Path變量,在末尾加%JMeter_HOME%\bin

1.5.4打開cmd輸入jmeter --version驗(yàn)證是否安裝成功


1.6 Jmeter目錄介紹

/bin-可執(zhí)行文件、配置文件

/bin/examples - CSV樣例

/bin/report-template -報(bào)告模板

/bin/templates -腳本模板

/doc - Jmeter API文檔

/extras -擴(kuò)展插件目錄,提供了對(duì)Ant的支持

/lib -插件目錄,存放Jmeter所依賴的外部jar

/lib/ext - Jmeter依賴的核心jar包、插件包

/lib/junit - junit測(cè)試腳本

/Licenses– 許可證書

/Printable_docs -用戶使用


1.7 Jmeter配置文件

?jmeter.bat

?jmeter.properti


1.8 Jmeter各大組件介紹

1.8.1 測(cè)試計(jì)劃Testplan

?測(cè)試的起點(diǎn)

?其他所有組件的容器

?用來描述性能測(cè)試

?所有內(nèi)容基于一個(gè)測(cè)試


1.8.2 取樣器sampler

?真正干活的

?發(fā)送請(qǐng)求到服務(wù)器,并等待服務(wù)器的響應(yīng)

?按照其在測(cè)試樹中的順序去執(zhí)

?受邏輯控制器控制

?支持多種協(xié)議

?支持二次開發(fā)


1.8.3 邏輯控制器LogicController

?控制sampler發(fā)送請(qǐng)求的邏輯 、順序

?控制sampler本身

?模擬復(fù)雜邏輯

常用:

ForEach控制器、如果(IF)控制器、循環(huán)控制器、隨機(jī)控制器、事務(wù)控制器、吞吐量控制器



1.8.4 配置元件Config Element

?靜態(tài)數(shù)據(jù)配置

?配置默認(rèn)屬性、信息

?不會(huì)向服務(wù)器發(fā)送任何請(qǐng)求

?僅對(duì)所在測(cè)試樹分支有效

?放在sampler之前


一個(gè)例外!--用戶自定義變量(User Defined Variables)此組件無論放在哪里,它定義的變量都會(huì)被整個(gè)線程所


1.8.5 定時(shí)器Timer

?設(shè)置請(qǐng)求間的時(shí)間間隔

?思考時(shí)間:定時(shí)器、隨機(jī)定時(shí)器

?集合點(diǎn):Synchronizing Time


1.8.6 前置/后置處理器

?前置處理器

發(fā)出請(qǐng)求(Request)前對(duì)即將發(fā)出的請(qǐng)求進(jìn)行特殊處理如:Sample Timeout

?后置處理器

對(duì)采樣器發(fā)出請(qǐng)求后得到的服務(wù)器響應(yīng)(Response)進(jìn)行處理如:正則表達(dá)式提


1.8.7 斷言Assertions

?判斷取樣器是否正常工作

?判斷請(qǐng)求響應(yīng)是否正確

?判斷結(jié)果是否符合預(yù)期

?相當(dāng)于LR的檢查點(diǎn)l

常用:jp@gc - JSON Path Assertion、響應(yīng)斷言、斷言持續(xù)時(shí)間


1.8.8 監(jiān)聽器Listener

?收集整理測(cè)試結(jié)果

?將測(cè)試結(jié)果數(shù)據(jù)進(jìn)行處理并展示

?生成XML、CSV等形式的文件供后續(xù)分析

常用:圖形結(jié)果、察看結(jié)果樹、聚合報(bào)告、用表格察看結(jié)果、保存響應(yīng)到文件


1.8.9 組件執(zhí)行順序

?配置元件(Config Element)

?前置處理器(Pre Processors)

?定時(shí)器(Timer)

?取樣器(sampler)

?后置處理器(Post Processors,只在有結(jié)果可用情況下執(zhí)行)

?斷言(Assertions,只在有結(jié)果可用情況下執(zhí)行)

?監(jiān)聽器(Listener,只在有結(jié)果可用情況下執(zhí)行)


1.8.10 組件作用域

靠測(cè)試計(jì)劃的樹型結(jié)構(gòu)中元件的父子關(guān)系確定原則:

?采樣器(sampler):元件不和其它元件相互作用,因此不存在作用域的問題

?邏輯控制器(Logic Controller):元件只對(duì)其子節(jié)點(diǎn)中的取樣器和邏輯控制器作用

?除采樣器和邏輯控制器元件外,其他6類元件,如果是某個(gè)sampler的子節(jié)點(diǎn),則該元件只對(duì)其父子節(jié)點(diǎn)起作用

?除采樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點(diǎn)不是sampler ,則其作用域是該元件父節(jié)點(diǎn)下的其他所有后代節(jié)點(diǎn)(包括子節(jié)點(diǎn),子節(jié)點(diǎn)的子節(jié)點(diǎn)等)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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