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