Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JMeter-通过多个CSV文件基于用户凭据命中特定端点_Jmeter_Performance Testing_Load Testing_Blazemeter_Ruby Jmeter - Fatal编程技术网

JMeter-通过多个CSV文件基于用户凭据命中特定端点

JMeter-通过多个CSV文件基于用户凭据命中特定端点,jmeter,performance-testing,load-testing,blazemeter,ruby-jmeter,Jmeter,Performance Testing,Load Testing,Blazemeter,Ruby Jmeter,我的JMeter测试: 使用登录凭据及其唯一标识符用户CsvDataSetConfig迭代CSV文件(logins.CSV) 登录 根据登录凭据(logins.csv中的唯一标识符),识别并加载第二个文件,格式为\u invoices.csv,该文件具有查看该用户发票的必要路径 简化的测试设置: ThreadGroup > CsvDataSetConfig - file: logins.csv, variables: user_identifier,email,password, sh

我的JMeter测试:

  • 使用登录凭据及其唯一标识符用户CsvDataSetConfig迭代CSV文件(logins.CSV)
  • 登录
  • 根据登录凭据(logins.csv中的唯一标识符),识别并加载第二个文件,格式为
    \u invoices.csv
    ,该文件具有查看该用户发票的必要路径
简化的测试设置:

ThreadGroup
> CsvDataSetConfig - file: logins.csv, variables: user_identifier,email,password, sharing_mode: all threads
> `SignIn` TransactionController using email and password from above CSV file to login via series of HTTP Requests
> UserParameters - USER_IDENTIFIER,INVOICE_CSV_FOR_USER
> BeanShellSampler
  props.setProperty("USER_IDENTIFIER", vars.get("user_identifier"));
  props.setProperty("INVOICE_CSV_FOR_USER","${__P(USER_IDENTIFIER)}_invoices.csv");
> WhileController - condition: ${__javaScript("${invoice-id}" != "<EOF>",)}
  > CsvDataSetConfig - file: ${__P(INVOICE_CSV_FOR_USER,)}, variables: invoice-id, sharing_mode: current thread
  > `ViewInvoice` TransactionController with HTTP Request to url `../${invoice-id}`

# logins.csv
c7beaa99c6d99fa7754fc2213f9b17b8,foo@example.com,password321
9c8466bee65e39c9d3cf715e42933c3b,bar@example.com,password456

# c7beaa99c6d99fa7754fc2213f9b17b8_invoices.csv
f54eca1cbbba4a97c1dc459e0ba64970
0024f2cdf28dd7ebf3606988fd229afd

# 9c8466bee65e39c9d3cf715e42933c3b_invoices.csv
64f725fdeb2980b28bdf5e02076a55cd
60ac45a12ea3d6b59c2cb82f27da1722
ThreadGroup
>CsvDataSetConfig-文件:logins.csv,变量:用户标识符、电子邮件、密码、共享模式:所有线程
>`SignIn`TransactionController使用上述CSV文件中的电子邮件和密码通过一系列HTTP请求登录
>UserParameters-用户\标识符,发票\ CSV\用于\用户
>豆沙取样器
props.setProperty(“用户标识符”,vars.get(“用户标识符”);
props.setProperty(“INVOICE_CSV_FOR_USER”,“${uu P(用户标识符)}\u invoices.CSV”);
>WhileController-条件:${uuuu javaScript(${invoice id})!=“”,)}
>CsvDataSetConfig-文件:${\u P(发票\u CSV\u用于用户,)},变量:发票id,共享\u模式:当前线程
>`ViewInvoice`TransactionController,具有对url`../${invoice id}的HTTP请求`
#logins.csv
c7beaa99c6d99fa7754fc2213f9b17b8,foo@example.com,密码321
9C8466 BEE65E39C9D3CF715E4293C3B,bar@example.com,密码456
#c7beaa99c6d99fa7754fc2213f9b17b8_invoices.csv
F54ECA1CBBA4A97C1DC459E0BA64970
0024f2cdf28dd7ebf3606988fd229afd
#9C8466BEE65E39C9D3CF715E4293C3B_发票.csv
64f725fdeb2980b28bdf5e02076a55cd
60ac45a12ea3d6b59c2cb82f27da1722
问题:

  • 在本地JMeter中,看到对发票URL的请求使用了不正确的
    发票id
    。因此,线程之间似乎没有正确处理参数
  • 在BlazeMeter中,看到while控制器的内容从未被击中
我尝试过循环控制器,每个_invoices.csv文件有50行,但也没有成功。我最初也是从
用户定义的变量而不是用户参数,但后者似乎是我在这个用例中应该使用的。

线程同时运行并共享JMeter属性

在测试计划中,每个线程设置属性
USER\u标识符
。因此,此属性和其他属性可以/将被不同的线程覆盖,并造成不一致性

我建议您保存(并获取)线程不共享的变量:

 vars.put("USER_IDENTIFIER", vars.get("user_identifier"));

 vars.put("INVOICE_CSV_FOR_USER"," ${USER_IDENTIFIER}_invoices.csv");
关于beanshell,JMeter建议

从JMeter 3.1开始,我们建议从BeanShell切换到JSR223测试元素(有关更多详细信息,请参阅下面的JSR223部分),并从_BeanShell函数切换到_groovy函数


线程同时运行并共享JMeter属性

在测试计划中,每个线程设置属性
USER\u标识符
。因此,此属性和其他属性可以/将被不同的线程覆盖,并造成不一致性

我建议您保存(并获取)线程不共享的变量:

 vars.put("USER_IDENTIFIER", vars.get("user_identifier"));

 vars.put("INVOICE_CSV_FOR_USER"," ${USER_IDENTIFIER}_invoices.csv");
关于beanshell,JMeter建议

从JMeter 3.1开始,我们建议从BeanShell切换到JSR223测试元素(有关更多详细信息,请参阅下面的JSR223部分),并从_BeanShell函数切换到_groovy函数