我正在使用JMeter测试我的REST API,进行了10000次访问,每个HTTP访问都会在数据库中存储一些数据。我遵循了以下测试计划。
我正在并行运行10个线程,每个线程的启动时间为20秒,并循环1000次以达到相同的效果。
但问题在于我的线程没有使用唯一的数据集。而我的后端HTTP URL需要每次http请求都有唯一的字符串。
现在我已经尝试了以下方法。
1. 使用单个CSV数据集配置,其中包含10000个唯一值,并且线程组中的所有线程都读取相同的数据。 2. 为每个线程使用不同的CSV数据集,并使用filename $ {__threadNum} .csv分配csv文件。 3. 使用jmeter _RandomString方法在运行时生成随机字符串以进行每个http请求,在http post body中传递如下内容: {"tenantName":"${__RandomString(15,abcdefghijklmnofqrst1234567#@#%^&*,)}"} 4. 在HTTP Request采样器中使用BeanShell预处理器调用Java方法并始终生成唯一模式。
现在以上方法都对我无效。在运行测试计划时,经过一段时间后,2个线程尝试使用相同的数据并命中我的HTTP URL。我从http响应中得到冲突错误。我的错误计数不断增加。
现在我真的不明白这两个线程如何尝试使用相同的数据来命中http?
现在我已经尝试了以下方法。
1. 使用单个CSV数据集配置,其中包含10000个唯一值,并且线程组中的所有线程都读取相同的数据。 2. 为每个线程使用不同的CSV数据集,并使用filename $ {__threadNum} .csv分配csv文件。 3. 使用jmeter _RandomString方法在运行时生成随机字符串以进行每个http请求,在http post body中传递如下内容: {"tenantName":"${__RandomString(15,abcdefghijklmnofqrst1234567#@#%^&*,)}"} 4. 在HTTP Request采样器中使用BeanShell预处理器调用Java方法并始终生成唯一模式。
现在以上方法都对我无效。在运行测试计划时,经过一段时间后,2个线程尝试使用相同的数据并命中我的HTTP URL。我从http响应中得到冲突错误。我的错误计数不断增加。
现在我真的不明白这两个线程如何尝试使用相同的数据来命中http?
请有人解释一下问题,并帮助我设置正确的测试计划配置。
编辑:
所有线程的CSV数据集配置:
HTTP请求:
使用CSV数据集添加测试计划: