2013-03-07 68 views
4

我们有一个协作的网络应用程序,在用户A的浏览器中执行的操作将在用户B的浏览器中产生副作用。聊天室是应用程序的一部分,是我们试图测试的一个很好的例子。协作Web应用程序的端到端UI测试?

我们目前的栈是:在前端

  • 快递节点上运行

    • AngularJS服务静态文件
    • Socket.IO节点上运行处理客户端的浏览器
    • 之间的网络socket通信
    • 早午餐为我们的建设过程
    • 角种子是我们的测试的起点
    • 茉莉花在实际测试框架
    • Testacular运行测试

    什么是去测试它的最好方法?而“最好”的意思是“任何”。完整的集成测试需要2个浏览器和2个Web服务器(HTML和Web套接字)。两个Web服务器都在Node上运行,至少它与Testacular的其余部分处于相同的环境中。

    在我心目中这将需要

    1. 开始我们的socket服务器
    2. 的实例开始在茉莉花网页浏览器,并保持到浏览器
    3. 启动另一个浏览器的引用,浏览器B,并持有该参考。
    4. 执行命令以浏览器和测试在浏览器B.产生的变化

    有没有人跨文档或实例来(最好在Testacular茉莉,但是我们开放的选项)这类测试的?即使是关于使用什么搜索条件的建议可能会有所帮助。

  • +0

    如果您打开其他选项,我会建议[Sahi](http://sahi.co.in/)作为自动浏览器测试工具。 – Spudley 2013-03-08 22:02:09

    +0

    听到您提出的解决方案真的很有趣... – PrimosK 2013-03-19 19:01:14

    回答

    0

    我不知道我的建议是否会帮助你,但无论如何。

    我想到的第一个工具是Selenium。好消息(基于您当前使用的堆栈)是,您可以使用JavaScript进行写作测试。这里是一个搜索上Google“奶酪”一词为例,然后输出结果页面的标题到控制台:

    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(); 
    

    我认为,随着硒2有可能以“开放”的浏览器的多个实例 - 那意味着你将能够测试它们之间的副作用/相互作用。

    作为替代你也可以看看WindMill项目,UItest.js或商业产品Twist使用硒或(也由Spudley提及)Sahi作为driver做检查。

    +0

    奇怪的是,WindMill不支持Mac上的Chrome?这是我们的默认开发和测试环境。 – huyz 2013-03-28 03:46:12

    +0

    不知道(但很高兴知道)... – PrimosK 2013-03-28 06:04:13