成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

云智慧壓測(cè)實(shí)戰(zhàn)分享之JMeter工具使用初探

venmos / 3581人閱讀

摘要:有了測(cè)試腳本,通過(guò)線程組來(lái)模擬真實(shí)用戶對(duì)服務(wù)器的訪問(wèn)壓力。不同的是,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組。線程組中包含的線程數(shù)量在測(cè)試執(zhí)行過(guò)程中是不會(huì)發(fā)生改變的。邏輯控制器元件只對(duì)其子節(jié)點(diǎn)中的取樣器和邏輯控制器作用。

工欲善其事必先利其器,要保證移動(dòng)應(yīng)用產(chǎn)品在上線之后能穩(wěn)定運(yùn)行于各種復(fù)雜環(huán)境,僅僅進(jìn)行功能測(cè)試是遠(yuǎn)遠(yuǎn)不夠的,壓力測(cè)試越來(lái)越被應(yīng)用開(kāi)發(fā)商所重視。而壓力測(cè)試從傳統(tǒng)的內(nèi)部壓力到基于云計(jì)算的壓力測(cè)試,再到用戶視角的外部壓測(cè),也在不斷發(fā)展變化。JMeter作為一款廣為流傳的開(kāi)源壓測(cè)產(chǎn)品,最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,并不斷擴(kuò)展到其他測(cè)試領(lǐng)域。
如今,JMeter可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對(duì)象、數(shù)據(jù)庫(kù)、FTP 服務(wù)器等等,還能對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,通過(guò)不同壓力類別測(cè)試它們的強(qiáng)度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試,通過(guò)創(chuàng)建帶有斷言的腳本來(lái)驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。
JMeter的特點(diǎn)包括對(duì)HTTP、FTP服務(wù)器、數(shù)據(jù)庫(kù)進(jìn)行壓力/性能測(cè)試;完全的可移植性;完全 Swing和輕量組件支持包;完全多線程;緩存和離線分析/回放測(cè)試結(jié)果;可鏈接的取樣器;具有提供動(dòng)態(tài)輸入到測(cè)試的功能;支持腳本編程的取樣器等。不僅如此,在設(shè)計(jì)階段JMeter能夠充當(dāng)HTTP PROXY(代理)來(lái)記錄瀏覽器的HTTP請(qǐng)求,也可以記錄Apache等WebServer的log文件來(lái)重現(xiàn)HTTP流量,并在測(cè)試運(yùn)行時(shí)以此為依據(jù)設(shè)置重復(fù)次數(shù)和并發(fā)度(線程數(shù))來(lái)進(jìn)行壓測(cè)。

JMeter的壓力發(fā)生原理

JMeter可以作為Web服務(wù)器與瀏覽器之間的代理網(wǎng)關(guān),捕獲瀏覽器請(qǐng)求和Web服務(wù)器響應(yīng),這樣就能快速生成性能測(cè)試腳本。有了測(cè)試腳本,JMeter通過(guò)線程組來(lái)模擬真實(shí)用戶對(duì)Web服務(wù)器的訪問(wèn)壓力。
原理圖如下:


JMeter的結(jié)構(gòu)如下圖所示,通過(guò)各種元件的組織配合,滿足不同的測(cè)試需要:

JMeter的常見(jiàn)元件

1、Test?Plan?(測(cè)試計(jì)劃):用來(lái)描述一個(gè)性能測(cè)試,包含與本次性能測(cè)試所有相關(guān)的功能,也就說(shuō)性能測(cè)試的所有內(nèi)容都是于基于一個(gè)計(jì)劃的,右鍵單擊“測(cè)試計(jì)劃”彈出菜單:


注意:“函數(shù)測(cè)試模式”復(fù)選框如果被選擇,會(huì)記錄來(lái)自服務(wù)器返回的每個(gè)取樣的數(shù)據(jù),在測(cè)試監(jiān)聽(tīng)器中選擇一個(gè)文件,這些數(shù)據(jù)將被寫入文件。如果嘗試一個(gè)較小的測(cè)試來(lái)保證JMeter配置正確并且服務(wù)器正在返回期望的結(jié)果,這是很有用的,但后果是這個(gè)文件會(huì)快速增大并對(duì)JMeter效率產(chǎn)生影響。

2、Threads(Users)線程(用戶)


1)?setup?thread?group?
一種特殊類型的ThreadGroup的,可用于執(zhí)行預(yù)測(cè)試操作。這些線程的行為完全像一個(gè)正常的線程組元件。不同的是這些類型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行。setUp Thread Group類似于lr的init.可用于執(zhí)行預(yù)測(cè)試操作。
2)?teardown?thread?group
一種特殊類型的ThreadGroup的,可用于執(zhí)行測(cè)試后動(dòng)作。這些線程的行為完全像一個(gè)正常的線程組元件。不同的是,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組。tearDown Thread Group類似于lr的end.可用于執(zhí)行測(cè)試后動(dòng)作。
3)?thread?group(線程組)
這個(gè)就是我們通常添加運(yùn)行的線程,可以看做一個(gè)虛擬用戶組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶。線程組中包含的線程數(shù)量在測(cè)試執(zhí)行過(guò)程中是不會(huì)發(fā)生改變的。


在設(shè)置線程組參數(shù)的時(shí)候注意:
  Ramp-Up Period:指定了啟動(dòng)所有線程所花費(fèi)的時(shí)間,單位是秒,默認(rèn)時(shí)間是1秒。比如,當(dāng)前的設(shè)定表示“在5秒內(nèi)啟動(dòng)5個(gè)線程,每個(gè)線程的間隔時(shí)間為1秒”。如果需要JMeter立即啟動(dòng)所有線程,將此設(shè)定為0即可.
  循環(huán)次數(shù):表示每個(gè)線程執(zhí)行多少次請(qǐng)求。

3、測(cè)試片段(Test?Fragment)
測(cè)試片段元素是控制器上的一個(gè)種特殊線程組,在測(cè)試樹(shù)上與線程組處于一個(gè)層級(jí)。它與線程組的差異在于,只有被一個(gè)模塊控制器或者是被控制器所引用時(shí)才會(huì)執(zhí)行。

4、取樣器(Sampler)
取樣器(Sampler)是性能測(cè)試中向服務(wù)器發(fā)送請(qǐng)求,記錄響應(yīng)信息和響應(yīng)時(shí)間的最小單元,JMeter?原生支持多種不同的Sampler,如HTTP Request?Sampler、FTP??Request?Sampler、TCP Request?Sampler、JDBC?Request?Sampler?等,每一種不同類型的Sampler可以根據(jù)設(shè)置的參數(shù)向服務(wù)器發(fā)出不同類型的請(qǐng)求。在JMeter的所有Sampler中,Java Request Sampler與BeanShell Requst Sampler是兩種特殊的可定制的Sampler。

5、邏輯控制器(Logic?Controller)
邏輯控制器包括兩類元件,一類是用于控制test?plan?中?Sampler節(jié)點(diǎn)發(fā)送請(qǐng)求的邏輯順序的控制器,常用的有?如果(If)控制器?、 switch?Controller?、Runtime?Controller、循環(huán)控制器等。另一類是用來(lái)組織和控制?Sampler節(jié)點(diǎn)的,如事務(wù)控制器、吞吐量控制器。

6、配置元件(Config?Element)
配置元件(config?element)用于提供對(duì)靜態(tài)數(shù)據(jù)配置的支持。CSV?Data?Set?config?可以將本地?cái)?shù)據(jù)文件形成數(shù)據(jù)池 (Data?Pool),而對(duì)應(yīng)于HTTP?Request?Sampler和?TCP?Request?Sampler等類型的配置元件則可以修改 Sampler的默認(rèn)數(shù)據(jù)。例如,HTTP?Cookie?Manager?可以用于對(duì)?HTTP?Request?Sampler?的 cookie?進(jìn)行管理。HTTP 請(qǐng)求默認(rèn)值不會(huì)觸發(fā)JMeter發(fā)送http請(qǐng)求,而只是定義HTTP請(qǐng)求的默認(rèn)屬性。

7、定時(shí)器(Timer)
定時(shí)器(Timer)用于操作之間等待時(shí)間的設(shè)置,等待時(shí)間是性能測(cè)試中常用的控制客戶端QPS的手段,類似于LoadRunner里面的“思考時(shí)間”。JMeter?定義了Bean?Shell?Timer、Constant?Throughput?Timer、固定定時(shí)器等不同類型的Timer。

8、前置處理器(Per?Processors)
前置處理器用于在實(shí)際的請(qǐng)求發(fā)出之前對(duì)即將發(fā)出的請(qǐng)求進(jìn)行特殊處理。例如,HTTP?URL重寫修復(fù)符則可以實(shí)現(xiàn)URL重寫,當(dāng)URL中有sessionID?一類的session信息時(shí),可以通過(guò)該處理器填充發(fā)出請(qǐng)求的實(shí)際的sessionID?。

9、后置處理器(Post?Processors)
后置處理器是用于對(duì)Sampler?發(fā)出請(qǐng)求后得到的服務(wù)器響應(yīng)進(jìn)行處理,一般用來(lái)提取響應(yīng)中的特定數(shù)據(jù)(類似LoadRunner測(cè)試工具中的關(guān)聯(lián)概念)。例如,XPath? Extractor?可以提取響應(yīng)數(shù)據(jù)中通過(guò)給定XPath?值獲得的數(shù)據(jù),正則表達(dá)式提取器則可以提取響應(yīng)數(shù)據(jù)中通過(guò)正則表達(dá)式獲得的數(shù)據(jù)。

?10、斷言(Assertions)
斷言用于檢查測(cè)試中得到的相應(yīng)數(shù)據(jù)等是否符合預(yù)期,斷言一般用來(lái)設(shè)置檢查點(diǎn),用以保證性能測(cè)試過(guò)程中的數(shù)據(jù)交互是否與預(yù)期一致。


?
11、監(jiān)聽(tīng)器(Listener)
監(jiān)聽(tīng)器不是用來(lái)監(jiān)聽(tīng)系統(tǒng)資源的元件,而是對(duì)測(cè)試結(jié)果數(shù)據(jù)進(jìn)行處理和可視化展示的一系列元件,包括圖形結(jié)果、查看結(jié)果樹(shù)、聚合報(bào)告、用表格察看結(jié)果都是我們經(jīng)常用到的元件。

12、工作臺(tái)

在測(cè)試中我們可能需要暫時(shí)更改一些組件,可以把一些需要更改的組件保存在工作臺(tái)中,測(cè)試完成后再恢復(fù)。但是切記不能退出jmeter,一旦退出jmeter工作臺(tái)中的內(nèi)容就會(huì)消失。

13、Property Display
此元件相當(dāng)于是jmeter.properties的GUI。

JMeter元件的作用域和執(zhí)行順序

在JMeter中,元件的作用域是靠測(cè)試計(jì)劃的樹(shù)型結(jié)構(gòu)中元件的父子關(guān)系來(lái)確定的,作用域的原則是:
1.取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問(wèn)題。
2.邏輯控制器(Logic Controller)元件只對(duì)其子節(jié)點(diǎn)中的取樣器和邏輯控制器作用。
3.除取樣器和邏輯控制器元件外,其他6類元件,如果是某個(gè)sampler的子節(jié)點(diǎn),則該元件公對(duì)其父子節(jié)點(diǎn)起作用。
4.除取樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點(diǎn)不是sampler,則其作用域是該元件父節(jié)點(diǎn)下的其他所有后代節(jié)點(diǎn)(包括子節(jié)點(diǎn),子節(jié)點(diǎn)的子節(jié)點(diǎn)等)。
了解了元件有作用域之后,再來(lái)看看元件的執(zhí)行順序規(guī)則,在同一作用域名范圍內(nèi),測(cè)試計(jì)劃中的元件按照如下順序執(zhí)行:
1)配置元件(config elements )
2)前置處理程序(Per-processors)
3)定時(shí)器(timers )
4)取樣器(Sampler)
5)后置處理程序(Post-processors) (除非Sampler 得到的返回結(jié)果為空)。
6)斷言(Assertions)(除非Sampler 得到的返回結(jié)果為空)。
7)監(jiān)聽(tīng)器(Listeners)(除非Sampler 得到的返回結(jié)果為空)。
關(guān)于執(zhí)行順序,有三點(diǎn)需要注意:

前置處理器、后置處理器和斷言等元件只能對(duì) 取樣器作用,因此,如果在它們的作用域內(nèi)沒(méi)有任何取樣器,則不會(huì)被執(zhí)行。

如果在同一作用域范圍內(nèi)有多個(gè)同一類型的元件,則這些元件按照它們?cè)跍y(cè)試計(jì)劃中的上下順序一次執(zhí)行。

一個(gè)斷言在測(cè)試樹(shù)中是分等級(jí)的。如果它的父元件是請(qǐng)求,它就被應(yīng)用于那個(gè)請(qǐng)求。如果它的父元件是控制器,它就影響所有那個(gè)控制器下的所有請(qǐng)求。
以上是JMeter使用之前必須了解的一些基本信息,接下來(lái)我們將為您帶來(lái)JMeter腳本錄制實(shí)例,敬請(qǐng)期待。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/8764.html

相關(guān)文章

  • 智慧微課堂:移動(dòng)創(chuàng)業(yè)公司的IT性能優(yōu)化實(shí)例講解

    摘要:大家好,我叫湯金城,今天和大家分享一下我在公司業(yè)務(wù)方面故障排查遇到的一些坑,以及進(jìn)行性能調(diào)優(yōu)的解決方法。性能的優(yōu)化在我看來(lái),性能優(yōu)化和監(jiān)控是分不開(kāi)的,現(xiàn)在關(guān)于優(yōu)化的配置非常多,適合自己的才是最好的。 本期主講:湯金城,多年從事移動(dòng)互聯(lián)網(wǎng)相關(guān)運(yùn)維工作,帶領(lǐng)團(tuán)隊(duì)維護(hù)數(shù)百臺(tái)服務(wù)器,擁有豐富的故障排查和性能優(yōu)化實(shí)戰(zhàn)經(jīng)驗(yàn),擅長(zhǎng)業(yè)務(wù)拆分,高可用架構(gòu)設(shè)計(jì)。 大家好,我叫湯金城,今天和大家分享一下我在...

    xzavier 評(píng)論0 收藏0
  • jmeter web性能測(cè)試實(shí)例

    jmeter web性能測(cè)試實(shí)例 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ma...

    IT那活兒 評(píng)論0 收藏1191

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<