CSV Data Set Config设置

本文详细解析了CSV数据集配置的各项参数,包括文件名、编码、变量名等,并深入探讨了共享模式、循环读取及线程控制设置,对理解JMeter中CSV数据集工作原理至关重要。

在这里插入图片描述
1.Filename:文件名,指保存信息的文件目录,可以相对或者绝对路径(比如:D:\ceshi.Txt)

2.File encoding:csv文件编码,可以不填

3.Variable Names:变量名,多个变量用“,”分开。变量使用格式 O A V e n d i n g M a c h i n e N u m 和 {OA_VendingMachineNum}和 OAVendingMachineNum{Name}

4.Delimiter:csv文件中的分隔符(用”\t”代替tab键)(一般情况下,分隔符为英文逗号)

5.Allow quoted data:是否允许引用数据(尚不清楚)

6.Recycle on EOF :到了文件尾处,是否循环读取参数,选项:true和false。因为CSV Data Set Config一次读入一行,分割后存入若干变量交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入

7.Stop thread on EOF:到了文件尾处,是否停止线程,选项:true和false

7.1当Recycle on EOF 选择true时,Stop thread on EOF选择true和false无任何意义,通俗的讲,在前面控制了不停的循环读取,后面再来让stop或run没有任何意义
7.2当Recycle on EOF 选择flase时,Stop thread on EOF选择true,线程4个,参数3个,那么只会请求3次
7.3当Recycle on EOF 选择flase时,Stop thread on EOF选择flase,线程4个,参数3个,那么会请求4次,但第4次没有参数可取,不让循环,所以第4次请求错误

8.Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。经试验得出来的结果是(不考虑线程组迭代):

8.1如果测试计划中有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn,CSV Data Set Config放在线程组A的下级组织树,不管怎么设置Sharing mode,都只针对线程组A且取之情况一样:线程A1取第一行,线程A2取第二行。CSV Data Set Config放在测试计划下级组织树(与线程组并列),情况如下 :

All threads:测试计划中所有线程,线程组A、线程组B共用一个CSV文件,所取数据与线程实际执行顺序有关(先执行先取)。补充一点:线程组之间是并行执行,各线程实际执行时间根据Ramp-UP Period而来,如下图,若线程A、线程B均设置Ramp-Up Period:2,取之情况是:线程A1取第1行,线程B1取第2行,线程A2取第3行,线程B2取第4行。
在这里插入图片描述
  Current thread group:取之情况是:线程A1取第1行,线程A2取第2行,线程B1取第1行,线程B2取第2行。(线程组互不影响)
 
 Current thread:当前线程。A1取第一行,A2取第一行;B1取第一行,B2取第一行(均取第一行)

转载地址:https://www.cnblogs.com/zh26/p/5736241.html

在使用 JMeter 进行性能测试时,处理并发访问场景下的数据参数化问题时,CSV Data Set Config 是一个非常关键的配置元件。它通过共享模式(Sharing Mode)和线程行为控制,确保多个线程在访问数据文件时能够保持线程安全和数据一致性。 ### 共享模式(Sharing Mode)与并发访问 CSV Data Set Config 提供了三种共享模式来控制数据文件的访问方式: - **All threads(所有线程)**:数据文件在所有线程之间共享。每个线程按顺序读取数据行,不会重复读取,适用于模拟多个用户依次使用不同数据的场景。例如,有100行数据和10个线程,每个线程将读取10行数据[^1]。 - **Current thread group(当前线程组)**:每个线程组内的线程共享数据文件,但不同线程组之间不共享。每个线程组内的线程会按顺序读取数据行,确保数据不重复[^2]。 - **Current thread(当前线程)**:每个线程独立读取数据文件,所有线程都会从头开始读取整个文件。这种模式适合每个线程需要使用完整数据集的场景,例如每个线程都需使用相同的数据集进行测试[^3]。 ### 线程安全与数据一致性 在并发测试中,为确保线程安全和数据一致性,CSV Data Set Config 通过以下配置参数进行控制: - **Recycle on EOF?(到达文件末尾后是否循环)**:当所有数据行都被读取完毕后,是否重新从文件开头开始读取。设置为 `True` 时,线程会循环读取数据,适用于数据行数小于线程迭代次数的场景;设置为 `False` 时,线程读取到文件末尾后将停止读取,变量会被设置为空值,可以通过 `csvdataset.eofstring` 设置替代值[^1]。 - **Stop thread on EOF?(到达文件末尾后是否停止线程)**:当数据文件读取完毕时,是否终止线程。如果设置为 `True`,线程在读取完所有数据后将被终止;如果设置为 `False`,线程将继续运行,但变量值将为空或 `csvdataset.eofstring` 指定的值[^4]。 ### 示例配置 假设测试场景中有多个并发用户需要依次读取用户信息进行登录测试,数据文件 `users.csv` 包含以下内容: ```csv username,password user1,pass1 user2,pass2 user3,pass3 ``` 在测试计划中,可以配置 CSV Data Set Config 如下: ```python { "filename": "users.csv", "fileEncoding": "UTF-8", "variableNames": "username,password", "delimiter": ",", "recycleOnEof": true, "stopThreadOnEof": false, "sharingMode": "All threads" } ``` 此配置确保多个线程按顺序读取数据,并在数据读取完毕后重新从头开始读取,线程不会被终止,适合持续测试场景。 ### 线程安全机制 CSV Data Set Config 内部通过锁机制确保多线程环境下数据行不会被重复读取。当多个线程同时尝试读取下一行数据时,JMeter 会使用同步机制确保每次只有一个线程读取数据行,从而避免数据冲突。 ### 总结 CSV Data Set Config 通过共享模式和线程控制参数,有效处理了并发访问时的数据一致性问题。根据测试需求选择合适的共享模式和线程行为,可以实现高效的并发测试。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值