有什麼好的開源自動化測試框架可以推薦?

類似於IBM的STAF


謝邀,在此推薦七款開源自動化測試工具,希望能夠幫助大家快速完成各種測試,一起交流學習。

1. 項目名稱:基於selenium webdriver 自動化測試框架

郵件展示如下:

日誌文件展示如下:

項目簡介:這是一個WebUI自動化測試框架,由webdriver中文社區創辦人土豆(本人技術筆名)所創建,該web自動化測試框架是用java語言編寫的,基於selenium webdriver 的開源自動化測試框架,該框架結合了testng,selenium,webdriver,jxl,jodd-http 等工具。該框架基於頁面對象模型(POM)架構,實現了關鍵字驅動技術,數據驅動,無需掌握多少編程知識即可編寫腳本,同時實現了數據與代碼分離的功能:

  • 元素定位信息保存在對象庫文件中 ;
  • 測試用例數據可以存儲在excel中。從而實現,頁面元素位置變化,無需改動腳本,只需修改對應的元素定位信息即可。

該框架實現了檢查點及用例失敗自動截圖功能,自動生成html測試報告及自動發送html郵件測試報告功能。目前框架還不是特別完善,還需要寫一些腳本實現自動化;學習該框架需要熟悉一定的HTML 和java基礎,後續可以考慮自動編碼的實現。

實現的功能:

  • XML管理元素對象信息;
  • 統一的操作API風格,action.操作(某個頁面.某個元素());
  • 數據驅動;
  • 關鍵字驅動;
  • 用例失敗自動截圖並展示到報表中;
  • 自動生成html報表,自動發送html郵件報告;
  • 用例串列一次性執行多個瀏覽器,可用於兼容性測試。

項目地址:http://git.oschina.net/zhengshuheng/PatatiumWebUi

2. 項目名稱:maven 自動化集成測試

項目簡介:本項目是參考國外文章來編寫的 Maven 自動化集成測試工具,可測試 Spring+SpringMVC+Hibernate 技術,也可使用 HttpClient 測試 SpringMVC 中 Action,同時增加統一驗證功能,且數據可使用 hibernate 的自動導入數據功能。

項目地址:http://git.oschina.net/huanghuanlai/maven-integrated

3. 項目名稱:基於python 實現的自動化介面測試

項目簡介:本項目是基於 python3 實現的 http 介面自動化測試,支持常見的 HTTP 中的 post 和 get 方法;測試案例驅動用 excel 管理,注意的地方是為每個案例新增自定義檢查函數(更新為了生成器為 xml 管理);根據需要配置,可以運行部分用例,全部用例;測試結合最後生成了 html 文件,方便查看。

開發環境:

  • Win7 64,python 3,Pycharm. unittest;
  • 讀取配置文件--讀取測試用例--執行測試用例--記錄測試結果--生成html結果文件。

模塊類的設計說明:

  • Httpbase.py 讀取http的域名和埠;
  • Config.py http方法的封裝,可以支持多協議擴展,get,post;
  • Runner_m.py 核心代碼。run_case是程序的入口;
  • Htmlreport.py 結果生成html文件。

項目地址:http://git.oschina.net/ytbkun/auto_http_api

4. 項目名稱:Phoenix Framework 自動化測試平台

項目簡介:集代碼託管, 分機(node節點)管理,定時任務, 分散式或並發等方式執行通過 phoenix_develop 模塊調試好的用例。 平台使用 SSH4 開發,覆蓋了 webgui,介面,移動 mobile 等終端的測試與監控。 webGUI 模塊兼容 chrome,Firefox,IE,httpunit 以及 phantomjs 驅動。原生支持對 FTPServer,svn,SocketServer,圖片文字識別的操作, 深度集成了 Jmeter,支持 Web 性能測試。 平台通過 phoenix_develop 模塊在客戶端開發及調試代碼, 然後通過將代碼託管到 phoenix_web 控制端, 控制端通過指派多個 phoenix_node 端方式執行測試用例。 通過使用phoenix_develop 開發用例代碼的示例, 用例如果在本地調試時沒有問題,那麼就可以放到控制端進行執行了。

項目地址:http://git.oschina.net/phoenixframework/phoenixframework

5. 項目名稱:restful 介面的測試工具

項目簡介:目前大部分的 restful 介面測試工具,僅僅停留在驗證介面響應是否正常,具體的業務是否正確需要靠人工來分析。人工分析勢必比較耗時,而且隨著項目的迭代,重複工作量的浪費比較嚴重。因此,考慮到介面的變動會較少,自動化介面測試將很有必要。

項目技術實現:

  • 採用 HttpClient 實現介面的調用,支持 GET/PUT/POST/DELETE 方式,支持目前 Restful 介面規範常用的 Http 方法;
  • 自動化腳本的編寫採用 Cucumber 來實現,腳本編寫的時候分為 Feature、Scenario 以及 Step。每個 Feature 下可以包含 N 個場景,每個場景下有 M 個步驟,和實際測試中的測試用例場景貼近;
  • 結果驗證採用 Javascript Engine,由於 Javascript 支持弱語言,因此在處理上兼容性會更好。

項目地址:http://git.oschina.net/zzq0324/restful-tester

6. 項目名稱:基於 Android 的測試常用腳本

項目簡介:批量安裝應用(支持以中文命名的 apk)、批量卸載、截屏、錄製視頻、獲取當前應用的 apk 文件、包名、Activity 以及當前運行的應用的 cpu、memory 信息,默認 top times 取值為20次,可自己修改腳本中的該參數。

項目地址:http://git.oschina.net/xuxu1988/AndroidTestScripts

7. 項目名稱:基於 Android 的自動化測試工具 MonkeyRunner

項目簡介:MonkeyRunner 是 Google Android SDK 下的一個工具,用於自動化測試 Android 程序。Monkeyrunner 工具提供了一套 API,使用這些api 寫出的 Python 程序可以在黑盒地控制 Android 設置和模擬器。有了 Monkeyrunner,我們可以通過 python 語句控制 apk 包的安裝和卸載、啟動 app、向 app 發送各種動作指令、截取圖片並保存。

Monkeyrunner 和 Monkey 不同,Monkey 是直接運行在 adb shell 中的命令,它隨機的生成用戶或者系統的各種隨機事件,而 MonkeyRunner 則可以通過 api 來產生特定命令和事件來控制設備和模擬器。

MonkeyRunner 在 android 測試中有下面特點:

  • 支持多設備: API 可以跨多個設備或模擬器實施測試套件。您可以在同一時間接上所有的設備或一次啟動全部模擬器(或統統一起),依據程序依次連接到每一個,然後運行一個或多個測試。您也可以用程序啟動一個配置好的模擬器,運行一個或多個測試,然後關閉模擬器。
  • 功能測試: monkeyrunner 可以為一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,然後觀察輸出結果的截屏。
  • 回歸測試:monkeyrunner 可以運行某個應用,並將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。
  • 可擴展的自動化:由於 monkeyrunner 是一個 API 工具包,您可以基於 Python 模塊和程序開發一整套系統,以此來控制 Android 設備。除了使用monkeyrunner API 之外,您還可以使用標準的 Python os 和 subprocess 模塊來調用如 adb 這樣的 Android 工具。您還可以向 monkeyrunner API 中添加您自己的類。我們將在使用插件擴展 monkeyrunner 一節中對此進行詳細討論。

monkeyrunner 工具使用 Jython(使用 Java 編程語言的一種 Python 實現)。Jython 允許 monkeyrunnerAPI 與 Android 框架輕鬆的進行交互。使用 Jython,您可以使用 Python 語法來獲取 API 中的常量、類以及方法。

項目地址:http://git.oschina.net/winchelltest/monkeyrunner

碼雲 - 開源中國代碼託管平台

歡迎關注碼雲,一個專為開發者提供穩定、高效、安全的雲端軟體開發協作平台,無論是個人、團隊、或是企業,都能夠用碼雲實現代碼託管、項目管理、協作開發,更有代碼質量分析、項目演示等豐富功能,歡迎放碼過來。

碼雲知乎機構賬號的「放碼雲間」文章專題為你推薦優質的開源項目資訊,展現最新的行業動態。


沒人提 Macaca ?


如果您正在考慮構建自己的測試自動化框架,請在自薦之前,參考一下以下的六大熱門自動化測試框架。

在大多數情況下,您將會很好地考慮一個或多個可用的開放源代碼選項。這是因為一般來說,框架是可以在團隊中使用的一套最佳實踐,假設,通用工具和庫。很多時候,其實您並不需要一個開發一個獨特的測試框架。

您只需要一個框架來幫助您實現自動化測試代碼:

  • 可重複使用
  • 可維護性
  • 穩定

我看到一些團隊通過從頭開始構建自己的複雜的自動化框架,花費了大量的功夫去實現這些必備選項。這使我瘋狂,因為其實他們可以很容易地利用現有的開源工具和測試庫,而不需要編寫任何代碼就可以滿足他們的需求,而在大多數情況下,這些工具和庫都能獲得更好的結果。

在陷入「構建自己的框架」陷阱之前,請務必查看這六個開源測試自動化解決方案。務必!


Serenity

如果您需要一個基於Java的框架,與諸如Cucumber和JBehave之類的行為驅動的開發工具集成在一起,您可以將測試場景保持在高水平,同時在報告中包含較低級別的實施細節,Serenity可能是您比較好的選擇。 Serenity(以前稱為Thucydides)是一種開源工具,旨在使驗收測試和回歸測試更容易。

一個主要的好處是,Serenity作為Selenium WebDriver和BDD工具之上的包裝。這使得BDD和Selenium測試變得更簡單,因為它抽出了許多有時需要編寫的樣板代碼才能開始使用。 Serenity還提供了許多內置功能,例如提供WebDriver管理,在步驟之間管理狀態,截取屏幕,並行運行測試,促進Jira集成以及更多的功能,而無需編寫單行代碼。

Serenity真正的好處是可以生成非常好的測試報告。開箱即用,使用Serenity來創建文檔,不僅可以用於查看您的 Selenium BDD測試結果,還可以作為您的應用程序的文檔。

它還有一個額外的注釋稱為@Step。@Step方法為您提供了一個額外的抽象級別,當正確使用時,可以使您的測試更具可重用性和可維護性。

如果您正在創建自己的BDD框架,Serenity將照顧許多您通常必須從頭開始編寫的內容。我認為這是非常好用的開源框架之一,但是我可能有點偏見,因為它是我日常測試自動化工作中使用的工具。(此處是作者的介紹,本人還沒使用過,國內好像也沒怎麼聽說)


Robot Framework

如果您想使用Python進行測試自動化工作,最好的選擇就是Robot Framework。

Robot Framework 是為測試人員提供了的成熟解決方案; 它使用關鍵字驅動的方法來使測試可讀和易於創建。它還有許多測試庫和其他可以使用的工具。

Selenium WebDriver庫可能是最常用的外部測試庫,但Robot Framework可以測試FTP,MongoDB,Android,Appium等網站以外的其他內容。除了所有這些開放源代碼的美妙之處以外,它還有很多API可以幫助它儘可能的擴展。

Robot Framework 是基於Python的,但您也可以使用Jython(Java)或IronPython(.NET)。

Robot Framework 使用的關鍵字方法對於已經熟悉其他基於供應商的關鍵字驅動的測試工具的測試人員來說非常有用,使得向開源的過渡更容易。

如果您的團隊由大多數測試人員組成,Robot Framework將是您的自動化框架的一個很好的選擇。(CC先生覺得這是目前用過的最好的測試框架,沒有之一)


RedwoodHQ

RedwoodHQ與此列表中其他工具的方法略有不同。

它創建一個網站界面,允許多個測試人員一起工作,並從一個可訪問的網站運行測試。

測試可以用Java / Groovy,Python和C#編寫,使用他們的Web IDE測試Web應用程序,其中包括內置的GIT集成。

您可以利用RedwoodHQ現有的操作關鍵字來快速開始創建和修改測試。

要創建測試腳本,只需要找到要執行的操作,將其拖動到測試用例中,然後輸入其期望的參數值。

內置IDE還允許您創建和修改測試用例和操作以及執行測試。

您還可以並行對預定義的機器執行測試,並查看以前所有測試運行的運行歷史記錄。

RedwoodHQ對測試人員是友好的,並且有很多內置功能,可以為您的團隊創建完整的測試自動化和測試管理解決方案。


Sahi

開發用於測試Web應用程序, Sahi提供開源和專業版。Sahi作為代理伺服器,可以讓您在瀏覽器中使用它。您可以從Sahi儀錶板啟動要測試的瀏覽器。

Sahi控制器將引導您完成對您的應用程序執行的交互的記錄和捕獲。例如,當您將滑鼠懸停在Sahi瀏覽器中的任何元素時,它將顯示您可以對該特定元素執行的所有操作。您還可以使用控制器播放腳本。

Sahi的記錄和播放功能使您可以輕鬆開始簡單的HTML應用程序的測試自動化。但要注意依靠錄音和播放; 這種方法已被證明是創建可維護,強大的自動化測試的不良做法。幫助創建初始測試可以,但您需要自定義它,使其可靠和可維護。

我聽說過Sahi很多,但是我的第一印象就是它不像其他選擇那麼強大。然而,很多人都喜歡Sahi專業版。


Galen Framework

如果您的自動化工作專註於用戶體驗設計(UX)或布局測試,Galen框架可能完全適合您的需求。

Galen專門為UX測試而創建,並具有特殊的語法和規則,可用於描述和驗證應用程序的布局。

它還允許您指定瀏覽器大小,然後根據應用程序運行測試以驗證布局規範。

Galen測試還生成具有截圖的詳細HTML報告,它包括與酷熱圖功能的可視圖像比較。

測試可以使用Galen語法,JavaScript或Java編寫在一個簡單的文本文件中。


Gauge

Gauge是Mac,Windows和Linux最新的開源測試自動化工具之一,由ThoughtWorks開發,對,就是開發Selenium的那家。

TDD和BDD的簇擁者將欣賞Gauge將創建可被書面化和可執行文檔的作為重點。

Gauge的自動化測試用例是依據markdown語法來編寫,也支持Java,Ruby和C#語言,可使用現在常用的開發人員IDE(如Eclipse和Visual Studio)。

Gauge的功能也可以通過其對插件的支持來擴展。

Gauge還是一個初生期,仍然處於測試階段,所以如果您的團隊想接觸一些前沿尖端的測試開發技術,您可以嘗試一下。

CC先生的小黑板

綜上所述呢,Rotbot Framework還是算比較靠譜的一個自動化測試框架,如有興趣,你也可以嘗試其它的測試框架,畢竟,多態才是這個世界的常態。

註:本文由蝸牛學院測試導師 CC老師 譯自 6 top open-source testing automation frameworks: How to choose 首發自個人簡書 http://www.jianshu.com/p/8b4b615458b9。希望繼續在IT行業突破提升自己的各位朋友,也歡迎加群384053806,不管你自我感覺牛不牛B。


更新,最近研究了Thoughtworks的新框架Gauge,感覺比Robot更加有發展前途,不說他們維護的很勤快,架構也比Robot合理的多,所以實現多進程分發機制很容易。而且用TCP hook的方式加入插件機制也很好,這個目前只是beta,我已經喜歡到把我整個架構都推倒了遷移到Gauge上。看了下Python語言的實現也弄懂了如何和Gauge伺服器通信,以後自己擴展也無比方便了。

=======================

Selenium怎麼都不算自動化測試框架啊。

Robot Framework可以算一個,提供了強大的關鍵字驅動和BDD,關鍵是我已經用Python上癮了無法自拔了,再也不想用回Java。而且我自己寫測試庫,靈活性很高,關鍵那個報告太漂亮。唯一的缺點這貨是單進程的,不過可以自己調用Robot的API實現多進程,也不是什麼困難的事。

還有一個Fitnesse應該也不錯,不過我沒用過,只是看別人用過一下。


selenium只是一個網頁自動化測試工具而已,不能說是框架。

Robot Framework是一個,Fitnesse是一個。

我現在用Xebium(就是Fitnesse集成了selenium而已),自己用java寫介面,支持api,db以及其他小工具,這樣可以支持整套測試流程。同時也是wiki,可以當作工作中的知識庫分享內容。測試點和具體測試用例一起,很不錯。


必須是Selenium, 一個用於Web應用程序測試的工具。通過模仿用戶進行操作。支持多種開發語言。騰訊課堂有很多這類的免費公開課(純分享!!)Selenium高級自動化測試實戰入門篇,或者你自己也可以百度看看。


http介面測試框架,業界最常用的,是

maven+testng


移動端的話試一下appium;web端用selenium webdriver


web端的話可以試一試 webdriver


最近工作中遇到了一個很好的自動化測試框架,Selenium,可以用各種語言來編寫腳本,同時也支持很多瀏覽器(ie, firefox, chrome)。


app測試的appium


我個人比較推崇自己寫框架,因為各個領域需求真真兒的不一樣,要搞到一個通用的框架臣妾做不到啊!好吧,給個開源的,RobotFramework。


如果是Linux系統,推薦:http://autotest.kernel.org,有Web的,也有命令行的。


如果要類似staf這樣的開元自動化測試框架,的確不是很好找了。staf已經可以滿足絕對部分自動化測試的需求了,除了具體業務需要自己實現外,其他的任務分發和結果監控,stafstax已經相當完善了


推薦閱讀:

如果你得到了Windows的源代碼,你會拿來怎麼用?
看源代碼時,你喜歡怎麼做筆記?
運維人員如何搭建堡壘機(跳板機)?
如何用開源飛控PIXHAWK進行二次開發?
魅族開放了M9,MX,MX2的內核源代碼,這意味著什麼?

TAG:開源 | 自動化測試 | 自動化工具 |