回歸測試是指修改了舊代碼之后,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤;貧w測試作為軟件生命周期的一個重要組成部分,在整個軟件測試過程中占有很大的比重,并且伴隨著漸進和快速迭代開發的廣泛應用,新版本的連續發布對回歸測試的頻率和效率都有了更高的要求。因此自動化回歸測試無論是從時間、效率還是成本的角度考慮,都是解決這一問題的不二選擇。本文隨著回歸測試的自動化程度不同而展開如下:手工回歸測試 -> 自動化回歸測試 -> 無需人工干預的自動化回歸測試 -> 無需人工干預的跨平臺并發自動化回歸測試。
1. 手工回歸測試
手工回歸測試軟件一般由以下步驟組成:
監測并下載最新版本的被測軟件
準備測試環境
安裝被測軟件
手工執行測試用例
記錄執行結果
2. 自動化回歸測試
2.1. 自動化回歸測試工具
回歸測試的步驟以及回歸測試用例本身相對固定的特點,保證了自動化回歸測試的可行性。除了利用 Java,ANT 等直接開發自動化腳本以外,各種自動化測試的軟件和工具也保證了自動化回歸測試的可行性:
IBM® Rational® Functional Tester(RFT)是一個面向對象的自動化測試工具,用于測試 Windows® 2000、Windows® XP 和 Linux 平臺上的基于 Java、HTML、VB.NET、Microsoft® Windows® 的應用軟件。
Software Test Automation Framework (STAF) 是一個開源的、跨平臺、支持多語言的自動化測試框架,它是基于可重用的組件來構建的。
2.2 .自動化回歸測試的可行性
將手工測試自動化,首先需要考慮的是手工測試的每一步(見章節 1)是否可以實現自動化。換而言之,也就是是否可以利用命令行操作或者腳本語言來代替手工測試中需要人機交互的部分:
MILY: Arial">(自動)監測并下載最新版本的被測軟件
根據被測軟件存放的服務器類型、協議的不同,可以利用相應的命令行操作工具,實現自動監測并下載最新版本的被測軟件。例如:wget,mget。
。ㄗ詣樱蕚錅y試環境
目前被廣泛使用的 VMware 虛擬機,不但支持多種操作系統,可以通過 revert to snapshot 恢復到任何環境,還提供了命令行工具 vmrun 。因此,我們可以利用命令行操作實現自動將虛擬機還原到最初的干凈的測試環境,并且開啟虛擬機。舉例如下 :
<VMware Install Path>VMware VIXvmrun revertToSnapshot <your-VM> <some-snapshot>
<VMware Install Path>VMware VIXvmrun start <your-VM>
。ㄗ詣樱┌惭b被測軟件
大部分的軟件都會提供命令行安裝方式,也就是所謂的“ Silent Installation ”。利用提前設置好的安裝配置信息,實現無需用戶輸入的自動安裝軟件并不是一件難事。
。ㄗ詣樱﹫绦袦y試用例
Rational Functional Tester 是目前非常流行的一個面向對象的自動化測試工具。通過編寫 RFT 腳本,可以實現對 Java、.Net 以及基于 Web 的各種應用程序的自動測試。
。ㄗ詣樱┯涗泩绦薪Y果。
Rational Functional Tester 提供了兩種開發環境:Eclipse 框架中的 Java™ 或者 Microsoft™ Visual Studio™ 開發系統中的 Microsoft™ Visual Basic™ .NET 。無論是使用哪一種腳本,都可以通過嵌入 DAO 的方式訪問數據庫,進而將 RFT 腳本的執行結果自動記錄到數據庫中,再經由網頁展現出來,見圖 1 。
圖 1. 自動記錄執行結果
2.3. 自動化回歸測試
基于以上的可行性分析,手工回歸測試的每一步都是可以通過命令行操作,或者腳本語言來實現的。如果將把手工回歸測試的每一步分別自動化,比喻成一顆顆的珍珠,那么 STAF/STAX 就是一根繩子,它將一顆顆珍珠串起,構成了一根美麗的項鏈。
Software Test Automation Framework (STAF) 是開源、跨平臺、支持多語言并且基于可重用的組件來構建的自動化測試框架。 STAF eXecution engine (STAX) 是基于 XML 的執行引擎,它是 STAF 提供的眾多外部服務中的一種。簡單來說,STAX 腳本不但可以利用 STAF 提供的各種內部、外部服務,方便快捷地實現很多功能,而且它還可以在任何一臺裝有 STAF 的機器上遠程同時執行;A架構見圖 2 。
圖 2. 基礎架構
為了方便重用,我們可以把手工回歸測試的各個部分寫成獨立的 STAX 腳本,如圖 3 所示。
文章來源于領測軟件測試網 http://www.kjueaiud.com/