亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

K6 負載測試 - 如何為整個測試運行制作順序 ID

K6 負載測試 - 如何為整個測試運行制作順序 ID

萬千封印 2022-12-22 14:28:33
我有一個 api 端點,每個請求都需要一個不同的 id ,但是如何為所有 VU 共享的每個迭代創建一個 id 全局和順序增量,就像數據庫表上的主鍵一樣。前任:request 1 : <id>400</id> VU :1request 2 : <id>401</id> VU :1request 1 : <id>402</id> VU :2request 3 : <id>403</id> VU :1request 4 : <id>404</id> VU :1request 2 : <id>405</id> VU :2request 3 : <id>406</id> VU :2有沒有辦法聲明一個由整個測試共享的變量?Setup 和 Init 是針對每個 VU 的,根據文檔不能共享數據。
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

對于任何尋找生成序列號的方法的人。從 v0.0.34 版本開始,k6/execution被引入,它有iterationInTest一個整數屬性,描述為:


場景中當前迭代的唯一且從零開始的序號。它在所有 k6 執行模式中都是獨一無二的——在本地、云和分布式/分段測試運行中。然而,雖然每個實例在云/分布式測試中都會獲得非重疊的索引值,但它們可能會以不同的速度迭代它們,因此這些值不會在它們之間是連續的。


這可以在您的測試代碼中用于生成序列號,例如:


import exec from 'k6/execution':


export default function () {

  const url = `https://foo.bar/${exec.scenario.iterationInTest}`;

  http.get(url)

}

我能夠為測試的每次迭代增加一個數字。


查看完整回答
反對 回復 2022-12-22
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

這并不容易實現,因為每個 VU 都在單獨的 JavaScript VM 中運行,并且它們之間不共享內存。有關詳細信息,請參閱測試生命周期文檔。這樣做是為了允許測試運行分布在 k6 實例之間,因此在它們之間同步數據將需要外部解決方案。

您可以采用的一種方法是跟蹤并增加 Web 服務中的 ID,您的 k6 腳本可以查詢該 ID 以從中獲取下一個 ID。Redis 可以很好地滿足這個目的,請參閱此相關答案以獲取想法。但請注意,任何此類解決方案都會影響您的測試結束測試指標和測試本身的性能,因此它并不理想,但我沒有看到更好的方法。


查看完整回答
反對 回復 2022-12-22
  • 2 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號