【问题标题】:How can I analyze a junit test suite?如何分析 junit 测试套件?
【发布时间】:2016-11-03 01:04:50
【问题描述】:

我们有许多使用 roboletric 运行的单元测试。

我希望收集有关元数据的指标,例如运行时间最长的测试、使线程进入睡眠状态的测试,基本上任何可以用来改进测试运行时间的东西。

【问题讨论】:

  • @nullpointer 你想让我扩展什么?
  • 关于您到目前为止尝试过的内容以及耗时的内容。您究竟在哪里看到所需的性能改进。
  • 您可以使用 jacoco 插件来获取每个测试运行的时间。
  • 看看this linkSonarQube 可能就是你要找的。​​span>

标签: java android testing junit robolectric


【解决方案1】:

您关心的是减少测试执行时间。您可以通过多种方式做到这一点。

首先,您必须决定哪些测试用例是强制性的,哪些测试用例需要每月运行等。

定义强制测试用例后,您可以使用对测试用例的分组来创建套件。如果您并行运行这些组,它将减少大量时间。但是您的分组准备需要很棘手,以便每个组都可以花费类似的时间。这将是最好的方法。

对于 JUnit,

您可以使用并行进程和线程池来确定运行测试用例的线程数量(例如 5000 tcs 的 20 个线程)

<build>
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.7.1</version>
        <configuration>
            <parallel>classes</parallel>
            <threadCount>20</threadCount>
        </configuration>
    </plugin>
    </plugins>
</build>

如果我们在这里计算..假设,每个测试用例需要 3 秒 执行。

对于 5000*3 = 15000 秒/3600 = 4.166 小时。

现在,使用并行处理将需要 (5000/20)*3 = 750sec/3600 = 0.21 小时或仅 12.5 分钟。

资源链接: Running junit tests in parallel in a Maven build?

适用于 TestNG、Appium、Jenkins 等

对于 UI 测试,您可以运行多浏览器,以便它们可以并行执行更多测试用例。

您可以使用多个节点,以便一次运行多个节点并减少时间。

在某些情况下,您可能会更加棘手,您不会在每个测试用例中都登录。会有一个起点。每个测试用例都将结束并返回该起点。通过这种方式,我们还可以减少时间。但这违反了 F.I.R.S.T.

用于分析、报告和显示代码覆盖率状态, 执行时间,使用了各种类型的工具。 JaCoCo 是最 在他们中间很受欢迎。还有一些工具,比如 Cobertura, Arquillian 等。

此处给出了使用 JUnit、JaCoCo 和 Maven 进行代码覆盖的完整示例https://softwarecave.org/2014/02/01/using-junit-jacoco-and-maven-for-code-coverage/

此处提供完整代码:https://github.com/robertp1984/softwarecave/tree/master/jacoco

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 2013-11-04
    • 2010-10-02
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多