有人在JMeter中使用过BSF预处理器吗?预处理器和采样器之间的工作区别有什么不同? Beanshell处理器和BSF处理器有什么区别?
我的要求是我有一个示例XML,我需要使用它来为HTTP请求生成尽可能多的XML,我将加载测试。为此,我计划使用BSF预处理器在循环内使用模板XML的XSLT转换创建XML字符串(我想要生成多少个请求)。然后,我将在循环的每次迭代中使用指向创建的XML的字符串变量来获得相应的HTTP请求。因此,前一段中的问题是验证这种方法。
如果这种方法没问题,我无法弄清楚如何使用XSLT BSF预处理器?我写过以及尝试在脚本部分中指定XSL,但无法弄清楚如何传递输入XML? String参数输入是什么意思?它为该参数抛出了NullPointerException?那是指定输入XML的方式吗?如果是,请举个例子。
任何参与此工作的人,请分享您的任何投入。
谢谢,
稻谷
答案 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")));