福富軟件 朱立秀
自動(dòng)化測(cè)試的應(yīng)用淺析
福富軟件 朱立秀
本文分析了自動(dòng)化測(cè)試的相關(guān)技術(shù)及重要性,并結(jié)合某項(xiàng)目的實(shí)際情況,提出了自動(dòng)化測(cè)試實(shí)施的具體方案建議。
測(cè)試工具;自動(dòng)化測(cè)試(Automated Testing);補(bǔ)丁流程;版本測(cè)試;回歸測(cè)試
自動(dòng)化測(cè)試對(duì)某些項(xiàng)目的重要性是不言而喻的,對(duì)于降低測(cè)試的成本、提高測(cè)試速度、測(cè)試可重用性等方面具有很高的價(jià)值。但許多人認(rèn)為使用了測(cè)試工具就是實(shí)現(xiàn)了測(cè)試自動(dòng)化,這種理解是不對(duì)的,至少是片面的。測(cè)試工具的使用只能說(shuō)是自動(dòng)化測(cè)試的一部分,并不簡(jiǎn)單等于“自動(dòng)化測(cè)試”。自動(dòng)化測(cè)試的真正含義應(yīng)該是預(yù)設(shè)測(cè)試的輸入條件等,通過(guò)軟件來(lái)控制具體測(cè)試的步驟,對(duì)實(shí)際的輸出與預(yù)期的輸出進(jìn)行自動(dòng)對(duì)比,并可出具測(cè)試報(bào)告等功能。它不是一種測(cè)試工具或測(cè)試腳本就可實(shí)現(xiàn),而需要一個(gè)完整的解決方案,尤其在具體的大型項(xiàng)目中。
本文并不是提出直接用一個(gè)商業(yè)測(cè)試工具來(lái)實(shí)現(xiàn)項(xiàng)目的自動(dòng)化測(cè)試,而是提出一個(gè)合適的、分步驟的自動(dòng)化測(cè)試的方案建議。
自動(dòng)化測(cè)試是和手工測(cè)試相對(duì)而言的,自動(dòng)化測(cè)試可以理解為“一切可以由計(jì)算機(jī)系統(tǒng)自動(dòng)完成的測(cè)試任務(wù)都已經(jīng)由計(jì)算機(jī)系統(tǒng)或軟件工具、程序來(lái)承擔(dān)并自動(dòng)執(zhí)行”。
自動(dòng)化測(cè)試,預(yù)先設(shè)定測(cè)試輸入,通過(guò)執(zhí)行測(cè)試腳本來(lái)自動(dòng)測(cè)試軟件的功能,并自動(dòng)出具測(cè)試結(jié)果報(bào)告等。自動(dòng)化測(cè)試,可以借助測(cè)試工具(也包括某些策略等)來(lái)實(shí)施具體的測(cè)試,這個(gè)過(guò)程可以是全自動(dòng)的,也可以是半自動(dòng)的。
“自動(dòng)化測(cè)試(Automated Testing)”與“測(cè)試自動(dòng)化(Test Automation)”嚴(yán)格來(lái)說(shuō)是不一樣的。
測(cè)試自動(dòng)化更側(cè)重指所有的測(cè)試工作都由軟件自動(dòng)完成,包括測(cè)試環(huán)境搭建、測(cè)試腳本生成、測(cè)試步驟執(zhí)行、測(cè)試結(jié)果分析、測(cè)試報(bào)告生成等。測(cè)試自動(dòng)化是測(cè)試工程師所追求的一種理想境界,但是具體項(xiàng)目中(尤其是大型項(xiàng)目)很難實(shí)現(xiàn)的。不過(guò)我們可以向這個(gè)方向去努力,改進(jìn)每項(xiàng)工作,不斷接近測(cè)試自動(dòng)化。
在具體的項(xiàng)目中實(shí)施自動(dòng)化測(cè)試時(shí),應(yīng)該要從工作效率、產(chǎn)品質(zhì)量的目的出發(fā),而不是為了自動(dòng)化而自動(dòng)化,否則有可能出現(xiàn)投入大于產(chǎn)出,得不償失。
自動(dòng)化測(cè)試的好處:
快速:自動(dòng)化測(cè)試運(yùn)行速度比手工測(cè)試快的多,可以在短時(shí)間內(nèi),完成大量的測(cè)試用例的回歸,節(jié)省測(cè)試時(shí)間。
降低人工成本:自動(dòng)化測(cè)試以機(jī)器代替人工操作,可降低手工重復(fù)測(cè)試的人工成本。
可重用:在不同版本、不同環(huán)境下,自動(dòng)化測(cè)試用例可重復(fù)使用,提高了投資效益。
可衡量:手工測(cè)試多數(shù)是模糊測(cè)試用例,無(wú)法對(duì)具體的測(cè)試質(zhì)量進(jìn)行衡量。自動(dòng)化測(cè)試是雞西華測(cè)試用例,可以明確測(cè)試范圍、流程和數(shù)據(jù),消除人為失誤,使測(cè)試過(guò)程和結(jié)果清晰可見(jiàn),測(cè)試質(zhì)量可衡量。
傳統(tǒng)的自動(dòng)化測(cè)試方法使直接使用商用工具,通過(guò)錄制、回放,實(shí)現(xiàn)測(cè)試自動(dòng)化。這種方法,對(duì)于業(yè)務(wù)復(fù)雜、版本變更頻繁的項(xiàng)目很難試用。
針對(duì)業(yè)務(wù)復(fù)雜、版本變更頻繁的項(xiàng)目,考慮到單個(gè)補(bǔ)丁包的需求、問(wèn)題多樣化,自動(dòng)化測(cè)試的難度較大,而實(shí)際效果反而不佳;同時(shí)項(xiàng)目的版本發(fā)布后問(wèn)題往往較少發(fā)生在單個(gè)補(bǔ)丁模塊上,而較多的體現(xiàn)在關(guān)聯(lián)模塊或系統(tǒng)整體上,自動(dòng)化測(cè)試更多的是考慮在版本測(cè)試及回歸測(cè)試階段進(jìn)行實(shí)施。
自動(dòng)化測(cè)試實(shí)施主要包含以下幾個(gè)步驟:(1)自動(dòng)化測(cè)試環(huán)境
搭建一個(gè)完整的穩(wěn)定的測(cè)試環(huán)境。
該環(huán)境除了包括系統(tǒng)自身的模塊功能外,還要能模擬所有的外部接口,必要時(shí),需要開(kāi)發(fā)一系列的接口工具,模擬外部接口的輸入、輸出,以達(dá)到測(cè)試覆蓋的完整性。
該環(huán)境需要穩(wěn)定可用,包括程序版本、數(shù)據(jù)等,并進(jìn)行嚴(yán)格管理。(2)測(cè)試案例庫(kù)的管理
測(cè)試質(zhì)量的高低,很大程度上取決于測(cè)試案例的質(zhì)量及覆蓋的范圍,考慮到項(xiàng)目較為復(fù)雜龐大,功能模塊多,業(yè)務(wù)場(chǎng)景及數(shù)據(jù)變化多,測(cè)試案例庫(kù)的整理是一項(xiàng)長(zhǎng)期而又繁重的工作,除了考慮各個(gè)模塊的正常功能案例外,還要考慮異常的案例、全流程貫穿的案例等,同時(shí)還要將以往曾經(jīng)出現(xiàn)過(guò)的問(wèn)題場(chǎng)景補(bǔ)充到案例庫(kù)中,并在后續(xù)不斷完善測(cè)試案例庫(kù)。測(cè)試案例庫(kù)的管理也為下面的自動(dòng)化測(cè)試提供堅(jiān)實(shí)的基礎(chǔ)。
(3)測(cè)試腳本和測(cè)試數(shù)據(jù)的管理
可以考慮采用CVS或者SVN工具來(lái)管理測(cè)試腳本及測(cè)試數(shù)據(jù)。它們能實(shí)現(xiàn)高度組織化的目錄結(jié)構(gòu),對(duì)測(cè)試模塊、測(cè)試數(shù)據(jù)的組織結(jié)構(gòu)進(jìn)行匹配,并做到分級(jí)管理,從而形成一個(gè)完整的測(cè)試腳本及測(cè)試用例的管理庫(kù)。測(cè)試腳本的編寫(xiě)要有一套成熟的編寫(xiě)規(guī)范,并采用分層設(shè)計(jì)思想:a.持久層,包含數(shù)據(jù)資源庫(kù)、對(duì)象資源庫(kù)及統(tǒng)一的接口;b.邏輯層,包含基本業(yè)務(wù)邏輯的封裝,API的調(diào)用;c.腳本層,包含測(cè)試步驟的描述等。測(cè)試工程師基于這些在編寫(xiě)測(cè)試腳本時(shí)就可以相對(duì)輕松,可以較大的提升測(cè)試的效率。
(4)測(cè)試腳本執(zhí)行的管理
在測(cè)試腳本及測(cè)試數(shù)據(jù)準(zhǔn)備好后,接下去就是要批量的執(zhí)行對(duì)應(yīng)的測(cè)試腳本。要有一個(gè)測(cè)試腳本執(zhí)行管理系統(tǒng)對(duì)測(cè)試腳本的執(zhí)行進(jìn)行管理:在特定的時(shí)候執(zhí)行選定的測(cè)試腳本;能夠動(dòng)態(tài)地跟蹤當(dāng)前測(cè)試任務(wù)的狀態(tài),如進(jìn)度百分比、成功還是失??;能夠?qū)崿F(xiàn)多個(gè)用戶提交的管理等。
(5)測(cè)試結(jié)果的管理。
測(cè)試結(jié)果的管理主要指測(cè)試結(jié)果的展示與分析,其輸入包含測(cè)試執(zhí)行過(guò)程中的日志信息、錯(cuò)誤信息及測(cè)試結(jié)果數(shù)據(jù)。要能對(duì)測(cè)試結(jié)果進(jìn)行圖表等直觀展示,并自動(dòng)形成測(cè)試報(bào)告;還可以對(duì)大量的測(cè)試日志信息進(jìn)行分析,并做些統(tǒng)計(jì)比較等,分析出測(cè)試的結(jié)果趨勢(shì)等;對(duì)錯(cuò)誤日志進(jìn)行分析,總結(jié)測(cè)試失敗的教訓(xùn),并不斷改進(jìn)測(cè)試過(guò)程,較少失敗概率。
自動(dòng)化測(cè)試的應(yīng)用是一個(gè)長(zhǎng)期的過(guò)程,也不僅僅是測(cè)試人員的工作,要想能在項(xiàng)目中進(jìn)行自動(dòng)化測(cè)試的實(shí)施,前期需要投入較多的人員及時(shí)間,包括案例、數(shù)據(jù)的整理固化,包括測(cè)試接口工具的開(kāi)發(fā),測(cè)試腳本的編寫(xiě)等;自動(dòng)化測(cè)試實(shí)施后,也需要一個(gè)較長(zhǎng)的時(shí)間來(lái)完善,才能逐漸提高項(xiàng)目的自動(dòng)化測(cè)試程度,達(dá)到提高測(cè)試效率、提高測(cè)試質(zhì)量、降低測(cè)試成本的目的。
[1]Bach, James. 1996. “Test Automation Snake Oil.” Windows Technical Journal , (October):40-44.http://www.satisfice.com/articles/ test_automation_snake_oil.pdf.
[2]Dustin,Elfriede.1999.“Lessons in Test Automation.”Software Testing and Quality Engineering(September):16-22.http://www.stickyminds. com/sitewide.asp?ObjectId=1802&ObjectType=ART&Function=edetail.
[3]Fewster,Mark and Dorothy Graham. 1999. Software Test Automation,Addison-Wesley.
[4]Groder, Chip.“Building Maintainable GUI Tests”in [Fewster 1999].