问题标签 [parallel-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
76 浏览

testing - 在涉及全局变量的不同包中同步测试的最佳方法是什么?

我正在做一个 go 项目,我的任务是为一个包编写一些测试。测试需要访问不同包中的全局变量。这个全局变量可能在不同包的测试中设置/访问。因为默认情况下,go testing 会针对不同的包并行运行。因此,设置/访问此变量可能会产生竞争条件。

最简单的同步方法是创建一个共享的sync.Mutex,它跨越不同的包。话虽如此,我尝试将这个sync.Mutex放在声明全局变量的xxx.go的xxx_test.go中,不幸的是,由于范围限制,另一个包无法访问这个Mutex。最终,我发现我必须把这个sync.Mutex放到一个专门用于测试的实用程序包中,然后不同的包可以访问这个 Mutex 以实现该全局变量的同步目的。

我是新来的。我只是觉得我需要创建一个实用程序包来实现测试中的同步目的很尴尬,另一方面,如果另一个开发人员在另一个包中进行一些测试,他/她可能不知道在哪里可以找到这个同步.互斥量。有没有更好的方法可以通过优雅的解决方案来实现此同步目的。

非常感谢!

0 投票
0 回答
335 浏览

java - testNG @beforeGroups 和并行测试和 suite.xml 文件

我有一个由这样的类组成的 testNG 套件:

一个

C(和许多其他)扩展了 B,后者扩展了 A。

E(和许多其他)扩展了 D,它扩展了 A。

测试在 C 类和 E 类中。这些测试是 testNG 组的一部分,@beforeGroups 方法分别在 B 和 D 中。

例如,C 类(和其他类)有一个带有 groups='b' 的 @Test,而 B 类有该组的 @beforeGroups 方法。另一个组的类似模式,我将调用“d”,其中@beforeGroup 在 D 类中定义。

这在按顺序运行时运行良好——suite.xml 文件有一个“测试”部分和一个“类”部分,以及所有“类”条目。我没有在 .xml 文件中引用任何“组”,并且 testNG 足够聪明,可以先运行一个组中的所有测试,然后运行下一个组,按预期处理 @beforeGroup 方法(在组 'b 之前) ',并且在组 'd' 之前一次)。

执行时间正在增长到我想并行运行其中一些的地步。想分成 4 个并行执行,每个包含一些类,这些类按顺序运行。并且@beforeGroups 必须只为该组执行一次,无论该组的类是否被拆分为多个并行执行 - 这就是现在让我感到悲伤的部分。例如,如果我有以下内容:

“b”组中的类数(例如:C):10

组“d”中的类数(例如:E):20

我想做以下事情:

并行执行 1:扩展 B 的 10 个类中的 3 个(并且在 group='b' 中)

并行执行 2:扩展 B 的 10 个类中的 7 个(并且在 group='b' 中)

并行执行 3:扩展 D 的 20 个类中的 10 个(并且在 group='d' 中)

并行执行 4:扩展 D 的 20 个类中的 10 个(并且在 group='d' 中)

我尝试像这样设置 suite.xml 文件:

问题是在此更改之后,@beforeGroups 代码运行多次(我认为每个组两次),而不是一次。我确信这与我将每个组分隔在 suite.xml 文件的多个“测试”部分中这一事实有关,而之前它们都在一个“测试”中。

有什么建议么?

0 投票
1 回答
743 浏览

scala - 如何在scalatest中的并行测试之前初始化共享变量

我有如下最大规模的代码:

这两个测试无法打印我在它们之前生成的 testSuiteId。相反,他们会重新生成 ID 并打印出来。我知道,由于 ParallelTestExecution 扩展了 OneInstancePerTest,这里的每个测试都在自己的实例上运行,并拥有变量“testSuiteId”的副本。

但是我确实想要这个测试套件的固定 ID,并且这个套件中的每个测试用例都可以访问它而不修改它。我试图在 BeforeAll{ } 中创建固定的 id,但它仍然没有用。

我应该如何实现我想要的?

0 投票
2 回答
1580 浏览

c# - Selenium WebDriver C# NUnit 测试并行失败

请在底部查看更新!

我正在设置我的框架,目前有 4 个测试。单独他们都像魅力一样运行。但是,当我尝试并行运行所有 4 个时(我已经正确设置了 Parallelizable 属性,并且正在从不同的类而不是在同一个方法中调用测试),我一直得到几个似乎在每个测试中跳跃的错误。这些是我每次运行时收到的消息:在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

再次单独运行测试时会找到这些对象。我不确定我需要显示什么代码才能提供帮助。请指教。

更新** @Chris 我的怀疑是一样的。我认为我的测试在寻找对象时会混淆同一个驱动程序。如果是这种情况,有人可以建议如何更好地处理这个问题,我的浏览器类就是调用驱动程序的东西。

最新更新:根据建议,我删除了静态引用,但有人可以帮助我在当前代码中创建驱动程序实例的语法

我不知道如何创建 Browser.Driver 的实例请帮助!

0 投票
0 回答
883 浏览

jenkins - 在 Jenkins 中,如何在声明式管道中使用并行测试执行器(splitTests)?

我在 Jenkins 中使用声明式管道,我想并行化测试。显而易见的选择似乎是使用并行测试执行器 (splitTests),但我找不到示例或找出在声明性管道中使用的语法。

0 投票
0 回答
628 浏览

selenium-grid - 使用 SeleniumGrid 和无头 Chrome 进行并行测试

我尝试并行运行相同的端到端测试(负载测试,带有 JUnitSampler 的 JMeter)。如果我用真正的 chromeBrowser 运行并行测试,它工作正常。如果我使用 chromeOption “--headless” 运行测试,则不会运行任何测试。真正的 chromeBrowser 和无头 chromeBrowser 之间可能有什么区别?一项使用 headlessBrowser(非并行)的测试也运行良好。

第 1 步 - JUnit 测试:

Step2 - JMeter 中的 JUnitSampler 和上面的 JUnitTestClass。

Step3 - Docker 中的 SeleniumGrid

Step3 - 在 JMeter 中运行单线程:测试成功运行。

Step4 - 在 JMeter 中并行运行 5 个线程:

第一个测试运行成功,其他四个没有。

错误:是 ElementNotFound 在每个失败的测试运行

浏览器实例不具有相同的会话对于测试很重要。

0 投票
2 回答
7617 浏览

java - 如何使用 testng 并行运行我的硒测试方法

我正在尝试使用 testng 并行运行我的自动化测试(Selenium webdriver)。这是我正在运行的节点:

这是我的测试课:

}

这是我的xml:

当我运行 XML 时,我希望我的测试一次在两个线程中的两个浏览器上运行,但是当我运行 XML 时,我首先运行了两个浏览器实例,然后它们增加了 50%测试失败,如您所见,我正在尝试在每种方法中实例化驱动程序,尽管这不是我的框架的工作方式,但我正试图解决这个问题的瓶颈。任何帮助将不胜感激提前谢谢

0 投票
1 回答
480 浏览

testing - SpecFlow 并行和非并行测试

我正在使用 SpecFlow 来自动化我的 Web 测试并使用并行执行来加速它们。

我遇到的问题是,如果在没有成功登录的情况下运行 3 次,一项检查无效密码被拒绝的测试将锁定用户帐户。

我已经将它们设置为在之后执行成功登录,但是并行运行意味着针对多个目标,它们同时运行并且仍然锁定帐户。

有没有办法可以将这个测试设置为不并行运行,这样它就不会锁定帐户并仍然允许其他人并行运行?

编辑——我使用 SpecRun 作为我的测试运行器

0 投票
1 回答
80 浏览

ruby-on-rails - Rake 并行:准备更改架构

我在 Rails 3.2 应用程序上使用 parallel_tests,我们有两个开发人员,每次我执行“rake parallel:prepare”时,我都会得到这个更改,而其他程序员则相反。

我真的希望 rails 能够保持这些约束,而不是尝试删除它们。

0 投票
1 回答
1377 浏览

python-3.x - 如何使用 pytest 在单个类中同时运行多个测试?

我有一个 3 的类tests,我正在使用pytestSelenium-Webdriver 运行我的测试来执行 UI 操作。

每个测试都会打开Chrome浏览器实例以执行一组 UI 操作。现在我想一次性运行上述所有测试。所以理想情况下pytest应该同时打开三个Chrome浏览器实例。(我读过 xdist 插件,但我认为它用于在不同平台上运行测试)

请提供您的意见。