日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

聊一聊Jmeter的简单使用

發(fā)布時(shí)間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊一聊Jmeter的简单使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

近段時(shí)間,團(tuán)隊(duì)想補(bǔ)強(qiáng)測(cè)試這一塊,減少重復(fù)性的一些工作,讓一些內(nèi)容可以自動(dòng)化起來(lái),同時(shí)對(duì)開(kāi)發(fā)同學(xué)寫(xiě)的接口的性能也開(kāi)始有所要求了。

考慮到團(tuán)隊(duì)內(nèi)沒(méi)有人有測(cè)試開(kāi)發(fā)的經(jīng)驗(yàn),所以前期的選擇還是以工具為主,編程為輔。

說(shuō)起工具,用的比較多的是 Jmeter ,它即可以處理自動(dòng)化的測(cè)試,也可以完成性能測(cè)試。

后面也會(huì)不定期更新一些在使用 Jmeter 時(shí)候的經(jīng)驗(yàn)。

開(kāi)篇往往都會(huì)是比較簡(jiǎn)單的內(nèi)容。

所以這一篇寫(xiě)的內(nèi)容主要是拿一個(gè) HTTP 接口出來(lái),然后通過(guò)配置,在 Jmeter 中成功訪問(wèn)這個(gè)接口,并斷言請(qǐng)求成功與否,查看結(jié)果。

最后還會(huì)通過(guò) CLI 來(lái)跑測(cè)試計(jì)劃,輸出 HTML 格式的報(bào)告。

下面就開(kāi)始吧!

準(zhǔn)備一個(gè) HTTP 接口

這里創(chuàng)建一個(gè) ASP.NET Core Web API 項(xiàng)目,同時(shí)寫(xiě)一個(gè)簡(jiǎn)單到不能再簡(jiǎn)單的接口,直接返回一個(gè) JSON 串。

[ApiController] [Route("[controller]")] public?class?RunController?:?ControllerBase {????????[HttpGet]public?IActionResult?Get(){return?Ok(new?{code?=?0,msg?=?"ok"});} }

把這個(gè)項(xiàng)目啟動(dòng)起來(lái),暴露出 8532 端口。

下面就開(kāi)始在 Jmeter 里面對(duì)這個(gè)接口進(jìn)行配置和調(diào)試了。

添加線程組

在測(cè)試計(jì)劃添加一個(gè)線程組 (Thread Group)

添加完成之后可以看到下面的內(nèi)容

在線程組中,最為主要的就是 Thread Properties 的配置了,不過(guò)這里先不對(duì)這個(gè)進(jìn)行修改,先保持默認(rèn)值。

因?yàn)槭紫纫龅氖虑槭?#xff0c;把測(cè)試接口調(diào)試通!如果接口沒(méi)調(diào)好,設(shè)置再多的線程也沒(méi)有意義!

所以這里只把名字改成了 sample1 。

線程組有了,就相當(dāng)于有了一個(gè)骨架,下面就要對(duì)這個(gè)線程組填充內(nèi)容,讓它豐富起來(lái)。

由于我們主要是對(duì) HTTP 接口進(jìn)行測(cè)試,所以大部分內(nèi)容會(huì)是和 HTTP 相關(guān)的。

添加 HTTP 請(qǐng)求默認(rèn)值

在線程組里面,添加一個(gè) HTTP 請(qǐng)求默認(rèn)值的配置元件 (HTTP Request Defaults)

這里一般會(huì)配置一些不怎么變的東西,正常就是接口的域名信息,指定好之后,后面就可以不用在填接口的域名了。

下面就把測(cè)試接口的 IP 和 端口填上去。

添加 HTTP 信息頭管理器

請(qǐng)求頭,大部分接口都會(huì)有要求的,最常見(jiàn)的應(yīng)該就是 Content-Type 。

這里就可以添加一個(gè) HTTP 信息頭管理器(HTTP Header Manager)來(lái)管理這些請(qǐng)求頭。

測(cè)試接口是 JSON 格式的,所以要把 Content-Type 和 application/json 配置上去。

再下一步就是真正的請(qǐng)求了。

添加 HTTP 請(qǐng)求

在線程組里面添加一個(gè) HTTP Request 類型的 Sampler。

這一個(gè)步驟要根據(jù)對(duì)應(yīng)的測(cè)試接口填寫(xiě)對(duì)應(yīng)的信息。

以測(cè)試接口為例:

  • Web Server 這一塊內(nèi)容不用填,我們?cè)?HTTP 請(qǐng)求默認(rèn)值 里面已經(jīng)配置了。

  • 測(cè)試接口是 GET 請(qǐng)求, 測(cè)試接口的相對(duì)路徑是 /run

  • 接口參數(shù)填了 a=b&c=d ,因?yàn)槭?GET 請(qǐng)求,放到相對(duì)路徑上面去也是可以的。

  • 到這里的話,對(duì)這個(gè)接口的請(qǐng)求內(nèi)容已經(jīng)準(zhǔn)備好了。

    要怎么判斷請(qǐng)求這個(gè)接口是不是成功了呢?

    接口成功與否,一般會(huì)有幾類標(biāo)識(shí),一類是當(dāng)狀態(tài)碼為 2xx 時(shí)就當(dāng)作是成功的,一類是返回的 JSON 里面包含了一個(gè) code ,用這個(gè) code 的值來(lái)判斷。

    上面的測(cè)試接口是屬于第二類,所以要判斷的是返回內(nèi)容里面 code 的具體值是什么。

    回想到單元測(cè)試,會(huì)有一個(gè)斷言的步驟去判斷是不是達(dá)到了預(yù)期的結(jié)果。

    同樣的,Jmeter 這里也有這個(gè)內(nèi)容。這里選用的是 JSON 斷言。

    添加 JSON 斷言

    在線程組里面添加一個(gè) JSON 斷言(JSON Assertion)

    示例接口返回 code 為 0 時(shí),才是成功的,所以可以這樣填寫(xiě)

    首先是判斷節(jié)點(diǎn)存在與否,其次是勾選斷言值,填上期望值。

    現(xiàn)在請(qǐng)求有了,斷言有了,要怎么查看結(jié)果呢?

    這里就要請(qǐng)出監(jiān)聽(tīng)器這個(gè)神奇的東西了。

    添加監(jiān)聽(tīng)器

    監(jiān)聽(tīng)器的種類有很多,這里選擇查看結(jié)果樹(shù)(View Results Tree)和聚合報(bào)告(Aggregate Report)兩個(gè)。

    這個(gè)時(shí)候,整一個(gè)測(cè)試計(jì)劃是這樣的:

    運(yùn)行一下,打開(kāi)查看結(jié)果樹(shù),可以看到測(cè)試接口已經(jīng)跑成功了,返回的 code 確實(shí)也是 0。

    如果把 JSON 斷言里面的 code 調(diào)整成 1,查看結(jié)果樹(shù)這里就會(huì)有錯(cuò)誤提示:

    再來(lái)看看聚合報(bào)告長(zhǎng)什么樣:

    主要就是平均響應(yīng)時(shí)間,中位數(shù),錯(cuò)誤率,吞吐量這些常見(jiàn)指標(biāo)。

    到這里是不是就結(jié)束了呢?

    當(dāng)然沒(méi)有結(jié)束,從剛才的結(jié)果來(lái)看,明顯才請(qǐng)求了一次接口,請(qǐng)求一次接口怎么測(cè)試接口的壓力呢?

    其實(shí)一直到看到結(jié)果是能成功請(qǐng)求接口,返回正常的數(shù)據(jù)了,才算是剛剛把接口那部分配置調(diào)試好,并沒(méi)有真正的給壓力到測(cè)試接口。

    前面在創(chuàng)建線程組的時(shí)候,采取的都是默認(rèn)值 1,下面可以調(diào)整線程組的一些配置來(lái)達(dá)到壓測(cè)的目的。

    好比說(shuō)把線程數(shù)調(diào)成 100,循環(huán) 100 次。

    CLI 運(yùn)行 Jmeter

    在啟動(dòng) Jmeter 時(shí),可以看到下面這段話。

    就是讓我們做壓力測(cè)試的時(shí)候不要用圖形化界面,而是用腳本來(lái)操作。

    要用腳本操作,還是要先有配置文件,這個(gè)配置文件在保存測(cè)試計(jì)劃的那個(gè) jmx 文件。

    下面是幾個(gè)常用的參數(shù)說(shuō)明:

    參數(shù)名含義
    -n指定 JMeter 將在 cli 模式下運(yùn)行
    -t包含測(cè)試計(jì)劃的 jmx 文件名稱
    -l記錄測(cè)試結(jié)果的 jtl 文件名稱
    -j記錄 Jmeter 運(yùn)行日志的文件名稱
    -g輸出報(bào)告文件( .csv 文件)
    -e生成 html 格式的測(cè)試報(bào)表
    -o生成測(cè)試報(bào)表的文件夾 文件夾不存在或?yàn)榭?/td>

    下面我們通過(guò) CLI 來(lái)執(zhí)行一下,并生成一個(gè) HTML 報(bào)告。

    ?.\jmeter.bat?-n?-t?..\..\jmeterfiles\jmx\sample1.jmx?-l?result\sample1.jtl?-e?-o?result\sample1

    sample1.jmx 就是上面保存的腳本文件。

    同時(shí)看看輸出的測(cè)試報(bào)告

    打開(kāi) index.html 可以看到測(cè)試報(bào)告了。

    這個(gè)面板的內(nèi)容是很詳細(xì)的。

    寫(xiě)在最后

    這一篇內(nèi)容比較基礎(chǔ),就是走了一遍 Jmeter 的基本操作。

    對(duì)于一些常見(jiàn)的參數(shù)化,引用自定義 jar 包這些內(nèi)容還沒(méi)有介紹到。

    相對(duì)來(lái)說(shuō),Jmeter 在測(cè)試的場(chǎng)景用起來(lái)還是比較 OK 的。

    總結(jié)

    以上是生活随笔為你收集整理的聊一聊Jmeter的简单使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。