陳臘梅
摘要:測試自動化是大型軟件測試的一個重要測試環(huán)節(jié),可以節(jié)省測試人力,對待測軟件做最基本的評估,作用不可替代。但是自動化測試如果組織設(shè)計不到位,測試效果會比較差,已經(jīng)做好的自動化成果也不能得到很好的應(yīng)用。本文介紹的數(shù)據(jù)驅(qū)動和關(guān)鍵字驅(qū)動就是讓測試數(shù)據(jù)從自動化腳本中分離出來單獨維護,很好的解決了測試腳本的重用和維護問題。
關(guān)鍵詞:自動化測試;數(shù)據(jù)驅(qū)動;關(guān)鍵字驅(qū)動;測試庫
中圖分類號:TP39 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2016.04.021
0 引言
用戶需求月新日異,軟件的升級和換代很頻繁。軟件新老版本數(shù)據(jù)、功能的兼容性是必須要保證的,所以軟件測試中數(shù)據(jù)核查和比對是非常常見的測試內(nèi)容。這項工作繁瑣而重復(fù),而且極容易出錯,迫切需要實現(xiàn)自動化比對。
自動化測試的最基本要求是,測試內(nèi)容重復(fù)、測試結(jié)構(gòu)單一、測試用例變化比較小??墒俏覀儗嶋H面對要比對的數(shù)據(jù)卻是多種多樣的,導(dǎo)致自動化測試腳本頻繁變更,增加了腳本的測試和維護成本。基于上述問題,本文參考現(xiàn)今比較流行的關(guān)鍵字驅(qū)動技術(shù),實現(xiàn)了測試數(shù)據(jù)和測試腳本分離。這樣測試人員只需要按照一定格式來編寫數(shù)據(jù),定義對應(yīng)的測試動作(關(guān)鍵字)就能實現(xiàn)自動化比對。在軟件測試的過程中,需要對軟件產(chǎn)品的重要參數(shù)進行比對。如果需要比對的參數(shù)的數(shù)目巨大。手工測試的工作量就比較大。
本文研究了當前最主要的自動化測試方法,并在這些方法中找到最適合本軟件的自動化測試方法。以實現(xiàn)自動化比對軟件參數(shù)為例,本文介紹了幾種自動化測試方法。重點介紹關(guān)鍵字驅(qū)動的自動化測試的基本理論,并且在實踐中使用了關(guān)鍵字驅(qū)動自動化測試,分析了關(guān)鍵字驅(qū)動測試的優(yōu)點和缺點,得出了其良好的可執(zhí)行、可推廣的特性。
1 測試腳本和測試庫
自動化測試即是直接對被測對象編寫測試腳本,實現(xiàn)自動化測試,如圖:
如果被測對象比較復(fù)雜,測試腳本也要[模塊化],從而實現(xiàn)腳本重用,即是測試庫。如圖:
這種通過編寫測試腳本直接測試被測系統(tǒng)解放了繁瑣的手工測試,無疑是一個重大進步。但是測試人員新增了測試腳本的學(xué)習維護工作,需要有比較強的編碼能力,不適合自動化測試的推廣和優(yōu)化。
2 數(shù)據(jù)驅(qū)動
針對上面說的缺點,研究人員推出一種新的測試技術(shù),即數(shù)據(jù)驅(qū)動。數(shù)據(jù)驅(qū)動簡單的說:將測試數(shù)據(jù)從測試腳本中分離出來。熟悉被測系統(tǒng)業(yè)務(wù)的測試人員負責編寫測試數(shù)據(jù),具有編碼能力但不熟悉業(yè)務(wù)的測試人員負責編寫測試腳本,測試腳本分析、解釋測試數(shù)據(jù),調(diào)用已有測試函數(shù),完成測試。
數(shù)據(jù)驅(qū)動的測試示意如下圖:
在實際項目中,測試庫和測試腳本一般都是由一個團隊完成,這個團隊熟悉編碼技術(shù),熟悉最前沿的測試繼續(xù),所搭建的測試框架能很好的把被測系統(tǒng)和測試數(shù)據(jù)有效的鏈接起來。
測試數(shù)據(jù)和被測系統(tǒng)是另外一個團隊完成,這個團隊熟悉被測系統(tǒng)的所有業(yè)務(wù),能熟練編寫有效的測試數(shù)據(jù),能有效使用驅(qū)動腳本實現(xiàn)自動化測試。
本文要解決的自動化測試需求是:如果操作前參數(shù)編號一致,表示是同一個參數(shù),參數(shù)值一致表示處理正確。測試數(shù)據(jù)格式如下:
數(shù)據(jù)驅(qū)動自動化測試的優(yōu)點:
按照這種方式組織的自動化比對,測試人員只需要維護好如上表格。測試時執(zhí)行一次腳本,即使有幾千個參數(shù),也能在幾秒內(nèi)完成測試。再借用robot framework實現(xiàn)原始數(shù)據(jù)的自動提取和測試腳本的自動執(zhí)行,幾乎可以完全脫離人工操作。
數(shù)據(jù)驅(qū)動自動化測試的缺點或限制:
數(shù)據(jù)與腳本分離方式的自動化測試的最大限制是,被測對象相對單一,執(zhí)行操作必須完全一致,參數(shù)格式和個數(shù)有嚴格限制。例如表1中,如果對比的不是一個參數(shù),而是參數(shù)編號和參數(shù)名都可能有變化,這種數(shù)據(jù)驅(qū)動方式就不太容易處理。
3 關(guān)鍵字驅(qū)動
相比數(shù)據(jù)驅(qū)動,關(guān)鍵字驅(qū)動的顯著改進是把執(zhí)行操作作為關(guān)鍵字單獨列出來解析。對不同的關(guān)鍵字做不同的操作,這樣就能擺脫數(shù)據(jù)驅(qū)動的關(guān)鍵束縛:只能執(zhí)行一種操作。這樣需要解析器不僅能解析數(shù)據(jù)還要能解析關(guān)鍵字。如圖:
如果發(fā)生需求變化,需要同時進行單參數(shù)和多參數(shù)比較兩種操作。多參數(shù)比較需要同時比較參數(shù)編號和參數(shù)名稱(文中為參數(shù)1和參數(shù)2),再確認是否是同一參數(shù),關(guān)鍵字驅(qū)動測試數(shù)據(jù)格式如下:
關(guān)鍵字驅(qū)動自動化測試的優(yōu)點:
測試人員根據(jù)實際需要設(shè)計表格,測試腳本讀取分析表格,執(zhí)行測試用例。如果測試需求發(fā)生變化,可以追加定義關(guān)鍵字,追加測試庫的編寫,對原有測試腳本沒有任何沖擊,維護方便。
另外,由于測試數(shù)據(jù)完全獨立與測試腳本和被測代碼,所以測試數(shù)據(jù)完全可以在測試腳本代碼實現(xiàn)以前就完成編寫,并由此推動測試腳本的編寫。
關(guān)鍵字驅(qū)動自動化測試的缺點和限制:
數(shù)據(jù)表格相對復(fù)雜,增加了腳本解析的難度。不過,Python語言具有強大的文本處理能力,分析處理這種格式的表格還是比較容易的。
在實踐中,我們主要采用關(guān)鍵字驅(qū)動自動化測試方式來組織數(shù)據(jù)和編碼實現(xiàn)。
4 實現(xiàn)介紹
在實際測試中,本文用python來實現(xiàn)文本和表格的解析和比對,實現(xiàn)測試庫的編寫。用robotframework搭建測試框架,調(diào)用測試庫以實現(xiàn)文本的自動提取、分析、比對和測試結(jié)果的輸出。
輸出日志如下:
Test1 pass
Test2 pass
Test3 pass
……
Test300 pass
OUTPUT D:\測試比對結(jié)果\result.xml
5 總結(jié)
通過對比幾種自動化測試方法,我們最終使用關(guān)鍵字驅(qū)動同時結(jié)合數(shù)據(jù)驅(qū)動方式來組織我們的自動化測試。腳本基本能做到一次成型,后繼有新需求只是追加腳本,對原有腳本沒有任何影響。
測試腳本和測試數(shù)據(jù)完全分離,實際測試人員只需要具備最基本的文本編輯能力就能完成所有測試任務(wù)。新腳本能完全兼容舊的測試數(shù)據(jù),大大降低維護成本。類似本文描述的需求,各種產(chǎn)品、各種系統(tǒng)都可以參考,實現(xiàn)方便。