java - 如何使用JMeter作为功能测试工具?

标签 java rest api jmeter functional-testing

我们公司决定尝试使用 JMeter 对 Http API 进行功能测试。我发现JMeter主要是一个性能测试工具,涉及的术语有点不同,比如ThreadGroups、Test Fragment、Test Plan等等。最后,我们希望在 Jenkins 中运行这些 JMeter 测试并通过电子邮件发送报告。我想要类似的东西

TestSuite       TotalTestCases    PassedTestCases      FailedTestCases 
FuncTestSuite1 7 6 1
FuncTestSuite2 10 8 2

如何在 JMeter 中完成这种测试结果报告?我可以考虑为每个测试用例创建 jmx 文件,并将它们放在代表测试套件的文件夹中。通过这个组织,我可以编写一个实用程序来运行这些 JMeter 测试并确定每个测试的通过和失败,然后生成可以在 Jenkins 中发布的 Junit 文件。是否有另一种方法可以仅使用 JMeter 来实现此目的,还是我应该满足于这种解决方法来实现所需的报告?有没有办法让每个 ThreadGroup 通过、失败,以便 ThreadGroup 可以用作测试用例而不是整个文件?提前致谢。

最佳答案

从 JMeter 测试执行中获取 JUnit 样式报告的最简单方法是使用 Taurus 运行 JMeter工具作为包装器。

金牛座提供JUnit XML Reporter它能够将 JMeter 测试结果转换为 JUnit 格式。

最小的金牛座YAML配置文件类似于:

execution:
  - scenario: mytest

scenarios:
  mytest:
    script: test.jmx

reporting:
  - module: junit-xml
    filename: result
    data-source: sample-labels

您将获得一个 JUnit XML 文件,如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<testsuites>
    <testsuite name="sample_labels" package_name="bzt">
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test1"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test2"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test3">
            <error message="OK" type="Error">OK
                (status code is 200)
                (total errors of this type: 1)</error>
        </testcase>
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test4"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test5"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test6"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite1-Test7"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test1"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test10"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test2"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test3"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test4">
            <error message="OK" type="Error">OK
                (status code is 200)
                (total errors of this type: 1)</error>
        </testcase>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test5"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test6"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test7"/>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test8">
            <error message="OK" type="Error">OK
                (status code is 200)
                (total errors of this type: 1)</error>
        </testcase>
        <testcase classname="bzt-11388721" name="FuncTestSuite2-Test9"/>
    </testsuite>
</testsuites>

金牛座的执行将非常简单:

bzt test.yaml

enter image description here

引用 test.jmx 脚本如下所示:

enter image description here

更多信息:Navigating your First Steps Using Taurus

关于java - 如何使用JMeter作为功能测试工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692364/

相关文章:

java - 只是 'DELETE' 请求方法不支持

jquery - 使用 Ajax 的 PUT 请求(处理 Spring)

api - 成功的 paypal api 调用未显示在沙箱中

c++ - 设计API时如何设计const和volatile的重载成员函数?

java - 正确的正则表达式以防止 Java 扫描器返回零长度字符串

java - "Missing return statement"在 if/for/while 内

java - 嵌套循环中的编译错误。

使用 Until 条件的 Azure 逻辑应用 API 分页

php - 使用Facebook API PHP在某人的墙上张贴

java - NatTable-设置动态列宽