序言:不知道有多少人對開源社區真的很有了解,個人以為在自動化測試中,開源也是一個很好的利器,往往商業性的工具針對普遍人群,而自動化測試是“定制型”的,不一定特別適合,而且自動化測試是預言型的,所以一般而言,可以考慮開源。因為可以快速應用其提高效率,我個人覺得:自動化測試在追求發展過程中,要學會借助各種工具提高效率,而不是僅僅局限于一種。還是那句話,能提高測試效率和工作效率的才是王道,“摘花折草即可傷人也”。
一、自動化測試中的開源軟件分類
開源工具因為其零許可費以及開放和自由的理念逐漸得到了大家的認可和廣泛的傳播,而且由于自動化測試的差異性,其開源軟件的靈活性更能在自動化測試中很好的體現,而且隨著開源軟件和自動化測試的發展,其開源工具在自動化測試中也形成了一股應用的趨勢。其實,在工作中,我們都在不斷的與自動化測試打著交道。
在自動化測試過程中,我們與之打交道的開源工具,可以分為
1、編程語言與平臺,即在自動化測試過程中應用的語言和操作系統
1)Andriod,大家應該都有所了解,其是以Liunx為內核底層來支持不同硬件,并在其上搭建一個類java的運行環境,其大概有幾層,包括:linux內核、底層庫、JAVA框架(包括其API)、Andriod應用程序。
2)LINUX,大家熟知的開源操作系統。
3)腳本語言:Python、ruby、perl等,這些都是在自動化測試中因為其簡便性與動態性多有用到的編程語言。這些語言的維護、開發和發展都是通過開源社區和開源標準組織(例如ISO和Ecma)進行的,所以它們稱為開源語言。而java因為受Oracle支配,所以稱得上開源不開源,我也不是很清楚…
4)Flex:是在FLASH基礎上做的一層封裝,提供了組件庫,開發人員可以直接編寫MXML,即在FLEX中布局用戶界面組件的一種XML語言來搭建用戶界面。同時,完成負責數據邏輯的ActionScript腳本,好編程成FLASH文件。所以,有些用戶界面是用FLEX開發的。
……
2、開源開發工具
1)Eclipse,這個用過java的一般都很熟悉吧,是一款很好的IDE。其是基于”OSGi”的“即插即用”理念,所有功能以組件形式存在。其理念我覺得非常好,其插件只要遵循其平臺的規范,能集成到其中應用。例如:Pydev是一款python的插件,jython是一款Java與python集成的插件,還有andriod、ant等集成的插件,當然,我覺得可以的話,好先應用一下獨立版,再去在eclipse中應用,這樣,可以更好的了解其運作原理。
而且,我覺得這種理念在自動化測試中也可以很好的應用,使得各個工具之間能夠在一個平臺上作為模塊互相通用,而且也能獨自使用。其IBM rational開發的jazz平臺也是基于一種這么理念的。
2)Ant,這個大家也許不是很熟悉,但是開發過java應用程序或者做個持續集成的也有有所了解,它是一款構建的工具,即用XML描述任務的形式,自動完成其定義的工作,例如:可以幫助開發人員自動完成編譯、單元測試、打包、發布等工作。
3)Maven,Java開源項目的開發管理工具,涵蓋了項目構建、文檔管理、報告生成等方面,與Ant功能類似,其差別在于ant每一個項目需要獨立維護一個XML構建描述文件,而Maven能夠幫助快速搭建一個項目框架,而無需從頭編寫,其是一種“約定勝于配置”的理念,即先抽象出一個原型。這理念也可應用在自動化測試中的,即先提供一個腳本模板,然后根據這個模板,搭建一定的測試流程。
4)版本管理工具,例如:SVN和CVS,其都能夠應用腳本控制其代碼版本的簽入和簽出,在其自動化測試中也能有一定應用,方便管理腳本與代碼程序。
5)Bugzilla,缺陷管理工具,可以管理和跟蹤缺陷,即,可以在自動化測試中應用來管理相應結果或者缺陷跟蹤等。
6)Junit,大家都恨熟知的吧,單元測試的一款工具,即事先規定好單元測試模板,開發人員只需去根據被測試代碼,搭建其測試代碼即可。
7)TestNG,與junit類似。在自動化測試中也能有所應用。
3、編程及測試框架與庫
1)在J2EE開發中,大家熟知的SSH,即Spring、Struts、Hibernate。具體的大家可以去查閱相關資料,我想說的是,如果大家深入學習的話,會發現,其開發理念和自動化測試思想很相似,像Struts的MVC思想,與自動化測試的分層理念可以很好的結合。Hibernate的數據庫持久層思想也可以用于自動化測試的數據管理應用,總之,了解這些軟件設計框架,對于加強自動化測試思想的理解很有幫助。
2)Selenium,大家都很清楚的web自動化測試框架,很多人都說這是一種工具,其實說工具也行,框架也一樣,其提供了一種測試web的自動化思想,即采用繞過web中“同源策略”的方法,用JS來控制web的操作。你可以編寫腳本應用其API,來控制web的相應控件的操作。一般是集成在你的自動化測試管理框架或者系統平臺中的。
3)Robutium,andriod UI測試的一個自動化測試框架,理念類似,只是應用場合不一樣。