自動化測試工具分析和總結-實時更新

FeelTouch發表於2019-03-11

目錄

JUnit

簡介

Mockito

簡介

Robolectric

Selenium 

簡介


JUnit

簡介

JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源於Kent Beck的sUnit的xUnit家族中最為成功的一個JUnit有它自己的JUnit擴充套件生態圈。多數Java的開發環境都已經整合了JUnit作為單元測試的工具。通常我們寫完程式碼想要測試這段程式碼的正確性,那麼必須新建一個類,然後建立一個 main() 方法,然後編寫測試程式碼。如果需要測試的程式碼很多呢?那麼要麼就會建很多main() 方法來測試,要麼將其全部寫在一個 main() 方法裡面。這也會大大的增加測試的複雜度,降低程式設計師的測試積極性。而 Junit 能很好的解決這個問題,簡化單元測試,寫一點測一點,在編寫以後的程式碼中如果發現問題可以較快的追蹤到問題的原因,減小回歸錯誤的糾錯難度。

目前主流的版本時JUnit4

Mockito

簡介

Mockito是根據MIT許可證釋出的Java開源測試框架。 Mockito通過允許開發人員預先確定被測系統(SUT)的行為來區別於其他測試框架。

Mockito是GitHub上使用最廣泛的Mock框架,並與JUnit結合使用.Mockito框架可以建立和配置mock物件.使用Mockito簡化了具有外部依賴的類的測試開發!

步驟

一般使用Mockito的步驟:

  1. 模擬任何外部依賴並將這些模擬物件插入測試程式碼中
  2. 執行測試中的程式碼
  3. 驗證程式碼是否按照預期執行

Robolectric

簡介

Robolectric可以非常方便的模擬Android環境進行單元測試,JUnit只能進行java的單元測試。在Android裝置上跑測試用例太慢了,編譯、部署、啟動app要花費很多時間。Robolectric是一個單元測試框架,測試是執行在jvm上的,只需要幾秒鐘。它的設計思路便是通過實現一套JVM能執行的Android程式碼,從而做到脫離Android環境進行測試。

測試驅動android開發
在安卓模擬器或者真機上跑測試用例速度很慢。構建、部署、啟動app,通常需要花費一分鐘或者更久。這不是TDD(測試驅動開發)模式.Robolectric提供一種更好的方式。

可能你一直嘗試在java IDE中使用junit或者testng直接跑測試用例,但是一直報java.lang.RuntimeException: Stub!異常。

這個異常是因為在jdk中沒有android執行環境。而現在Robolectric這款android單元測試工具,模擬了android sdk中的jar包,可以直接在jvm中執行測試用例,這樣就大大節省了時間。

SDK,Resource和Native Method模擬
Robolectric可以處理控制元件展示、資源載入和很多使用native C實現的真機上的其他功能。所以我們可以使用Robolectric來模擬真機上的大部分操作。我們可以很方便地獲取Robolectric的原始碼,直接檢視它的模擬機制,所以使用Robolectric,我們也可以模擬錯誤條件和一些真實的感測器訊號。

脫離模擬器執行測試用例
Robolectric允許我們在專案工程中或者持續整合(CI如hudson、jenkins)中使用jvm來執行測試用例,所以就省掉了打包、安裝的過程,將測試用例的執行時間由分鐘級降到秒級。

對比:

Selenium 

簡介

Selenium`是開源的自動化測試工具,它主要是用於Web 應用程式的自動化測試,不只侷限於此,同時支援所有基於web 的管理任務自動化。它是一款用於執行端到端功能測試的超強工具。您可以使用多個程式語言編寫測試,並且 Selenium能夠在一個或多個瀏覽器中執行這些測試。

Selenium is a suite of tools to automate web browsers across many platforms.runs in many browsers and operating systems
can be controlled by many programming languages and testing frameworks.


Selenium 官網:http://seleniumhq.org/
Selenium Github 主頁:https://github.com/SeleniumHQ/selenium
Selenium 是用於測試 Web 應用程式使用者介面 (UI) 的常用框架。它是一款用於執行端到端功能測試的超強工具。您可以使用多個程式語言編寫測試,並且 Selenium 能夠在一個或多個瀏覽器中執行這些測試。

Selenium共包括三個版本:Selenium1.0 Selenium2.0 Selenium3.0

Selenium 1.0 = Selenium IDE + Selenium Grid + SeleniumRC

Selenium 2.0 = Selenium 1.0 + WebDriver

Selenium 3.0 = Selenium 2.0 + Selenium RC(Remote Control)

Selenium3現狀

  • 去掉了對selenium rc的支援。
  • 全面擁抱java 8。
  • 支援macOS (Sierra or later),支援官方的safaridriver。
  • 通過ms官方的webdriverserver支援Edge瀏覽器。
  • 只支援ie 9.0版本以上。
  • 通過Mozilla官方的geckodriver來支援firefox。
  • 儘管firefox driver非常的穩定高效,但firefoxdriver畢竟是google實現的。geckodriver的出現是必然的結果,因為最新版本的firefox換引擎了,老的firefox driver應該是不支援新引擎的。

WebDriver意義

  • •webdriver協議現在已經成為業內公認的瀏覽器ui測試的標準實現。webdriver協議是google對開源測試領域的重要貢獻。
  • •各種官方支援意味著以後的瀏覽器ui測試的速度和穩定性會有較大的提升。
  • •瀏覽器ui自動化測試已經成為了行業標配。
  • • selenium專注web測試。

簡單來說,我們總是從建立WebDriver開始的,並通過WebDriver導航頁面和視窗,以及查詢元素等等

參考:Selenium全知 Selenium用法 Selenium3筆記

 

相關文章