<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>

          干貨 | Jmeter 如何保證搶購、秒殺活動正常運行?

          共 1917字,需瀏覽 4分鐘

           ·

          2020-12-27 23:26


          點擊上方“AirPython”,選擇“加為星標(biāo)

          第一時間關(guān)注 Python 原創(chuàng)干貨!


          1. 前言

          平常為了保證運營促銷、抽獎活動能正常運行,我們一般都需要使用 Jmeter、LoadRunner?對接口進行壓力測試

          使用它可以模擬一定量的用戶同時去參與促銷抽獎活動,最后生成測試報告,以此判系統(tǒng)接口的穩(wěn)定性

          本篇文章以搶購商品為例,包含:登錄、搶購 2 個接口;使用 Jmeter 模擬 20?個用戶同步完成搶購操作

          2. 準(zhǔn)備

          2-1??Mock 接口

          為了方便文章講解,這里使用 VirAPI Mock 了兩個接口:登錄、搶購

          https://virapi.com/

          其中,

          登錄接口如下:

          搶購接口如下:

          2-2??準(zhǔn)備用戶數(shù)據(jù)

          我們使用 Jmeter 中的 CSV 數(shù)據(jù)文件設(shè)置為例,在本地創(chuàng)建文本文件,保存 30 個用戶數(shù)據(jù)

          每一條用戶數(shù)據(jù)包含:用戶手機號碼、密碼、用戶 ID

          3. 操作步驟

          打開 Jmeter 軟件,我們完成下列操作

          3-1??創(chuàng)建線程組,配置 CSV 數(shù)據(jù)文件

          首先,選中測試計劃,右鍵 - 添加 - 線程(用戶),并對線程組重新進行命名

          線程數(shù)為:模擬 30 個用戶

          啟動時長:5 秒鐘創(chuàng)建 30 個線程

          循環(huán)次數(shù):1 次

          接著,在當(dāng)前線程組下創(chuàng)建一個 CSV?數(shù)據(jù)文件設(shè)置,用它導(dǎo)入本地用戶數(shù)據(jù)

          在 CSV 文件配置設(shè)置中,關(guān)聯(lián)本地準(zhǔn)備好的用戶數(shù)據(jù),并定義關(guān)聯(lián)變量名,其他保持默認(rèn)即可

          需要指出的是,這里指定了 3 個變量,分別是:user、pwd、id,和數(shù)據(jù)文件中的數(shù)據(jù)關(guān)聯(lián)上

          3-2??HTTP 請求默認(rèn)值和 HTTP 信息頭管理器

          在線程組下,添加 HTTP 請求默認(rèn)值,設(shè)置公共的服務(wù)器地址

          步驟:線程組 - 右鍵 - 添加 -?配置元件 - HTTP 請求默認(rèn)值?

          接著,添加 HTTP 信息頭管理器,用于設(shè)置公共的請求頭

          步驟:線程組 - 右鍵 - 添加?-?配置元件 - HTTP 信息頭管理器

          比如,這里可以添加?VirAPI 應(yīng)用的 app-token 及 content-type

          3-3??登錄請求

          在線程組下,添加一個 HTTP 請求:登錄

          然后根據(jù) Mock 接口 -?,設(shè)置請求的方式、路徑及請求體數(shù)據(jù)

          PS:這里直接將第一步關(guān)聯(lián)的變量設(shè)置進去即可

          3-4? 同步定時器

          為了真實地模擬并發(fā)去調(diào)用搶購接口,在搶購接口之前需要一個同步定時器

          同步定時器,可以保證所有虛擬用戶相互等待,直到所有用戶集合之后,才開始后續(xù)的接口調(diào)用

          步驟:線程組 - 右鍵 - 添加 -?定時器 - 固定定時器

          這里,設(shè)置模擬用戶組的數(shù)目和線程數(shù)保持一致,這樣,如果虛擬用戶數(shù)達不到指定數(shù)目,則不會執(zhí)行后面的操作

          3-5? 搶購請求

          在線程組下,繼續(xù)添加一個搶購的 HTTP 請求

          同樣根據(jù)接口 API,編輯 HTTP 請求的方式、路徑、請求體

          3-6? 添加請求結(jié)果樹、匯總報告、聚合報告

          選中線程組,添加請求的結(jié)果樹、匯總報告、聚合報告

          步驟:線程組 - 右鍵 - 添加 -?監(jiān)聽器 -?察看結(jié)果樹/匯總報告/聚合報告

          如此,Jmeter 的配置已完成!

          4. 運行

          4-1 ?直接運行

          選中線程組,點擊菜單欄的啟動按鈕,即可以模擬并發(fā)調(diào)用搶購的接口

          運行完成后,點擊察看結(jié)果樹,可以發(fā)現(xiàn) 30 個虛擬用戶調(diào)用搶購接口的開始時間是一致的

          另外,在匯總報告和聚合報告中,可以展示平均響應(yīng)時間、最大/小響應(yīng)時間、異常比率、吞吐量等結(jié)果數(shù)據(jù)

          4-2??生成測試報告

          除了直接運行,也可以使用 Jmeter 命令在本地生成測試報告

          #?-o?jmeter_report/?測試報告生成目錄
          jmeter?-n?-t?搶購-并發(fā)測試.jmx?-l?test.jt1?-e?-o?jmeter_report/

          其中

          • -n

            以非 GUI 的形式運行

          • -t

            指定 Jmeter?配置文件

          • -l

            指定生成日志文件模板

          • -e

            測試結(jié)束后,生成測試報告

          • -o

            測試報告生成目錄

          打開測試報告,發(fā)現(xiàn)測試結(jié)果數(shù)據(jù)通過圖表的形式詳細(xì)地展示出來了

          5. 最后

          通過上面的步驟,完成了對接口的壓力測試,以此判斷接口的性能及穩(wěn)定性!

          實際項目中,由于單機的性能瓶頸,對于大量用戶的壓測,建議采用 分布式壓測 的方式來進行!

          我已經(jīng)將文中的 jmx?配置文件傳到后臺,關(guān)注公眾號,后臺回復(fù)「 201224?」即可獲得

          如果你覺得文章還不錯,請大家?點贊、分享、留言?下,因為這將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強動力!



          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  99热在线99 | 国产小逼| 蜜乳一区二区三区 | 日本成人三级片在线观看网站 | 青青欧美,青青美女视频 |