gpt4 book ai didi

jmeter - Beanshell 脚本在 JMeter 中启动一次(测试计划的开始和结束)

转载 作者:行者123 更新时间:2023-12-02 07:23:19 24 4
gpt4 key购买 nike

下午好!

我会尽力向您解释清楚我的问题。

上下文

我有一个 JMeter TestPlan,它将 HTTP 请求发送到服务器。我有一个 Beanshell 脚本来断言返回的每种不同的错误情况。

  • 302 响应代码 -> 确定
  • 200 响应代码 -> ?

在每个错误 200 中,我检查响应数据字符串以查看它是错误还是正确的情况。 (像用户没有正确的权限这样的用户错误是正常,但是服务器不可用错误,并且两者都有 200 作为响应代码。)

这是我的测试计划:

TestPlan JMeter

目标

由于我仅由一个断言脚本返回了多个错误,因此我无法区分每个错误,除非在 ViewResultTree 中取消折叠断言。但我在启动测试时禁用它,然后我将远程启动我的测试计划。

我想到了手动计算每个错误。我的所有示例都放入我的断言脚本中,并根据其内容转到正确的 if block 。我在每个 block 中增加了一些变量(实际上是 JMeter.properties)。

int test = Integer.parseInt(props.getProperty("302"));
test++;
props.setProperty("302", ""+test);

我想在测试计划的末尾的 JFrame 中显示所有这些变量,如下所示:

ScriptJFrame

问题

我的问题是我不知道如何在 TestPlan 之前和之后启动 Beanshell 脚本。

我希望在发送任何样本之前启动第一个脚本,只是为了将所有属性变量初始化为 0(否则,它们保留最后一个 TestPlan 的值)。

而且,我想要第二个框架来显示我的框架以及测试计划完成后的所有变量。 (目前它是一个 JFrame,但它不会保持这样。)

经过测试的解决方案

1) 对于我的第一个脚本,我在测试计划的开头将计数器(JMeter > 配置元素 > 计数器)设置为 0。我用它来检查我的测试是否已经开始,或者没有使用 If Controller :

If Controller (counter==0)

我有一个带有 props.set("302","0"); 的预处理器 Beanshell,其中“302”是我用于计算所有 302 响应代码的属性。

它可以正常工作,但我想知道是否有正确的方法来做到这一点。

2)然后,对于我的第二个脚本,我尝试在 If Controller 中使用 ${JMeterThread.last_sample_ok} ,但它没有像我预期的那样工作。如果我把它放在我的样本之后,它会在所有 OK 断言之后开始,如果我把它放在测试计划的末尾,它永远不会被调用。

在所有线程停止后(即所有示例完成),如何运行一次 beanshell 脚本?

预先感谢您,希望您理解一切!

最佳答案

JMeter SetUp thread groupTearDown thread group正是为了这个目的。

将您的 beanshell 组件添加到 setUp 线程组,以便在实际测试开始之前执行一些设置事件。同样,tearDown 线程组在测试执行完成后运行。

关于jmeter - Beanshell 脚本在 JMeter 中启动一次(测试计划的开始和结束),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com