Multithreading Jmeter:测试计划有两个线程组,但它只生成一个jtl报告

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

我的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: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
而不是jmeter
bin
文件夹中工作。

只有在两种情况下才会生成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文件中生成线程组特定的报告。您可以使用安装筛选结果工具,并通过