gpt4 book ai didi

jsf - 使用相同的 JMeter 测试脚本在多个服务器上测试 JSF 应用程序

转载 作者:行者123 更新时间:2023-11-28 21:30:17 24 4
gpt4 key购买 nike

目前我们正在开发一个应用程序并将其部署到我的本地机器上。现在我正在使用 jmeter 进行负载测试,它运行没有问题。我遇到的问题是,当我尝试在具有不同服务器的不同机器上运行相同的测试时,它不起作用。
我观察到 html 元素 id's 在使用 JSF 的不同服务器上是不同的。(问题是表单提交不起作用)。有没有办法用 jmeter 解决这个问题,因为我想在不同的服务器上运行相同的测试脚本。

最佳答案

从先前的响应中提取动态值并将它们添加到下一个请求的过程称为关联。 JMeter 提供各种 Pre ProcessorsPost Processors允许即时修改请求。

示例用例:

  1. 向包含大量输入的 JSP 页面发送 GET 请求
  2. 提取所有输入名称并在需要时填充值
  3. 使用第 2 点中提取的值填充下一个请求的动态字段
  4. 发送 POST 请求

第 1 点:无需更改您的脚本

第 2 点:

添加XPath Extractor作为 GET 请求的子项并按如下方式填充它:

  • 引用名称:INPUT
  • XPath 查询://input/@name | //input[@type='hidden']

这个提取器将提取所有 <input> HTML 元素并将其作为

存储到 JMeter 变量中
INPUT_1=javax.faces.ViewState
INPUT_2=loginForm_SUBMIT
INPUT3=...
...

使用以下代码添加一个 Beanshell 预处理器作为下一个请求的子级

import java.util.Iterator;
import java.util.Map;


Iterator iter = vars.getIterator();
while (iter.hasNext())
{
Map.Entry e = (Map.Entry)iter.next();
if (e.getValue() != null)
{
if (e.getKey().toString().startsWith("INPUT_") && e.getValue().toString().length() >0)
{
sampler.addArgument(e.getValue().toString(),"VALUE OF YOUR INPUT");
}
}
}

上面的代码将获取所有前缀为 INPUT_ 的变量并将其作为参数添加到您的下一个请求中。

参见 How to use BeanShell: JMeter's favorite built-in component有关 Apache JMeter 中 Beanshell 脚本的更多信息的指南,了解使用 Beanshell 脚本和使用暴露给 Beanshell 测试元素的 JMeter 对象还可以做什么。

关于jsf - 使用相同的 JMeter 测试脚本在多个服务器上测试 JSF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24903024/

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