【问题标题】:casperjs and a/b testingcasperjs 和 a/b 测试
【发布时间】:2013-11-05 18:43:13
【问题描述】:

我有一个 signup.js 测试,可以自动注册我的网络应用程序(显然)。我们目前正在 a/b 测试一个新流程,该流程会将您带到不同的页面('.com/signupa' 与 '.com/signupb'),我想知道在我的测试中反映这一点的最佳方法是什么。

选项:

  • 使用evaluateOrDie 并让它死在.com/signupb(这看起来很愚蠢)
  • 对 .com/signupb 进行充实测试,如果它通过了该测试(这可能吗?),例如......

    casper.waitForResource("classic.png",
       function success() {
          this.echo('on the old signup flow ');
          <continue with regular signup test>
      },  
      function fail() {
          this.test.assertExists("classic.png");
          <do something else>
      });
    

非常感谢任何其他想法!

【问题讨论】:

  • 我去发布一个答案,但意识到我不知道“在我的测试中反映这个”是什么意思? (如果您想确保每个都经过测试,您似乎可以直接调用 '.com/signupa' 和 '.com/signupb'。)
  • @DarrenCook 对不起,应该更清楚。 a/b 测试在您提交注册表单后进行。所以流程是 /join -> 填写一些字段 -> 点击提交 -> 然后你会得到 /signupa 或 /signupb。这意味着我不能真正直接打电话给他们。我想我想知道在提交时是否有办法让 casper 评估我正在获取的页面(a 或 b),然后相应地运行测试。

标签: automated-tests phantomjs casperjs


【解决方案1】:

我的偏好是在您的每个页面中隐藏一些信息,以便您可以干净利落地打开它们。例如

<span id="version1"></span>

对比

<span id="version2"></span>

然后,提交表单后:

casper.then(function(){
  if (this.exists('#version2')) {
    testNewSite(this);
    } else {
    testOldSite(this);
    }
  });

但是检测您已经知道的内容仅在其中一个页面中,例如您在问题中显示的“classic.png”,也可以。 (只是感觉有点脆弱:网络开发团队可以通过重命名该图像或将具有该名称的图像放入新版本等来破坏您的测试。)

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2021-05-11
    相关资源
    最近更新 更多