Unit testing 协作web应用的端到端UI测试?

Unit testing 协作web应用的端到端UI测试?,unit-testing,angularjs,jasmine,end-to-end,Unit Testing,Angularjs,Jasmine,End To End,我们有一个协作web应用程序,在用户a的浏览器中执行的操作将在用户B的浏览器中产生副作用。聊天室是应用程序的一部分,也是我们尝试测试的一个很好的例子 我们当前的堆栈是: 前端的AngularJS Express在节点上运行以提供静态文件 在节点上运行Socket.IO以处理客户端浏览器之间的web套接字通信 我们构建过程的早午餐 角形种子是我们测试的起点 Jasmine用于实际测试框架 TestCular运行测试 测试这个的最好方法是什么?我所说的“最好”是指“任何”。完全集成测试需要2个浏

我们有一个协作web应用程序,在用户a的浏览器中执行的操作将在用户B的浏览器中产生副作用。聊天室是应用程序的一部分,也是我们尝试测试的一个很好的例子

我们当前的堆栈是:

  • 前端的AngularJS
  • Express在节点上运行以提供静态文件
  • 在节点上运行Socket.IO以处理客户端浏览器之间的web套接字通信
  • 我们构建过程的早午餐
  • 角形种子是我们测试的起点
  • Jasmine用于实际测试框架
  • TestCular运行测试
测试这个的最好方法是什么?我所说的“最好”是指“任何”。完全集成测试需要2个浏览器和2个web服务器(HTML和web套接字)。这两个web服务器都在节点上运行,所以至少它与其他服务器处于相同的环境中

在我看来,这需要

  • 正在启动套接字服务器的实例
  • 在Jasmine中启动web浏览器,并保留对该浏览器的引用
  • 启动另一个浏览器B,并保持该引用
  • 向浏览器A发出命令,并在浏览器B中测试结果更改

  • 有没有人见过此类测试的文档或示例(最好是Jasmine的TestCular,但我们可以选择)?即使是关于使用什么搜索词的建议也会有所帮助。

    我不确定我的建议是否会对你有所帮助,但无论如何

    我想到的第一个工具是。好消息是(基于您当前使用的堆栈),您可以使用
    JavaScript
    编写测试。下面是一个示例,它在
    Google
    上搜索术语“Cheese”,然后将结果页面的标题输出到控制台:

    var driver = new webdriver.Builder().build();
    driver.get('http://www.google.com');
    
    var element = driver.findElement(webdriver.By.name('q'));
    element.sendKeys('Cheese!');
    element.submit();
    
    driver.getTitle().then(function(title) {
      console.log('Page title is: ' + title);
    });
    
    driver.wait(function() {
      return driver.getTitle().then(function(title) {
        return title.toLowerCase().lastIndexOf('cheese!', 0) === 0;
      });
    }, 3000);
    
    driver.getTitle().then(function(title) {
      console.log('Page title is: ' + title);
    });
    
    driver.quit();
    
    我认为使用Selenium 2可以“打开”更多浏览器实例,这意味着您将能够测试它们之间的副作用/交互


    作为替代方案,您也可以查看使用Selenium或(Spudley也提到)作为测试工具的project或商业产品。

    如果您愿意接受其他选项,我建议您将其作为自动浏览器测试工具。听到您提出的解决方案真的很有趣……奇怪,WindMill不支持Mac上的Chrome?这是我们默认的开发和测试环境。