引言
如果說Web自動化測試,大家最熟悉不過的就是Selenium了。其實還有testcafe、mocha、jtest和cypress等,這些都是github上國外做自動化測試比較火的項目,而近些年Cypress逐漸被國際上認可的最佳實踐。而國內一些公司和一些技術追求者、社區等已經使用和學習。
Cypress測試框架之所以越來越受歡迎,還是有自身的原因,官方文檔寫得好,並且是視頻。社區強有力支持,迭代不斷,目前已經是200多個迭代。最核心的是Cypress不需要瀏覽器驅動,運行速度比Selenium快。
背景
Cypress官網地址:https://docs.cypress.io
官方文檔中的視頻:
文檔中帶視頻,這樣對於初學者簡直是雪中送炭,大大降低的學習難度。當然Cypress本身的學習難度也很低。
時代在變化,網絡也在變化,就像官網所說:The web has evolved,Finally, testing has too。(網絡已經發展,最后,測試也是如此!)
Cypress簡介
隨便着Web應用項目的不斷發展,測試也要不斷發展,Cypress是為現代網絡打造的,基於JavaScript語言的一種前端自動化測試工具,測試也是如此,對瀏覽器中運行的所有內容進行快速,輕松和可靠的測試。Cypress是自集成的,這類測試框架統稱為e2e測試,即end to end(端到端)測試。理論上前端頁面由前端框架來測試確實更為合適。它提供了一套完整的端到端的測試體驗,正如官網上所說:
1. 安裝Cypress很簡單,無需依賴項,無需額外下載或更改代碼。
2. 輕松,快速地編寫測試,並在構建Web應用程序時觀察它們的實時執行。
3. 在CI中調試測試就像在本地運行測試一樣容易。具有內置的並行化和負載平衡功能。
4. 記錄CI測試數據,屏幕截圖和視頻-並在“ 儀表盤”中查看匯總的下一級見解。
Cypress工作原理
-
Cypress在與應用程序相同的生命周期里執行,當你運行測試時,Cypress首先使用webpack將測試代碼中的所有模塊bundle到一個js文件中,然后,它會運行瀏覽器,並且將測試代碼注入一個空白的頁面里,然后它將在瀏覽器中運行測試代碼。
-
在每次測試首次加載Cypress時,內部Cypress Web應用程序先把自己托管在本地的一個隨機端口上,在識別出測試中發出的第一個cy.visit()命令后,Cypress將會更改其本地的URL以匹配你遠程應用程序的Origin,這使得你的測試代碼和應用程序可以在一個Run Loop中運行。
-
因為Cypress測試代碼和應用程序均運行在由Cypress全權控制的瀏覽器中,且它們運行在同一個Domain下的不同iframe內,所以Cypress的測試代碼可以直接操作DOM,Windows Objects甚至Local Storages而無須通過網絡訪問,這就是Cypress可以運行的更快的原因。
-
Cypress還可以在網絡請求層進行即時讀取和更改網絡流量的操作,Cypress背后是Node.js Process,任何發往瀏覽器之外的HTTP的請求和響應,均由Cypress生成的,被Node.js Process控制的Proxy進行轉發,這使得Cypress不僅可以修改進出瀏覽器的所有內容,還可以更改可能影響自動化瀏覽器操作的代碼。這便得Cypress相對於其它測試工具來講不僅能從根本上控制整個自動化測試的流程,還可以提供穩定性更加可靠的結果 。
Cypress的八大特性
-
時間穿梭:Cypress會在測試運行時拍攝快照。只需將鼠標懸停在“ 命令日志”中的命令上,即可准確查看每一步都發生了什么
-
可調試性:停止猜測你的測試失敗的原因。直接從熟悉的工具如Chrome DevTools進行調試。我們可讀的錯誤和堆棧跟蹤使調試更加快速便捷。
-
實時重載:每當你對測試進行更改時,Cypress都會自動重新加載。查看應用程序中實時執行的命令。
-
自動等待:不要在測試中添加等待或休眠。Cypress在繼續下一步之前會自動等待元素至可操作狀態時才會執行命令或斷言。異步操作不再是噩夢。
-
間諜,存根和時鍾:Cypress允許你驗證並控制函數行為,Mock服務器響應或更改系統時間,你喜歡的單元測試就在眼前。
-
網絡流量控制:Cypress可以Mock服務器返回結果,無須連接后端服務器即可實現輕松控制,模擬網絡請求。
-
運行結果一致性:Cypress架構不使用Selenium或Webdriver,在運行速度,可靠性測試,測試結果一致性上均有良好的保障。
-
截圖和視頻:Cypress在測試運行失敗時自動截圖,在無頭運行時錄制整個測試套件的視頻,使你輕松掌握測試運行情況。
關於Cypress
前面已經說過Cypress很早就出來了,最近一年多時間越來越火,被國內大大小小公司以及一些技術愛好者所歡迎,蹭個熱度,學習一下前端知識,更加有利於測試。Github上第一個迭代版本是在2014年6月:
團隊介紹:
說的是Cypress是一個革命性的測試工具,並且開源,已經被全球1萬3千多名IT人員所使用。
總結
以上就是Cypress的一些簡介,學習工具前可以了解一下,能更好的使用它為我們工作提高效率與質量。另外,對測試及測試開發感興趣的,對測試有獨到見解的朋友,可以加入學習交流QQ群。一起成長!