标签: parallel-testing

在集成测试中并行PHPUnit测试

随着运行完成PHPUnit套件所需的时间增加,我们的团队开始怀疑是否有可能并行运行单元测试.最近我读了一篇关于Paraunit的文章,Sebastian Bergman也写道,他将在PHPUnit 3.7中添加并行性.

但是,集成测试仍然存在问题,或者更常见的是与DB交互的测试.为了保持一致性,必须重置testDB并在每次测试后加载夹具.但是在并行测试中,竞争条件存在问题,因为所有进程都使用相同的DB.

因此,为了能够并行运行集成测试,我们必须为每个进程分配自己的数据库.我想问一下,如果有人对如何解决这个问题有一些想法.也许在另一个xUnit实现中已经实现了这个问题的解决方案.

在我的团队中,我们使用的是MongoDB,因此一个解决方案是以编程方式为每个PHPUnit进程创建一个配置文件,并生成数据库名称(对于此过程),在setUp()方法中我们可以将主TestDb克隆到此临时数据库中.但在我们开始实施这种方法之前,我想问一下你对这个主题的看法.

php phpunit integration-testing unit-testing parallel-testing

14
推荐指数
1
解决办法
4844
查看次数

如何与Jenkins并行多次运行相同的作业?

我正在测试Jenkins以确定它是否适合我们的构建和测试框架.我发现Jenkins及其可用的插件符合我们的大部分需求.除了我似乎无法找到如何做一个特定类型的任务的帮助.

我们正在为嵌入式设备创建应用程序 我们有100个需要在这些设备上运行的测试.如果我们在构建之后在一个设备上运行所有测试,那么将需要几个小时才能获得结果.但是,如果我们并行运行100个设备上的测试,那么我们可以在更短的时间内获得结果.

所有测试都有非常相似的起点.使用设备的IP地址调用测试脚本以运行测试和用户名/ pw.该脚本将对设备进行必要的测试,并报告每个测试项目的通过/失败.

我认为这样做的漫长/痛苦的方法是在Jenkins中编写100个作业,每个作业将直接使用不同的测试脚本(使用上述参数)并使用可用的插件并行运行.但是,从长远来看,保持所有这些工作将是非常困难的.

因此,更好的方法是创建一个Job(让我们称之为child_tester),它可以采用以下参数:测试脚本名称,设备的IP地址,用户名/ pw等.然后使用另一个作业(让我们打电话)它mother_tester)使用不同的IP地址调用child_tester作业100次并且并行运行它们.我需要一些方法来累积child_tester作业的每个单独运行的所有测试结果,并将它们报告给mother_tester.

我的问题是有一个插件或任何方式在詹金斯完成这个?我查看了名为"Build Flow","Parallel Test Executor"和"Parameterized Trigger"的插件信息.但是,它们似乎不符合我的需要.

parallel-testing jenkins

10
推荐指数
1
解决办法
3万
查看次数

Maven Surefire:无法分叉并行测试执行

使用Maven surefire,我无法分叉并行测试执行.也就是说,我的每个测试用例都要在serapate JVM中运行,因此就是分叉.另外,我希望我的测试用例并行运行.第一部分工作没有问题:我能够在自己的JVM中运行每个测试用例.第二部分,对我来说仍然是一个挑战.我还没有设法让测试用例的并行执行工作.以下是我的插件声明的样子:

    <plugin>
          <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.5</version>
      <configuration>
           <parallel>methods</parallel>
           <forkMode>always</forkMode>
                <argLine>-Xms512m -Xmx512m</argLine>
       </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了两种方法和类,但没有看到任何并行化.我的JUnit版本是4.7,如依赖性声明所示:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
        <scope>compile</scope>
    </dependency>            
Run Code Online (Sandbox Code Playgroud)

任何帮助都会得到很多批评.

格雷瓜尔.

maven-2 fork surefire parallel-testing

8
推荐指数
1
解决办法
8328
查看次数

如何通过 CLI 擦除 Xcode 10 模拟器克隆?

它们共享相同的 UDID 吗?它们是如何在幕后实施的?

场景是我有 4 个并行运行 UI 测试的克隆。我需要一个干净的模拟器来进行一些测试(但想保持随机测试顺序)

xcode simulator ui-testing parallel-testing ios

8
推荐指数
1
解决办法
1476
查看次数

如何与 maven surefire 插件并行运行 scalatest?

我正在开发一个使用 Maven 构建和maven-surefire-plugin运行在 Scalatest 中编写的测试的 Scala 项目。

测试是这样的:

import org.scalatest.ParallelTestExecution

@RunWith(classOf[org.scalatest.junit.JUnitRunner])
class MyTest extends FunSuite with ParallelTestExecution {
   // some tests
}
Run Code Online (Sandbox Code Playgroud)

从一些问题中,我知道如果我们给-Pscalatest一个参数,它将并行运行测试。

但是我不确定如何使用 配置它maven-surefire-plugin,我尝试添加 -P,但这导致 JVM 无法启动:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <argLine>-P</argLine>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?如果我们不能用 maven surefire 插件来做,是否可以只在测试中配置它?

maven scalatest parallel-testing maven-surefire-plugin

7
推荐指数
1
解决办法
2632
查看次数

并行测试执行无限期地挂起用于rspec的webkit驱动程序

我正在通过capybara-webkit驱动程序上的parallel_tests运行我的规范.我有以下ruby环境:

 ruby -v
 ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.4.2]
Run Code Online (Sandbox Code Playgroud)

在包含以下内容的gemset上运行rvm(截取for capybara,rails,rspec和parallel_tests以获得相关性.如果看到更大的gemset会有所帮助,请告诉我们):

 *** LOCAL GEMS ***

 ...
 capybara (1.1.2)
 parallel_tests (0.8.12)
 rails (3.2.11)
 rspec (2.11.0)
Run Code Online (Sandbox Code Playgroud)

当我在一个进程上运行我的测试套装时rake spec,我的所有测试都会运行完成.但是,当通过parallel_tests运行时,会发生以下情况:

 8 processes for 220 specs, ~ 27 specs per process
Run Code Online (Sandbox Code Playgroud)

之后这些流程最终会开始回归:

 Finished in 11 minutes 15.76 seconds
 Finished in 11 minutes 28.89 seconds
Run Code Online (Sandbox Code Playgroud)

但是,在前6个进程返回后,parallel_spec将无限期挂起,永不终止,并且永远不会为剩余的2个进程打印输出.

我在运行OS X Lion的MacBook Pro上使用2.4GHz Intel i7.

所以我的问题很简单:为什么它会挂起,我该如何调试它挂起的原因,以及如何阻止它挂起并允许parallel_tests运行完成?

webkit rspec ruby-on-rails capybara parallel-testing

6
推荐指数
1
解决办法
1259
查看次数

MSTest 数据驱动测试可以并行运行吗?

几年前为 VisualStudio2010 提出了类似的问题,但从未在这里回答:

如何在 Visual Studio 2010 中并行化数据驱动的单元测试?

我希望这个功能现在可能存在于 VS2012 中。

我的情况和上面一样,我有一个数据驱动的登录测试,它为多个客户端运行相同的测试。

我通过在 ClassInitialize 和 TestInitialize 中触发线程,并在清理之前等待所有测试完成,尝试了不同的线程解决方案。我尝试过的任何方法都不适用于这些数据驱动的测试。

我担心尝试这与 MSTest 与 dd 测试的工作方式从根本上是错误的。基本上,我发现下一个数据集在 TestCleanup 完成之前不会运行,并且 TestCleanup 不会在没有完成测试并记录测试结果的情况下完成。所以基本上,在记录了之前的测试结果之前,不能开始下一个测试。真的吗?或者有没有办法使用 MSTest 框架并行化这些?

谢谢!

c# mstest data-driven-tests parallel-testing visual-studio-2012

6
推荐指数
0
解决办法
763
查看次数

使用parallel_tests运行时如何生成html报告?

我正在使用parallel_tests框架并行运行一堆 rspec 测试。在并行化测试之前,我将测试结果输出到一个 html 文件中,如下所示:

rspec --format html --out tmp/index.html <pattern>
Run Code Online (Sandbox Code Playgroud)

现在它看起来更像这样:

parallel:spec --format html --out tmp/index.html <pattern>
Run Code Online (Sandbox Code Playgroud)

然而,现在测试并行运行,每个测试都生成自己的 html 文件,并且由于它们都使用相同的路径 (tmp/index.html),最后一个完成的测试覆盖输出 html 文件,我只留下了那一项测试的报告。如何生成包含所有测试的汇总结果的单个 html 文件(这将是理想的)?如果这是不可能的,我如何将每个测试输出到它自己的输出 html 文件,这样它们就不会互相覆盖?

我尝试在 parallel_test 项目(ParallelTests::RSpec::RuntimeLogger、ParallelTests::RSpec::SummaryLogger 和 ParallelTests::RSpec::FailuresLogger)中使用内置记录器,但这些都只生成简单的文本文件而不是好的像 rspec 这样的 html 文件。我也在这里看到了这个问题但我没有使用黄瓜,所以这并不适用于我。我尝试放入--format html --out tmp/report<%= ENV['TEST_ENV_NUMBER'] %>.html我的.rspec_parallel文件,但这没有任何效果。

ruby rake rspec parallel-testing

6
推荐指数
1
解决办法
2498
查看次数

通过 JUnit 5 运行并行测试类

我的问题是关于如何在 JUnit 5 测试类中并行运行。

例如,我有两个简单的测试类,它们代表两个独立的测试管道,它们应该并行运行。然而,课堂上的内部测试应该按顺序运行。

public class TestClass1 {

    @Test
    public void test1() {
        System.out.println("Executing test 1 in Class 1");
        System.out.println(Thread.currentThread().getId());
        try {
            Thread.sleep(5000);
            Assert.assertTrue(false,"Assertion error in Test 1 Class 1");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test2() {
        System.out.println("Executing test 2 in Class 1");
        Assert.assertTrue(false,"Assertion error in Test 2 Class 1");
        System.out.println(Thread.currentThread().getId());
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

public class TestClass2 {

    @Test
    public void test2() {
        System.out.println("Executing …
Run Code Online (Sandbox Code Playgroud)

java parallel-testing junit5

6
推荐指数
1
解决办法
1万
查看次数

Rails 6 和 rspec 中的并行测试

我正在尝试使用 rspec 和 Rails 6 进行并行测试。根据他们的文档,只需要添加 PARALLEL_WORKERS=15 ,其中 15 是工作人员的数量。但是,这适用于测试用例而不适用于 rspec。

有人找到了让它与 rspec 一起使用的解决方案吗?

https://edgeguides.rubyonrails.org/testing.html#parallel-testing

rspec parallel-testing rspec-rails ruby-on-rails-6

6
推荐指数
1
解决办法
4009
查看次数