基於Node.js的驗收測試框架—Nightwatch.js
Nightwatch是一套新近問世的基於Node.js的驗收測試框架,使用Selenium WebDriver API以將Web應用測試自動化。它提供了簡單的語法,支援使用JavaScript和CSS選擇器,來編寫執行在Selenium伺服器上的端到端測試。
不同於行為驅動測試(BDD)和單元測試獨立執行並使用模擬/存根,端到端測試將試著儘可能從使用者的視角,對真實系統的訪問行為進行模擬。對Web應用來說,這意味著需要開啟瀏覽器、載入頁面、執行JavaScript,以及進行與DOM互動等操作。Nightwatch嘗試著使用語法糖(syntax sugar)來實現這一目標:
this.demoTestGoogle = function (browser) {
browser
.url(“http://www.google.com”)
.waitForElementVisible(`body`, 1000)
.setValue(`input[type=text]`, `nightwatch`)
.waitForElementVisible(`button[name=btnG]`, 1000)
.click(`button[name=btnG]`)
.pause(1000)
.assert.containsText(`#main`, `The Night Watch`)
.end();
};
除簡化了編寫自動化測試的過程外,Nightwatch還能夠與持續整合的流水作業結合,從而對開發中的系統進行完整的診斷:我們可以從Nightwatch網站找到當前提供特性的列表:
簡單但強大的語法。只需要使用JavaScript和CSS選擇器,開發者就能夠非常迅捷地撰寫測試。開發者也不必初始化其他物件和類,只需要編寫測試規範即可。
內建命令列測試執行器,允許開發者同時執行全部測試——分組或單個執行。
自動管理Selenium伺服器;如果Selenium執行在另一臺機器上,那麼也可以禁用此特性。
支援持續整合:內建JUnit XML報表,因此開發者可以在構建過程中,將自己的測試與系統(例如Hudson 或Teamcity等)整合。
使用CSS選擇器或Xpath,定位並驗證頁面中的元素或是執行命令。
易於擴充套件,便於開發者根據需要,實現與自己應用相關的命令。
目前,Selenium是JavaScript的世界裡驗收測試方面最流行的工具之一,類似的還有PhantomJS。
二者都有其獨到的方法:Selenium使用其WebDriver API,而PhantomJS使用無介面的WebKit瀏覽器。它們都是非常成熟的工具,都具有強大的社群支援。
它們與Nightwatch之間最大的不同,主要是在於語法的簡易度以及對持續整合的支援。與Nightwatch相比,Selenium和PhantomJS都擁有更加冗長的語法,這會讓編碼變得更龐大,而且不支援從命令列中進行開箱即用的持續整合(JUnit XML或其他標準輸出)。
儘管如此,Nightwatch還處於不斷演進的道路上,以成為更加成熟工具的。在Google Groups中,WD.js(另一個基於Node.js的驗收測試框架)的作者Sebastian Vincent針對處理回撥所選擇的實現給出了一些批評意見:
當涉及非同步呼叫時,基於鏈式的佇列是個糟糕的模式。如果開發者想要做一些複雜的事情,或是組合一些東西,最終將不得不手動停止佇列以插入任務(但也許Nightwatch會證明我的看法是錯的)。
Vincent還針對Nightwatch和Selenium伺服器之間使用的底層通訊協議,指出了其中存在的不足之處:
Nightwatch離成熟還遠,看看HTTP協議,GET和DETLETE中沒有重試、沒有超時設定,也沒有內容/長度+內容型別。在非直接情況下(例如Sauce-connect或排隊),它很快就會出現問題。
然而,哪怕有這些批評的聲音,Nightwatch還是入選了GitHub本月最熱門程式碼倉庫。另外該團隊運營著一個Twitter賬號,聽取來自社群的反饋並與開發者互動。
最新內容請見作者的GitHub頁:http://qaseven.github.io/
相關文章
- 使用 Nightwatch.js 實現 Node.js 的端到端測試Node.js
- 基於事件驅動的測試框架ETS事件框架
- swift - 基於TCL的自動化測試框架Swift框架
- 驗收測試需要注意哪些?
- 基於python的測試框架behave----contextPython框架Context
- 軟體驗收測試該怎麼進行?驗收測試報告需要多少費用?測試報告
- 軟體驗收測試 常見測試報告的型別測試報告型別
- 軟體驗收測試和系統測試的區別點
- 軟體測試---單元、整合、系統、驗收測試
- 軟體產品驗收測試流程有哪些?如何獲取軟體驗收測試報告測試報告
- 基於jmeter,jenkins,ANT介面,效能測試框架JMeterJenkins框架
- 基於Jmeter和Jenkins搭建效能測試框架JMeterJenkins框架
- 一種基於 cypress 的 UI 自動化測試框架UI框架
- Jest基於dva框架的單元測試最佳實踐框架
- 軟體驗收測試之α測試和β測試分別是什麼?
- 基於 Koa.js 的 Node.js MVC 框架Node.jsMVC框架
- ThinkJS基於Promise的Node.js MVC框架PromiseNode.jsMVC框架
- 黑盒測試、白盒測試、單元測試、整合測試、系統測試、驗收測試的區別與聯絡...
- 福祿克線纜驗收測試、鑑定測試和認證測試的區別
- 簡單對比測試了幾個基於 swoole 的框架框架
- 基於 BDD 理論的 Nebula 整合測試框架重構(下篇)框架
- 基於 BDD 理論的 Nebula 整合測試框架重構(上篇)框架
- 基於 Laravel 框架的 phpunit 單元測試爬坑記錄Laravel框架PHP
- 科技專案進行驗收測試有什麼注意事項?驗收測試報告費用標準測試報告
- 軟體驗收測試是什麼?第三方軟體驗收測試有什麼意義?
- 軟體驗收測試之α測試和β測試,如何選擇權威的軟體檢測機構
- 基於Selenium+Python的web自動化測試框架PythonWeb框架
- 軟體專案的使用者驗收測試(轉)
- JWebUnit使用:jWebUnit是基於Java的Web應用程式的測試框架 .WebJava框架
- 【MM】基於收貨的發票校驗Bapi DemoAPI
- 初步瞭解Express(基於node.js的後端框架)ExpressNode.js後端框架
- 軟體驗收測試有哪些測試方法?北京權威軟體測試機構安利
- 基於Web的系統測試Web
- 搭建一個基於swoole的http框架來跑跑curd用作效能測試HTTP框架
- 關於Electron框架應用的安全測試框架
- Golang 學習——基於 Gin 框架進行 httptest 單元測試Golang框架HTTP
- 基於Jmeter+Maven+Jenkins持續整合介面測試框架JMeterMavenJenkins框架
- 最受歡迎的 5 款 Node.js 端到端測試框架Node.js框架