2016-11-16 95 views
2

我执行使用JMeter的有以下流负载测试:如何避免从CSV文件用户的重复使用在JMeter的

  • 线程组它由多个用户,5分钟,无限循环的。 (图片在接下来的链路>1

  • 具有以下配置CSV配置文件(in this link CSV config)

所以,我的计划是:

  • 从CSV文件获取用户(在CSV里面,每行都有用户名)
  • 里面有一个循环控制器:
    • 一次只有我的登录请求的控制器。
    • 取决于会话有效性(这就是为什么我有循环控制器)。

的问题是 - 我收到了很多多会话的错误,所以我想确保我在正确的配置我的测试,以避免一种情况,从以前的线环的用户还没有完成流程,但第二个线程循环开始并从CSV文件中获取该特定用户的详细信息,导致第一次运行无效会话。

感谢

回答

3

您可以通过提供的凭据即足够数量克服这种情况,

number of credentials = number of threads. 

所以,每个线程都可以选择一个唯一的用户名和密码,从而避免了多个会话的冲突同一个用户。


如果CSV文件中没有足够的条目,JMeter将重用凭据。即Recycle on EOF, default value set to True.(在CSV DataSet Config中)。所以如果您提供的凭证数量较少,那么JMeter会从以后的线程开始重新使用这些值。除非AUT(受测试应用程序)支持相同凭证的多个会话,否则不能使用更少数量的凭证。关闭设置Recycle on EOF会导致以后的用户(线程)缺乏凭据,从而导致JMeter停止这些线程。


CSV值如何阅读:

默认情况下,该文件只打开一次,每个线程将使用不同的线从文件。然而,线程传递给线程的顺序取决于它们执行的顺序,这些顺序可能会在迭代之间变化。在每次测试迭代开始时读取行。文件名和模式在第一次迭代中解决。

如果你想有具体到每个线程值:

如果你希望每个线程都有自己的一套价值观,那么你将需要创建一组文件,每个线。例如test1.csv,test2.csv,...,testn.csv。使用文件名测试$ {__ threadNum} .csv和设置 “共享模式” 为 “当前线程”

参考:

  1. http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config