自動化測試較為官方的解釋是把人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。在這個過程里,時間、人力和硬件資源成本都得到了節(jié)省,通過評審之后的測試用例,測試人員分步驟執(zhí)行用例中的規(guī)程,再將實(shí)際運(yùn)行結(jié)果和預(yù)期結(jié)果進(jìn)行對比。
自動化測試的技術(shù)非常多,今天筆者重點(diǎn)介紹3種常見的技術(shù)。
1.錄制與回放測試
錄制是指使用自動化測試工具對桌面應(yīng)用程序或者是Web頁面的某一項(xiàng)功能進(jìn)行測試并記錄操作過程。錄制過程中程序數(shù)據(jù)和腳本混合,每一個測試過程都會生成單獨(dú)的測試腳本。無論是簡單的界面還是復(fù)雜的界面,進(jìn)行多次測試就需要多次錄制。
錄制過程會生成對應(yīng)的腳本?;胤趴梢圆榭翠浿七^程中存在的錯誤和不足,如圖片刷新緩慢、URL地址無法打開等。
2.腳本測試
測試腳本是測試計算機(jī)程序執(zhí)行的指令集合。腳本可以使用錄制過程中生成的腳本,這些腳本一般是由JavaScript、Python、Perl等語言生成。測試腳本主要有以下幾種。
(1)線性腳本
線性腳本是指通過手動執(zhí)行測試用例得到的腳本,包括基本的鼠標(biāo)事件、頁面選擇、數(shù)據(jù)輸入等操作。線性腳本可以完整地進(jìn)行回放。
(2)結(jié)構(gòu)化腳本
結(jié)構(gòu)化腳本在測試過程中具有邏輯順序以及函數(shù)調(diào)用功能,如順序執(zhí)行、分支語句執(zhí)行、循環(huán)等。結(jié)構(gòu)化腳本可以靈活地測試各種復(fù)雜功能。
(3)共享腳本
在測試中,一個腳本可以調(diào)用其他腳本進(jìn)行測試,這些被調(diào)用的腳本就是共享腳本。共享腳本可以使腳本被多個測試用例共享。
3.數(shù)據(jù)驅(qū)動測試
數(shù)據(jù)驅(qū)動指的是從數(shù)據(jù)文件中讀取輸入數(shù)據(jù)并將數(shù)據(jù)以參數(shù)的形式輸入腳本測試,不同的測試用例使用不同類型的數(shù)據(jù)文件。數(shù)據(jù)驅(qū)動模式實(shí)現(xiàn)了數(shù)據(jù)和腳本分離,相對于錄制與回放測試技術(shù),數(shù)據(jù)驅(qū)動測試極大地提高了腳本利用率和可維護(hù)性,但是對于界面變化較大的情景不適合數(shù)據(jù)驅(qū)動測試。數(shù)據(jù)驅(qū)動測試主要包括以下幾種。
(1)關(guān)鍵字驅(qū)動測試
關(guān)鍵字驅(qū)動是對數(shù)據(jù)驅(qū)動的改進(jìn),它將數(shù)據(jù)域與腳本分離、界面元素與內(nèi)部對象分離、測試過程與實(shí)現(xiàn)細(xì)節(jié)分離。關(guān)鍵字驅(qū)動的測試邏輯為按照關(guān)鍵字進(jìn)行分解得到數(shù)據(jù)文件,常用的關(guān)鍵字主要包括被操作對象、操作和值。
(2)行為驅(qū)動測試
行為驅(qū)動測試指的是根據(jù)不同的測試場景設(shè)計不同的測試用例,需要開發(fā)人員、測試人員、產(chǎn)品業(yè)務(wù)分析人員等協(xié)作完成。行為驅(qū)動測試是基于當(dāng)前項(xiàng)目的業(yè)務(wù)需求、數(shù)據(jù)處理、中間層進(jìn)行的協(xié)作測試,它注重的是測試軟件的內(nèi)部運(yùn)作變化,從而解決單元測試中實(shí)現(xiàn)的細(xì)節(jié)問題。