一、Jmeter簡(jiǎn)介Jmeter是由Apache公司開(kāi)發(fā)的一個(gè)純Java的開(kāi)源項(xiàng)目,即可以用于做接口測(cè)試也可以用于做性能測(cè)試。 Jmeter具備高移植性,可以實(shí)現(xiàn)跨平臺(tái)運(yùn)行。 Jmeter可以實(shí)現(xiàn)分布式負(fù)載。 Jmeter采用多線程,允許通過(guò)多個(gè)線程并發(fā)取樣或通過(guò)獨(dú)立的線程對(duì)不同的功能同時(shí)取樣。 Jmeter具有較高擴(kuò)展性。 二、Jmeter安裝1、安裝JDK,必須JDK1.7以上的版本,推薦1.8的版本 2、進(jìn)入官網(wǎng):http://jmeter./download_jmeter.cgi 下載最新的Jmeter版本,下載后解壓到非中文目錄,如:D:\ 3、配置Jmeter的環(huán)境變量。 (1) 新增變量:JMETER_HOME:D:\apache-jmeter-5.2.1 (2) 在CLASSPATH變量的最前面加入如下變量: %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar; (3)在PATH變量的最前面加入如下變量:%JMETER_HOME%\bin; 4、進(jìn)入D:\apache-jmeter-5.2.1\bin,雙擊jmeter.bat,或在dos窗口輸入jmeter命令打開(kāi)jmeter界面,安裝成功。 對(duì)于真正的零基礎(chǔ)來(lái)說(shuō):安裝請(qǐng)按如下步驟完成: windows下安裝jmeter? mac下安裝jmeter? So Easy那多不是事!寫(xiě)給jmeter入門(mén)的朋友! http://shoufuban.net/showweb/0/0/905029938.aspx 三、設(shè)置Jmeter語(yǔ)言為中文環(huán)境1、臨時(shí)設(shè)置 Jmeter菜單欄選擇OptionsàChoose LanguageàChinese (Simplified) 這種方法,重啟軟件后又變?yōu)橛⑽沫h(huán)境了。 2、永久設(shè)置 進(jìn)入apache-jmeter-5.2.1\bin目錄,找到“jmeter.properties”文件,在文件的第37行后添加“language=zh_CN”,保存之后再打開(kāi)jmeter就永久變?yōu)橹形沫h(huán)境了。 四、Jmeter主要元件1、測(cè)試計(jì)劃:是使用 JMeter 進(jìn)行測(cè)試的起點(diǎn),它是其它 JMeter測(cè)試元件的容器 2、線程組:代表一定數(shù)量的用戶,它可以用來(lái)模擬用戶并發(fā)發(fā)送請(qǐng)求。實(shí)際的請(qǐng)求內(nèi)容在Sampler中定義,它被線程組包含。 3、配置元件:維護(hù)Sampler需要的配置信息,并根據(jù)實(shí)際的需要修改請(qǐng)求的內(nèi)容。 4、前置處理器:負(fù)責(zé)在請(qǐng)求之前工作,常用來(lái)修改請(qǐng)求的設(shè)置 5、定時(shí)器:負(fù)責(zé)定義請(qǐng)求之間的延遲間隔。 6、取樣器(Sampler):是性能測(cè)試中向服務(wù)器發(fā)送請(qǐng)求,記錄響應(yīng)信息、響應(yīng)時(shí)間的最小單元,如:HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBC Request Sampler等,每一種不同類型的sampler 可以根據(jù)設(shè)置的參數(shù)向服務(wù)器發(fā)出不同類型的請(qǐng)求。 7、后置處理器:負(fù)責(zé)在請(qǐng)求之后工作,常用獲取返回的值。 8、斷言:用來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望的。 9、監(jiān)聽(tīng)器:負(fù)責(zé)收集測(cè)試結(jié)果,同時(shí)確定結(jié)果顯示的方式。 10、邏輯控制器:可以自定義JMeter發(fā)送請(qǐng)求的行為邏輯,它與Sampler結(jié)合使用可以模擬復(fù)雜的請(qǐng)求序列。 五、Jmeter元件的作用域和執(zhí)行順序1.元件作用域 配置元件:影響其作用范圍內(nèi)的所有元件。 前置處理器:在其作用范圍內(nèi)的每一個(gè)sampler元件之前執(zhí)行。 定時(shí)器:在其作用范圍內(nèi)的每一個(gè)sampler有效 后置處理器:在其作用范圍內(nèi)的每一個(gè)sampler元件之后執(zhí)行。 斷言:在其作用范圍內(nèi)的對(duì)每一個(gè)sampler元件執(zhí)行后的結(jié)果進(jìn)行校驗(yàn)。 監(jiān)聽(tīng)器:在其作用范圍內(nèi)對(duì)每一個(gè)sampler元件的信息收集并呈現(xiàn)。 總結(jié):從各個(gè)元件的層次結(jié)構(gòu)判斷每個(gè)元件的作用域。 2.元件執(zhí)行順序: 配置元件->前置處理器->定時(shí)器->取樣器->后置處理程序->斷言->監(jiān)聽(tīng)器 注意事項(xiàng): 1.前置處理器、后置處理器和斷言等組件只能對(duì)取樣器起作用,因此,如果在它們的作用域內(nèi)沒(méi)有任何取樣器,則不會(huì)被執(zhí)行。 2.如果在同一作用域內(nèi)有多個(gè)同一類型的元件,則這些元件按照它們?cè)跍y(cè)試計(jì)劃中的上下順序依次執(zhí)行。 六、Jmeter進(jìn)行接口測(cè)試流程使用Jmeter進(jìn)行接口測(cè)試的基本步驟如下: 1.測(cè)試計(jì)劃 2.線程組 3.HTTP Cookie管理器 4.Http請(qǐng)求默認(rèn)值 5.Sampler(HTTP請(qǐng)求) 6.斷言 7.監(jiān)聽(tīng)器(查看結(jié)果樹(shù)、圖形結(jié)果、聚合報(bào)告等) 七、Jmeter進(jìn)行接口測(cè)試流程步驟詳解1、測(cè)試計(jì)劃 打開(kāi)Jmeter,在菜單左側(cè)出現(xiàn) “測(cè)試計(jì)劃”。在這里測(cè)試計(jì)劃我們可以把它理解成新建的空白項(xiàng)目,在這個(gè)空白項(xiàng)目下面可以添加一系列的接口。 2、線程組 添加方法:右鍵點(diǎn)擊Test Plan->添加->線程(用戶)->線程組。 元件描述:一個(gè)線程組可以看做一個(gè)虛擬用戶組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶。 (1)線程數(shù):即虛擬用戶數(shù)。設(shè)置多少個(gè)線程數(shù)也就是設(shè)置多少虛擬用戶數(shù) (2)Ramp-Up時(shí)間(秒):設(shè)置虛擬用戶數(shù)全部啟動(dòng)的時(shí)長(zhǎng)。如果線程數(shù)為20,準(zhǔn)備時(shí)長(zhǎng)為10秒,那么需要10秒鐘啟動(dòng)20個(gè)線程。也就是平均每秒啟動(dòng)2個(gè)線程。 (3)循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的個(gè)數(shù)。如果線程數(shù)為20,循環(huán)次數(shù)為10,那么每個(gè)線程發(fā)送10次請(qǐng)求。總請(qǐng)求數(shù)為20*10=200。如果勾選了“永遠(yuǎn)”, 那么所有線程會(huì)一直發(fā)送請(qǐng)求,直到手動(dòng)點(diǎn)擊工具欄上的停止按鈕,或者設(shè)置的線程時(shí)間結(jié)束。 3、HTTP Cookie管理器 添加方法:右鍵線程組->添加->配置元件->HTTP Cookie管理器。 元件描述:HTTP Cookie管理器可以像瀏覽器一樣存儲(chǔ)和發(fā)送cookie,如果你要發(fā)送一個(gè)帶cookie的http請(qǐng)求,cookie manager會(huì)自動(dòng)存儲(chǔ)該請(qǐng)求的cookies,并且后面如果發(fā)送同源站點(diǎn)的http請(qǐng)求時(shí),都可以用這個(gè)cookies。 4、HTTP請(qǐng)求默認(rèn)值 添加方法:右鍵線程組->添加->配置元件->HTTP請(qǐng)求默認(rèn)值。 元件描述:HTTP請(qǐng)求默認(rèn)值是為了方便填寫(xiě)后續(xù)內(nèi)容而設(shè)置。主要填寫(xiě)[服務(wù)器名稱或IP]和[端口號(hào)],后續(xù)的HTTP請(qǐng)求中就不用每次都填寫(xiě)IP地址和端口號(hào)了。 5、HTTP請(qǐng)求 添加方法:右鍵線程組->添加->Sampler->HTTP請(qǐng)求。 元件描述:HTTP請(qǐng)求包括接口請(qǐng)求方法、請(qǐng)求路徑和請(qǐng)求參數(shù)等。 HTTP請(qǐng)求詳解 (1)名稱:本屬性用于標(biāo)識(shí)一個(gè)取樣器,建議使用一個(gè)有意義的名稱。 (2)注釋:對(duì)于測(cè)試沒(méi)有任何作用,僅用戶記錄用戶可讀的注釋信息。 (3)服務(wù)器名稱或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或IP地址。 (4)端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80 。 (5)協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求時(shí)的協(xié)議,可以是HTTP或者是HTTPS ,默認(rèn)值為http 。 (6)方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET、POST、HEAD、PUT、TRACE、OPTIONS、DELETE等。 (7)路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口) (8)內(nèi)容編碼:內(nèi)容的編碼方式,默認(rèn)值為iso8859 (9)自動(dòng)重定向:如果選中該選項(xiàng),當(dāng)發(fā)送HTTP請(qǐng)求后得到的響應(yīng)是302/301時(shí),JMeter 自動(dòng)重定向到新的頁(yè)面。 (10)使用keep Alive :保持jmeter 和目標(biāo)服務(wù)器之間的活躍狀態(tài),默認(rèn)選中 (11)對(duì)Post使用multipart/from-data:當(dāng)發(fā)送POST 請(qǐng)求時(shí),使用multipart/from-data方法發(fā)送,默認(rèn)不選中。 (12)同請(qǐng)求一起發(fā)送參數(shù) : 在請(qǐng)求中發(fā)送URL參數(shù),對(duì)于帶參數(shù)的URL ,jmeter提供了一個(gè)簡(jiǎn)單的對(duì)參數(shù)化的方法。用戶可以將URL中所有參數(shù)設(shè)置在本表中,表中的每一行是一個(gè)參數(shù)值對(duì)(對(duì)應(yīng)RUL中的 名稱1=值1)。 6、響應(yīng)斷言 添加方法:右鍵HTTP請(qǐng)求->添加->取樣器->HTTP請(qǐng)求。 元件描述:檢查接口是否訪問(wèn)成功。如果檢查失敗的話會(huì)提示找不到斷言的內(nèi)容,沒(méi)提示的話就代表成功了。 Apply to 指斷言作用范圍,通常發(fā)出一個(gè)請(qǐng)求只觸發(fā)一個(gè)請(qǐng)求,所以勾選“main sample only”就可以;若發(fā)一個(gè)請(qǐng)求可以觸發(fā)多個(gè)服務(wù)器請(qǐng)求,就有main sample 和sub-sample之分了。 (1)Main sample and sub-samples:作用于主請(qǐng)求和子請(qǐng)求 (2)Main sample only:僅僅只作用于主請(qǐng)求 (3)Sub-samples only:僅僅只作用于子請(qǐng)求 (4)Jmeter Variable:作用于jmeter變量(輸入框內(nèi)輸入jmeter變量名稱) 測(cè)試字段 響應(yīng)文本(匹配返回的json數(shù)據(jù))、響應(yīng)代碼(匹配返回碼:如200, 404,500等)、響應(yīng)信息(匹配響應(yīng)信息如“OK”字樣)、響應(yīng)頭(匹配響應(yīng)頭)、請(qǐng)求頭(匹配請(qǐng)求頭)、URL樣本(匹配請(qǐng)求的url鏈接,如果有重定向則包含請(qǐng)求url 和 重定向url)、[文檔(文本)](匹配響應(yīng)數(shù)據(jù)的文本形式)、忽略狀態(tài)(一個(gè)請(qǐng)求有多個(gè)響應(yīng)斷言,第一個(gè)響應(yīng)斷言選中此項(xiàng),當(dāng)?shù)谝粋€(gè)響應(yīng)斷言失敗時(shí)可以忽略此響應(yīng)結(jié)果,繼續(xù)進(jìn)行下一個(gè)斷言。如果下一個(gè)斷言成功則還是判定事務(wù)是成功的)、請(qǐng)求數(shù)據(jù)(匹配請(qǐng)求數(shù)據(jù)) 模式匹配規(guī)則 包括:響應(yīng)內(nèi)容包含需要匹配的內(nèi)容即代表響應(yīng)成功,支持正則表達(dá)式。 匹配:響應(yīng)內(nèi)容要完全匹配需要匹配的內(nèi)容即代表響應(yīng)成功,大小寫(xiě)不敏感,支持正則表達(dá)式。 字符串:響應(yīng)內(nèi)容包含需要匹配的內(nèi)容才代表響應(yīng)成功,大小寫(xiě)敏感,不支持正則表達(dá)式 相等:響應(yīng)內(nèi)容要完全等于需要匹配的內(nèi)容才代表響應(yīng)成功,大小寫(xiě)敏感,不支持正則表達(dá)式 否:相當(dāng)于取反,如果結(jié)果為true,勾上否就是false 或者:如果不想用AND連接(所有的模式都必須匹配,斷言才算成功),用OR選項(xiàng)可以用于將多個(gè)斷言模式進(jìn)行OR連接(只要一個(gè)模式匹配,斷言就是成功的) 測(cè)試模式 其實(shí)就是斷言的數(shù)據(jù)。點(diǎn)擊“添加”按鈕,輸入要斷言的數(shù)據(jù)。 7、增加監(jiān)聽(tīng)器 添加方法:線程組 ->右鍵添加 ->監(jiān)聽(tīng)器 ->察看結(jié)果樹(shù)。一般還會(huì)一并添加圖形結(jié)果、聚合報(bào)告。 元件描述:樹(shù)狀形式顯示接口的訪問(wèn)結(jié)果,包括請(qǐng)求結(jié)果、請(qǐng)求內(nèi)容、服務(wù)器的響應(yīng)內(nèi)容。 八、Jmeter接口測(cè)試必定用到的擴(kuò)展閱讀1.史上最全的最通俗易懂的-jmeter調(diào)試錯(cuò)誤全集 http://shoufuban.net/content/20/0408/12/69336923_904606822.shtml 2.jmeter實(shí)現(xiàn)接口關(guān)聯(lián)的兩種方式:正則表達(dá)式提取器和json提取器看這篇就夠了 http://shoufuban.net/content/20/0408/12/69336923_904607090.shtml 九、總結(jié)如果你對(duì)此文有任何疑問(wèn),如果你覺(jué)得此文對(duì)你有幫助,如果你對(duì)軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、面試經(jīng)驗(yàn)交流感興趣歡迎加入軟件測(cè)試技術(shù)群:695458161,群里發(fā)放的免費(fèi)資料都是筆者十多年測(cè)試生涯的精華。還有同行大神一起交流技術(shù)哦。 作者:來(lái)自公眾號(hào):軟測(cè)之家 |
|
來(lái)自: 長(zhǎng)沙逍遙子 > 《軟件測(cè)試》