JMeter案例分享:通過數據驗證的錯誤,說說CSV數據文件設置中的線程共享模式

前言

用過JMeter參數化的小伙伴,想必對CSV Data Set Config非常熟悉。大家平時更關注變量名稱,是否忽略首行等參數,其余的一般都使用默認值。然而我最近遇到一個未按照我的預想讀取數據的案例,原因就出在最后一個參數“線程共享模式”上。記錄一下,大家避坑。

業務需求及腳本邏輯

某系統用戶提交訂單之后,在訂單列表頁面會新增一條記錄。

壓測前后,需要分別查詢訂單數量,根據提交訂單的成功事務數來判斷,是否所有的訂單都成功入庫。

但是,因為測試過程中多用戶并發,每個用戶只能查到自己的訂單,所以檢查時需要逐個檢查所有參與并發測試的用戶名下的訂單數量,然后加總求和。

詳情可參見JMeter案例分享:通過采樣器自動完成性能測試過程中的功能檢查-數據條目驗證-CSDN博客

查找問題

腳本調試時,僅使用有限幾個賬戶,一切正常。但是,當項目組提供真正的登錄賬號后,數據驗證總是對不上。于是,減少并發數,并把用戶、訂單數量信息一一打印出來查看。

1cf0a9646cee4982a6a05d93c993eef6.png

原來:

業務前數據檢查的用戶是usr1、2、3

執行業務的用戶是usr4、5、6

業務后數據檢查的用戶又變成了usr7、8、9

分析原因

它們分屬3個線程組,雖然使用的是同一個數據文件,但是因為數據文件是放置在線程組內的,按照我的理解,作用域也應該僅限于本線程組,那么每一個線程組都應該從這個數據文件的第一行開始讀取。

然而,事實上,這個數據文件似乎是三個線程組間共享的。

于是,關注到CSV data set config中的共享模式(sharing mode)

242c47e55c0145d099968e9db9a62ad8.png

官網中對該選項的介紹如下:

  • All threads?- (the default) the file is shared between all the threads.(默認值,文件在所有的線程間共享)
  • Current thread group?- each file is opened once for each thread group in which the element appears(文件僅在它所在的線程組中被打開一次)
  • Current thread?- each file is opened separately for each thread(每個線程都單獨打開一份,也就是說,這個文件,每個線程都會獨自使用)
  • Identifier?- all threads sharing the same identifier share the same file. So for example if you have 4 thread groups, you could use a common id for two or more of the groups to share the file between them. Or you could use the thread number to share the file between the same thread numbers in different thread groups.

下面我們分別設置來看看效果

All threads

默認值,效果前面已經看到了,所有的線程組中的所有線程,共享一個文檔,從第一行順序向下讀取。

Current thread group

文件僅在當前線程組中有效,本線程組結束后,下一個線程組將重新打開一遍數據文件,從第一行開始向下讀取。這就是我當前這個測試場景中需要的效果。

4aedd7dbddf4478aaea7aa08f9e8121d.png

Current thread

數據文件僅在當前線程中有效。同一個線程組的不同線程間,不共享數據文件。

本例中數據驗證線程組是單線程,用循環控制器順序執行的,看不出效果,看業務線程組:3個并發執行1次,也就是三個線程,但是usr1登錄了3次。

也就是說,線程1打開數據文件,從第一行開始讀取;

線程2打開數據文件,從第一行開始讀取

每個線程讀取各自的文件。

9385e698793d4e029380942f29c9f262.png

Identifier

我在業務前數據驗證和業務線程組中分別輸入1,標識這兩個線程組是group 1

在業務后數據驗證線程組中,輸入2,標識這是group2

709beb65511e4d29b43f2d3cce5d4dfc.png

執行結果如下:

7c8d965277d349e4840537fe68bb6066.png

紅色的兩個線程組(group ID為1)作為一個group,共享數據文件。

黃色的線程組(group ID為2)作為一個group,獨享數據文件。

遺留問題

最后一種共享模式中這句話我不知道該怎么操作,官網沒有示例。

Or you could use the thread number to share the file between the same thread numbers in different thread groups.

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45600.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習中激活函數的演變與應用:一個綜述

摘要 本文全面回顧了深度學習中激活函數的發展歷程,從早期的Sigmoid和Tanh函數,到廣泛應用的ReLU系列,再到近期提出的Swish、Mish和GeLU等新型激活函數。深入分析了各類激活函數的數學表達、特點優勢、局限性以及在典型模型中的應用情況。通過系統的對比分析,本文探討了激…

樹莓派配置vsftpd主動模式

sudo apt-get install vsftpd /etc/vsftpd.conf anonymous_enableNO # 禁用匿名用戶 local_enableYES # 允許本地用戶登錄 write_enableYES # 允許修改權限 #chroot_local_userYES # 將用戶限制在其主目錄 systemctl restart vsftpd sudo adduser ftpuser sudo pa…

詳解MySQL中的遞歸查詢

MySQL中的遞歸查詢主要通過WITH RECURSIVE語句來實現,這在處理具有層級關系或樹形結構的數據時非常有用。下面將通過一個具體的例子來詳細解釋如何在MySQL中使用遞歸查詢。 示例場景 假設我們有一個部門表(departments),其中包含…

昇思訓練營打卡第二十五天(RNN實現情感分類)

RNN,即循環神經網絡(Recurrent Neural Network),是一種深度學習模型,特別適用于處理序列數據。以下是對RNN的簡要介紹: RNN的特點: 記憶性:與傳統的前饋神經網絡不同,R…

老板新招的牛人,竟然用1天搭建了一套完整的倉庫管理系統!

倉儲管理系統是什么? 倉儲管理系統(WMS)是一個全面的軟件解決方案,旨在幫助企業優化倉庫管理流程、管理和控制日常倉庫運營。通過數學模型和信息手段,對倉庫管理的各個環節進行優化和調控,涵蓋了從貨物入庫…

使用網關和Spring Security進行認證和授權

個人名片 🎓作者簡介:java領域優質創作者 🌐個人主頁:碼農阿豪 📞工作室:新空間代碼工作室(提供各種軟件服務) 💌個人郵箱:[2435024119qq.com] &#x1f4f1…

jquery發送jsonp請求

使用 jQuery 發送 JSONP 請求相對來說比較簡單,以下是示例代碼: $.ajax({url: "http://example.com/data",dataType: "jsonp",jsonp: "callback",jsonpCallback: "myCallback" }).done(function(response) {//…

Linux命令更新-sort 和 uniq 命令

簡介 sort 和 uniq 都是 Linux 系統中常用的文本處理命令。 sort 命令用于對文件內容進行排序。 uniq 命令用于去除文件中重復出現的行。 1. sort 命令 命令格式 sort [選項] [文件]選項: -n: 按照數字進行排序 -r: 反向排序 -c: 統計每個元素出現的次數 -…

怎么錄制視頻?電腦錄制,試試這3種方法

在數字化快速發展的時代,視頻已經成為我們傳遞信息、分享生活、表達情感的重要載體。每一個人都希望自己能夠掌握視頻錄制技巧,輕松駕馭影像的力量,創造出屬于自己的視覺盛宴。 那么,怎么錄制視頻呢?首先選擇一款好用…

vue腳手架配置代理請求

在 Vue 腳手架中,可以通過配置vue.config.js文件來設置代理請求,以解決跨域問題或實現其他代理需求。以下是兩種常見的配置方式: 方法一: 在vue.config.js中添加如下配置: module.exports {devServer: {proxy: http…

《信息與電腦(理論版)》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

問題解答 問:《信息與電腦(理論版)》是不是核心期刊? 答:不是,是知網收錄的正規學術期刊。 問:《信息與電腦(理論版)》級別? 答:省級。主管單位:北京電子控股有限責任公司 主辦…

AI安全入門-人工智能數據與模型安全

參考 人工智能數據與模型安全 from 復旦大學視覺與學習實驗室 文章目錄 0. 計算機安全學術知名公眾號1. 概述數據安全模型安全 3. 人工智能安全基礎3.1 基本概念攻擊者攻擊方法受害者受害數據受害模型防御者防御方法威脅模型目標數據替代數據替代模型 3.2 威脅模型3.2.1 白盒威…

實踐致知第16享:設置Word中某一頁橫著的效果及操作

一、背景需求 小姑電話說:現在有個word文檔,里面有個表格太長(如下圖所示),希望這一個設置成橫的,其余頁還是保持豎的! 二、解決方案 1、將鼠標放置在該頁的最前面閃爍,然后選擇“頁面”》“↘…

Python面經

文章目錄 Python基本概念1. Python是**解釋型**語言還是**編譯型**語言2. Python是**面向對象**語言還是面向過程語言3. Python基本數據類型4.append和 extend區別5.del、pop和remove區別6. sort和sorted區別介紹一下Python 中的字符串編碼is 和 的區別*arg 和**kwarg作用淺拷…

Electron 進程間通信

文章目錄 渲染進程到主進程(單向)渲染進程到主進程(雙向)主進程到渲染進程 (單向,可模擬雙向) 渲染進程到主進程(單向) send (render 發送)on &a…

【Stable Diffusion】(基礎篇三)—— 圖生圖基礎

圖生圖基礎 本系列筆記主要參考B站nenly同學的視頻教程,傳送門:B站第一套系統的AI繪畫課!零基礎學會Stable Diffusion,這絕對是你看過的最容易上手的AI繪畫教程 | SD WebUI 保姆級攻略_嗶哩嗶哩_bilibili 本文主要講解如何使用S…

客戶端與服務端之間的通信連接

目錄 那什么是Socket? 什么是ServerSocket? 代碼展示: 代碼解析: 補充: 輸入流(InputStream): 輸出流(OutputStream): BufferedReader 是如何提高讀取效率的&a…

K8s集群初始化遇到的問題

kubectl describe pod coredns-545d6fc579-s9g5s -n kube-system 找到原因1:CoreDNS Pod 處于 Pending 狀態的原因是集群中的節點都帶有 node.kubernetes.io/not-ready 污點 journalctl -u kubelet -f 14:57:59.178592 3553 remote_image.go:114] "PullIma…

《簡歷寶典》12 - 簡歷中“項目經歷”,內功學習 - 下篇

這一小節呢,我們繼續說簡歷中 “項目經歷” 的一些內功心法。因為項目經歷比較核心,所以說完了,內功呢,我們會著重說一下 實戰部分。 目錄 1 所用技術的考慮 2 自我成長的突出 3 綜合使用STAR法則 4 小節 1 所用技術的考慮 …

如何評估AI模型:評估指標的分類、方法及案例解析

如何評估AI模型:評估指標的分類、方法及案例解析 引言第一部分:評估指標的分類第二部分:評估指標的數學基礎第三部分:評估指標的選擇與應用第四部分:評估指標的局限性第五部分:案例研究第六部分&#xff1a…