JMeter - 通过CSV迭代使用变量

时间:2013-05-09 15:48:05

标签: apache jmeter performance-testing

我遇到了问题,如何将其置于JMeter测试中并确保分配给每个线程的所有客户编号都在使用?

我的负载测试......

•需要为每个客户同时发送12个SOAP请求(12 x RequestTypes )。客户在SOAP请求中由 CustomerNumber 区分。 例如:

<Execute>
<UserCredentials></UserCredentials>
<CustomerNumber></CustomerNumber>
<RequestType></RequestType>
</Execute>

•我有3个线程用户,每个线程用户都有一个指定的客户列表,例如:

Thread 1 has customer list – A, D, G, J, …
Thread 2 has customer list – B, E, H, K, …
Thread 3 has customer list – C, F, I, L, …

•一个线程无法向另一个客户发送另一组12个SOAP请求,除非已经检索了所有以前的12个SOAP请求给客户的响应(如果此响应是SOAP或应用程序,则无关紧要)失败)

CustomerNumber 和相应的 UserCredentials 将存储在CSV文件中。

•线程用户必须在SOAP请求中使用自己的凭据。

•只有在CSV文件中的每个主题的所有客户编号都已发送后,才能完成要发送的请求。

我目前有:

 Test Plan
|
 -Thread Group
   |
    - User Parameters
         *UserCredentials
         *CustomerNumbers
   |
    - Loop Controller
      |
      - Request 1
      - Request 2
      ...
      - Request 12

在用户参数中我有以下内容:

Name:                User_1                        User 2                        User 3
UserCredentials      ${__CSVRead(users.csv,0)}     ${__CSVRead(users.csv,1)}     ${__CSVRead(users.csv,2)}
CustomerNumbers      ${__CSVRead(cust.csv,0)}      ${__CSVRead(cust.csv,1)}      ${__CSVRead(cust.csv,2)}

我一次发送3个线程用户,每个用户发送12个请求。每个线程用户都有n个病人的列表。

问题是,我将Loop控制器设置为2,我原本预计在每次线程的第二次运行时它会为 CustomerNumber 选择第二行,但它没有。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

Thread Group
*Number of Threads = n
*Loop Count = Forever
|
- CSV Data Set Config
  *Filename = cust${__threadNum}.csv     (where i separated my cust.csv file into n number of files)
  *Stop of thread EOF = true (others on False)
  *All threads sharing mode
- Loop Controller
  |
  - Request 1
  - Request 2
  ...
  - Request 12
  - User Parameters
    *User Credentials