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