Chapter1
當前最流行的 Web UI自動化測試方案
1
selenium+webdriver
優點:selenium 的 API 封裝遵循 W3C 提供的 webdriver 標准,很好的支持主流瀏覽器chrome,firefox,IE,Safari等,無論從資料量,社區活躍度,第三方拓展方案等都是首選
缺點:這個方案的一般工作流程是:測試用例 -> 測試框架 -> selenium -> webdriver -> 瀏覽器,這個流程每加一個環節,用例的編寫,維護和調試成本都會上升
那還有沒有其他的方案呢?答案是肯定的
2
Inject script方案
什么是inject script?
Inject script 的方式是指在瀏覽器打開的 Web 應用內注入測試引擎、測試用例等腳本,將測試用例執行在被測試應用的運行時中(這跟使用selenium 調用js腳本是不一樣的)
inject script和selenium webdriver的區別:
依托於 selenium 構建的測試框架的核心問題在於都是從外部控制瀏覽器和 Web 應用,執行命令或者獲取信息都需要通過網絡請求進行交互,因此交互的信息需要進行序列化。這不僅限制了交互的內容,還對 debug 帶來了極大的不便,同時網絡請求帶來的開銷也讓測試變得更加緩慢。
與之相反的是 inject script 選擇從內部控制瀏覽器,測試用例代碼將和被測試的 Web 應用運行在同一個瀏覽器運行時中,可以理解為注入的腳本即為測試客戶端,與后端建立通信,所有的操作指令都是通過 Javascipt 實現並執行,本質上只是函數的調用,客戶端和后端之間的通信僅用於測試結果的收集,不包含具體的指令執行
Chapter2
Inject script方案的代表:Cypress
1
Cypress簡介
先看看cypress是如何做自我介紹的
web技術已經進化了,web的測試技術最終還是跟上了腳步,是誰呢?
對在瀏覽器中運行的任何東西進行快速、簡單和可靠的測試
當然是cypress
出現前:selenium方案
需要框架:Mocha Qunit Jasmine Karma
需要斷言庫:Chai Expect.js
二次封裝:Protractor Nightwatch Webdriver
第三方庫:Sinon TestDouble
cypress是一個一體化測試框架 mock ,斷言 ,打樁都有了唯獨沒有selenium
2
Cypress特點
特點一、從不使用selenium
大多數端到端測試工具都是基於selenium的,這就是為什么它們都有相同的問題。為了讓Cypress與眾不同,Cypress使用全新的架構,它運行在與應用程序相同的運行循環中,而selenium則通過網絡執行遠程命令
特點二、專注於做好端到端測試
Cypress不是一個通用的自動化框架,也不是一個用於后端服務的單元測試框架。已經有很好的工具可以做到這一點。相反,我們專注於一件事——當您為您的網絡應用程序編寫端到端測試時,提供良好的使用體驗
特點三、在任何前端框架或網站上工作
Cypress可以測試任何在網絡瀏覽器中運行的東西。Cypress周圍的所有架構都是為了特別好地處理現代JavaScript框架而構建的。我們有數百個項目使用最新的React,Angular,Vue,Elm等。框架。Cypress也同樣適用於舊的服務器渲染頁面或應用程序
特點四、只能用JavaScript編寫
雖然您可以從任何其他語言編譯成JavaScript,但最終測試代碼是在瀏覽器本身內部執行的。沒有語言或驅動程序綁定——現在有,將來也只會有JavaScript
特點五、一體化
編寫端到端測試需要許多不同的工具協同工作。有了賽普拉斯,你可以在一個地方得到多種工具。沒有必要安裝10個獨立的工具和庫來設置您的測試套件。我們采用了一些您可能已經熟悉的同類最佳工具,並使它們無縫地協同工作
特點六、測試和開發同樣適合
我們的目標之一是讓測試驅動的開發成為端到端測試的現實。當您在構建應用程序時使用柏樹是最好的。我們給你盡快編碼的能力
特點七、運行速度飛一般的感覺
這些架構上的改進首次釋放了使用完整的端到端測試進行TDD的能力。cypress已經是一個成熟的框架,因此測試和開發可以同時進行。您可以在通過測試驅動整個開發過程的同時更快地開發,因為:您可以看到您的應用程序;您仍然可以訪問開發工具;並且變化被實時反映。最終結果是你將會開發更多,你的代碼將會更好,並且它將會被完全測試。如果您選擇我們的儀表板服務,並行化和自動負載平衡將進一步提高您的測試速度
chapter3
小結
1
ThroughWorks技術雷達
這里說明下為什么沒選TestCafe作為Inject Script的代表
使用ThroughWorks技術雷達來解釋2019年4月的資料
2
Cypress已經采納
3
而TestCafe還在試驗中
如果你的團隊沒有js的學習成本或者,有一定的js基礎,又面臨selenium自動化性能差,響應時間長,資源加載慢等問題的困擾,不妨嘗試下Cypress
最后送上傳送門:https://www.cypress.io/
往期
好評