軟件測(cè)試(第2版) 課件 黑馬 第5-8章 性能測(cè)試- 軟件測(cè)試實(shí)戰(zhàn) 黑馬頭條_第1頁
軟件測(cè)試(第2版) 課件 黑馬 第5-8章 性能測(cè)試- 軟件測(cè)試實(shí)戰(zhàn) 黑馬頭條_第2頁
軟件測(cè)試(第2版) 課件 黑馬 第5-8章 性能測(cè)試- 軟件測(cè)試實(shí)戰(zhàn) 黑馬頭條_第3頁
軟件測(cè)試(第2版) 課件 黑馬 第5-8章 性能測(cè)試- 軟件測(cè)試實(shí)戰(zhàn) 黑馬頭條_第4頁
軟件測(cè)試(第2版) 課件 黑馬 第5-8章 性能測(cè)試- 軟件測(cè)試實(shí)戰(zhàn) 黑馬頭條_第5頁
已閱讀5頁,還剩535頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章性能測(cè)試《軟件測(cè)試(第2版)》學(xué)習(xí)目標(biāo)/Target了解性能測(cè)試的概念,能夠描述性能測(cè)試的概念及目的了解性能測(cè)試的種類,能夠描述常見的性能測(cè)試種類及其特點(diǎn)了解性能測(cè)試的指標(biāo),能夠描述常見的性能測(cè)試指標(biāo)及其特點(diǎn)掌握J(rèn)DK和JMeter的安裝,能夠獨(dú)立完成JDK和JMeter的安裝掌握J(rèn)Meter的使用,能夠使用JMeter執(zhí)行簡(jiǎn)單的性能測(cè)試學(xué)習(xí)目標(biāo)/Target掌握取樣器的使用,能夠使用取樣器發(fā)送各種需求的HTTP請(qǐng)求掌握監(jiān)聽器的使用,能夠使用察看結(jié)果樹和聚合報(bào)告查看性能測(cè)試結(jié)果掌握配置元件的使用,能夠使用常用的配置元件完成參數(shù)化設(shè)置掌握斷言的使用,能夠使用斷言完成HTTP請(qǐng)求響應(yīng)結(jié)果的判斷掌握前置處理器的使用,能夠使用用戶參數(shù)完成參數(shù)化設(shè)置學(xué)習(xí)目標(biāo)/Target掌握后置處理器的使用,能夠使用常用的后置處理器完成響應(yīng)數(shù)據(jù)的提取掌握邏輯控制器的使用,能夠使用常用的邏輯控制器控制腳本的執(zhí)行順序掌握定時(shí)器的使用,能夠使用常用的定時(shí)器控制請(qǐng)求的延遲發(fā)送章節(jié)概述/Summary互聯(lián)網(wǎng)的發(fā)展使人們對(duì)軟件產(chǎn)品與網(wǎng)絡(luò)的依賴性越來越大,同時(shí)也加快了人們生活和工作的節(jié)奏,為了追求高質(zhì)量、高效率的生活和工作,人們對(duì)軟件產(chǎn)品的性能要求越來越高,例如軟件產(chǎn)品要足夠穩(wěn)定、響應(yīng)速度要足夠快,在用戶量、工作量較大時(shí)也不會(huì)出現(xiàn)崩潰或卡頓等現(xiàn)象。人們對(duì)軟件產(chǎn)品性能的高要求,使得軟件的性能測(cè)試越來越受到測(cè)試人員的重視。性能測(cè)試是度量軟件質(zhì)量的一種重要方式,它從軟件的響應(yīng)速度、穩(wěn)定性、兼容性、可移植性等方面檢測(cè)軟件是否滿足用戶需求。作為軟件測(cè)試人員,性能測(cè)試是必須要掌握的測(cè)試技能之一。本章將對(duì)性能測(cè)試的相關(guān)知識(shí)進(jìn)行詳細(xì)講解。目錄/Contents0102性能測(cè)試概述搭建性能測(cè)試環(huán)境03第一個(gè)JMeter測(cè)試04JMeter核心組件05實(shí)例:輕商城項(xiàng)目性能測(cè)試性能測(cè)試概述5.15.1.1性能測(cè)試簡(jiǎn)介

先定一個(gè)小目標(biāo)!了解性能測(cè)試的簡(jiǎn)介,能夠說出性能測(cè)試的目的5.1.1性能測(cè)試簡(jiǎn)介性能測(cè)試是通過性能測(cè)試工具模擬正常、峰值和異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。性能測(cè)試能夠驗(yàn)證軟件系統(tǒng)是否達(dá)到了用戶期望的性能需求,同時(shí)也可以發(fā)現(xiàn)系統(tǒng)中可能存在的性能瓶頸和缺陷,從而優(yōu)化系統(tǒng)的性能。5.1.1性能測(cè)試簡(jiǎn)介性能測(cè)試的目的驗(yàn)證系統(tǒng)性能是否滿足預(yù)期的性能需求,包括系統(tǒng)的執(zhí)行效率、穩(wěn)定性、可靠性、安全性等。分析軟件系統(tǒng)在各種負(fù)載水平下的運(yùn)行狀態(tài),提高性能調(diào)整效率。識(shí)別系統(tǒng)缺陷,尋找系統(tǒng)中可能存在的性能問題,定位系統(tǒng)性能瓶頸并解決問題。進(jìn)行系統(tǒng)調(diào)優(yōu),通過重復(fù)的、長(zhǎng)時(shí)間的測(cè)試,找出系統(tǒng)中存在的隱含問題,改善并優(yōu)化系統(tǒng)的性能。5.1.2性能測(cè)試種類

先定一個(gè)小目標(biāo)!掌握性能測(cè)試種類,能夠描述常見的性能測(cè)試種類及其特點(diǎn)5.1.2性能測(cè)試種類1.基準(zhǔn)測(cè)試基準(zhǔn)測(cè)試是指單用戶測(cè)試,即測(cè)試環(huán)境確定后,使用單個(gè)用戶對(duì)業(yè)務(wù)模型中的重要業(yè)務(wù)做多次單獨(dú)的測(cè)試,觀察并記錄各項(xiàng)性能指標(biāo)的變化。廣義上定義狹義上定義基準(zhǔn)測(cè)試是一種測(cè)量和評(píng)估軟件性能指標(biāo)的測(cè)試。在某個(gè)時(shí)刻通過基準(zhǔn)測(cè)試建立一個(gè)基準(zhǔn)線,當(dāng)系統(tǒng)的軟硬件環(huán)境發(fā)生變化之后,再進(jìn)行測(cè)試以確定軟硬件環(huán)境變化對(duì)軟件性能的影響。5.1.2性能測(cè)試種類2.負(fù)載測(cè)試負(fù)載測(cè)試是指逐步增加系統(tǒng)負(fù)載(如逐漸增加模擬用戶數(shù)量)來測(cè)試系統(tǒng)性能的變化,并最終確定在滿足系統(tǒng)性能指標(biāo)的情況下,系統(tǒng)所能夠承受的最大負(fù)載。負(fù)載測(cè)試類似于舉重運(yùn)動(dòng),通過不斷給舉重運(yùn)動(dòng)員增加重量,確定運(yùn)動(dòng)員在身體允許的情況下所能舉起的最大重量。進(jìn)行負(fù)載測(cè)試的前提是滿足性能指標(biāo)要求。例如一個(gè)軟件系統(tǒng)的響應(yīng)時(shí)間要求不超過2秒,則在這個(gè)前提下,不斷增加用戶訪問量,當(dāng)訪問量超過1萬人時(shí),系統(tǒng)的響應(yīng)時(shí)間就會(huì)變慢,并超過2秒,即可以確定系統(tǒng)響應(yīng)時(shí)間不超過2秒的前提下最大負(fù)載是1萬人。5.1.2性能測(cè)試種類3.壓力測(cè)試壓力測(cè)試也叫強(qiáng)度測(cè)試,是指讓系統(tǒng)超負(fù)荷運(yùn)行,使系統(tǒng)某些資源達(dá)到飽和或接近系統(tǒng)崩潰的邊緣,以測(cè)試系統(tǒng)的性能變化,從而確定系統(tǒng)所能承受的最大壓力。壓力測(cè)試可以暴露那些只有在高負(fù)載條件下才會(huì)出現(xiàn)的Bug,例如同步問題、內(nèi)存泄露等。5.1.2性能測(cè)試種類壓力測(cè)試與負(fù)載測(cè)試是有區(qū)別的,負(fù)載測(cè)試的目的是在滿足性能指標(biāo)要求的前提下,測(cè)試系統(tǒng)能夠承受的最大負(fù)載,而壓力測(cè)試的目的則是測(cè)試使系統(tǒng)性能達(dá)到極限的狀態(tài)。例如軟件系統(tǒng)正常的響應(yīng)時(shí)間為2秒,通過負(fù)載測(cè)試確定用戶訪問量超過1萬人時(shí)響應(yīng)時(shí)間變慢。對(duì)于壓力測(cè)試,則繼續(xù)增加用戶訪問量,觀察系統(tǒng)的性能變化,當(dāng)用戶訪問量增加到2萬人時(shí)系統(tǒng)響應(yīng)時(shí)間為3秒,當(dāng)用戶訪問量增加到3萬人時(shí)響應(yīng)時(shí)間為4秒,當(dāng)用戶訪問量增加到4萬人時(shí),系統(tǒng)崩潰無法響應(yīng)。由此確定系統(tǒng)能承受的最大訪問量為4萬人。5.1.2性能測(cè)試種類4.并發(fā)測(cè)試并發(fā)測(cè)試是指通過模擬用戶并發(fā)訪問,測(cè)試多用戶并發(fā)訪問同一個(gè)應(yīng)用、同一個(gè)模塊或者數(shù)據(jù)記錄時(shí)是否存在死鎖、響應(yīng)慢或其他性能問題。并發(fā)測(cè)試一般沒有標(biāo)準(zhǔn),只是測(cè)試并發(fā)時(shí)會(huì)不會(huì)出現(xiàn)意外情況。幾乎所有的性能測(cè)試都會(huì)涉及并發(fā)測(cè)試,例如多個(gè)用戶同時(shí)訪問某一條件數(shù)據(jù)或多個(gè)用戶同時(shí)更新數(shù)據(jù),那么數(shù)據(jù)庫可能就會(huì)出現(xiàn)訪問錯(cuò)誤、寫入錯(cuò)誤等異常情況。5.1.2性能測(cè)試種類5.配置測(cè)試配置測(cè)試是指調(diào)整軟件系統(tǒng)的軟硬件環(huán)境,測(cè)試各種環(huán)境對(duì)系統(tǒng)性能的影響,從而找到系統(tǒng)各項(xiàng)資源的最優(yōu)分配原則。配置測(cè)試不改變代碼,只改變軟硬件配置,例如安裝版本更高的數(shù)據(jù)庫、配置性能更好的CPU和內(nèi)存等,其通過更改外部配置來提高軟件的性能。5.1.2性能測(cè)試種類6.穩(wěn)定性測(cè)試穩(wěn)定性測(cè)試也稱為可靠性測(cè)試,它是指讓系統(tǒng)在強(qiáng)負(fù)載情況下,持續(xù)運(yùn)行一段時(shí)間(如7

24小時(shí)),測(cè)試系統(tǒng)在這種條件下是否能夠穩(wěn)定運(yùn)行。由于系統(tǒng)在強(qiáng)負(fù)載下有業(yè)務(wù)壓力且運(yùn)行時(shí)間較長(zhǎng),所以穩(wěn)定性測(cè)試可以檢測(cè)系統(tǒng)是否存在內(nèi)存泄露等問題。5.1.2性能測(cè)試種類7.容量測(cè)試容量測(cè)試是指在一定的軟硬件及網(wǎng)絡(luò)環(huán)境下,測(cè)試系統(tǒng)所能支持的最大用戶數(shù)、最大存儲(chǔ)量等。容量測(cè)試通常與數(shù)據(jù)庫、系統(tǒng)資源(如CPU、內(nèi)存、磁盤等)有關(guān),用于規(guī)劃將來需求增長(zhǎng)(如用戶增長(zhǎng)、業(yè)務(wù)量增加等)時(shí),對(duì)數(shù)據(jù)庫和系統(tǒng)資源的優(yōu)化。5.1.3性能測(cè)試指標(biāo)

先定一個(gè)小目標(biāo)!了解性能測(cè)試的指標(biāo),能夠描述常見的性能測(cè)試指標(biāo)及其特點(diǎn)5.1.3性能測(cè)試指標(biāo)性能測(cè)試不同于功能測(cè)試,功能測(cè)試只要求測(cè)試軟件的功能是否實(shí)現(xiàn),而性能測(cè)試要求測(cè)試軟件功能的執(zhí)行效率是否達(dá)到要求。例如某個(gè)軟件具備查詢功能,功能測(cè)試只測(cè)試查詢功能是否實(shí)現(xiàn),而性能測(cè)試卻要求測(cè)試查詢功能的響應(yīng)時(shí)間是否足夠準(zhǔn)確、快速。但是,對(duì)于性能測(cè)試來說,多快的查詢速度才算足夠快,什么樣的查詢情況才算足夠準(zhǔn)確是很難界定的。因此,我們需要一些指標(biāo)來量化這些數(shù)據(jù)。性能測(cè)試常用的指標(biāo)包括響應(yīng)時(shí)間、吞吐量、并發(fā)用戶數(shù)、QPS(QueriesPerSecond,每秒查詢數(shù))和TPS(TransactionsPerSecond,每秒事務(wù)數(shù))等5.1.3性能測(cè)試指標(biāo)響應(yīng)時(shí)間(ResponseTime)是指系統(tǒng)對(duì)用戶請(qǐng)求作出響應(yīng)所需要的時(shí)間。這個(gè)時(shí)間是指用戶從客戶端發(fā)出請(qǐng)求到用戶接收到返回?cái)?shù)據(jù)的整個(gè)過程所需要的時(shí)間,包括各種中間件(如服務(wù)器、數(shù)據(jù)庫等)的處理時(shí)間。1.響應(yīng)時(shí)間5.1.3性能測(cè)試指標(biāo)由上圖可知系統(tǒng)的響應(yīng)時(shí)間為t1+t2+t3+t4+t5+t6。響應(yīng)時(shí)間越短,說明軟件的響應(yīng)速度越快,性能越好。但是響應(yīng)時(shí)間需要與用戶的具體需求相結(jié)合,例如火車訂票查詢功能響應(yīng)時(shí)間通常在2秒內(nèi),而在網(wǎng)站下載電影時(shí),通過以分鐘計(jì)時(shí)。5.1.3性能測(cè)試指標(biāo)吞吐量(Throughput)是指單位時(shí)間內(nèi)系統(tǒng)能夠完成的工作量,它衡量的是軟件系統(tǒng)服務(wù)器的處理能力。吞吐量的度量單位可以是請(qǐng)求數(shù)/秒、頁面數(shù)/秒、訪問人數(shù)/天、處理業(yè)務(wù)數(shù)/小時(shí)等。吞吐量越大,系統(tǒng)單位時(shí)間內(nèi)處理的數(shù)據(jù)就越多,系統(tǒng)的負(fù)載能力就越強(qiáng)。2.吞吐量5.1.3性能測(cè)試指標(biāo)并發(fā)用戶數(shù)是指在同一時(shí)間內(nèi)請(qǐng)求和訪問的用戶數(shù)量。例如對(duì)于某一軟件,同時(shí)有100個(gè)用戶請(qǐng)求登錄,則其并發(fā)用戶數(shù)就是100。并發(fā)用戶數(shù)越大,其對(duì)系統(tǒng)的性能影響越大,并發(fā)用戶數(shù)較大可能會(huì)導(dǎo)致系統(tǒng)響應(yīng)變慢、系統(tǒng)不穩(wěn)定等。軟件系統(tǒng)在設(shè)計(jì)時(shí)必須要考慮并發(fā)訪問的情況,測(cè)試人員在進(jìn)行性能測(cè)試時(shí)也必須進(jìn)行并發(fā)訪問的測(cè)試。3.并發(fā)用戶數(shù)5.1.3性能測(cè)試指標(biāo)QPS是指系統(tǒng)每秒能夠響應(yīng)的查詢次數(shù),用于衡量特定的查詢服務(wù)器在規(guī)定時(shí)間內(nèi)能夠處理的流量。TPS是指系統(tǒng)每秒能夠處理的事務(wù)數(shù)量。一個(gè)事務(wù)可以包含多個(gè)請(qǐng)求。如果對(duì)一個(gè)查詢接口進(jìn)行壓力測(cè)試,且這個(gè)接口內(nèi)部不會(huì)再去請(qǐng)求其他接口,那么TPS與QPS沒有區(qū)別;如果對(duì)一個(gè)事務(wù)進(jìn)行操作,該事務(wù)中包含了n個(gè)查詢接口,且這些接口內(nèi)部都不會(huì)再去請(qǐng)求其他接口,那么此時(shí)的QPS=n×TPS。4.QPS和TPS5.1.3性能測(cè)試指標(biāo)點(diǎn)擊率(HitsPerSecond)是指用戶每秒向Web服務(wù)器提交的HTTP請(qǐng)求數(shù)量,這個(gè)指標(biāo)是Web應(yīng)用特有的一個(gè)性能指標(biāo),通過點(diǎn)擊率可以評(píng)估用戶產(chǎn)生的負(fù)載量,并且可以判斷系統(tǒng)是否穩(wěn)定。點(diǎn)擊率只是一個(gè)參考指標(biāo),用于輔助衡量Web服務(wù)器的性能。5.點(diǎn)擊率5.1.3性能測(cè)試指標(biāo)錯(cuò)誤率是指系統(tǒng)在負(fù)載情況下,失敗業(yè)務(wù)的概率。錯(cuò)誤率是一種性能指標(biāo),不是功能上的隨機(jī)Bug,大多數(shù)系統(tǒng)都會(huì)要求錯(cuò)誤率無限接近于0。6.錯(cuò)誤率5.1.3性能測(cè)試指標(biāo)資源利用率是指軟件對(duì)系統(tǒng)資源的使用情況,包括CPU利用率、內(nèi)存利用率、磁盤利用率等,資源利用率是分析軟件性能瓶頸的重要參數(shù)。例如某一個(gè)軟件,預(yù)期最大訪問量為1萬,但是當(dāng)達(dá)到6000訪問量時(shí)內(nèi)存利用率就已經(jīng)達(dá)到80%,限制了訪問量的增加,此時(shí)就需要考慮軟件是否有內(nèi)存泄漏等缺陷,從而進(jìn)行優(yōu)化。7.資源利用率搭建性能測(cè)試環(huán)境5.25.2.1安裝配置JDK

先定一個(gè)小目標(biāo)!掌握J(rèn)DK的安裝,能夠獨(dú)立完成JDK的安裝5.2.1安裝配置JDK步驟一:安裝JDKJDK安裝步驟13245.2.1安裝配置JDK步驟二:配置環(huán)境變量右鍵單擊桌面上的“計(jì)算機(jī)”會(huì)彈出一個(gè)快捷菜單,選擇快捷菜單中的“屬性”選項(xiàng),在彈出的“系統(tǒng)”窗口左側(cè)選擇“高級(jí)系統(tǒng)設(shè)置”選項(xiàng),彈出“系統(tǒng)屬性”對(duì)話框,在“系統(tǒng)屬性”對(duì)話框的“高級(jí)”選項(xiàng)卡中單擊“環(huán)境變量”按鈕,彈出“環(huán)境變量”對(duì)話框,如下圖所示。5.2.1安裝配置JDK在“環(huán)境變量”區(qū)域選中變量名為Path的系統(tǒng)變量,單擊“編輯”按鈕,彈出“編輯系統(tǒng)變量”對(duì)話框,在“變量值”文本區(qū)域內(nèi),添加“C:\ProgramFiles\Java\jdk1.8.0_201\bin”路徑,并在路徑后面用英文半角分號(hào)(;)結(jié)束,將其與后面的路徑隔開,如下圖所示。5.2.2安裝JMeter

先定一個(gè)小目標(biāo)!掌握J(rèn)Meter的安裝,能夠獨(dú)立完成JMeter的安裝5.2.2安裝JMeter登錄ApacheJMeter官網(wǎng),單擊“apache-jmeter-5.4.3.zipsha512pgp”下載鏈接下載JMeter。JMeter官網(wǎng)首頁如下圖所示。5.2.2安裝JMeter下載完成之后,JMeter無須安裝,解壓即可使用。解壓之后,在bin目錄下,有一個(gè)jmeter.bat文件,雙擊該文件就可以啟動(dòng)JMeter。JMeter啟動(dòng)成功界面如下圖所示。5.2.3JMeter目錄

先定一個(gè)小目標(biāo)!了解JMeter的目錄,能夠描述JMeter各個(gè)目錄的主要用途5.2.3JMeter目錄JMeter解壓之后,其目錄如下圖所示。5.2.3JMeter目錄1.bin目錄bin目錄用于存儲(chǔ)可執(zhí)行文件和配置文件,bin目錄中的內(nèi)容如下圖所示。5.2.3JMeter目錄2.docs目錄3.extras目錄4.lib目錄docs目錄為接口文檔目錄,該目錄主要用于存儲(chǔ)JMeter官方的API文檔,用于二次開發(fā)。在docs/api目錄下的index.html文件中,可以查找類名、包名的使用方法。extras目錄為擴(kuò)展插件目錄,該目錄存儲(chǔ)的是JMeter與其他工具集成所需要的一些組件。例如,extras目錄下有ant-jemter-1.1.1.jar包,說明JMeter可以集成ApacheAnt自動(dòng)化測(cè)試工具。lib目錄主要用于存儲(chǔ)JMeter依賴的JAR包和用戶擴(kuò)展(第三方)所依賴的JAR包。lib目錄下存儲(chǔ)的是JMeter自帶的JAR包,用戶擴(kuò)展所依賴的JAR包存儲(chǔ)在lib目錄下的ext文件夾中。5.2.3JMeter目錄5.licenses目錄printable_docs目錄存儲(chǔ)的是JMeter官方的幫助文檔,在printable_docs目錄下的index.html文件中,可以查看官方的幫助文件。6.printable_docs目錄licenses目錄存儲(chǔ)的是JMeter的軟件許可證,在licenses目錄下可以查看軟件許可證文件。5.2.3JMeter目錄JMeter背景更改和界面漢化更改JMeter背景,可以在菜單欄單擊“Options”

“LookandFeel”

“Windows”,如右圖所示。多學(xué)一招1.更改背景5.2.3JMeter目錄單擊“Windows”選項(xiàng)后,會(huì)彈出Exit對(duì)話框,提示用戶需要重啟JMeter,單擊“Yes”按鈕,重啟JMeter,即可將JMeter背景更改為淺色。多學(xué)一招5.2.3JMeter目錄JMeter界面漢化,可以在菜單欄單擊“Options”

“ChooseLanguage”

“Chinese(Simplified)”,設(shè)置漢化界面,這樣設(shè)置只是臨時(shí)性的,JMeter重啟之后,界面漢化就失效了。如果想永久漢化界面,需要在perties文件中進(jìn)行配置,如右圖所示。2.界面漢化多學(xué)一招5.2.3JMeter目錄打開perties文件,修改language選項(xiàng)(約40行)的值為zh_CN,設(shè)置完成之后,取消前面的注釋,修改之后的配置如下所示。language=zh_CN 多學(xué)一招l(wèi)anguage選項(xiàng)設(shè)置完成之后,保存文件,重啟JMeter即可看到漢化的界面。第一個(gè)JMeter測(cè)試5.35.3第一個(gè)JMeter測(cè)試

先定一個(gè)小目標(biāo)!掌握J(rèn)Meter的使用,能夠使用JMeter執(zhí)行簡(jiǎn)單的性能測(cè)試5.3第一個(gè)JMeter測(cè)試下面將通過JMeter向百度網(wǎng)站發(fā)送一個(gè)請(qǐng)求,實(shí)現(xiàn)JMeter的第一個(gè)測(cè)試,以演示JMeter的使用。5.3第一個(gè)JMeter測(cè)試STEP01添加測(cè)試計(jì)劃每次啟動(dòng)JMeter,主界面都默認(rèn)有一個(gè)空的測(cè)試計(jì)劃。用戶也可以在菜單欄單擊“文件”在彈出的下拉菜單中選擇“新建”選項(xiàng),添加測(cè)試計(jì)劃。添加測(cè)試計(jì)劃之后,將其命名為第一個(gè)測(cè)試計(jì)劃,按“Ctrl+S”組合鍵保存測(cè)試計(jì)劃,如下圖所示。5.3第一個(gè)JMeter測(cè)試STEP02添加線程組選中JMeter主界面的“測(cè)試計(jì)劃-第一個(gè)測(cè)試計(jì)劃”并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”→“線程(用戶)”→“線程組”,如下圖所示。5.3第一個(gè)JMeter測(cè)試setUp線程組tearDown線程組線程組3個(gè)線程組的含義與作用一種特殊類型的線程組,用于執(zhí)行測(cè)試前的初始化操作。setUp線程組的執(zhí)行順序在普通線程組之前。一種特殊類型的線程組,用于執(zhí)行測(cè)試結(jié)束之后的回收工作。tearDown線程組的執(zhí)行順序在普通線程組之后。普通線程組,一個(gè)線程組可以表示一個(gè)虛擬用戶組,線程組中可以設(shè)置線程數(shù)量,每一個(gè)線程都可以模擬一個(gè)虛擬用戶。5.3第一個(gè)JMeter測(cè)試STEP02setUp線程組、tearDown線程組、線程組的主要配置項(xiàng)都相同,下面以線程組為例講解主要配置項(xiàng)。單擊“線程組”選項(xiàng)添加線程組,如下圖所示。5.3第一個(gè)JMeter測(cè)試STEP02名稱:用于為線程組命名。線程數(shù):用于設(shè)置線程數(shù)量,即要模擬多少個(gè)用戶。Ramp-Up時(shí)間(秒):用于設(shè)置線程全部啟動(dòng)的時(shí)間。例如,若線程數(shù)設(shè)置為100,Ramp-Up時(shí)間設(shè)置為5,表示在5秒內(nèi)啟動(dòng)100個(gè)線程,每秒啟動(dòng)的線程數(shù)量為20(100/5)。循環(huán)次數(shù):用于設(shè)置線程循環(huán)次數(shù)。如果勾選了“永遠(yuǎn)”選項(xiàng),則線程會(huì)一直循環(huán)。調(diào)度器:用于打開時(shí)間調(diào)試配置。勾選該復(fù)選框后,下方的“持續(xù)時(shí)間(秒)”和“啟動(dòng)延遲(秒)”才能設(shè)置。持續(xù)時(shí)間(秒):用于設(shè)置線程組測(cè)試的持續(xù)時(shí)間。如果設(shè)置了持續(xù)時(shí)間,則以該時(shí)間為準(zhǔn),時(shí)間到則線程組測(cè)試結(jié)束,即使在循環(huán)次數(shù)中勾選了“永遠(yuǎn)”復(fù)選框,線程也不會(huì)一直循環(huán)。需要注意的是,持續(xù)時(shí)間設(shè)置的時(shí)間要比Ramp-Up設(shè)置的時(shí)間長(zhǎng),否則線程還未全部啟動(dòng),測(cè)試就結(jié)束了。啟動(dòng)延遲(秒):表示啟動(dòng)測(cè)試后多久開始創(chuàng)建線程,通常用于定時(shí)。線程組的主要配置項(xiàng)的含義與作用如下。5.3第一個(gè)JMeter測(cè)試STEP03添加HTTP請(qǐng)求選中“線程組”并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”→“取樣器”→“HTTP請(qǐng)求”,如下圖所示。5.3第一個(gè)JMeter測(cè)試STEP02本次只是向百度發(fā)送一次請(qǐng)求,只需配置協(xié)議、服務(wù)器名稱或IP即可,配置信息如下圖所示。5.3第一個(gè)JMeter測(cè)試STEP04添加察看結(jié)果樹選中“線程組”并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”→“監(jiān)聽器”→“察看結(jié)果樹”,如下圖所示。5.3第一個(gè)JMeter測(cè)試STEP05執(zhí)行測(cè)試單擊工具欄中的啟動(dòng)按鈕““,JMeter就會(huì)發(fā)送請(qǐng)求,并接收百度服務(wù)器返回的結(jié)果。請(qǐng)求與返回結(jié)果的信息可以在察看結(jié)果樹中查看,如下圖所示。5.3第一個(gè)JMeter測(cè)試元件是指JMeter中的一個(gè)無法拆分的子功能。組件是指一組具有相似功能的元件的集合。例如,取樣器是一個(gè)組件,用于發(fā)送請(qǐng)求,在這個(gè)組件中有各種各樣的元件,這些元件用于發(fā)送不同的請(qǐng)求,其中HTTP請(qǐng)求就是一個(gè)非常常用的元件。監(jiān)聽器也是一個(gè)組件,用于監(jiān)聽請(qǐng)求返回的結(jié)果。在監(jiān)聽器中,有多個(gè)監(jiān)聽結(jié)果的元件,例如察看結(jié)果樹、匯總報(bào)告、聚合報(bào)告等。JMeter核心組件5.45.4.1取樣器

先定一個(gè)小目標(biāo)!掌握取樣器的使用,能夠使用取樣器發(fā)送各種需求的HTTP請(qǐng)求5.4.1取樣器取樣器也稱為采樣器,它用于模擬用戶操作,向服務(wù)器發(fā)送請(qǐng)求并接收服務(wù)器的響應(yīng)數(shù)據(jù)。JMeter支持不同類型的取樣器,例如HTTP請(qǐng)求、FTP請(qǐng)求、Java請(qǐng)求等,不同類型的取樣器可以通過設(shè)置參數(shù)向服務(wù)器發(fā)送不同的請(qǐng)求。5.4.1取樣器取樣器用于模擬用戶向服務(wù)器發(fā)送請(qǐng)求,可以通過線程組添加取樣器。最常用的取樣器為HTTP請(qǐng)求,下面以HTTP請(qǐng)求為例,講解取樣器的配置。首先在JMeter中添加一個(gè)HTTP請(qǐng)求界面,然后在該界面配置HTTP請(qǐng)求的信息,如下圖所示。5.4.1取樣器HTTP請(qǐng)求的基本配置項(xiàng)如下。名稱:可以給HTTP請(qǐng)求命名。協(xié)議:用于設(shè)置HTTP請(qǐng)求的協(xié)議。HTTP請(qǐng)求有兩種協(xié)議,HTTP協(xié)議和HTTPS協(xié)議,用戶可以根據(jù)實(shí)際測(cè)試場(chǎng)景設(shè)置協(xié)議。如果不設(shè)置協(xié)議,JMeter默認(rèn)使用HTTP。服務(wù)器名稱或IP:用于設(shè)置請(qǐng)求地址,例如。端口號(hào):用于設(shè)置請(qǐng)求的端口號(hào)。HTTP的默認(rèn)端口號(hào)為80,HTTPS的默認(rèn)端口號(hào)為443。HTTP請(qǐng)求方式:在“協(xié)議”下方有一個(gè)“GET”字樣的配置項(xiàng),該配置項(xiàng)用于設(shè)置HTTP請(qǐng)求方式。HTTP請(qǐng)求方式主要有GET(查找)、POST(提交)、PUT(更新)、DELETE(刪除),用戶可以根據(jù)實(shí)際測(cè)試場(chǎng)景選擇合適的請(qǐng)求方式。5.4.1取樣器路徑:用于設(shè)置請(qǐng)求的接口地址。內(nèi)容編碼:一般設(shè)置為UTF-8。參數(shù):用于設(shè)置請(qǐng)求參數(shù)。當(dāng)請(qǐng)求地址中需要攜帶參數(shù)時(shí),可以單擊下方的“添加”按鈕添加一個(gè)鍵值對(duì)輸入欄,輸入相應(yīng)的鍵和值(參數(shù))。消息體數(shù)據(jù):也用于設(shè)置請(qǐng)求參數(shù)。當(dāng)在請(qǐng)求體中傳遞參數(shù)時(shí),可以將請(qǐng)求中的參數(shù)以JSON格式寫在“消息體數(shù)據(jù)”下方的空白處。文件上傳:可以將請(qǐng)求中攜帶的參數(shù)以文件的形式進(jìn)行傳遞。以文件上傳形式傳遞參數(shù)時(shí),可以單擊下方的“添加”按鈕添加一個(gè)鍵值對(duì)輸入欄,輸入文件名稱和要傳遞的參數(shù)。5.4.1取樣器下面通過兩個(gè)小案例演示HTTP請(qǐng)求的配置。第1個(gè)案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為/S?wd=test,要求分別使用路徑和參數(shù)列表這兩種方式傳遞GET請(qǐng)求參數(shù),如下圖所示。5.4.1取樣器下面演示第2個(gè)案例,本案例要求使用JMeter發(fā)送一個(gè)POST請(qǐng)求,請(qǐng)求地址為/S?wd=test,要求使用消息體數(shù)據(jù)傳遞POST請(qǐng)求的參數(shù),如下圖所示。5.4.2監(jiān)聽器

先定一個(gè)小目標(biāo)!掌握監(jiān)聽器的使用,能夠使用察看結(jié)果樹和聚合報(bào)告查看性能測(cè)試結(jié)果5.4.2監(jiān)聽器監(jiān)聽器主要用于監(jiān)聽JMeter的測(cè)試結(jié)果,監(jiān)聽器可以將測(cè)試結(jié)果以表格或圖形的形式展現(xiàn)給用戶,也可以將測(cè)試結(jié)果保存到文件中,供用戶再次分析時(shí)使用。監(jiān)聽器可以在測(cè)試計(jì)劃的任何位置添加,包括直接在測(cè)試計(jì)劃下面添加或在線程組下面添加。監(jiān)聽器只能監(jiān)聽、收集同層級(jí)或下層級(jí)元件的數(shù)據(jù),因此,在不同層級(jí)添加的監(jiān)聽器的監(jiān)聽范圍不同。5.4.2監(jiān)聽器JMeter常用的監(jiān)聽器為察看結(jié)果樹和聚合報(bào)告。在JMeter主界面選中測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“監(jiān)聽器”

“察看結(jié)果樹”,會(huì)添加一個(gè)察看結(jié)果樹界面,也就是一個(gè)察看結(jié)果樹。(1)在測(cè)試計(jì)劃中添加察看結(jié)果樹(2)在線程組中添加察看結(jié)果樹在JMeter主界面的測(cè)試計(jì)劃中首先添加線程組,然后選中線程組并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“監(jiān)聽器”

“察看結(jié)果樹”,會(huì)添加一個(gè)察看結(jié)果樹界面。1.察看結(jié)果樹察看結(jié)果樹通常在調(diào)試腳本的時(shí)候用于觀察請(qǐng)求和響應(yīng)結(jié)果是否正確,包括請(qǐng)求頭、請(qǐng)求體、響應(yīng)頭、響應(yīng)體。5.4.2監(jiān)聽器在測(cè)試計(jì)劃中和在線程組中添加察看結(jié)果樹的界面是相同的,如下圖所示。5.4.2監(jiān)聽器察看結(jié)果樹界面有“取樣器結(jié)果”“請(qǐng)求”“響應(yīng)數(shù)據(jù)”3個(gè)選項(xiàng)卡,這3個(gè)選項(xiàng)卡的作用分別如下。取樣器結(jié)果:可以查看請(qǐng)求的整體性能指標(biāo),例如發(fā)送請(qǐng)求的線程名稱、請(qǐng)求開始時(shí)間、加載時(shí)間、延遲時(shí)間等。請(qǐng)求:其下有兩個(gè)子選項(xiàng)卡,分別是“RequestBody”和“RequestHeaders”?!癛equestBody”為請(qǐng)求體,可以查看請(qǐng)求體信息;“RequestHeaders”為請(qǐng)求頭,可以查看請(qǐng)求頭信息。響應(yīng)數(shù)據(jù):其下也有兩個(gè)子選項(xiàng)卡,分別是“RequestBody”和“RequestHeaders”,“ResponseBody”為響應(yīng)體,可以查看響應(yīng)體數(shù)據(jù);“ResponseHeaders”為響應(yīng)頭,可以查看響應(yīng)頭數(shù)據(jù)。5.4.2監(jiān)聽器在取樣器列舉的兩個(gè)案例的基礎(chǔ)上添加兩個(gè)察看結(jié)果樹,第一個(gè)察看結(jié)果樹從測(cè)試計(jì)劃添加,第二個(gè)察看結(jié)果樹從名稱為“使用路徑傳遞GET請(qǐng)求參數(shù)”的線程組添加。添加成功之后,發(fā)送請(qǐng)求并查看測(cè)試結(jié)果,如下圖所示。5.4.2監(jiān)聽器添加成功之后執(zhí)行測(cè)試,察看結(jié)果樹-1的界面和察看結(jié)果樹-2的界面分別如下圖所示。5.4.2監(jiān)聽器解決察看結(jié)果樹中的亂碼問題在察看結(jié)果樹中有時(shí)會(huì)出現(xiàn)亂碼的問題,這是因?yàn)镴Meter在解析響應(yīng)數(shù)據(jù)時(shí),使用的編碼不能很好地支持中文。解決察看結(jié)果樹中的亂碼問題需要修改JMeter配置文件。編輯perties,將sampleresult.default.encoding的值修改為UTF-8,并取消注釋,修改之后的設(shè)置如下。sampleresult.default.encoding=UTF-8 多學(xué)一招5.4.2監(jiān)聽器聚合報(bào)告用于測(cè)試結(jié)束后,收集系統(tǒng)各項(xiàng)性能指標(biāo),例如響應(yīng)時(shí)間、并發(fā)數(shù)、吞吐量等。添加聚合報(bào)告的方式與添加察看結(jié)果樹的方式相似,首先選中JMeter主界面的測(cè)試計(jì)劃或線程組并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“監(jiān)聽器”

“聚合報(bào)告”,聚合報(bào)告界面如下圖所示。2.聚合報(bào)告5.4.2監(jiān)聽器下面介紹聚合報(bào)告中的各項(xiàng)指標(biāo)。Label:請(qǐng)求的類型,例如HTTP請(qǐng)求、FTP請(qǐng)求、Java請(qǐng)求等。樣本:發(fā)送到服務(wù)器的請(qǐng)求數(shù)量。平均值:請(qǐng)求的平均響應(yīng)時(shí)間,單位是毫秒。中位數(shù):是一個(gè)時(shí)間值,單位是毫秒。有50%的請(qǐng)求響應(yīng)時(shí)間低于該值,有50%的請(qǐng)求響應(yīng)時(shí)間高于該值。例如,中位數(shù)為10,表示有50%的請(qǐng)求在10毫秒內(nèi)響應(yīng),有50%的請(qǐng)求響應(yīng)時(shí)間超過10毫秒。90%百分位:90%的請(qǐng)求的響應(yīng)時(shí)間少于該時(shí)間,單位是毫秒。95%百分位:95%的請(qǐng)求的響應(yīng)時(shí)間少于該時(shí)間,單位是毫秒。99%百分位:99%的請(qǐng)求的響應(yīng)時(shí)間少于該時(shí)間,單位是毫秒。5.4.2監(jiān)聽器最小值:請(qǐng)求響應(yīng)的最小時(shí)間,單位是毫秒。最大值:請(qǐng)求響應(yīng)的最大時(shí)間,單位是毫秒。異常:請(qǐng)求的錯(cuò)誤率。吞吐量:服務(wù)器單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)量。默認(rèn)情況下是每秒(sec)處理的請(qǐng)求數(shù)量,通常認(rèn)為吞吐量就是TPS。接收KB/sec:每秒從服務(wù)器接收到的數(shù)據(jù)量。發(fā)送KB/sec:每秒發(fā)送的數(shù)據(jù)量。5.4.2監(jiān)聽器下面通過一個(gè)案例演示聚合報(bào)告的使用,本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為,模擬50個(gè)用戶發(fā)送請(qǐng)求,在5秒內(nèi)全部啟動(dòng),運(yùn)行時(shí)間為1分鐘,查看并分析請(qǐng)求響應(yīng)時(shí)間、吞吐量、錯(cuò)誤率等性能指標(biāo),如下圖所示。5.4.2監(jiān)聽器配置好HTTP請(qǐng)求和線程組之后,選中JMeter主界面的“線程組”并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”→“監(jiān)聽器”→“聚合報(bào)告”,會(huì)添加一個(gè)聚合報(bào)告,添加成功后執(zhí)行測(cè)試。當(dāng)測(cè)試結(jié)束后,聚合報(bào)告結(jié)果如下圖所示。5.4.3配置元件

先定一個(gè)小目標(biāo)!掌握配置元件的使用,能夠使用常用的配置元件完成參數(shù)化設(shè)置5.4.3配置元件性能測(cè)試中為了模擬大量用戶操作,往往需要進(jìn)行參數(shù)化,JMeter中的參數(shù)化可以通過配置元件完成。配置元件可以配置測(cè)試計(jì)劃的一些公用信息(參數(shù)),其配置會(huì)影響作用域內(nèi)的所有元件。5.4.3配置元件用戶定義的變量HTTP信息頭管理器HTTP請(qǐng)求默認(rèn)值計(jì)數(shù)器CSV數(shù)據(jù)文件設(shè)置配置元件中常用的參數(shù)化工具配置元件常用的參數(shù)化工具有用戶定義的變量、HTTP信息頭管理器、HTTP請(qǐng)求默認(rèn)值、CSV數(shù)據(jù)文件設(shè)置和計(jì)數(shù)器。5.4.3配置元件1.用戶定義的變量用戶定義的變量可以被其作用域范圍內(nèi)的所有元件引用。如果在測(cè)試計(jì)劃中需要使用用戶定義的變量,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“配置元件”

“用戶定義的變量”,會(huì)添加一個(gè)用戶定義的變量界面,如下圖所示。5.4.3配置元件配置元件中常用的參數(shù)化工具下面通過一個(gè)案例演示用戶定義的變量的使用,本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為:443,通過用戶定義的變量定義變量protocol(協(xié)議)、domain(域名)和port(端口),使用這3個(gè)變量實(shí)現(xiàn)請(qǐng)求的參數(shù)化。5.4.3配置元件配置元件中常用的參數(shù)化工具引用完變量后,在線程組中添加一個(gè)察看結(jié)果樹界面,接著單擊菜單欄中的啟動(dòng)按鈕“

”,執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.3配置元件配置元件中常用的參數(shù)化工具HTTP信息頭管理器用于配置HTTP請(qǐng)求頭信息,例如請(qǐng)求體的MIME(MultipurposeInternetMailExtensions,多用途互聯(lián)網(wǎng)郵件擴(kuò)展)類型Content-Type、瀏覽器可接受的響應(yīng)內(nèi)容類型Accept等。選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“配置元件”

“HTTP信息頭管理器”,會(huì)添加一個(gè)HTTP信息頭管理器界面,如下圖所示。2.HTTP信息頭管理器5.4.3配置元件配置元件中常用的參數(shù)化工具下面通過一個(gè)案例演示HTTP信息頭管理器的使用。本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為,在HTTP請(qǐng)求頭中進(jìn)行如下配置。Content-Type:application/json;charset=utf-8Accept:text/plain 5.4.3配置元件下面分別添加HTTP信息頭管理器和HTTP請(qǐng)求,并進(jìn)行相關(guān)配置,如下圖所示。5.4.3配置元件配置完HTTP請(qǐng)求信息后,執(zhí)行測(cè)試計(jì)劃,添加察看結(jié)果樹中的請(qǐng)求頭數(shù)據(jù)如下圖所示。5.4.3配置元件如果一組請(qǐng)求的服務(wù)器名稱、端口、請(qǐng)求方式都相同,則可以添加HTTP請(qǐng)求默認(rèn)值,將請(qǐng)求的服務(wù)器名稱、端口、請(qǐng)求方式配置在HTTP請(qǐng)求默認(rèn)值中進(jìn)行統(tǒng)一管理。如果想要在測(cè)試計(jì)劃中添加HTTP請(qǐng)求默認(rèn)值,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“配置元件”

“HTTP請(qǐng)求默認(rèn)值”,如下圖所示。3.HTTP請(qǐng)求默認(rèn)值5.4.3配置元件使用JMeter進(jìn)行測(cè)試時(shí),如果參數(shù)數(shù)據(jù)較多,可以將參數(shù)寫入文件中,設(shè)置CSV數(shù)據(jù)文件可以從文件中讀取參數(shù)。如果想要在測(cè)試計(jì)劃中對(duì)CSV數(shù)據(jù)文件進(jìn)行設(shè)置,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“配置元件”

“CSVDataSetConfig”,如下圖所示。4.CSV數(shù)據(jù)文件設(shè)置5.4.3配置元件CSV數(shù)據(jù)文件設(shè)置的主要配置項(xiàng)如下。文件名:數(shù)據(jù)文件名,包括路徑。文件編碼:文件的編碼格式,通常是UTF-8。變量名稱(英文逗號(hào)隔開):數(shù)據(jù)文件中每列參數(shù)對(duì)應(yīng)的變量名,多個(gè)變量名之間使用英文“,”隔開。忽略首行(只在設(shè)置了變量名稱后才生效):是否從第一行開始讀取。分隔符(用‘\t代替制表符’):數(shù)據(jù)文件中的參數(shù)數(shù)據(jù)之間使用什么分隔符,此處就填寫什么分隔符。5.4.3配置元件是否允許帶引號(hào)?:如果選擇“True”,數(shù)據(jù)文件中有引號(hào),則變量引用后也帶引號(hào);如果選擇“False”,無論數(shù)據(jù)文件中是否有引號(hào),變量引用后都不帶引號(hào)。遇到文件結(jié)束符再次循環(huán)?:文件結(jié)束后是否從頭開始讀取數(shù)據(jù),通常保持默認(rèn)的True。遇到文件結(jié)束符停止線程?:文件結(jié)束后是否停止線程,通常保持默認(rèn)的False。線程共享模式:讀取的參數(shù)作用范圍,通常選擇“所有現(xiàn)場(chǎng)”,表示作用于全局。5.4.3配置元件下面通過一個(gè)案例演示CSV數(shù)據(jù)文件設(shè)置的使用。本案例要求使用JMeter發(fā)送一個(gè)POST請(qǐng)求,請(qǐng)求地址為。要求循環(huán)請(qǐng)求3次,每次攜帶username、password、code這3個(gè)參數(shù),每次的參數(shù)值都不相同,如下圖所示。5.4.3配置元件將線程組循環(huán)次數(shù)設(shè)置為3,在HTTP請(qǐng)求界面引用變量,配置完成后執(zhí)行測(cè)試,測(cè)試結(jié)果,如下圖所示。5.4.3配置元件使用JMeter進(jìn)行測(cè)試時(shí),當(dāng)需要引用大量的測(cè)試數(shù)據(jù)并要求測(cè)試數(shù)據(jù)能夠自增且不能重復(fù)時(shí),則可以使用計(jì)數(shù)器來實(shí)現(xiàn)。計(jì)數(shù)器設(shè)置界面如下圖所示。5.計(jì)數(shù)器5.4.3配置元件計(jì)數(shù)器設(shè)置界面的主要配置項(xiàng)如下。Startingvalue:計(jì)數(shù)器的起始值。遞增:計(jì)數(shù)器遞增的值。Maximumvalue:計(jì)數(shù)器的最大值。數(shù)字格式:可選格式,例如設(shè)置為000,格式化后為001,002。引用名稱:用于設(shè)置變量名,引用的方式為${變量名}。與每用戶獨(dú)立的跟蹤計(jì)數(shù)器:每個(gè)線程都有自己的計(jì)數(shù)器。如果勾選該復(fù)選框,則用戶1獲取的值為1,用戶2獲取的值為2。如果不勾選該復(fù)選框,就表示全局計(jì)數(shù)器,則用戶1獲取的值為1,用戶2獲取的值也是1。在每個(gè)線程組迭代上重置計(jì)數(shù)器:可選項(xiàng),當(dāng)勾選“與每用戶獨(dú)立的跟蹤計(jì)數(shù)器”復(fù)選框時(shí)才可以使用。如果勾選了該復(fù)選框,則每次線程組迭代都會(huì)重置計(jì)數(shù)器的值。5.4.3配置元件下面通過一個(gè)案例演示計(jì)數(shù)器的使用。本案例要求使用JMeter發(fā)送一個(gè)POST請(qǐng)求,請(qǐng)求地址為。要求發(fā)送請(qǐng)求時(shí)攜帶參數(shù)id,并循環(huán)請(qǐng)求6次,每次請(qǐng)求的遞增值為1,其中最大值為5,數(shù)字格式為000,如下圖所示。5.4.3配置元件當(dāng)設(shè)置完請(qǐng)求參數(shù)后,在線程組中添加一個(gè)察看結(jié)果樹,保存之后執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.4斷言

先定一個(gè)小目標(biāo)!掌握斷言的使用,能夠使用斷言完成HTTP請(qǐng)求響應(yīng)結(jié)果的判斷5.4.4斷言斷言用于驗(yàn)證響應(yīng)結(jié)果是否正確,即用一個(gè)預(yù)設(shè)的結(jié)果(如值、表達(dá)式、時(shí)間長(zhǎng)短等)與實(shí)際結(jié)果進(jìn)行匹配,匹配成功就是斷言成功,匹配失敗就是斷言失敗。5.4.4斷言響應(yīng)斷言可以對(duì)任意格式的響應(yīng)數(shù)據(jù)進(jìn)行斷言。如果想要在測(cè)試計(jì)劃中使用響應(yīng)斷言的方式進(jìn)行斷言,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“斷言”

“響應(yīng)斷言”,會(huì)添加一個(gè)響應(yīng)斷言界面,如下圖所示。1.響應(yīng)斷言5.4.4斷言測(cè)試字段用于配置要斷言的項(xiàng)。測(cè)試字段有多個(gè),具體如下。響應(yīng)文本:響應(yīng)主體。響應(yīng)代碼:響應(yīng)的狀態(tài)碼,例如200。響應(yīng)信息:響應(yīng)的狀態(tài)信息,例如OK。響應(yīng)頭:響應(yīng)的頭部信息。請(qǐng)求頭:請(qǐng)求的頭部信息。URL樣本:請(qǐng)求的URL。文檔(文本):響應(yīng)的整個(gè)文檔。忽略狀態(tài):忽略返回的響應(yīng)狀態(tài)碼。請(qǐng)求數(shù)據(jù):請(qǐng)求內(nèi)容。(1)測(cè)試字段5.4.4斷言模式匹配規(guī)則是對(duì)斷言內(nèi)容進(jìn)行匹配的方式。模式匹配規(guī)則主要有以下幾種。包括:返回結(jié)果包含指定的內(nèi)容,支持正則匹配。匹配:預(yù)期結(jié)果與實(shí)際結(jié)果相等,支持正則匹配。相等:預(yù)期結(jié)果與實(shí)際結(jié)果相等,不支持正則匹配。字符串:與包括類似,但不支持正則匹配。否:取反。如果斷言結(jié)果為true,那么在選擇“否”之后,最終斷言結(jié)果為false。如果斷言結(jié)果為false,那么在選擇“否”之后,最終結(jié)果為

true?;蛘撸喝绻麥y(cè)試模式有多個(gè),只要其中一個(gè)測(cè)試模式匹配,斷言就會(huì)成功;如果沒有選擇“或者”,則多個(gè)測(cè)試模式必須都匹配成功,斷言才會(huì)成功。(2)模式匹配規(guī)則5.4.4斷言測(cè)試模式即填寫的預(yù)期結(jié)果。單擊下方的“添加”按鈕,可以添加測(cè)試模式;單擊“刪除”按鈕,可以刪除測(cè)試模式。測(cè)試模式可以添加多個(gè)。(3)測(cè)試模式5.4.4斷言下面通過一個(gè)案例演示響應(yīng)斷言的使用。本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為,檢查響應(yīng)數(shù)據(jù)中是否包含“百度一下,你就知道”字符串,如下圖所示。5.4.4斷言JSON斷言用于對(duì)JSON格式的響應(yīng)結(jié)果進(jìn)行斷言。如果想要在測(cè)試計(jì)劃中添加JSON斷言,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“斷言”

“JSON斷言”,會(huì)添加一個(gè)JSON斷言界面,如下圖所示。2.JSON斷言5.4.4斷言關(guān)于JSON斷言的配置項(xiàng)介紹如下。AssertJSONPathexists:用于配置要斷言的JSON元素的路徑。Additionallyassertvalue:是否要使用指定的值生成斷言。Matchasregularexpression:使用正則表達(dá)式斷言。ExpectedValue:期望值。如果勾選了“Additionallyassertvalue”復(fù)選框,就在這里填寫期望值。Expectednull:如果期望的值為null,就勾選該復(fù)選框。Invertassertion(willfailifaboveconditionsmet):反轉(zhuǎn)斷言。斷言成功時(shí),如果勾選該復(fù)選框,則斷言失敗。5.4.4斷言下面通過一個(gè)案例演示JSON斷言的使用。本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為/data/sk/101010100.html,檢查響應(yīng)的JSON數(shù)據(jù)中,city對(duì)應(yīng)的內(nèi)容是否為“北京”,如下圖所示。5.4.4斷言配置完成之后,執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.4斷言斷言持續(xù)時(shí)間主要用于斷言請(qǐng)求的響應(yīng)時(shí)間是否滿足要求。如果在測(cè)試計(jì)劃中需要添加斷言持續(xù)時(shí)間,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“斷言”

“斷言持續(xù)時(shí)間”,會(huì)添加一個(gè)斷言持續(xù)時(shí)間界面,如下圖所示。3.斷言持續(xù)時(shí)間5.4.4斷言下面通過一個(gè)案例演示斷言持續(xù)時(shí)間的使用。本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為,檢查響應(yīng)時(shí)間是否超過100毫秒,如下圖所示。5.4.4斷言配置完成后執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.5前置處理器

先定一個(gè)小目標(biāo)!掌握前置處理器的使用,能夠使用用戶參數(shù)元件完成特殊的參數(shù)化設(shè)置5.4.5前置處理器前置處理器用于在請(qǐng)求發(fā)送之前對(duì)請(qǐng)求進(jìn)行一些特殊的處理,例如參數(shù)化、加密請(qǐng)求和替換請(qǐng)求字段等。較為常用的元件是用戶參數(shù),用戶參數(shù)可以保證不同的用戶訪問時(shí),獲取不同的參數(shù)值。5.4.5前置處理器下面以用戶參數(shù)為例,講解前置處理器的使用。首先選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“前置處理器”

“用戶參數(shù)”,會(huì)添加一個(gè)用戶參數(shù)界面,如下圖所示。5.4.5前置處理器下面通過一個(gè)案例演示用戶參數(shù)的使用。本案例要求使用JMeter發(fā)送一個(gè)GET請(qǐng)求,請(qǐng)求地址為/S,第一個(gè)用戶攜帶參數(shù)為:name=張三&age=28;第二個(gè)用戶攜帶參數(shù)為:name=李四&age=30,如下圖所示。5.4.5前置處理器配置完HTTP請(qǐng)求之后執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.6后置處理器

先定一個(gè)小目標(biāo)!掌握后置處理器的使用,能夠使用常用的后置處理器元件完成響應(yīng)數(shù)據(jù)的提取5.4.6后置處理器后置處理器用于對(duì)響應(yīng)數(shù)據(jù)進(jìn)行關(guān)聯(lián)處理,所謂關(guān)聯(lián)就是請(qǐng)求之間有依賴關(guān)系,例如一個(gè)請(qǐng)求需要另一個(gè)請(qǐng)求的響應(yīng)數(shù)據(jù)作為參數(shù),則需要先獲取另一個(gè)請(qǐng)求的響應(yīng)數(shù)據(jù),對(duì)其進(jìn)行處理,再將響應(yīng)數(shù)據(jù)作為參數(shù)來發(fā)送請(qǐng)求。獲取一個(gè)請(qǐng)求的響應(yīng)數(shù)據(jù)就需要用到后置處理器。JMeter中常用的后置處理器有正則表達(dá)式提取器、Xpath提取器、JSON提取器。5.4.6后置處理器正則表達(dá)式表是一種文本模式,它可以使用普通字符和特殊字符(元字符)描述一個(gè)字符串規(guī)則,用于匹配一系列符合該規(guī)則的字符串。正則表達(dá)式通常用來檢索、替換符合特定規(guī)則的字符串。例如,“a.”中的元字符“.”表示任意字符,則“a.”可以匹配“aa”“ab”“ac”“a1”等任何滿足包含兩個(gè)字符且第1個(gè)字符是a的字符串。(1)正則表達(dá)式1.正則表達(dá)式提取器5.4.6后置處理器正則表達(dá)式的元字符有很多,常用的正則表達(dá)式元字符如下表所示。元字符含義()封裝待返回的字符串.匹配除換行符以外的任意字符+匹配前面的字符串一次或多次?匹配前面的字符串0次、1次,在找到第一個(gè)匹配項(xiàng)后停止*匹配前面出現(xiàn)的字符0次或多次^匹配字符串的開始位置$匹配字符串的結(jié)束位置|模式選擇符,從中任選一個(gè)匹配5.4.6后置處理器JMeter中的正則表達(dá)式匹配格式如下。

左邊界(正則表達(dá)式)右邊界在上述格式中,()中的內(nèi)容是正則表達(dá)式,它所匹配的結(jié)果就是要獲取的字符串。例如,請(qǐng)求百度首頁,返回?cái)?shù)據(jù)片段如下。<!doctypehtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>百度一下,你就知道</title><style>html{overflow-y:auto}body{font:12pxarial;5.4.6后置處理器如果要從返回?cái)?shù)據(jù)片段中提取“百度一下,你就知道”,則在設(shè)置正則表達(dá)式時(shí),需要先找出左、右邊界,左邊界為<title>,右邊界為</title>,在()中設(shè)置正則表達(dá)式為“.*”,完整正則表達(dá)式如下。<title>(.*)</title>通過上述表達(dá)式就可以匹配出字符串“百度一下,你就知道”。上述正則表達(dá)式能夠匹配出所有的“百度一下,你就知道”,當(dāng)它搜索到滿足條件的字符時(shí),不會(huì)停止,會(huì)繼續(xù)往后匹配,直到數(shù)據(jù)結(jié)束,這種匹配模式稱為“貪婪”模式。5.4.6后置處理器如果只想匹配一次,可以在“.*”后面添加“?”,具體如下。<title>(.*?)</title>添加了“?”之后,正則表達(dá)式就只會(huì)匹配一次,一旦搜索到匹配的字符串就會(huì)結(jié)束搜索,這種匹配模式稱為“懶惰”模式。5.4.6后置處理器JMeter中的正則表達(dá)式提取器是支持正則表達(dá)式匹配來提取任意格式的響應(yīng)數(shù)據(jù)的元件。如果在測(cè)試計(jì)劃中需要配置正則表達(dá)式提取器,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“后置處理器”

“正則表達(dá)式提取器”,會(huì)添加一個(gè)正則表達(dá)式提取器界面,如下圖所示。(2)配置正則表達(dá)式提取器5.4.6后置處理器

正則表達(dá)式提取器的主要配置項(xiàng)有以下5個(gè)。引用名稱:用于存儲(chǔ)正則表達(dá)式提取出的值,以供其他請(qǐng)求引用,引用方式為${引用名稱}。正則表達(dá)式:為提取數(shù)據(jù)設(shè)置的正則表達(dá)式。模板:用于設(shè)置使用提取到的第幾個(gè)值。如果正則表達(dá)式有多個(gè)(),就可以提取出多組值,這里可以指定要使用的級(jí)別,格式為$n$,例如$1$表示使用第1組數(shù)據(jù);$2$、$3$表示使用第2、3組數(shù)據(jù)。如果n的值為0($0$),表示使用全部數(shù)據(jù)。匹配數(shù)字(0代表隨機(jī)):表示取一組數(shù)據(jù)中的第幾個(gè)值。0表示隨機(jī)取值,-1表示取全部值,其他正整數(shù)n表示取第n個(gè)值。缺省值:默認(rèn)值,如果引用名稱沒有取到值,就使用該默認(rèn)值。5.4.6后置處理器下面通過一個(gè)案例演示正則表達(dá)式提取器的使用。本案例要求使用JMeter發(fā)送兩個(gè)請(qǐng)求,具體要求如下。請(qǐng)求一:請(qǐng)求地址為,獲取網(wǎng)頁的<title>標(biāo)簽的值。請(qǐng)求二:請(qǐng)求地址為/S,把請(qǐng)求一的<title>標(biāo)簽的值作為請(qǐng)求參數(shù)。5.4.6后置處理器請(qǐng)求以和請(qǐng)求二請(qǐng)求具有關(guān)聯(lián)關(guān)系,可以使用正則表達(dá)式提取器提取請(qǐng)求一中的數(shù)據(jù),再將其作為請(qǐng)求二的參數(shù)。首先構(gòu)建測(cè)試計(jì)劃目錄樹,然后進(jìn)行相應(yīng)配置,如下圖所示5.4.6后置處理器正則表達(dá)式中的引用名稱r_title在HTTP請(qǐng)求-百度的請(qǐng)求界面中被引用,配置界面和測(cè)試結(jié)果如下圖所示。5.4.6后置處理器XPath提取器用于提取HTML格式的響應(yīng)數(shù)據(jù),它通過HTML文檔中的標(biāo)簽來提取數(shù)據(jù)。如果在測(cè)試計(jì)劃中需要使用XPath提取器,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“后置處理器”

“XPath提取器”,會(huì)添加一個(gè)Xpath提取器界面,如下圖所示。2.XPath提取器5.4.6后置處理器XPath提取器的常用配置項(xiàng)如下。UseTidy(tolerantparser):如果需要處理的頁面是HTML格式的,則必須勾選該復(fù)選框;如果需要處理的頁面是XML或XHTML格式的,則取消該復(fù)選框的勾選。引用名稱:存儲(chǔ)提取出的值。XPathquery:XPath表達(dá)式,即要提取哪些節(jié)點(diǎn)元素。匹配數(shù)字(0代表隨機(jī)):選擇提取結(jié)果。0表示隨機(jī)取值,-1表示取全部值,其他正整數(shù)n表示取第n個(gè)值。缺省值:默認(rèn)值,如果引用名稱沒有取到值,則使用該默認(rèn)值。5.4.6后置處理器下面通過一個(gè)案例演示XPath提取器的使用。以前面正則表達(dá)式提取器中的案例為例,同樣發(fā)送兩個(gè)請(qǐng)求,要求使用XPath提取器提取請(qǐng)求一中的title值。將正則表達(dá)式提取器替換為XPath提取器。配置界面和測(cè)試結(jié)果如下圖所示。5.4.6后置處理器XPath語法XPath語言(XMLPathLanguage,XML路徑語言)是一種用來確定XML文檔中某部分位置的語言。XPath提供了一套語法規(guī)則,可以幫助用戶快速選取XML/HTML文檔中的目標(biāo)節(jié)點(diǎn)。多學(xué)一招5.4.6后置處理器選取節(jié)點(diǎn)是最基礎(chǔ)的操作,節(jié)點(diǎn)所在的路徑既可以是從根節(jié)點(diǎn)開始的,也可以是從任意位置開始的。選取節(jié)點(diǎn)的方法如下表所示。(1)選取節(jié)點(diǎn)多學(xué)一招表達(dá)式說明節(jié)點(diǎn)名稱選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)/從根節(jié)點(diǎn)選取直接子節(jié)點(diǎn),相當(dāng)于絕對(duì)路徑//從當(dāng)前節(jié)點(diǎn)選取子孫節(jié)點(diǎn),相當(dāng)于相對(duì)路徑.選取當(dāng)前節(jié)點(diǎn)..選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)@選取屬性節(jié)點(diǎn)5.4.6后置處理器XPath語法下面以一個(gè)XML文檔bookstore.xml為例演示如何使用表中的表達(dá)式選取XML文檔中的節(jié)點(diǎn)。bookstore.xml的具體內(nèi)容如下。<?xmlversion="1.0"encoding="ISO-8859-1"?><bookstore><book><titlelang="eng">HarryPotter</title><price>29.99</price></book><book><titlelang="eng">LearningXML</title><price>39.95</price></book></bookstore>

多學(xué)一招5.4.6后置處理器選取節(jié)點(diǎn)的示例代碼如下。bookstore#選取bookstore的所有子節(jié)點(diǎn)/bookstore#選取根節(jié)點(diǎn)bookstorebookstore/book#從根節(jié)點(diǎn)bookstore開始,向下選取名為book的所有子節(jié)點(diǎn)//book#從任意節(jié)點(diǎn)開始,選取名為book的所有子節(jié)點(diǎn)bookstore//book#從bookstore的后代節(jié)點(diǎn)中,選取名為book的所有子節(jié)點(diǎn)//@lang#選取所有名為lang的屬性節(jié)點(diǎn)

多學(xué)一招5.4.6后置處理器謂語是選取節(jié)點(diǎn)時(shí)的附加條件,主要用于對(duì)節(jié)點(diǎn)集進(jìn)行篩選,選取出某個(gè)特定的節(jié)點(diǎn),或者包含指定屬性或基本值的節(jié)點(diǎn)。謂語會(huì)嵌入到中括號(hào)中,并位于要補(bǔ)充說明的節(jié)點(diǎn)后面。帶謂語的路徑表達(dá)式的基本格式如下。

節(jié)點(diǎn)[謂語]中括號(hào)中的謂語可以是整數(shù)、屬性、函數(shù),也可以是整數(shù)、屬性、函數(shù)與運(yùn)算符組合的表達(dá)式。若為整數(shù)(從1開始),則這個(gè)數(shù)值將作為位置,用于從節(jié)點(diǎn)集中選取與該位置對(duì)應(yīng)的節(jié)點(diǎn);若為屬性,則會(huì)從節(jié)點(diǎn)集中選取包含該屬性的節(jié)點(diǎn);若為函數(shù),則會(huì)將該函數(shù)的返回值作為條件,從節(jié)點(diǎn)集中選取滿足條件的節(jié)點(diǎn)。(2)謂語多學(xué)一招5.4.6后置處理器常用的XPath函數(shù)如下表所示。多學(xué)一招函數(shù)說明position()返回當(dāng)前被處理的節(jié)點(diǎn)的位置last()返回當(dāng)前節(jié)點(diǎn)集中的最后一個(gè)節(jié)點(diǎn)count()返回節(jié)點(diǎn)的總數(shù)目max((arg,arg,...))返回大于其他參數(shù)的參數(shù)min((arg,arg,...))返回小于其他參數(shù)的參數(shù)name()返回當(dāng)前節(jié)點(diǎn)的名稱current-date()返回當(dāng)前的日期(帶有時(shí)區(qū))current-time()返回當(dāng)前的時(shí)間(帶有時(shí)區(qū))contains(string1,string2)若string1包含string2,則返回true,否則返回false5.4.6后置處理器下面以bookstore.xml為例演示帶謂語的路徑表達(dá)式的用法,具體代碼如下。/bookstore/book[1]#選取屬于bookstore子節(jié)點(diǎn)的第1個(gè)book節(jié)點(diǎn)/bookstore/book[last()]#選取屬于bookstore子節(jié)點(diǎn)的最后一個(gè)book節(jié)點(diǎn)/bookstore/book[last()-1]#選取屬于bookstore子節(jié)點(diǎn)的倒數(shù)第2個(gè)book節(jié)點(diǎn)/bookstore/book[position()<3]#選取屬于bookstore子節(jié)點(diǎn)的前2個(gè)book節(jié)點(diǎn)//title[@lang]#選取所有的屬性名稱為lang的title節(jié)點(diǎn)//title[@lang='eng']#選取所有的屬性名稱為lang且屬性值為eng的title節(jié)點(diǎn)#選取子節(jié)點(diǎn)price的值大于35.00,且父節(jié)點(diǎn)為bookstore的所有book節(jié)點(diǎn)/bookstore/book[price>35.00]#選取屬于book的所有子節(jié)點(diǎn)title,且節(jié)點(diǎn)book的子節(jié)點(diǎn)price的值必須大于35.00/bookstore/book[price>35.00]/title多學(xué)一招5.4.6后置處理器JSON提取器用于提取JSON格式的響應(yīng)數(shù)據(jù),如果在測(cè)試計(jì)劃中需要使用JSON提取器,則可以選中JMeter主界面的測(cè)試計(jì)劃并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“后置處理器”

“JSON提取器”,會(huì)添加一個(gè)JSON提取器界面,如下圖所示。3.JSON提取器5.4.6后置處理器

JSON提取器的常用配置項(xiàng)如下。Namesofcreatedvariables:引用名稱,存儲(chǔ)提取出的數(shù)據(jù)。JSONPathexpressions:JSON路徑表達(dá)式,即提取路徑。MatchNo.(0forRandom):匹配數(shù)字,0表示隨機(jī)取值,-1表示取全部值,其他正整數(shù)n表示取第n個(gè)值。DefaultValues:默認(rèn)值,如果引用名稱沒有取到值,就使用該默認(rèn)值。5.4.6后置處理器下面通過一個(gè)案例演示JSON提取器的使用。本案例要求使用JMeter發(fā)送兩個(gè)請(qǐng)求,具體如下。請(qǐng)求一:請(qǐng)求地址為/data/sk/101010100.html,獲取返回結(jié)果中的城市名稱“北京”。請(qǐng)求二:請(qǐng)求地址為/S?wd=北京,把請(qǐng)求一返回的城市名稱“北京”作為請(qǐng)求參數(shù)。5.4.6后置處理器首先在JMeter中添加并配置第一個(gè)HTTP請(qǐng)求,然后在JMeter中添加察看結(jié)果樹并執(zhí)行測(cè)試,如下圖所示。5.4.6后置處理器添加JSON提取器提取需要的數(shù)據(jù)。在JMeter中添加第二個(gè)HTTP請(qǐng)求,并按照案例要求在請(qǐng)求二的HTTP請(qǐng)求界面中引用city,如下圖所示。5.4.6后置處理器第二個(gè)HTTP請(qǐng)求配置完成之后,執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.7邏輯控制器

先定一個(gè)小目標(biāo)!掌握邏輯控制器的使用,能夠使用常用的邏輯控制器元件控制腳本的執(zhí)行順序5.4.7邏輯控制器邏輯控制器用于控制腳本的執(zhí)行順序。在JMeter中有17個(gè)邏輯控制器元件,它們可以分為兩類。5.4.7邏輯控制器分類1分類2控制測(cè)試計(jì)劃節(jié)點(diǎn)發(fā)送請(qǐng)求的邏輯順序控制器,包括如果(If)控制器、循環(huán)控制器等。用來對(duì)測(cè)試計(jì)劃中的腳本進(jìn)行分組,方便JMeter統(tǒng)計(jì)執(zhí)行結(jié)果以及進(jìn)行腳本的運(yùn)行時(shí)控制等,包括事務(wù)控制器、吞吐量控制器等。5.4.7邏輯控制器如果(If)控制器用于控制測(cè)試請(qǐng)求是否執(zhí)行(如果條件成立時(shí)執(zhí)行,條件不成立時(shí)不執(zhí)行)。如果在線程組中需要使用如果(If)控制器,則首先在JMeter主界面的測(cè)試計(jì)劃中添加一個(gè)線程組,然后選中線程組并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“邏輯控制器”

“如果(If)控制器”,會(huì)添加一個(gè)如果(If)控制器界面,如下圖所示。1.如果(If)控制器5.4.7邏輯控制器勾選“InterpretConditionasVariableExpression?”復(fù)選框,表示將條件解釋為變量表達(dá)式。勾選該復(fù)選框之后,如果(If)控制器界面會(huì)發(fā)生變化,如下圖所示。輸入框中的條件表達(dá)式不會(huì)再按照J(rèn)avaScript語法進(jìn)行解析,而是被視為JMeter的變量表達(dá)式。輸入框中不能直接填寫條件表達(dá)式,而是輸入使用__jexl3()或者groovy()函數(shù)生成的函數(shù)表達(dá)式。5.4.7邏輯控制器下面通過一個(gè)案例演示如果(If)控制器的使用。本案例要求使用用戶定義的變量定義一個(gè)變量name,name有兩個(gè)可選值:baidu和itcast。如果name的值為baidu,則請(qǐng)求;如果name的值為itcast,則請(qǐng)求。分析上述要求,根據(jù)name的值判斷發(fā)送哪個(gè)請(qǐng)求,需要使用如果(If)控制器實(shí)現(xiàn)。確定了核心元件之后,構(gòu)建測(cè)試計(jì)劃目錄樹,如下圖所示。5.4.7邏輯控制器下面分別以不同方式配置如果(If)控制器-百度和如果(If)控制器-itcast兩個(gè)元件。首先配置如果(If)控制器-百度,不勾選“InterpretConditionasVariableExpression?”復(fù)選框,直接在輸入框中輸入條件表達(dá)式,如下圖所示。5.4.7邏輯控制器然后配置如果(If)控制器-itcast,勾選“InterpretConditionasVariableExpression?”復(fù)選框,需要通過函數(shù)生成變量表達(dá)式。在JMeter工具欄單擊“函數(shù)助手”按鈕(),并單擊頂部的下拉列表框右側(cè)的下拉按鈕,選擇“jexl3”,在jexl3的函數(shù)參數(shù)列表中輸入條件表達(dá)式“${name}”==“itcast”之后,單擊“生成”按鈕生成函數(shù)表達(dá)式,如下圖所示。5.4.7邏輯控制器將生成的函數(shù)表達(dá)式“”${__jexl3(“${name}”==“itcast”,)}”粘貼到如果(If)控制器-itcast元件的輸入框中,如下圖所示。當(dāng)配置完成之后,執(zhí)行測(cè)試,可以發(fā)現(xiàn)發(fā)送的請(qǐng)求為,這是因?yàn)榇藭r(shí)name的值為baidu。如果將name的值修改為itcast,再次執(zhí)行測(cè)試,則發(fā)送的請(qǐng)求就是。5.4.7邏輯控制器循環(huán)控制器可以通過設(shè)置循環(huán)次數(shù),實(shí)現(xiàn)循環(huán)發(fā)送請(qǐng)求。如果在線程組中需要使用循環(huán)控制器,則首先選中JMeter主界面的線程組并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“邏輯控制器”

“循環(huán)控制器”,會(huì)添加一個(gè)循環(huán)控制器界面,如下圖所示。2.循環(huán)控制器5.4.7邏輯控制器假設(shè)有一個(gè)測(cè)試計(jì)劃,其目錄樹結(jié)構(gòu)如右圖所示。如果線程組循環(huán)次數(shù)設(shè)置為3,循環(huán)控制器的循環(huán)次數(shù)設(shè)置為4,則HTTP請(qǐng)求-1的循環(huán)次數(shù)為12(即3

4),HTTP請(qǐng)求-2的循環(huán)次數(shù)為3。線程組可以控制HTTP請(qǐng)求-1和HTTP請(qǐng)求-2,而循環(huán)控制器只能控制HTTP請(qǐng)求-1。5.4.7邏輯控制器ForEach控制器可以遍歷讀取一組數(shù)據(jù),控制其下層的取樣器執(zhí)行的次數(shù)。ForEach控制器通過與用戶定義的變量、正則表達(dá)式提取器結(jié)合使用,可以從用戶定義的變量或者從正則表達(dá)式提取器的返回結(jié)果中讀取一系列數(shù)據(jù)。3.ForEach控制器5.4.7邏輯控制器如果在線程組中需要使用ForEach控制器,則首先選中JMeter主界面中的線程組并右鍵單擊,在彈出的快捷菜單中依次選擇“添加”

“邏輯控制器”

“ForEach控制器”,會(huì)添加一個(gè)ForEach控制器界面,如下圖所示。5.4.7邏輯控制器ForEach控制器常用配置項(xiàng)如下。輸入變量前綴:將要遍歷的一組數(shù)據(jù)的前綴。例如,id1、id2、id3這一組數(shù)據(jù)的前綴就是id。開始循環(huán)字段(不包含):循環(huán)起始位置,不讀取當(dāng)前位置的數(shù)據(jù)。例如,填寫0,從第1個(gè)位置開始讀取;填寫1,從第2個(gè)位置開始讀取。結(jié)束循環(huán)字段(含):循環(huán)結(jié)束的位置。輸出變量名稱:用于保存讀取的數(shù)據(jù),在請(qǐng)求中可以引用該名稱。5.4.7邏輯控制器下面通過一個(gè)案例演示ForEach控制器的使用。本案例要求使用用戶定義的變量定義一組關(guān)鍵字:hello、pyhton、測(cè)試。依次取出這一組關(guān)鍵字,將其作為請(qǐng)求參數(shù)請(qǐng)求百度網(wǎng)站(/S?wd=hello)。分析上述要求,要想逐個(gè)讀取用戶定義的變量并定義一組關(guān)鍵字作為請(qǐng)求參數(shù),可以使用ForEach控制器。5.4.7邏輯控制器按照案例要求構(gòu)建測(cè)試計(jì)劃目錄樹,并在用戶定義的變量中定義一組關(guān)鍵字,如下圖所示。5.4.7邏輯控制器定義好關(guān)鍵字之后,配置ForEach控制器和HTTP請(qǐng)求界面,如下圖所示。5.4.7邏輯控制器配置完成之后,執(zhí)行測(cè)試,測(cè)試結(jié)果如下圖所示。5.4.8定時(shí)器

先定一個(gè)小目標(biāo)!掌握定時(shí)器的使用,能夠使用常用的定時(shí)器控制請(qǐng)求的延遲發(fā)送5.4.8定時(shí)器定時(shí)器用于為請(qǐng)求設(shè)置等待時(shí)間,使請(qǐng)求暫停一段時(shí)間再發(fā)送。定時(shí)器的作用范圍比較廣,如果只想要定時(shí)器針對(duì)某個(gè)請(qǐng)求,則需要將定時(shí)器添加為請(qǐng)求的子節(jié)點(diǎn)。否則,定時(shí)器會(huì)控制與它同層的所有請(qǐng)求。JMeter中常用的定時(shí)器有同步定時(shí)器、常數(shù)吞吐量定時(shí)器、固定定時(shí)器。5.4.8定時(shí)器同步定時(shí)器(Sy

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論