Testing 针对A/B测试的外部资源编写集成测试

Testing 针对A/B测试的外部资源编写集成测试,testing,selenium,cucumber,integration-testing,capybara,Testing,Selenium,Cucumber,Integration Testing,Capybara,我有一个设计问题,我很好奇是否有其他用户遇到过这个问题,以及如何开发最优雅的解决方案。我使用Capybara/Celerity/Selenium对Cucumber进行了一些集成类型特性测试。这些测试的一部分会驱动一个外部网站来查看我的资源集成cookie、Javascript等的情况 一个特定的外部站点正在使用类似但显著不同的站点设计进行大量的A/B测试,因此我的测试在使用新站点和使用旧站点时失败,因此只有大约50%的时间通过测试。显然,重新编写新版本的测试是毫无意义的,因为这些测试仍然会导致其

我有一个设计问题,我很好奇是否有其他用户遇到过这个问题,以及如何开发最优雅的解决方案。我使用Capybara/Celerity/Selenium对Cucumber进行了一些集成类型特性测试。这些测试的一部分会驱动一个外部网站来查看我的资源集成cookie、Javascript等的情况

一个特定的外部站点正在使用类似但显著不同的站点设计进行大量的A/B测试,因此我的测试在使用新站点和使用旧站点时失败,因此只有大约50%的时间通过测试。显然,重新编写新版本的测试是毫无意义的,因为这些测试仍然会导致其他50%的测试失败

我尝试过以如下方式对我的函数进行参数化:

Given I visit the new site
And I click on the link that is labeled "new link text"

Given I visit the old site
And I click on the link that is labeled "old link text"


这仍然需要我编写两个基本相同、相当大的功能文件,但所有参数都已更改。我将不得不在以后弃用旧的,然后我所有的代码都很复杂。如果一个测试失败,有没有办法退回到另一个测试?知道页面设计测试将持续一个月左右,而整个网站可能在一年后再次发生变化,那么最优雅的设计方法是什么呢?

Hmm……我想没有人遇到过这种问题,也没有人有好的解决方案。这是一个好问题。现在是2013年,你最后做了什么?仅供参考,以下可能是有用的参考:,嗯……我想没有人遇到过这种问题,或者没有人有好的解决方案。这是一个好问题。现在是2013年,你最终做了什么?仅供参考,以下可能是有用的参考:,
When /^I visit the (old|new) site$/ do |version|
  version_url = "http://www.example.com/?backdoorversionparam=0"
  if version == "new"
    version_url = "http://www.example.com/?backdoorversionparam=1"
  end
  When "I go to the page \"#{version_url}\""
end