Multithreading Jmeter:测试计划有两个线程组,但它只生成一个jtl报告
我的Jmeter测试计划有两个线程。两个线程都需要单独的CSV(CSV参数化)文件 在测试Multithreading Jmeter:测试计划有两个线程组,但它只生成一个jtl报告,multithreading,maven,jmeter,jmeter-maven-plugin,Multithreading,Maven,Jmeter,Jmeter Maven Plugin,我的Jmeter测试计划有两个线程。两个线程都需要单独的CSV(CSV参数化)文件 在测试mvn verify结束时,我希望生成两个.jtl文件,但只得到一个。似乎只有一个线程正在运行。当我在GUI中运行时,它运行良好,没有maven 测试计划: POM.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s
mvn verify
结束时,我希望生成两个.jtl
文件,但只得到一个。似乎只有一个线程正在运行。当我在GUI中运行时,它运行良好,没有maven
测试计划:
POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.performancetesting</groupId>
<artifactId>demo-performance-testing</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.1.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>de.codecentric</groupId>
<artifactId>jmeter-graph-maven-plugin</artifactId>
<version>0.1.0</version>
<configuration>
<inputFile>${project.build.directory}/jmeter/results/*.jtl</inputFile>
<graphs>
<graph>
<pluginType>ResponseTimesOverTime</pluginType>
<width>800</width>
<height>600</height>
<outputFile>${project.build.directory}/jmeter/results/BlazeDemoRequest.png</outputFile>
</graph>
</graphs>
</configuration>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.demo.performancetesting
我使用的是Windows7、Maven 3、Jmeter Maven插件,既然你没有任何侦听器,为什么你希望生成2个jtl文件
在这种情况下,在非gui模式下,jmeter将只生成1个文件,这就是jmeter maven插件所做的
顺便说一句,您使用的是插件的旧版本2.1.0,最后一个版本是2.7.0。在调试我的问题时,我发现第二个线程甚至没有在GUI模式下工作。然后我将.csv
文件从线程1切换到线程2,发现只有1个.csv
文件始终有效。最后,在进一步挖掘之后,我发现为了运行您的.csv
需要在src/test/jmeter/testdata
文件夹中,而不是在apache-jmeter-3.2/bin/testdata
中
回答:第二个线程不工作,因为它使用了不正确的.csv
。要找到它,请单击JMeterGUI右上角的黄色三角形。它切换日志显示。这些日志向我显示了一个错误,即未找到.csv
是的,我也遇到过一些在线论坛,他们会告诉您将.csv
放入apache-jmeter-3.2\bin\testdata
中,这样路径就保持相对性,即不依赖于项目结构或操作系统。这是Jmeter中的CSV参数化
因此,我建议尝试这两种方法,对我来说,它在src/test/jmeter/testdata
而不是jmeterbin
文件夹中工作。只有在两种情况下才会生成2.jtl文件:
在src/test/jmeter
文件夹下有2.jmx脚本
您可以启用侦听器,并将其配置为将结果保存到以测试名称或为前缀的。/results
文件夹中(该函数从年起可用)
通常,如果JMeter测试出现任何意外行为,请习惯查看JMeter.log文件,如果JMeter测试通过Maven插件执行,则日志文件位于相对于主pom.xml文件的target/JMeter/logs
文件夹下。通常,它应该包含足够的故障排除信息,以弄清问题的根源。未执行JMeter测试或线程组的最常见原因是:
- 提供的线程数不正确(即参数化失败)
- 缺少依赖项文件(即CSV文件不在预期位置)
按照建议,您可以在运行测试时禁用所有侦听器
只需添加一个“简单数据编写器”侦听器,并给出保存结果的位置。建议使用.jtl文件类型的文件名
如果需要2.jtl文件,可以在每个线程组中添加此侦听器。如果您想要聚合结果,那么在测试计划级别添加此侦听器
一旦测试运行完成,您就可以将这个.jtl文件浏览到您想要的任何监听器中,它可以正常工作
您可以演示如何配置导出jtl的侦听器吗?并显示您的pom.xml添加的pom和testplan。我没有任何监听器来生成.jtl
。也许jmeter-maven-plugin
是为我做的。既然你没有任何监听器,为什么你希望生成两个jtl文件。为什么我甚至有一个.jtl
,因为我根本没有一个监听器?假设两个线程都运行了,那么JTL必须具有来自这两个文件的数据。对吗?将插件从2.1.0更新到2.7.0后,它不会生成.jtl
它正在生成.csv
文件。我认为第二个线程根本没有运行,它被跳过了。正如我所写的,jmeter maven插件将运行jmeter-n-l file.csv-t yourjmx,这就是生成文件的原因。JMeter永远不会为每个线程组生成默认的1个csv。现在关于第二个线程组没有运行,您设置了多少线程和迭代?如果不够,因为您的吞吐量控制器为20%,它可能无法运行。因此,我尝试通过put controller从两个线程中删除,但仍然只有thread1。现在,下次我禁用thread1并运行thread2时,它生成的报告是空白的,并且在使用jmeter maven插件时,它已经生成了jmeter报告。删除您所做的第二个插件并查看目标文件夹,会出现这样一个html报告:它像以前一样处理所有事情,即通过put controller
等处理。问题实际上是我将apache-jmeter-3.2\bin\testdata
改为\src\test\jmeter\testdata
。我是按照我在某个地方读到的教程去做的。我记不起是哪一个,但在一些帖子中,在回答你的问题时,你建议不要在非gui模式下使用侦听器。还有别的办法吗。我可以得到特定于线程的报告,而不是合并。不幸的是,如果你真的需要有2个报告,你可以考虑从单一的JTL结果文件开始,并使用它来从聚合。JTL文件中生成线程组特定的报告。您可以使用安装筛选结果工具,并通过