2013-03-07 61 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

    相關問題