Jmeter:如何在分布式测试运行时动态修改属性?

时间:2017-09-15 13:05:15

标签: jmeter load-testing jmeter-plugins beanshell jmeter-3.2

我有什么

巨大的Jmeter代理网络,1个主人+多个奴隶。 Master将任务发送给Slaves,他们开始测试执行并向Master报告数据。

我想要什么

能够在执行测试时动态修改输入(作为全局属性传递给Master,-G),而无需停止/重新启动测试。

我知道什么

  1. 我可以使用BeanShell服务器在运行测试时修改Jmeter属性。它工作正常。但BeanShell服务器仅在Master上启动,而不是在Slaves上启动。
  2. 在测试执行之前,Master只将-G属性发送给Slaves一次。即使Master属性已更新,从站也不会在重新启动测试之前获取此信息。
  3. 问题

    如何修改Slaves上的属性?有没有合适的解决方案?

    我的想法

    1. 好吧,我也可以为每个Slave节点使用BeanShell服务器做同样的技巧。但是这个解决方案看起来并不适合我,因为我有很多代理并且必须更新所有代理。这需要时间。
    2. 我可以更改测试逻辑以定期更新文件中的属性,然后即时修改Slaves上的文件。看起来比#1更容易,因为通过ssh远程修改文件然后在每个节点上启动单独的服务器会更便宜。
    3. 实际上,我所需要的只是为BeanShell服务器编写一个合适的方法/函数,它不仅可以在本地更改属性,还可以向Slaves通知它。我还不熟悉Jmeter源代码(刚刚开始)但知道它已经在代码中实现,作为远程​​启动过程的一部分。所以,如果你能指出我正确的课程来研究它 - 它可以帮助我很多。
    4. 任何想法都赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以添加到测试计划Property File Reader,它将读取和更新Slaves中的属性,您可以使用Beanshell / JSR233元素在Master中添加运行时属性。