量角器 - 簡介
本章將為您介紹量角器,您將瞭解此測試框架的起源以及為什麼您必須選擇它,以及此工具的工作原理和侷限性。
什麼是量角器?
量角器是一個開源的端到端測試框架,用於 Angular 和 AngularJS 應用程式。它由 Google 基於 WebDriver 構建。它也作為現有的 AngularJS E2E 測試框架“Angular Scenario Runner”的替代品。
它還可以作為解決方案整合器,結合 NodeJS、Selenium、Jasmine、WebDriver、Cucumber、Mocha 等強大的技術。除了測試 AngularJS 應用程式外,它還可以為普通 Web 應用程式編寫自動化的迴歸測試。它允許我們像真實使用者一樣測試我們的應用程式,因為它使用實際瀏覽器執行測試。
下圖將簡要概述量角器 -
觀察上圖,我們有 -
量角器 - 如前所述,它是 WebDriver JS 的包裝器,專門為 Angular 應用程式設計。
Jasmine - 它基本上是一個用於測試 JavaScript 程式碼的行為驅動開發框架。我們可以用 Jasmine 輕鬆編寫測試。
WebDriver JS - 它是 Selenium 2.0/WebDriver 的 Node JS 繫結實現。
Selenium - 它只是自動化瀏覽器。
起源
如前所述,量角器是現有的 AngularJS E2E 測試框架“Angular Scenario Runner”的替代品。基本上,量角器的起源始於 Scenario Runner 的結束。這裡出現了一個問題,為什麼我們需要構建量角器?要理解這一點,我們首先需要了解其前身 - Scenario Runner。
量角器的誕生
Julie Ralph 是量角器開發的主要貢獻者,她在 Google 內部其他專案中使用 Angular Scenario Runner 有以下經驗。這進一步成為構建量角器的動力,特別是為了填補空白 -
“我們嘗試使用 Scenario Runner,發現它真的無法做到我們需要測試的事情。我們需要測試諸如登入之類的事情。您的登入頁面不是 Angular 頁面,Scenario Runner 無法處理它。它也無法處理諸如彈出視窗和多個視窗、瀏覽瀏覽器歷史記錄等內容。”
量角器最大的優勢在於 Selenium 專案的成熟度,它封裝了其方法,以便可以輕鬆地用於 Angular 專案。量角器的設計以這樣的方式構建,它測試應用程式的所有層,例如 Web UI、後端服務、持久層等等。
為什麼選擇量角器?
眾所周知,幾乎所有應用程式都使用 JavaScript 進行開發。當 JavaScript 的規模越來越大,並且由於應用程式數量的增加而變得複雜時,測試人員的任務變得困難。大多數情況下,使用 JUnit 或 Selenium WebDriver 捕獲 AngularJS 應用程式中的 Web 元素變得非常困難,它使用擴充套件的 HTML 語法來表達 Web 應用程式元件。
這裡的問題是為什麼 Selenium Web Driver 無法找到 AngularJS Web 元素?原因是 AngularJS 應用程式具有一些擴充套件的 HTML 屬性,例如 ng-repeater、ng-controller 和 ng-model 等,這些屬性未包含在 Selenium 定位器中。
在這裡,量角器的重要性就體現出來了,因為量角器在 Selenium 的基礎上可以處理和控制 AngularJS Web 應用程式中的那些擴充套件的 HTML 元素。因此,我們可以說,大多數框架專注於對 AngularJS 應用程式進行單元測試,量角器用於測試應用程式的實際功能。
量角器的工作原理
量角器(測試框架)與 Selenium 協同工作,為模擬使用者與在瀏覽器或移動裝置上執行的 AngularJS 應用程式互動提供自動化的測試基礎設施。
可以透過以下步驟瞭解量角器的工作原理 -
步驟 1 - 在第一步中,我們需要編寫測試。這可以透過 Jasmine 或 Mocha 或 Cucumber 的幫助來完成。
步驟 2 - 現在,我們需要執行測試,這可以透過量角器的幫助來完成。它也稱為測試執行器。
步驟 3 - 在此步驟中,Selenium 伺服器將幫助管理瀏覽器。
步驟 4 - 最後,透過 Selenium WebDriver 呼叫瀏覽器 API。
優點
這個開源的端到端測試框架提供了以下優勢 -
作為一個開源工具,量角器非常易於安裝和設定。
與 Jasmine 框架配合良好以建立測試。
支援測試驅動開發 (TDD)。
包含自動等待,這意味著我們不需要在測試中顯式新增等待和休眠。
提供 Selenium WebDriver 的所有優勢。
支援透過多個瀏覽器進行並行測試。
提供自動同步的優勢。
具有出色的測試速度。
侷限性
這個開源的端到端測試框架具有以下侷限性 -
由於它是 WebDriver JS 的包裝器,因此它不會發現瀏覽器自動化中的任何垂直領域。
使用者必須瞭解 JavaScript,因為它僅適用於 JavaScript。
僅提供前端測試,因為它是一個 UI 驅動的測試工具。