<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          分享安利 | 好家伙,還不會模擬線上并發(fā)測試?

          共 3353字,需瀏覽 7分鐘

           ·

          2021-06-02 02:37


          前言

          隨著互聯(lián)網(wǎng)規(guī)模的不斷發(fā)展壯大,系統(tǒng)接口的并發(fā)要求也是越來越高了,雖然現(xiàn)在已經(jīng)有了很多技術(shù)可以提升系統(tǒng)的并發(fā)性能,但是測試又遇到了新的問題,我們該如何模擬線上環(huán)境的并發(fā)量呢?

          今天我們推薦的這款測試利器,就可以很好地解決你的問題,一起來看看吧。

          Jmeter

          jmeter是什么

          這一款工具是Apache開源基金會下的一個開源項目,是由純java開發(fā)的,在測試圈比較知名,對于做過測試工作的小伙伴,這個工具應(yīng)該不陌生。

          百度百科的解釋:

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

          Apache jmeter 可以用于對靜態(tài)的和動態(tài)的資源(文件,Servlet,Perl腳本,java對象,數(shù)據(jù)庫和查詢,F(xiàn)TP服務(wù)器等等)的性能進行測試。它可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發(fā)負載測試你的服務(wù)器/腳本/對象。

          簡單來說,他就是一款壓測工具,可以對我們的接口進行壓力測試,找到接口高并發(fā)場景下可能存在的系統(tǒng)缺陷。

          它能干什么

          根據(jù)官網(wǎng)給出的說明,它可以完成以下工作:

          • 能夠加載和性能測試許多不同的應(yīng)用程序/服務(wù)器/協(xié)議類型:
            • 網(wǎng)絡(luò)協(xié)議-HTTPHTTPSJava,NodeJSPHP,ASP.NET等)
            • SOAP/REST 網(wǎng)絡(luò)服務(wù)
            • FTP服務(wù)
            • 通過JDBC連接的數(shù)據(jù)庫
            • LDAP
            • 通過JMS的面向消息的中間件(MOM
            • 郵件協(xié)議-SMTP(S)POP3(S)IMAP(S)
            • 本機命令或Shell腳本
            • TCP協(xié)議
            • Java對象
          • 功能齊全的Test IDE,可進行快速的Test Plan記錄(來自瀏覽器或本機應(yīng)用程序),構(gòu)建和調(diào)試。
          • **CLI模式(命令行模式(以前稱為非 GUI)/無頭模式)**從任何 Java兼容操作系統(tǒng)(LinuxWindows、Mac OSX 等)加載測試
          • 完整且可隨時呈現(xiàn)的動態(tài) HTML 報告
          • 通過從大多數(shù)流行的響應(yīng)格式,HTML,JSON, XML任何文本格式中提取數(shù)據(jù)的能力,輕松實現(xiàn)關(guān)聯(lián)
          • 100%基于Java,具有完全的可移植性 。
          • 完整的多線程框架允許通過多個線程進行并發(fā)采樣,并通過單獨的線程組同時對不同的函數(shù)進行采樣。
          • 緩存和脫機分析/重放測試結(jié)果。
          • 高度可擴展的核心:
            • 可插拔采樣器允許無限的測試功能。
            • 可腳本化的采樣器(與GroovyBeanShellJSR223兼容的語言)
            • 可以使用可插入計時器選擇幾個負載統(tǒng)計信息。
            • 數(shù)據(jù)分析和可視化插件可實現(xiàn)出色的可擴展性和個性化。
            • 函數(shù)可用于為測試提供動態(tài)輸入或提供數(shù)據(jù)操作。
            • 通過針對MavenGradleJenkins的第三方開源庫,輕松進行持續(xù)集成。

          從上面的說明來看,Jmeter支持的協(xié)議很豐富,同時具備了極強的可擴展性和可移植性,因為是基于java開發(fā)的,所以它本身也是跨平臺的,同時還可以集成到mavenGradleJenkins中,可以實現(xiàn)自動化測試,這一點就很強了。

          開箱

          接下來,我們就看下如何使用jmeter來完成我們的接口測試。

          下載

          首先,我們先去官網(wǎng)下載最新版本jmeter

          https://jmeter.apache.org/download_jmeter.cgi

          最新版本是5.4.1,運行環(huán)境基于jdk1.8+

          windows環(huán)境下選擇zip那個版本,不過也不影響,都是java開發(fā)的,解壓工具能解壓就行。

          解壓運行

          直接解壓,然后進入bin目錄,然后運行jmeter.bat腳本就可以了,當然前提條件是你要先配置本地的JDK環(huán)境,不會的小伙伴自行百度。

          打開之后,它是這樣的

          不習慣英文界面的小伙伴可以修改成中文

          我不喜歡深色主題,所以我把它改成淺色了,想改的小伙伴自己改:

          開始測試

          在開始測試之前,我們先要啟動一個接口服務(wù),我本地啟動了一個springboot項目,就是上周的那個項目。單個springboot,內(nèi)置的Tomcat是支持10000并發(fā)的,這一點還是很強的。

          打開之后,默認已經(jīng)創(chuàng)建了一個測試計劃,我們可以直接用,修改相應(yīng)配置即可

          配置測試計劃

          設(shè)置名稱和注釋,這里的配置主要是方便你管理測試計劃,你不設(shè)置也不影響

          創(chuàng)建線程組

          選中測試計劃,右鍵選擇添加->線程->線程組

          設(shè)置線程組配置

          這里設(shè)置的就是我們的并發(fā)量,包括線程數(shù)、單個線程循環(huán)次數(shù)、延遲時間、持續(xù)時間等

          添加測試請求

          選中線程組,右鍵選擇添加->取樣器->HTTP請求。這里需要注意的是添加的時候必須在線程組下創(chuàng)建,否則是沒法測試的,因為所有的測試請求都是通過線程組發(fā)起的。

          配置測試請求

          這里就是配置我們接口的請求參數(shù),包括協(xié)議、接口地址、請求方式、請求參數(shù)等

          這時候就可以選中測試計劃開始測試了,運行之前會提示我們保存測試計劃:

          保存完成后,測試自動運行,這時候測試雖然啟動了,但是是不會顯示測試報告的,所以我們還需要增加報告。

          增加報告

          同樣是選中線程組,右鍵選擇添加->監(jiān)聽器->選擇需要的報告。這里我添加了兩個報告,一個是匯總圖,一個是匯總報告,你也可以根據(jù)自己的需要選擇。

          然后再次運行,我們會發(fā)現(xiàn)匯總圖和匯總報告這里就有結(jié)果了:

          匯總報告

          報告里面包含了接口響應(yīng)時間的統(tǒng)計,包括平均響應(yīng)時間、最大響應(yīng)時間、異常率、系統(tǒng)吞吐量、發(fā)送/接受數(shù)據(jù)的統(tǒng)計等,還是比較詳細的。

          匯總圖

          圖表是支持配置的,你可以根據(jù)自己的需要進行設(shè)置,選擇圖形左上角的設(shè)置菜單即可

          圖表和數(shù)據(jù)都是可以保存的

          其他圖表

          增加斷言

          寫過單元測試的小伙伴肯定聽過或者寫過斷言這個東西,斷言簡單來說就是我們在測試程序的時候,需要對某一段代碼或方法運行結(jié)果進行比對,以判斷程序業(yè)務(wù)邏輯是否正常,也就是做輸入輸出對比的。

          比如我們將2傳入一個方法,根據(jù)我們的預期,應(yīng)該是5,如果處理之后結(jié)果與預期一致則斷言通過,否則不通過,單元測試的斷言這里就不說了,有興趣的小伙伴自己去看看。

          jmeter添加斷言很簡單,選中線程組,右鍵選擇添加->斷言->選擇你需要的斷言方式。這里我們選擇json斷言

          簡單配置

          Assert josn path exists設(shè)置json中你也校驗的key,如果你只校驗key存在即可,那可以去掉Additionally assert value的勾,這個配置勾選的話,會校驗上面配置的key的值,而且你需要在expected value設(shè)置預期的值。

          這時候直接運行的話,是看不到斷言結(jié)果的,我們還需要增加斷言報告:

          直接在監(jiān)聽器下選擇斷言結(jié)果就可以了。

          然后再次運行,斷言結(jié)果這里就有數(shù)據(jù)了,斷言如果通過是沒有數(shù)據(jù)顯示的:

          但如果你指定的key不存在,就會有錯誤提示了,提示結(jié)果中不存在這個字段:

          如果你的返回值與斷言預期結(jié)果不一致,則會提示,結(jié)果不匹配:

          補充

          jmeter的測試計劃是支持多線程組的,也就是說你的一個測試計劃可以配置多個接口,同時測試。

          總結(jié)

          jmeter作為一款流行的壓測工具,從上手體驗來看,還是很不錯的,操作沒有特別復雜,只需要簡單配置就可以完成系統(tǒng)壓測,這也可能是它比較流行的原因。目前,很多公司,系統(tǒng)上線前都是用jmeter進行壓測的,這也從側(cè)面體現(xiàn)了它穩(wěn)定、強大的壓測功能。

          今天的內(nèi)容依然是干貨滿滿,讓你直接可以開箱即用,而且也滿足了你絕大多數(shù)的測試場景,有接口壓測需要的小伙伴可以用起來了。

          - END -
          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲色图欧美视频 | 亚洲日本黄色三级电影在线观看 | 欧美操逼虐待视频网 | 麻豆精品| 拍拍拍拍拍拍拍拍拍拍拍拍拍拍拍拍拍电影 |