JMeter-通过多个CSV文件基于用户凭据命中特定端点
我的JMeter测试: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
- 使用登录凭据及其唯一标识符用户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控制器的内容从未被击中
用户定义的变量而不是用户参数,但后者似乎是我在这个用例中应该使用的。线程同时运行并共享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函数