100位用户将登录 https://www.test.com/login 因此,我创建了ThreadGroup并设置了必要的值。创建HTTP请求。
然后,所有用户都将导航到SearchInventory https://www.test.com/ SearchInventory - >它将返回1000个项目作为HTTP响应。每个项目都有唯一的SKU ID。使用REGEX和BEAN Shell,我可以从HTTP响应中获取唯一的ID并将它们存储在数组中。
然后,我需要在HTTP请求下面调用并向其传递唯一项ID https://www.test.com/ SearchInventory? itemId = $ {itemId} 为此,我成功使用For Each循环。
但是,现在要求所有100个用户都无法点击相同的项目。每个用户都会遇到一个唯一的HTTP请求。
例如,用户1将调用HTTP请求https://www.test.com/ SearchInventory? itemId = 12100,
用户2会拨打https://www.test.com/ SearchInventory? itemId = 12101,
用户3将拨打https://www.test.com/ SearchInventory? itemId = 12102等。
直到用户100
有没有办法在JMETER中做这些事情?
在下图中,我设置了线程组 - >用户为100.在每个循环中,我收到100个HTTP请求,这些请求是通过从先前的HTTP响应中获取Array内的ItemId而动态生成的。我希望一个用户只能打一个请求。另一个用户将调用第二个HTTP请求。但是,所有请求都是For Each循环的一部分,因为它们是动态生成的。因此,对于每个用户,每个循环执行100次。
答案 0 :(得分:1)
你需要澄清什么形式的"数组"你正在使用。例如,如果您初始化了ArrayList之类的
SELECT * FROM entries e
WHERE EXISTS(SELECT id FROM authors a WHERE e.id = a.id)
您可以使用__BeanShell function访问第1个虚拟用户的第1个元素,第2个虚拟用户访问第2个元素,等等:
List myList = new ArrayList();
myList.add("12100");
myList.add("12101");
myList.add("12102");
bsh.shared.myList = myList;
演示:
还要注意since JMeter 3.1 it is recommended to use Groovy用于任何形式的脚本,因此请考虑在下一个可用机会上迁移到JSR223 Elements和Groovy语言。有关Groovy性能和语法优势的详细信息,请参阅Apache Groovy - Why and How You Should Use It文章。