【问题标题】:How to avoid duplicate usage of Users from CSV file in JMeter如何避免在 JMeter 中重复使用 CSV 文件中的用户
【发布时间】:2016-11-16 13:59:18
【问题描述】:
我正在使用 JMeter 执行负载测试,流程如下:
所以,我的计划是:
- 从 CSV 文件中获取用户(在 CSV 中,每一行都有用户名)。
- 有一个循环控制器,里面有:
- 仅用于我的登录请求的控制器。
- 事务取决于会话有效性(这就是我有循环控制器的原因)。
问题是 - 我收到很多多个会话错误,所以我想确保我正在正确配置我的测试,以避免出现前一个线程循环中的用户尚未完成流程,但第二个线程循环开始并从导致无效会话的 CSV 文件中获取该特定用户的详细信息到第一次运行。
谢谢
【问题讨论】:
标签:
performance
csv
duplicates
jmeter
load
【解决方案1】:
您可以通过提供足够数量的凭据来克服这种情况,即,
number of credentials = number of threads.
因此,每个线程都可以选择一个唯一的用户名和密码,从而避免同一用户的多个会话冲突。
如果 CSV 文件中没有足够的条目,JMeter 将重用凭据。即,Recycle on EOF, default value set to True.(在 CSV 数据集配置中)。因此,如果您提供的凭据数量较少,那么 JMeter 将从头开始重用这些值以供以后的线程使用。除非 AUT(被测应用程序)支持同一凭据的多个会话,否则您不能使用较少数量的凭据。关闭Recycle on EOF 设置会导致后面的用户(线程)缺少凭据,从而导致 JMeter 停止这些线程。
如何读取 CSV 值:
默认情况下,文件只打开一次,每个线程将使用与文件不同的行。但是,将行传递给线程的顺序取决于它们的执行顺序,这可能在迭代之间有所不同。在每次测试迭代开始时读取行。文件名和模式在第一次迭代中被解析。
如果您想拥有特定于每个线程的值:
如果您希望每个线程都有自己的一组值,那么您需要为每个线程创建一组文件。例如 test1.csv、test2.csv、……、testn.csv。使用文件名 test${__threadNum}.csv 并将“共享模式”设置为“当前线程”
参考:
- http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config