Cucumber/Selenium不同浏览器测试

Cucumber/Selenium不同浏览器测试,selenium,cucumber,cross-browser,testng,cucumber-java,Selenium,Cucumber,Cross Browser,Testng,Cucumber Java,我正在为webui编写测试,并且可以访问WebGrid(实际上是Zalenium)堆栈以将我的webui测试发送到。我们需要针对不同平台上的不同浏览器进行测试。我们的实现目前支持使用selenium功能从测试使用的浏览器/平台(真正的任何地方)进行配置。我们使用的是用Java实现的Cucumber 我的问题是,如何最好地涵盖我希望在一次运行中测试的所有浏览器/平台组合中的所有测试 我知道我可以这样做: Scenario Outline: Basic ui test Given browser

我正在为webui编写测试,并且可以访问WebGrid(实际上是Zalenium)堆栈以将我的webui测试发送到。我们需要针对不同平台上的不同浏览器进行测试。我们的实现目前支持使用selenium功能从测试使用的浏览器/平台(真正的任何地方)进行配置。我们使用的是用Java实现的Cucumber

我的问题是,如何最好地涵盖我希望在一次运行中测试的所有浏览器/平台组合中的所有测试

我知道我可以这样做:

Scenario Outline: Basic ui test
  Given browser "<browser>" on platform "<platform>"
  When user does something
  Then something happens
  Examples:
    | browser | platform |
    | firefox | linux    |
    ...
场景大纲:基本ui测试
平台“”上给定的浏览器“”
当用户做某事时
然后事情发生了
示例:
|浏览器|平台|
|firefox | linux|
...
但这有几个缺点:

  • 这个示例表需要在很多很多场景中保持一致
  • 使实际参数的示例使用更加复杂(需要为实际示例数据的每个组合设置浏览器组合)

除了这些示例之外,是否有方法使用不同的配置重新运行测试?一种选择是,只需使用不同的浏览器/平台多次运行测试套件,但出于报告目的,我更愿意将其全部保存在一次运行中。

我认为构建测试结构,然后使用不同的浏览器单独运行会更容易。 这样做:

而不是

Test 1:
Browser1
Browser2

Test 2:
Browser1
Browser2

Test 3:
Browser1
Browser2

在我看来,最好像测试版本那样跨浏览器运行,而不是在测试中混合匹配。如果chrome出现故障,您将在整个运行过程中看到故障,而不是在浏览器级别。如果是浏览器问题还是SUT问题,则需要更长的时间才能破译。

我认为构建测试结构,然后使用不同的浏览器分别运行会更容易。 这样做:

而不是

Test 1:
Browser1
Browser2

Test 2:
Browser1
Browser2

Test 3:
Browser1
Browser2

在我看来,最好像测试版本那样跨浏览器运行,而不是在测试中混合匹配。如果chrome出现故障,您将在整个运行过程中看到故障,而不是在浏览器级别。破译是浏览器问题还是SUT问题需要更长的时间。

+1此外,浏览器和平台最好作为环境或配置变量,这样可以避免浏览器信息进入测试。您通常会在生成系统中组织这些信息+1此外,浏览器和平台最好作为环境或配置变量,这样可以将浏览器信息排除在测试之外。您通常会在生成系统中组织这些信息。