Jemeter入門教程

PPT 鏈接:ptteng.github.io/PPT/PPT/Jemeter.html#/?

視頻鏈接:v.qq.com/x/page/s0521q4xjwk.html????? v.qq.com/x/page/y0521854aik.html?

大家好,我是IT修真院北京分院第21期的學(xué)員韋琦,一枚正直純潔善良的java程序員。

今天給大家分享一下,修真院官網(wǎng)Java任務(wù)6,深度思考中的知識(shí)點(diǎn)————

什么是壓力測(cè)試,壓力測(cè)試工具jemeter的使用。

1.背景介紹
Apache JMeter是Apache組織開(kāi)發(fā)的基于Java的壓力測(cè)試工具。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,但后來(lái)擴(kuò)展到其他測(cè)試領(lǐng)域。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對(duì)象、數(shù)據(jù)庫(kù)、FTP 服務(wù)器, 等等。JMeter 可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來(lái)自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試,通過(guò)創(chuàng)建帶有斷言的腳本來(lái)驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。

2.知識(shí)剖析
1、線程組:代表一定數(shù)量的并發(fā)用戶,它可以用來(lái)模擬并發(fā)用戶發(fā)送請(qǐng)求。實(shí)際的請(qǐng)求內(nèi)容在Sampler中定義,它被線程組包含??梢栽凇皽y(cè)試計(jì)劃->添加->線程組”來(lái)建立它,然后在線程組面板里有幾個(gè)輸入欄:線程數(shù)、Ramp-Up Period(in seconds)、循環(huán)次數(shù),其中Ramp-Up Period(in seconds)表示在這時(shí)間內(nèi)創(chuàng)建完所有的線程。如有8個(gè)線程,Ramp-Up = 200秒,那么線程的啟動(dòng)時(shí)間間隔為200/8=25秒,這樣的好處是:一開(kāi)始不會(huì)對(duì)服務(wù)器有太大的負(fù)載。線程組是為模擬并發(fā)負(fù)載而設(shè)計(jì)。

2、取樣器(Sampler):模擬各種請(qǐng)求。所有實(shí)際的測(cè)試任務(wù)都由取樣器承擔(dān),存在很多種請(qǐng)求。如:HTTP 、ftp請(qǐng)求等等。

3、監(jiān)聽(tīng)器:負(fù)責(zé)收集測(cè)試結(jié)果,同時(shí)也被告知了結(jié)果顯示的方式。功能是對(duì)取樣器的請(qǐng)求結(jié)果顯示、統(tǒng)計(jì)一些數(shù)據(jù)(吞吐量、KB/S……)等。

4、斷言:用于來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望,是否正確。它可以用來(lái)隔離問(wèn)題域,即在確保功能正確的前提下執(zhí)行壓力測(cè)試。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的。

5、定時(shí)器:負(fù)責(zé)定義請(qǐng)求(線程)之間的延遲間隔,模擬對(duì)服務(wù)器的連續(xù)請(qǐng)求。

6、邏輯控制器:允許自定義JMeter發(fā)送請(qǐng)求的行為邏輯,它與Sampler結(jié)合使用可以模擬復(fù)雜的請(qǐng)求序列。

7、配置元件維護(hù)Sampler需要的配置信息,并根據(jù)實(shí)際的需要會(huì)修改請(qǐng)求的內(nèi)容。

8、前置處理器和后置處理器負(fù)責(zé)在生成請(qǐng)求之前和之后完成工作。前置處理器常常用來(lái)修改請(qǐng)求的設(shè)置,后置處理器則常常用來(lái)處理響應(yīng)的數(shù)據(jù)。

聚合報(bào)告:

Label :各個(gè)模擬測(cè)試的名稱

#Samples :各個(gè)測(cè)試的樣本總數(shù)

Average :每個(gè)請(qǐng)求的平均響應(yīng)時(shí)間

Median :中值,即50%請(qǐng)求的平均響應(yīng)時(shí)間

90%Line :90%請(qǐng)求的響應(yīng)時(shí)間

Min :最小響應(yīng)時(shí)間 ,Max :最大的響應(yīng)時(shí)間

Error% :錯(cuò)誤響應(yīng)的概率。即無(wú)法響應(yīng)的概率。

ThroughPut :吞吐量 -- 默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)(Request per Second)。

KB/Sec :每秒從服務(wù)器端接收到的數(shù)據(jù)量。


新建線程組---HTTP? Get請(qǐng)求


填上相應(yīng)的參數(shù),執(zhí)行,監(jiān)聽(tīng)的察看結(jié)果樹


Delete請(qǐng)求把請(qǐng)求方法換下,就不貼圖了。

二)用jemeter?? Post請(qǐng)求


HTTP信息頭管理器(設(shè)置請(qǐng)求數(shù)據(jù)的格式)


因?yàn)槲业膒ost請(qǐng)求是經(jīng)過(guò)攔截的,所以需要登錄訪問(wèn),下圖中的域填I(lǐng)P。



結(jié)果:


Put請(qǐng)求類似,就不貼圖了。

3.常見(jiàn)問(wèn)題
1. JMeter的工作原理是什么?

向服務(wù)器提交請(qǐng)求;從服務(wù)器取回請(qǐng)求返回的結(jié)果。

2.?JMeter的作用?

JMeter可以用于測(cè)試靜態(tài)或者動(dòng)態(tài)資源的性能(文件、Servlets、Perl腳本、java對(duì)象、數(shù)據(jù)庫(kù)和查詢、ftp服務(wù)器或者其他的資源)。JMeter用于模擬在服務(wù)器、網(wǎng)絡(luò)或者其他對(duì)象上附加高負(fù)載以測(cè)試他們提供服務(wù)的受壓能力,或者分析他們提供的服務(wù)在不同負(fù)載條件下的總性能情況。你可以用JMeter提供的圖形化界面分析性能指標(biāo)或者在高負(fù)載情況下測(cè)試服務(wù)器/腳本/對(duì)象的行為。

3. 怎樣能看到j(luò)meter提供的腳本范例?

在\JMeter\jakarta-jmeter-2.0.3\xdocs\demos目錄下。

4. 怎樣設(shè)置并發(fā)用戶數(shù)?

選中可視化界面中左邊樹的TestPlan節(jié)點(diǎn),單擊右鍵,選擇Add-> Thread Group,其中Number of Threads參數(shù)用來(lái)設(shè)置發(fā)送請(qǐng)求的用戶數(shù)目。

5.?JMeter的運(yùn)行指示?

Jmeter在運(yùn)行時(shí),右上角有個(gè)單選框大小的小框框,運(yùn)行是該框框?yàn)榫G色,運(yùn)行完畢后,該框框?yàn)榘咨?/p>

6. User Parameters的作用是什么?

提高腳本可用性

7. 在result里會(huì)出現(xiàn)彩色字體的http response code,說(shuō)明什么呢?

Http response code是http返回值,彩色字體較引人注目,可以使用戶迅速關(guān)注。象綠色的302就說(shuō)明在這一步驟中,返回值取自本機(jī)的catch,而不是server。

8. 怎樣計(jì)算Ramp-up period時(shí)間?

Ramp-up period是指每個(gè)請(qǐng)求發(fā)生的總時(shí)間間隔,單位是秒。如果Number of Threads設(shè)置為5,而Ramp-up period是10,那么每個(gè)請(qǐng)求之間的間隔就是10/5,也就是2秒。Ramp-up period設(shè)置為0,就是同時(shí)并發(fā)請(qǐng)求。

9. Get和Post的區(qū)別?

他們是http協(xié)議的2種不同實(shí)現(xiàn)方式。Get是指server從Request URL取得所需參數(shù)。從result中的request中可以看到,get可以看到參數(shù),但是post是主動(dòng)向server發(fā)送參數(shù),所以一般看不到這些參數(shù)的。

10. 哪些原因可能導(dǎo)致error的產(chǎn)生?

a. Http錯(cuò)誤,包括不響應(yīng),結(jié)果找不到,數(shù)據(jù)錯(cuò)誤等等;

b.?JMeter本身原因產(chǎn)生的錯(cuò)誤。

11. 為什么Aggregate Report結(jié)果中的Total值不是真正的總和?

JMeter給結(jié)果中total的定義是并不完全指總和,為了方便使用,它的值表現(xiàn)了所在列的代表值,比如min值,它的total就是所在列的最小值。下圖就是total在各列所表示的意思。

12.?JMeter的Thread Number是提供多個(gè)不同用戶并發(fā)的功能么?

不是,Thread Number僅僅是指并發(fā)數(shù),如果需要實(shí)現(xiàn)多個(gè)不同用戶并發(fā),我們應(yīng)該采用其它方法,比如通過(guò)在jmeter外建立csv文件的方法來(lái)實(shí)現(xiàn)。

13. 同時(shí)并發(fā)請(qǐng)求時(shí),若需要模擬不同的用戶同時(shí)向不同的server并發(fā)請(qǐng)求,怎樣實(shí)現(xiàn)呢?

方法很靈活,我們可以將不同的server在thread里面預(yù)先寫好?;蛘哳A(yù)先將固定的變量值寫入csv文件,這樣還可以方便修改。然后將文件添加到User Parameters。

14. User Parameter中的DUMMY是什么意思?

當(dāng)其具體內(nèi)容是${__CSVRead(${__property(user.dir)}${FILENAME},next())}時(shí)用來(lái)模擬讀文件的下一行。

15. 當(dāng)測(cè)試對(duì)象在多server間跳轉(zhuǎn)時(shí),應(yīng)該怎樣處理?

程序運(yùn)行時(shí),有些http和隱函數(shù)會(huì)攜帶另外的server IP,我們可以從他們的返回值中獲取。

16. 為何測(cè)試對(duì)象是http和https混雜出現(xiàn)?

Https是加密協(xié)議,為了安全,一般不推薦使用http,但是有些地方,使用https過(guò)于復(fù)雜或者較難實(shí)現(xiàn),會(huì)采用http協(xié)議。

17. Http和https的默認(rèn)端口是什么?

Apache server (Http)的默認(rèn)端口是80;

SSL (Https)的默認(rèn)端口是443。

18. 為何在run時(shí),有些頁(yè)面失敗,但是最后不影響結(jié)果?

原因較多,值得提及的一種是因?yàn)橹髁黜?yè)面與它不存在依賴關(guān)系,所以即使這樣的頁(yè)面出錯(cuò),也不會(huì)影響運(yùn)行得到正常結(jié)果,但是這樣會(huì)影響到測(cè)試的結(jié)果以及分析結(jié)果。

19. 為什么腳本剛開(kāi)始運(yùn)行就有錯(cuò)誤,其后來(lái)的腳本還可運(yùn)行?

在Thread Group中有相關(guān)設(shè)置,如果選擇了continue,即使前面的腳本出現(xiàn)錯(cuò)誤,整個(gè)thread仍會(huì)運(yùn)行直到結(jié)束。選擇Stop Thread會(huì)結(jié)束當(dāng)前thread;選擇Stop Test則會(huì)結(jié)束全部的thread。推薦選項(xiàng)是Stop Thread。

20. 在Regular expression_r Extractor會(huì)看到Template的值是$1$,這個(gè)值是什么意思呢?

$1$是指取第一個(gè)()里面的值。如果Regular expression_r的數(shù)值有多個(gè),用這種方法可以避免不必要的麻煩。

21. Regular expression_r中的(.*)是什么意思?

那是一個(gè)正則表達(dá)式(regular expression_r)?!?’等同于sql語(yǔ)言中的’?’,表示可有可無(wú)。’*’表示0個(gè)或多個(gè)?!?)’表示需要取值。(.*)表達(dá)任意長(zhǎng)度的字符串。

22. 在讀取Regular expression_r時(shí)要注意什么?

一定要保證所取數(shù)值的絕對(duì)唯一性。

23. 怎樣才能判斷什么樣的情況需要添加Regular expression_r Extractor?

檢查Http Request中的Send Parameters,如果有某個(gè)參數(shù)是其前一個(gè)page中所沒(méi)有給出的,就要到原文件中查找,并添加Regular expression_r Extractor到其前一page的http request中。

24. 在自動(dòng)獲取的腳本中有時(shí)會(huì)出現(xiàn)空的http request,是什么意思呢?

是因?yàn)樵讷@取腳本時(shí)有些錯(cuò)誤,是腳本工具原因。在run時(shí)這種錯(cuò)誤不參與運(yùn)行的。

25. 在運(yùn)行結(jié)果中為何有rate為N/A的情況出現(xiàn)?

可能因?yàn)镴Meter自身問(wèn)題造成,再次運(yùn)行可以得到正確結(jié)果。

26. 常用http錯(cuò)誤代碼有哪些?

400無(wú)法解析此請(qǐng)求。

403禁止訪問(wèn):訪問(wèn)被拒絕。

404找不到文件或目錄。

405用于訪問(wèn)該頁(yè)的HTTP動(dòng)作未被許可。

410文件已刪除。

500服務(wù)器內(nèi)部錯(cuò)誤。

501標(biāo)題值指定的配置沒(méi)有執(zhí)行。

502 Web服務(wù)器作為網(wǎng)關(guān)或代理服務(wù)器時(shí)收到無(wú)效的響應(yīng)。

27. Http request中的Send Parameters是指什么?

是指code中寫定的值和自定義變量中得到的值,就是在運(yùn)行頁(yè)面時(shí)需要的參數(shù)。

28. Parameters在頁(yè)面中是不斷傳遞的么?

是的。參數(shù)再產(chǎn)生后會(huì)在頁(yè)面中一直傳遞到所需頁(yè)面。所以我們可以在動(dòng)態(tài)參數(shù)產(chǎn)生時(shí)捕獲它,也可以在所需頁(yè)面的上一頁(yè)面捕獲。(但是這樣可能有錯(cuò)誤,最好在產(chǎn)生頁(yè)面獲取)

29. 在使用JMeter測(cè)試時(shí),是完全模擬用戶操作么?造成的結(jié)果也和用戶操作完全相同么?

是的。JMeter完全模擬用戶操作,所以操作記錄會(huì)全部寫入DB.在運(yùn)行失敗時(shí),可能會(huì)產(chǎn)生錯(cuò)誤數(shù)據(jù),這就取決于腳本檢查是否嚴(yán)謹(jǐn),否則錯(cuò)誤數(shù)據(jù)也會(huì)進(jìn)入DB,給程序運(yùn)行帶來(lái)很多麻煩。

4.擴(kuò)展思考

產(chǎn)生壓力之后,通常我們可以拿到TPS、響應(yīng)時(shí)延等性能數(shù)據(jù),那么如何定位性能問(wèn)題呢?TPS、響應(yīng)時(shí)延只能告訴你服務(wù)器是否存在問(wèn)題,但不能幫助你定位問(wèn)題。這些表面背后是整個(gè)后臺(tái)處理邏輯綜合作用的結(jié)果,這時(shí)候可以先關(guān)注系統(tǒng)的CPU、內(nèi)存、IO、網(wǎng)絡(luò),對(duì)比在tps、時(shí)延達(dá)到瓶頸時(shí)這些系統(tǒng)數(shù)據(jù)的情況,確定性能問(wèn)題是系統(tǒng)哪一部分造成的,然后再回到代碼的邏輯中逐個(gè)優(yōu)化這些點(diǎn)。

----------------------------------------------------------------------------------------------------------------------------------------------

技能樹.IT修真院

“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開(kāi)始,找個(gè)師兄,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷?!薄?/p>

這里是技能樹.IT修真院,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化,師兄1對(duì)1免費(fèi)指導(dǎo)??靵?lái)與我一起學(xué)習(xí)吧~

我的邀請(qǐng)碼:10178606,或者你可以直接點(diǎn)擊此鏈接:jnshu.com/login/1/10178606

最后編輯于
?著作權(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)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 在使用Jmeter進(jìn)行接口的性能測(cè)試時(shí),由于Jmeter 是JAVA應(yīng)用,對(duì)于CPU和內(nèi)存的消耗比較大,所以,當(dāng)需...
    燕京博士閱讀 4,293評(píng)論 0 16
  • 1. JMeter 測(cè)試計(jì)劃 測(cè)試計(jì)劃 使用JMeter進(jìn)行測(cè)試的起點(diǎn),是其它JMeter測(cè)試元件的容器。 線程組...
    alamZheng閱讀 3,542評(píng)論 0 7
  • 一、基本概念 1.測(cè)試計(jì)劃是使用 JMeter 進(jìn)行測(cè)試的起點(diǎn),它是其它 JMeter 測(cè)試元件的容器。 2.線程...
    Leo_0626閱讀 2,419評(píng)論 0 10
  • 1 Jmeter安裝配置 使用Jmeter前首先要安裝JDK,配置JDK環(huán)境變量。Jmeter不需要安裝,下載后...
    茶小汐閱讀 3,115評(píng)論 0 8

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