對于新手來說,jmeter的元件是還是不少的,如果我們按照每一個元件的每一個參數(shù)的含義去學(xué)習(xí),無疑會降低學(xué)習(xí)性能測試的熱情,算我們熟悉了所有元件以及元件上的參數(shù)了,我們也不知道如何將其組合成我們想要描述的性能測試。另一方面,我們點擊每個節(jié)點上的元件都會出現(xiàn)類似或相同的菜單,他們的層級關(guān)系是什么樣的。究竟這個元件放在哪個層級的哪個位置才達(dá)到我們意愿。
如何更快速的入門jmeter,個人建議通過錄制腳本的方式,快速的了解一個性能測試應(yīng)該包括的元件以及它們的層級關(guān)系。
如下,我通過badboy工具錄制的一個腳本(腳本過程:登錄126郵箱,給自己發(fā)一封郵件,祝自己圣誕快樂。⒖梢苑奖愕膶⒛_本導(dǎo)出為jmx格式,這也是jmeter腳本的格式,所以可以被jmeter識別并導(dǎo)入。
腳本導(dǎo)入到j(luò)meter后,我添加了兩個監(jiān)聽器(查看結(jié)果樹),因為我添加監(jiān)聽器的位置不同,他們的作用域也是不一樣的。前一個只能監(jiān)聽到www.126.com頁面的請求,后一個側(cè)對所有的http請求進(jìn)行監(jiān)聽。
元件的作用域
先來討論一下元件有作用域。《Jmeter基礎(chǔ)之---jmeter基礎(chǔ)概念》一章中,我們介紹了8類可被執(zhí)行的元件(測試計劃與線程組不屬于元件),這些元件中,取樣器是典型的不與其它元件發(fā)生交互作用的元件,邏輯控制器只對其子節(jié)點的取樣器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)需要與取樣器(sampler)等元件交互。
配置元件(config elements )
元件會影響其作用范圍內(nèi)的所有元件。
前置處理程序(Per-processors)
元件在其作用范圍內(nèi)的每一個sampler元件之前執(zhí)行。
定時器(timers )
元件對其作用范圍內(nèi)的每一個sampler 有效
后置處理程序(Post-processors)
元件在其作用范圍內(nèi)的每一個sampler元件之后執(zhí)行。
斷言(Assertions)
元件對其作用范圍內(nèi)的每一個sampler 元件執(zhí)行后的結(jié)果執(zhí)行校驗。
監(jiān)聽器(Listeners)
元件收集其作用范圍的每一個sampler元件的信息并呈現(xiàn)。
在jmeter中,元件的作用域是靠測試計劃的的樹型結(jié)構(gòu)中元件的父子關(guān)系來確定的,作用域的原則是:
1.取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問題。
2.邏輯控制器(Logic Controller)元件只對其子節(jié)點中的取樣器 和 邏輯控制器作用。
3.除取樣器 和邏輯控制器 元件外,其他6類元件,如果是某個sampler的子節(jié)點,則該元件公對其父子節(jié)點起作用。
4.除取樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點不是sampler ,則其作用域是該元件父節(jié)點下的其他所有后代節(jié)點(包括子節(jié)點,子節(jié)點的子節(jié)點等)。
講了這些,你可能迷糊了,到底是腫么個情況呀!?通過兩個栗子(例子)來理解一下他們的作用域。
A(注:下圖只是為了說明作用域,無法正常運行)
取樣器(HTTP請求1 、FTP請求2 、TCP取樣器3) 邏輯控制器(循環(huán)控制器) 監(jiān)聽器(圖形結(jié)果1、聚合報告2)
1. HTTP請求1 、FTP請求2 、TCP取樣器3 元件沒有作用域的概念。
2. 循環(huán)控制器 元件作用域名是其子節(jié)點FTP請求2 、TCP取樣器3 。
3. 圖形結(jié)果1 元件的作用域是是FTP請求2 、TCP取樣器3。
4. 聚合報告2 元作的作用域是HTTP請求1 、FTP請求2 、TCP取樣器3
B (注:下圖只是為了說明作用域,無法正常運行)
這個例子稍微復(fù)雜一些,包含的元件較多。先來分分類。
取樣器(HTTP請求 、FTP請求 、TCP取樣器、 JDBC Request )邏輯控制器(循環(huán)控制器、隨即控制器)定時器(固定定時器、Uniform Random Timer )斷言(響應(yīng)斷言、XML斷言)監(jiān)聽器(圖形結(jié)果、聚合報告)