Jmeter:测试计划有两个线程组,但仅生成了1个jtl报告

时间:2018-09-30 05:54:36

标签: multithreading maven jmeter jmeter-maven-plugin

我的Jmeter测试计划有两个线程。这两个线程都需要单独的CSV(csv参数化)文件。

在测试mvn verify结束时,我预计会生成两个.jtl文件,但只能得到一个。似乎只有1个线程正在运行。当我在GUI中运行时,它可以正常运行,而无需maven。

测试计划: enter image description here

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>

我已经看过这些帖子,但是没有运气:

Can we run two thread groups parallely in a single test plan in Jmeter?

Why only 2 out 3 JMeter Thread group execute?

我正在使用Windows 7,Maven 3,Jmeter Maven插件

4 个答案:

答案 0 :(得分:1)

根据建议,可以在运行测试时禁用所有侦听器。

  1. 然后只需添加一个“简单数据编写器”侦听器并指定位置即可保存结果。推荐使用.jtl文件类型的文件名。
  2. 如果需要2个.jtl文件,则可以在每个线程组中添加此侦听器。如果要汇总结果,则在测试计划级别添加此侦听器。
  3. 测试运行完成后,您可以将此.jtl文件浏览到所需的任何所需的侦听器中,

答案 1 :(得分:0)

为什么您没有任何侦听器,为什么要生成2个jtl文件。

在这种情况下,在非GUI模式下,jmeter只会生成1个文件,这就是jmeter-maven-plugin的作用。

顺便说一句,您使用的是旧版插件2.1.0,最后一个是2.7.0。

答案 2 :(得分:0)

在调试我的问题时,我发现第二线程甚至也无法在GUI模式下工作。然后,我将.csv文件从线程1切换到了2,发现只有1个.csv文件始终有效。最后,在进一步挖掘之后,我发现为了运行您的.csv,需要将其放在src/test/jmeter/testdata文件夹中,而不是放在apache-jmeter-3.2/bin/testdata内。

答案::第二个线程由于使用了错误的.csv而无法正常工作。要找到它,请在Jmeter GUI中单击右上角的黄色三角形。它切换日志显示。这些日志向我显示未找到.csv的错误。

是的,我也遇到过一些在线论坛,他们会告诉您将.csv放在apache-jmeter-3.2\bin\testdata内,以使路径保持相对,即不依赖于项目结构或OS。这是Jmeter中的CSV参数设置。

因此,我建议同时尝试一下,对我来说,它可以在src/test/jmeter/testdata而不是Jmeter bin文件夹中使用。

答案 3 :(得分:0)

只有在2种情况下,您才会生成2个.jtl文件:

  1. 您在src/test/jmeter文件夹下有2个.jmx脚本
  2. 您启用Aggregate Report侦听器并将其配置为将结果保存到以测试名称或__threadGroupName()为前缀的../results文件夹中(此功能自JMeter 5.0起可用)

通常,如果您的JMeter测试有任何意外行为,请习​​惯查看 jmeter.log 文件,如果通过Maven插件执行JMeter测试,则日志文件为)位于相对于主 pom.xml 文件的target/jmeter/logs文件夹下。通常,它应包含足够的疑难解答信息以深入研究问题。无法执行JMeter测试或线程组的最常见原因是:

  • 提供的线程数不正确(即参数化失败)
  • 缺少依赖文件(即CSV文件不在预期的位置)