2017 熱門開源自動化測試框架優缺點對比

時間一晃已來到 2017 年的最後一個季度,TestProject 對比了在今年比較熱門的 7 款開源自動化測試框架的優缺點,以幫助你選擇適合自己的測試框架。

1. Robot Framework

Robot Framework(RF)是用於驗收測試和驗收測試驅動開發(ATDD)的自動化測試框架。 基於 Python 編寫,但也可以在 Jython(Java)和 IronPython(.NET) 上運行,提供跨平台支持(Windows、Linux 或 MacOS )。

優點:

  • 通過使用關鍵字驅動測試(KDT)方法簡化了自動化測試過程,方便測試人員創建易讀的測試。

  • 測試數據語法簡單易用。

  • 生態系統豐富。由各種通用測試庫和工具組成,這些工具都是作為獨立項目開發的。

  • 具有高度可擴展性。

  • 可通過pabot或Selenium Grid執行並行測試。

  • 缺點:

  • 自定義 HTML 報告較為麻煩。

  • 如果是針對大範圍的庫和擴展的 KDT 自動化測試,建議使用此跨平台框架。如果想要添加新的關鍵字(通過RF 測試庫 API),需要具備 Java / Python / C 語言的基礎知識。

    2. JUnit

    JUnit 是一款針對 Java 應用的單元測試框架,用於編寫和運行可重複的測試。

    優點:

  • 純 Java 編寫。

  • 支持測試驅動開發(TDD)。

  • 允許創建自己的單元測試用例套件。

  • 能很好地與其他工具(如 Maven )和 IDE(如 IntelliJ )集成。

  • 長時間發展,有自己龐大的用戶群體,可以很容易找到文檔。

  • 缺點:

  • 如果需要 mocking 能力,則需要額外添加Mockito(或其他模擬庫)。

  • 因 JUnit 中的方法名稱受 Java 約定限制等原因,非技術人員很難讀懂測試結果。

  • 如果你正在為你的 Java 應用編寫單元測試,那這可能是最好的選擇。 但是,對於功能測試或非 Java 應用,應考慮其他解決方案。

    3. Spock

    Spock 是用於 Java 和 Groovy 應用的測試和規範框架,基於 JUnit 。

    優點:

  • 測試可讀性強,支持簡單的英文句子,便於閱讀。

  • 提供周邊上下文,從而能輕鬆了解如何解決故障。

  • 內置 mocking 和 stubbing 功能。

  • 支持數據驅動測試(DDT)。

  • 缺點:

  • 需要具備基本的 Groovy 語言知識。

  • 如果你的應用是基於 JVM 的,並且目標是使用 DSL 進行 BDD 自動化測試,則此框架正適合!

    4.NUnit

    NUnit 是支持所有 .Net 語言的單元測試框架。最初也是基於 Junit 的啟發,完全採用 C# 編寫,目前已被完全重新設計以使用更多 .NET 語言功能。

    優點:

  • 啟動和測試執行速度快。

  • 自帶斷言和注釋。

  • 支持並行測試。

  • 支持測試驅動開發(TDD)。

  • 缺點:

  • 非跨平台,僅適用於 .Net 語言。

  • 未集成到 Visual Studio echo 系統中,意味著使用它需要更多的維護。

  • 一個很好的 C#開源單元測試框架,歷史悠久,口碑較高。 不過,如果你正準備使用 .NET 語言,也可以考慮MSTest 。

    5.TestNG

    TestNG 是一個 Java 自動化測試框架,受 JUnit 和 NUnit 的啟發,但又改進和新增了一些功能。旨在涵蓋所有自動化測試類別:單元測試、功能測試、端到端、集成測試等。

    優點:

  • 容易整合到 maven 循環中。

  • 使開發人員能夠編寫靈活而強大的測試。

  • 支持數據驅動測試(DDT)。

  • 注釋很容易理解。

  • 測試用例可以輕鬆分組。

  • 允許創建並行測試。

  • 缺點:

  • 只支持 Java ,至少需要具備 Java 編程語言的基礎知識。

  • 必須投入時間進行框架設置和設計。

  • 如果你使用 Java ,並正尋找端到端的自動化測試框架,同時願意投入一點時間去設置框架,你應該考慮使用 TestNG 。

    6.Jasmin

    Jasmine 是一個 JavaScript 單元測試框架,也被稱為 JavaScript 的行為驅動開發(BDD)測試框架。適用於網頁、Node.js 項目或任何可以運行 JavaScript 的地方。它主要與 AngularJS 配對使用。

    優點:

  • 除了 JavaScript ,還可以運行在 Python 和 Ruby 中。如果想在你的伺服器端運行客戶端測試,它可以幫助你。

  • 被許多 CIs 使用和支持。

  • 內置用於斷言的語法。

  • 缺點:

  • 多數情況下,它需要一個測試運行器(如 Karma )。

  • 難以非同步測試。

  • 如果你正在尋找一個統一的(客戶端 - 伺服器)單元測試解決方案,Jasmin 可能會非常適合。

    7.Mocha

    Mocha 是一個 JavaScript 單元測試框架,它在 NodeJs 上運行測試,主要與 ReactJS 配對使用。

    優點:

  • 內置測試運行器。

  • 支持非同步測試。

  • 使用靈活,可使用任何符合需求的斷言庫(Chai、expect.js、Must.js 等)作為 Node 標準「斷言」 功能的替代品。

  • 缺點:

  • 相對較新 (起始於 2012 年),意味著有許多的未知性和可變性,在某些方面或缺乏用戶基礎和支持。

  • 僅提供基本的測試結構,因此需要額外的設置和配置(對於一些可能是有利的)。

  • 如果你正在尋找 JavaScript 的獨立單元測試框架,Mocha 是首選!

    推薦閱讀:

    常用開源CMS程序匯總
    用天文曆法解開源頭文化之謎(劉明武)
    開源雲計算博弈,左手技術、右手行業
    最好的53個 VC++ /MFC 開源軟體項目
    如何基於Weex實現創新交互體驗?手淘開源技術BindingX案例解析

    TAG:自動化 | 測試 | 開源 | 對比 | 缺點 | 自動化測試 | 優缺點 | 框架 |