有人在Jmeter中使用过XSLT BSF预处理器吗?

时间:2014-10-10 12:51:29

标签: jmeter


  有人在JMeter中使用过BSF预处理器吗?预处理器和采样器之间的工作区别有什么不同? Beanshell处理器和BSF处理器有什么区别?

我的要求是我有一个示例XML,我需要使用它来为HTTP请求生成尽可能多的XML,我将加载测试。为此,我计划使用BSF预处理器在循环内使用模板XML的XSLT转换创建XML字符串(我想要生成多少个请求)。然后,我将在循环的每次迭代中使用指向创建的XML的字符串变量来获得相应的HTTP请求。因此,前一段中的问题是验证这种方法。

如果这种方法没问题,我无法弄清楚如何使用XSLT BSF预处理器?我写过以及尝试在脚本部分中指定XSL,但无法弄清楚如何传递输入XML? String参数输入是什么意思?它为该参数抛出了NullPointerException?那是指定输入XML的方式吗?如果是,请举个例子。

任何参与此工作的人,请分享您的任何投入。

谢谢,
稻谷

1 个答案:

答案 0 :(得分:0)

请在下面找到答案:

  

预处理器和采样器之间的工作区别

PreProcessor在采样器之前执行。不记录预处理器和后处理器执行时间,因此它们可以方便地使用,即在采样器结束后准备测试数据或对其执行某些操作。

  

Beanshell处理器和BSF处理器有什么区别?

Beanshell测试元素仅支持Beanshell语言,而BSF支持JavaScript,jexl,jacl,jml等。

对于轻量级脚本,使用Beanshell会更好,因为引擎初始化时间较短,但是如果你的脚本正在执行" heavy"操作最好使用JSR223 Sampler和Groovy作为语言。有关脚本扩展引擎的基准知识,请参阅Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!,以及有关如何安装Groovy语言支持的详细信息。

  

如何传递输入XML

可以通过接受任何字符串的Parameters部分来完成。

如果您将XML文件作为JMeter变量,则可以从脚本中访问它:

String xml = vars.get("myVar");

更新:示例预处理器代码

import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;


TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("/path/to/your/xsl/file.xsl"));
Transformer transformer = factory.newTransformer(xslt);
Source xml = new StreamSource(new File("/path/to/your/source/xml/file.xml"));
transformer.transform(xml, new StreamResult(new File("/path/to/result/xml_or_html/file")));