趙森
(江南機(jī)電設(shè)計研究所,貴州 貴陽 550009)
摘要:軟件測試過程是很有可能實現(xiàn)自動化的過程,而實現(xiàn)測試的自動化無論對提高軟件的質(zhì)量還是減少開發(fā)成本都有現(xiàn)實意義。文章介紹了基于關(guān)鍵字的自動化測試,以曾所做過的關(guān)鍵字驅(qū)動的自動化框架設(shè)計為例進(jìn)行講解,并介紹了其他常見的自動化測試框架以及兩個在自動化測試中常用的工具。
關(guān)鍵詞:軟件測試;自動化測試;驅(qū)動測試;框架設(shè)計
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-2374(2014)22-0026-02隨著IT技術(shù)的快速革新,軟件的規(guī)模逐步變大,軟件開發(fā)人員希望在將投入運(yùn)行之前,質(zhì)量能得到保障,而測試則是保證系統(tǒng)正確性的一個必要手段,通常測試人員是軟件的第一個用戶,而且也是檢驗產(chǎn)品質(zhì)量的重要人員。據(jù)統(tǒng)計,測試在軟件開發(fā)總成本中往往要占到40%~50%甚至更多。在以往的開發(fā)和測試過程中,通過經(jīng)驗積累發(fā)現(xiàn),測試過程是極有可能實現(xiàn)自動化的,而實現(xiàn)測試的自動化無論對提高軟件的質(zhì)量還是對減少開發(fā)成本都有很大的幫助。自動化軟件測試的目的在于通過有效的利用時間和資源來提高測試效率,把測試用例轉(zhuǎn)化為自動的執(zhí)行,把人從繁瑣的體力測試中解放出來。自動化測試能做一些手工難以完成的測試,比如壓力測試,特別是在回歸測試中有很大的幫助,所以研究如何實現(xiàn)軟件測試的自動化是有意義而且是很有必要的。
1常用的自動化測試技術(shù)簡介
自動化測試技術(shù)歷經(jīng)了多個發(fā)展階段,從最初的錄制回放技術(shù)到后來的數(shù)據(jù)驅(qū)動的測試技術(shù),再到現(xiàn)在著重介紹的關(guān)鍵字驅(qū)動的自動化測試技術(shù),它們都有各自的適用之處。一般而言,后發(fā)展的技術(shù)是對以往技術(shù)的繼承和發(fā)展,具備向后兼容特性。關(guān)鍵字驅(qū)動的測試技術(shù)以它獨(dú)到的性能受到了業(yè)內(nèi)人士的青睞,并在一些領(lǐng)域得到了很大程度上的應(yīng)用。關(guān)鍵字驅(qū)動測試技術(shù)是以預(yù)先設(shè)計好的關(guān)鍵字作為依據(jù)來驅(qū)動測試事件的,并且使用關(guān)鍵字編寫的測試腳本簡單易讀并且可維護(hù)性強(qiáng)。以上幾類自動化測試手段在各個領(lǐng)域都得到了很好的應(yīng)用,但是都存在各自的優(yōu)缺點(diǎn),不能完全滿足不同領(lǐng)域的需求。
2自動化測試常用工具選取
俗話說工欲善其事,必先利其器,在框架設(shè)計中可以應(yīng)用一些優(yōu)秀工具來輔助框架的開發(fā)。自動化測試的輔助工具不勝枚舉,并被應(yīng)用到不同領(lǐng)域,本文主要介紹在后面框架設(shè)計中用到的STAF和Selenium兩個開源的工具,兩個工具對于自動化軟件測試具有諸多優(yōu)勢,在此不作詳細(xì)說明。
3關(guān)鍵字驅(qū)動的自動化測試框架設(shè)計
以曾開發(fā)過框架為例,該框架是測試一款產(chǎn)品型軟件,每個版本發(fā)布前測試的功能點(diǎn)很多都和上個甚至更早版本測試點(diǎn)相同,但都需要測試,避免新功能的引入對老的功能產(chǎn)生影響,如果采用人工測試,需要花費(fèi)大量的精力做相同的測試,以及在做回歸測試都要花費(fèi)大量的時間,為了節(jié)約成本,減少枯燥重復(fù)的測試,采用自動化測試的方法,這種方法不僅能解決上述問題,還能提高測試的準(zhǔn)確性,縮短軟件開發(fā)周期,在空閑時間運(yùn)行自動化的用例,工作時間查看結(jié)果報告,這樣就有效的利用時間和資源,提高了測試的效率,如果一旦實施開來,預(yù)計可以減少1/4的費(fèi)用。
3.1關(guān)鍵字驅(qū)動自動化測試的單元結(jié)構(gòu)
整個自動化測試的單元組成分為兩個部分,一個是測試控制端,一個是安裝產(chǎn)品的服務(wù)端。測試控制端放的就是我們的測試數(shù)據(jù),腳本代碼,測試工具等我們測試所用到的一切東西,而服務(wù)端就是我們安裝產(chǎn)品的地方,里面還包括產(chǎn)品的依附的軟件、軟件所需要的數(shù)據(jù)信息、數(shù)據(jù)庫信息等一切與產(chǎn)品有關(guān)的信息,主要是做到測試環(huán)境的隔離。如果涉及到要對產(chǎn)品直接的操作可以通過STAF這個軟件使得控制端能對服務(wù)端文件等進(jìn)行遠(yuǎn)程操作,對于UI方面我們借助selenium這個工具。
3.2關(guān)鍵字驅(qū)動
關(guān)鍵字不僅為測試提供參考依據(jù),而且被解釋執(zhí)行。當(dāng)在執(zhí)行測試數(shù)據(jù)的文件時,如果遇到關(guān)鍵字則調(diào)用對應(yīng)的關(guān)鍵字支持腳本,通過關(guān)鍵字支持腳本的執(zhí)行,將實際輸出與數(shù)據(jù)表格中的期望結(jié)果進(jìn)行比較,一致則通過,否則報錯,并將測試結(jié)果寫入測試日志文件。這樣,數(shù)據(jù)文件包含測試的邏輯內(nèi)容用來指定需要執(zhí)行的測試用例、測試步驟和測試數(shù)據(jù)信息,而支持腳本包含對被測試軟件的認(rèn)識,關(guān)鍵字的解析等,這樣就實現(xiàn)了腳本、測試數(shù)據(jù)、測試邏輯的相互獨(dú)立。
關(guān)鍵字驅(qū)動測試中,每一個關(guān)鍵字能解釋執(zhí)行相應(yīng)的腳本,通過不同的測試數(shù)據(jù),在這個測試框架中可以通過很少的代碼來產(chǎn)生大量的測試用例。同樣的代碼在用數(shù)據(jù)表來產(chǎn)生各個測試用例的同時被復(fù)用。
3.3關(guān)鍵字庫的設(shè)計
要做關(guān)鍵字驅(qū)動,就要設(shè)計關(guān)鍵字,而關(guān)鍵字設(shè)計是很重要的一步,我們在設(shè)計關(guān)鍵字時,應(yīng)該充分考慮到其擴(kuò)展性,可讀性,穩(wěn)定性等,切忌過多的設(shè)計關(guān)鍵字,造成關(guān)鍵字信息冗余,更不能遺漏設(shè)計關(guān)鍵字,致使某些需實現(xiàn)的功能無法得到精確的描述,總之一切要以特定的項目實現(xiàn)為原則來確定關(guān)鍵字地設(shè)計。
3.4自動化測試框架
圖1關(guān)鍵字驅(qū)動的自動化測試框架
如圖1所示就是一個自動化測試的結(jié)構(gòu)圖,第二層是腳本代碼,第三層是業(yè)務(wù)邏輯層,最高層,就是一些執(zhí)行文件。
腳本代碼,邏輯,數(shù)據(jù)都分離開,并且在一個文件里存儲執(zhí)行的步驟,里面按邏輯順序放了一個用例的關(guān)鍵字,這些關(guān)鍵字會調(diào)用相應(yīng)的腳本代碼,而腳本代碼里的數(shù)據(jù)又從數(shù)據(jù)的文件里調(diào)取,各層各司其職,相互獨(dú)立。當(dāng)執(zhí)行某一個用例的時候,我們就調(diào)用執(zhí)行文件,執(zhí)行文件執(zhí)行相應(yīng)的腳本,解析文件里面存儲的關(guān)鍵字,將其解析執(zhí)行相應(yīng)的腳本代碼。
3.5自動化測試框架的總體設(shè)計
圖2自動化測試的流程
自動化測試也是一個開發(fā)的過程,務(wù)須按照軟件開發(fā)的流程來設(shè)計:
第一階段為需求調(diào)研分析的階段,第二階段可以概括為設(shè)計階段,第三階段為編碼階段,第四為測試階段,然后就是評審驗收。
設(shè)計成三部分:環(huán)境準(zhǔn)備,測試執(zhí)行,結(jié)果監(jiān)控并發(fā)送結(jié)果報告??蚣苋鐖D2所示。
環(huán)境準(zhǔn)備部分主要是對測試環(huán)境進(jìn)行初始化,還原成一個“干凈”的環(huán)境,因為整個過程需要自動化,所以我們就需要自動執(zhí)行測試前的一些操作,先自動選擇最新產(chǎn)品版本進(jìn)行安裝,自動生成測試所需用戶信息,自動更新SVN數(shù)據(jù),自動根據(jù)配置文件更改與環(huán)境相關(guān)的數(shù)據(jù)等。
測試執(zhí)行部分采用分層設(shè)計使測試數(shù)據(jù)與腳本分離,腳本與邏輯步驟分離。根據(jù)測試用例,分離出步驟,抽象成一個個的關(guān)鍵字,每個關(guān)鍵字就是一個具體的步驟,對于web的操作選用可以selenium軟件來輔助測試,遠(yuǎn)程執(zhí)行選用可以選用STAF輔助實現(xiàn)。
結(jié)果監(jiān)控并發(fā)送結(jié)果報告部分主要是實時監(jiān)控測試過程,首先設(shè)計一個監(jiān)控程序?qū)ψ詣踊^程全程監(jiān)控,每幾分鐘就刷新一下監(jiān)控數(shù)據(jù),顯示當(dāng)然每個模塊的測試狀態(tài)、測試情況等;發(fā)送報告部分,是在測試結(jié)束后自動生成測試全部測試結(jié)果的報告發(fā)給指定的人,并能自動計算出測試的通過率。
4結(jié)語
在IT行業(yè)測試是一個重要的流程,但現(xiàn)階段很多公司仍采用傳統(tǒng)的手工測試的方案,不過我們有理由相信以后,自動化測試的必將有占據(jù)很大的市場,因為在市場要求軟件產(chǎn)品不斷的提高可靠性和可用性的情況下,需要更快更便宜的交付,而測試在時間,成本和質(zhì)量檢測占有很大的比重,所以傳統(tǒng)的測試如果不作改變,就意味著軟件項目很難滿足發(fā)展需要。總之自動化測試技術(shù)提供了一個減少軟件測試時間成本,提高軟件質(zhì)量(一致性、可重復(fù)性),同時提高軟件測試程序的可測性的機(jī)會,相信隨著軟件技術(shù)的演變,自動化測試的又會出現(xiàn)許多更好的框架設(shè)計,自動化測試必將是以后軟件測試中常用的方法。
參考文獻(xiàn)
[1]?Elfriende Dustinde(美),余昭輝,范春霞.自動化
?軟件測試實施指南[M].北京:機(jī)械工業(yè)出版社,
?2010.
[2]?商宇.基于STAF的自動化測試工具的研究和設(shè)計
?[J].云南民族大學(xué)學(xué)報(自然科學(xué)版),2009,18
?(3).
[3]?Selenium官方網(wǎng)站.http://docs.seleniumhq.org/.
?2013-4-28.
[4]?董賢偉.關(guān)鍵字驅(qū)動的自動化軟件測試的研究[D].
?南京理工大學(xué)碩士論文,2009.
(江南機(jī)電設(shè)計研究所,貴州 貴陽 550009)
摘要:軟件測試過程是很有可能實現(xiàn)自動化的過程,而實現(xiàn)測試的自動化無論對提高軟件的質(zhì)量還是減少開發(fā)成本都有現(xiàn)實意義。文章介紹了基于關(guān)鍵字的自動化測試,以曾所做過的關(guān)鍵字驅(qū)動的自動化框架設(shè)計為例進(jìn)行講解,并介紹了其他常見的自動化測試框架以及兩個在自動化測試中常用的工具。
關(guān)鍵詞:軟件測試;自動化測試;驅(qū)動測試;框架設(shè)計
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-2374(2014)22-0026-02隨著IT技術(shù)的快速革新,軟件的規(guī)模逐步變大,軟件開發(fā)人員希望在將投入運(yùn)行之前,質(zhì)量能得到保障,而測試則是保證系統(tǒng)正確性的一個必要手段,通常測試人員是軟件的第一個用戶,而且也是檢驗產(chǎn)品質(zhì)量的重要人員。據(jù)統(tǒng)計,測試在軟件開發(fā)總成本中往往要占到40%~50%甚至更多。在以往的開發(fā)和測試過程中,通過經(jīng)驗積累發(fā)現(xiàn),測試過程是極有可能實現(xiàn)自動化的,而實現(xiàn)測試的自動化無論對提高軟件的質(zhì)量還是對減少開發(fā)成本都有很大的幫助。自動化軟件測試的目的在于通過有效的利用時間和資源來提高測試效率,把測試用例轉(zhuǎn)化為自動的執(zhí)行,把人從繁瑣的體力測試中解放出來。自動化測試能做一些手工難以完成的測試,比如壓力測試,特別是在回歸測試中有很大的幫助,所以研究如何實現(xiàn)軟件測試的自動化是有意義而且是很有必要的。
1常用的自動化測試技術(shù)簡介
自動化測試技術(shù)歷經(jīng)了多個發(fā)展階段,從最初的錄制回放技術(shù)到后來的數(shù)據(jù)驅(qū)動的測試技術(shù),再到現(xiàn)在著重介紹的關(guān)鍵字驅(qū)動的自動化測試技術(shù),它們都有各自的適用之處。一般而言,后發(fā)展的技術(shù)是對以往技術(shù)的繼承和發(fā)展,具備向后兼容特性。關(guān)鍵字驅(qū)動的測試技術(shù)以它獨(dú)到的性能受到了業(yè)內(nèi)人士的青睞,并在一些領(lǐng)域得到了很大程度上的應(yīng)用。關(guān)鍵字驅(qū)動測試技術(shù)是以預(yù)先設(shè)計好的關(guān)鍵字作為依據(jù)來驅(qū)動測試事件的,并且使用關(guān)鍵字編寫的測試腳本簡單易讀并且可維護(hù)性強(qiáng)。以上幾類自動化測試手段在各個領(lǐng)域都得到了很好的應(yīng)用,但是都存在各自的優(yōu)缺點(diǎn),不能完全滿足不同領(lǐng)域的需求。
2自動化測試常用工具選取
俗話說工欲善其事,必先利其器,在框架設(shè)計中可以應(yīng)用一些優(yōu)秀工具來輔助框架的開發(fā)。自動化測試的輔助工具不勝枚舉,并被應(yīng)用到不同領(lǐng)域,本文主要介紹在后面框架設(shè)計中用到的STAF和Selenium兩個開源的工具,兩個工具對于自動化軟件測試具有諸多優(yōu)勢,在此不作詳細(xì)說明。
3關(guān)鍵字驅(qū)動的自動化測試框架設(shè)計
以曾開發(fā)過框架為例,該框架是測試一款產(chǎn)品型軟件,每個版本發(fā)布前測試的功能點(diǎn)很多都和上個甚至更早版本測試點(diǎn)相同,但都需要測試,避免新功能的引入對老的功能產(chǎn)生影響,如果采用人工測試,需要花費(fèi)大量的精力做相同的測試,以及在做回歸測試都要花費(fèi)大量的時間,為了節(jié)約成本,減少枯燥重復(fù)的測試,采用自動化測試的方法,這種方法不僅能解決上述問題,還能提高測試的準(zhǔn)確性,縮短軟件開發(fā)周期,在空閑時間運(yùn)行自動化的用例,工作時間查看結(jié)果報告,這樣就有效的利用時間和資源,提高了測試的效率,如果一旦實施開來,預(yù)計可以減少1/4的費(fèi)用。
3.1關(guān)鍵字驅(qū)動自動化測試的單元結(jié)構(gòu)
整個自動化測試的單元組成分為兩個部分,一個是測試控制端,一個是安裝產(chǎn)品的服務(wù)端。測試控制端放的就是我們的測試數(shù)據(jù),腳本代碼,測試工具等我們測試所用到的一切東西,而服務(wù)端就是我們安裝產(chǎn)品的地方,里面還包括產(chǎn)品的依附的軟件、軟件所需要的數(shù)據(jù)信息、數(shù)據(jù)庫信息等一切與產(chǎn)品有關(guān)的信息,主要是做到測試環(huán)境的隔離。如果涉及到要對產(chǎn)品直接的操作可以通過STAF這個軟件使得控制端能對服務(wù)端文件等進(jìn)行遠(yuǎn)程操作,對于UI方面我們借助selenium這個工具。
3.2關(guān)鍵字驅(qū)動
關(guān)鍵字不僅為測試提供參考依據(jù),而且被解釋執(zhí)行。當(dāng)在執(zhí)行測試數(shù)據(jù)的文件時,如果遇到關(guān)鍵字則調(diào)用對應(yīng)的關(guān)鍵字支持腳本,通過關(guān)鍵字支持腳本的執(zhí)行,將實際輸出與數(shù)據(jù)表格中的期望結(jié)果進(jìn)行比較,一致則通過,否則報錯,并將測試結(jié)果寫入測試日志文件。這樣,數(shù)據(jù)文件包含測試的邏輯內(nèi)容用來指定需要執(zhí)行的測試用例、測試步驟和測試數(shù)據(jù)信息,而支持腳本包含對被測試軟件的認(rèn)識,關(guān)鍵字的解析等,這樣就實現(xiàn)了腳本、測試數(shù)據(jù)、測試邏輯的相互獨(dú)立。
關(guān)鍵字驅(qū)動測試中,每一個關(guān)鍵字能解釋執(zhí)行相應(yīng)的腳本,通過不同的測試數(shù)據(jù),在這個測試框架中可以通過很少的代碼來產(chǎn)生大量的測試用例。同樣的代碼在用數(shù)據(jù)表來產(chǎn)生各個測試用例的同時被復(fù)用。
3.3關(guān)鍵字庫的設(shè)計
要做關(guān)鍵字驅(qū)動,就要設(shè)計關(guān)鍵字,而關(guān)鍵字設(shè)計是很重要的一步,我們在設(shè)計關(guān)鍵字時,應(yīng)該充分考慮到其擴(kuò)展性,可讀性,穩(wěn)定性等,切忌過多的設(shè)計關(guān)鍵字,造成關(guān)鍵字信息冗余,更不能遺漏設(shè)計關(guān)鍵字,致使某些需實現(xiàn)的功能無法得到精確的描述,總之一切要以特定的項目實現(xiàn)為原則來確定關(guān)鍵字地設(shè)計。
3.4自動化測試框架
圖1關(guān)鍵字驅(qū)動的自動化測試框架
如圖1所示就是一個自動化測試的結(jié)構(gòu)圖,第二層是腳本代碼,第三層是業(yè)務(wù)邏輯層,最高層,就是一些執(zhí)行文件。
腳本代碼,邏輯,數(shù)據(jù)都分離開,并且在一個文件里存儲執(zhí)行的步驟,里面按邏輯順序放了一個用例的關(guān)鍵字,這些關(guān)鍵字會調(diào)用相應(yīng)的腳本代碼,而腳本代碼里的數(shù)據(jù)又從數(shù)據(jù)的文件里調(diào)取,各層各司其職,相互獨(dú)立。當(dāng)執(zhí)行某一個用例的時候,我們就調(diào)用執(zhí)行文件,執(zhí)行文件執(zhí)行相應(yīng)的腳本,解析文件里面存儲的關(guān)鍵字,將其解析執(zhí)行相應(yīng)的腳本代碼。
3.5自動化測試框架的總體設(shè)計
圖2自動化測試的流程
自動化測試也是一個開發(fā)的過程,務(wù)須按照軟件開發(fā)的流程來設(shè)計:
第一階段為需求調(diào)研分析的階段,第二階段可以概括為設(shè)計階段,第三階段為編碼階段,第四為測試階段,然后就是評審驗收。
設(shè)計成三部分:環(huán)境準(zhǔn)備,測試執(zhí)行,結(jié)果監(jiān)控并發(fā)送結(jié)果報告。框架如圖2所示。
環(huán)境準(zhǔn)備部分主要是對測試環(huán)境進(jìn)行初始化,還原成一個“干凈”的環(huán)境,因為整個過程需要自動化,所以我們就需要自動執(zhí)行測試前的一些操作,先自動選擇最新產(chǎn)品版本進(jìn)行安裝,自動生成測試所需用戶信息,自動更新SVN數(shù)據(jù),自動根據(jù)配置文件更改與環(huán)境相關(guān)的數(shù)據(jù)等。
測試執(zhí)行部分采用分層設(shè)計使測試數(shù)據(jù)與腳本分離,腳本與邏輯步驟分離。根據(jù)測試用例,分離出步驟,抽象成一個個的關(guān)鍵字,每個關(guān)鍵字就是一個具體的步驟,對于web的操作選用可以selenium軟件來輔助測試,遠(yuǎn)程執(zhí)行選用可以選用STAF輔助實現(xiàn)。
結(jié)果監(jiān)控并發(fā)送結(jié)果報告部分主要是實時監(jiān)控測試過程,首先設(shè)計一個監(jiān)控程序?qū)ψ詣踊^程全程監(jiān)控,每幾分鐘就刷新一下監(jiān)控數(shù)據(jù),顯示當(dāng)然每個模塊的測試狀態(tài)、測試情況等;發(fā)送報告部分,是在測試結(jié)束后自動生成測試全部測試結(jié)果的報告發(fā)給指定的人,并能自動計算出測試的通過率。
4結(jié)語
在IT行業(yè)測試是一個重要的流程,但現(xiàn)階段很多公司仍采用傳統(tǒng)的手工測試的方案,不過我們有理由相信以后,自動化測試的必將有占據(jù)很大的市場,因為在市場要求軟件產(chǎn)品不斷的提高可靠性和可用性的情況下,需要更快更便宜的交付,而測試在時間,成本和質(zhì)量檢測占有很大的比重,所以傳統(tǒng)的測試如果不作改變,就意味著軟件項目很難滿足發(fā)展需要??傊詣踊瘻y試技術(shù)提供了一個減少軟件測試時間成本,提高軟件質(zhì)量(一致性、可重復(fù)性),同時提高軟件測試程序的可測性的機(jī)會,相信隨著軟件技術(shù)的演變,自動化測試的又會出現(xiàn)許多更好的框架設(shè)計,自動化測試必將是以后軟件測試中常用的方法。
參考文獻(xiàn)
[1]?Elfriende Dustinde(美),余昭輝,范春霞.自動化
?軟件測試實施指南[M].北京:機(jī)械工業(yè)出版社,
?2010.
[2]?商宇.基于STAF的自動化測試工具的研究和設(shè)計
?[J].云南民族大學(xué)學(xué)報(自然科學(xué)版),2009,18
?(3).
[3]?Selenium官方網(wǎng)站.http://docs.seleniumhq.org/.
?2013-4-28.
[4]?董賢偉.關(guān)鍵字驅(qū)動的自動化軟件測試的研究[D].
?南京理工大學(xué)碩士論文,2009.
(江南機(jī)電設(shè)計研究所,貴州 貴陽 550009)
摘要:軟件測試過程是很有可能實現(xiàn)自動化的過程,而實現(xiàn)測試的自動化無論對提高軟件的質(zhì)量還是減少開發(fā)成本都有現(xiàn)實意義。文章介紹了基于關(guān)鍵字的自動化測試,以曾所做過的關(guān)鍵字驅(qū)動的自動化框架設(shè)計為例進(jìn)行講解,并介紹了其他常見的自動化測試框架以及兩個在自動化測試中常用的工具。
關(guān)鍵詞:軟件測試;自動化測試;驅(qū)動測試;框架設(shè)計
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-2374(2014)22-0026-02隨著IT技術(shù)的快速革新,軟件的規(guī)模逐步變大,軟件開發(fā)人員希望在將投入運(yùn)行之前,質(zhì)量能得到保障,而測試則是保證系統(tǒng)正確性的一個必要手段,通常測試人員是軟件的第一個用戶,而且也是檢驗產(chǎn)品質(zhì)量的重要人員。據(jù)統(tǒng)計,測試在軟件開發(fā)總成本中往往要占到40%~50%甚至更多。在以往的開發(fā)和測試過程中,通過經(jīng)驗積累發(fā)現(xiàn),測試過程是極有可能實現(xiàn)自動化的,而實現(xiàn)測試的自動化無論對提高軟件的質(zhì)量還是對減少開發(fā)成本都有很大的幫助。自動化軟件測試的目的在于通過有效的利用時間和資源來提高測試效率,把測試用例轉(zhuǎn)化為自動的執(zhí)行,把人從繁瑣的體力測試中解放出來。自動化測試能做一些手工難以完成的測試,比如壓力測試,特別是在回歸測試中有很大的幫助,所以研究如何實現(xiàn)軟件測試的自動化是有意義而且是很有必要的。
1常用的自動化測試技術(shù)簡介
自動化測試技術(shù)歷經(jīng)了多個發(fā)展階段,從最初的錄制回放技術(shù)到后來的數(shù)據(jù)驅(qū)動的測試技術(shù),再到現(xiàn)在著重介紹的關(guān)鍵字驅(qū)動的自動化測試技術(shù),它們都有各自的適用之處。一般而言,后發(fā)展的技術(shù)是對以往技術(shù)的繼承和發(fā)展,具備向后兼容特性。關(guān)鍵字驅(qū)動的測試技術(shù)以它獨(dú)到的性能受到了業(yè)內(nèi)人士的青睞,并在一些領(lǐng)域得到了很大程度上的應(yīng)用。關(guān)鍵字驅(qū)動測試技術(shù)是以預(yù)先設(shè)計好的關(guān)鍵字作為依據(jù)來驅(qū)動測試事件的,并且使用關(guān)鍵字編寫的測試腳本簡單易讀并且可維護(hù)性強(qiáng)。以上幾類自動化測試手段在各個領(lǐng)域都得到了很好的應(yīng)用,但是都存在各自的優(yōu)缺點(diǎn),不能完全滿足不同領(lǐng)域的需求。
2自動化測試常用工具選取
俗話說工欲善其事,必先利其器,在框架設(shè)計中可以應(yīng)用一些優(yōu)秀工具來輔助框架的開發(fā)。自動化測試的輔助工具不勝枚舉,并被應(yīng)用到不同領(lǐng)域,本文主要介紹在后面框架設(shè)計中用到的STAF和Selenium兩個開源的工具,兩個工具對于自動化軟件測試具有諸多優(yōu)勢,在此不作詳細(xì)說明。
3關(guān)鍵字驅(qū)動的自動化測試框架設(shè)計
以曾開發(fā)過框架為例,該框架是測試一款產(chǎn)品型軟件,每個版本發(fā)布前測試的功能點(diǎn)很多都和上個甚至更早版本測試點(diǎn)相同,但都需要測試,避免新功能的引入對老的功能產(chǎn)生影響,如果采用人工測試,需要花費(fèi)大量的精力做相同的測試,以及在做回歸測試都要花費(fèi)大量的時間,為了節(jié)約成本,減少枯燥重復(fù)的測試,采用自動化測試的方法,這種方法不僅能解決上述問題,還能提高測試的準(zhǔn)確性,縮短軟件開發(fā)周期,在空閑時間運(yùn)行自動化的用例,工作時間查看結(jié)果報告,這樣就有效的利用時間和資源,提高了測試的效率,如果一旦實施開來,預(yù)計可以減少1/4的費(fèi)用。
3.1關(guān)鍵字驅(qū)動自動化測試的單元結(jié)構(gòu)
整個自動化測試的單元組成分為兩個部分,一個是測試控制端,一個是安裝產(chǎn)品的服務(wù)端。測試控制端放的就是我們的測試數(shù)據(jù),腳本代碼,測試工具等我們測試所用到的一切東西,而服務(wù)端就是我們安裝產(chǎn)品的地方,里面還包括產(chǎn)品的依附的軟件、軟件所需要的數(shù)據(jù)信息、數(shù)據(jù)庫信息等一切與產(chǎn)品有關(guān)的信息,主要是做到測試環(huán)境的隔離。如果涉及到要對產(chǎn)品直接的操作可以通過STAF這個軟件使得控制端能對服務(wù)端文件等進(jìn)行遠(yuǎn)程操作,對于UI方面我們借助selenium這個工具。
3.2關(guān)鍵字驅(qū)動
關(guān)鍵字不僅為測試提供參考依據(jù),而且被解釋執(zhí)行。當(dāng)在執(zhí)行測試數(shù)據(jù)的文件時,如果遇到關(guān)鍵字則調(diào)用對應(yīng)的關(guān)鍵字支持腳本,通過關(guān)鍵字支持腳本的執(zhí)行,將實際輸出與數(shù)據(jù)表格中的期望結(jié)果進(jìn)行比較,一致則通過,否則報錯,并將測試結(jié)果寫入測試日志文件。這樣,數(shù)據(jù)文件包含測試的邏輯內(nèi)容用來指定需要執(zhí)行的測試用例、測試步驟和測試數(shù)據(jù)信息,而支持腳本包含對被測試軟件的認(rèn)識,關(guān)鍵字的解析等,這樣就實現(xiàn)了腳本、測試數(shù)據(jù)、測試邏輯的相互獨(dú)立。
關(guān)鍵字驅(qū)動測試中,每一個關(guān)鍵字能解釋執(zhí)行相應(yīng)的腳本,通過不同的測試數(shù)據(jù),在這個測試框架中可以通過很少的代碼來產(chǎn)生大量的測試用例。同樣的代碼在用數(shù)據(jù)表來產(chǎn)生各個測試用例的同時被復(fù)用。
3.3關(guān)鍵字庫的設(shè)計
要做關(guān)鍵字驅(qū)動,就要設(shè)計關(guān)鍵字,而關(guān)鍵字設(shè)計是很重要的一步,我們在設(shè)計關(guān)鍵字時,應(yīng)該充分考慮到其擴(kuò)展性,可讀性,穩(wěn)定性等,切忌過多的設(shè)計關(guān)鍵字,造成關(guān)鍵字信息冗余,更不能遺漏設(shè)計關(guān)鍵字,致使某些需實現(xiàn)的功能無法得到精確的描述,總之一切要以特定的項目實現(xiàn)為原則來確定關(guān)鍵字地設(shè)計。
3.4自動化測試框架
圖1關(guān)鍵字驅(qū)動的自動化測試框架
如圖1所示就是一個自動化測試的結(jié)構(gòu)圖,第二層是腳本代碼,第三層是業(yè)務(wù)邏輯層,最高層,就是一些執(zhí)行文件。
腳本代碼,邏輯,數(shù)據(jù)都分離開,并且在一個文件里存儲執(zhí)行的步驟,里面按邏輯順序放了一個用例的關(guān)鍵字,這些關(guān)鍵字會調(diào)用相應(yīng)的腳本代碼,而腳本代碼里的數(shù)據(jù)又從數(shù)據(jù)的文件里調(diào)取,各層各司其職,相互獨(dú)立。當(dāng)執(zhí)行某一個用例的時候,我們就調(diào)用執(zhí)行文件,執(zhí)行文件執(zhí)行相應(yīng)的腳本,解析文件里面存儲的關(guān)鍵字,將其解析執(zhí)行相應(yīng)的腳本代碼。
3.5自動化測試框架的總體設(shè)計
圖2自動化測試的流程
自動化測試也是一個開發(fā)的過程,務(wù)須按照軟件開發(fā)的流程來設(shè)計:
第一階段為需求調(diào)研分析的階段,第二階段可以概括為設(shè)計階段,第三階段為編碼階段,第四為測試階段,然后就是評審驗收。
設(shè)計成三部分:環(huán)境準(zhǔn)備,測試執(zhí)行,結(jié)果監(jiān)控并發(fā)送結(jié)果報告??蚣苋鐖D2所示。
環(huán)境準(zhǔn)備部分主要是對測試環(huán)境進(jìn)行初始化,還原成一個“干凈”的環(huán)境,因為整個過程需要自動化,所以我們就需要自動執(zhí)行測試前的一些操作,先自動選擇最新產(chǎn)品版本進(jìn)行安裝,自動生成測試所需用戶信息,自動更新SVN數(shù)據(jù),自動根據(jù)配置文件更改與環(huán)境相關(guān)的數(shù)據(jù)等。
測試執(zhí)行部分采用分層設(shè)計使測試數(shù)據(jù)與腳本分離,腳本與邏輯步驟分離。根據(jù)測試用例,分離出步驟,抽象成一個個的關(guān)鍵字,每個關(guān)鍵字就是一個具體的步驟,對于web的操作選用可以selenium軟件來輔助測試,遠(yuǎn)程執(zhí)行選用可以選用STAF輔助實現(xiàn)。
結(jié)果監(jiān)控并發(fā)送結(jié)果報告部分主要是實時監(jiān)控測試過程,首先設(shè)計一個監(jiān)控程序?qū)ψ詣踊^程全程監(jiān)控,每幾分鐘就刷新一下監(jiān)控數(shù)據(jù),顯示當(dāng)然每個模塊的測試狀態(tài)、測試情況等;發(fā)送報告部分,是在測試結(jié)束后自動生成測試全部測試結(jié)果的報告發(fā)給指定的人,并能自動計算出測試的通過率。
4結(jié)語
在IT行業(yè)測試是一個重要的流程,但現(xiàn)階段很多公司仍采用傳統(tǒng)的手工測試的方案,不過我們有理由相信以后,自動化測試的必將有占據(jù)很大的市場,因為在市場要求軟件產(chǎn)品不斷的提高可靠性和可用性的情況下,需要更快更便宜的交付,而測試在時間,成本和質(zhì)量檢測占有很大的比重,所以傳統(tǒng)的測試如果不作改變,就意味著軟件項目很難滿足發(fā)展需要??傊詣踊瘻y試技術(shù)提供了一個減少軟件測試時間成本,提高軟件質(zhì)量(一致性、可重復(fù)性),同時提高軟件測試程序的可測性的機(jī)會,相信隨著軟件技術(shù)的演變,自動化測試的又會出現(xiàn)許多更好的框架設(shè)計,自動化測試必將是以后軟件測試中常用的方法。
參考文獻(xiàn)
[1]?Elfriende Dustinde(美),余昭輝,范春霞.自動化
?軟件測試實施指南[M].北京:機(jī)械工業(yè)出版社,
?2010.
[2]?商宇.基于STAF的自動化測試工具的研究和設(shè)計
?[J].云南民族大學(xué)學(xué)報(自然科學(xué)版),2009,18
?(3).
[3]?Selenium官方網(wǎng)站.http://docs.seleniumhq.org/.
?2013-4-28.
[4]?董賢偉.關(guān)鍵字驅(qū)動的自動化軟件測試的研究[D].
?南京理工大學(xué)碩士論文,2009.