簡介:在一個自動化測試系統中按日程安排一項測試是實現在特定的日期和時間內執行任務的重要組成部分。它不但能夠幫助您更有效地使用測試資源,而且能夠幫助您監視測試結果。本文介紹了關于這方面一些應當考慮的事項,日程安排子系統的構件的基本情況,它所包含的功能,以及怎樣使用 Java 語言開發一個日程安排等等。
向自動化測試添加日程安排的優勢與挑戰
測試軟件、系統硬件,以及不同軟件平臺之間的防火墻都可以使用測試自動化系統。您可以使用為執行回歸測試設計的自動化框架,以創建任務,執行它們,并根據不同的實驗資源分析測試結果。這些框架適用于命令行界面以及圖形用戶界面。自動化系統的一個重要組成部分是安排一項任務的過程。
本文可以讓您對自動化系統的結構有一個基本的了解,該系統與日程安排機理集成在一起,以支持您使用日程安排功能來設計和開發一個自動化框架。文中還向您提供了使用 Java 語言開發一個自動化框架的概述。
日程安排中測試自動化的優勢
您可以將日程安排看做自動化系統的子系統。在自動化框架中加入日程安排功能,使得您可以安排每日的,每周的,每月的任務,如有需要可以重復安排。您還可以使用日程安排者來選擇實驗資源來執行測試回歸。這減少了人為干預的概率,并在未來指定的時間自動執行。日程安排者可以幫助您管理回歸測試的時間與資源,并有助于提高測試的性能,因此提高了成功率。
挑戰
● 收集關于執行環境的信息
當您需要資源來執行任務時,得到適當狀態的實驗室資源通常來說是非常困難的。檢入是非常重要的。
● 團隊的地理分布
使用自動化系統的團隊可能來自于不同的國家。他們的時區與系統的時區可能不同,自動化服務器就是在系統上運行的。每個日程的時間與日期必須與自動化系統的時間保持同步化。
● 飛行時提供需要的信息
有時,需要提供一些額外的信息,例如在執行時,構建和沙箱層次。日程安排者應該能夠處理執行期間用戶執行的更改。
● 與自動化系統的其他構件聯合工作
日程安排是自動化系統的子系統,這樣它就可以與自動化系統的其余構件集成了,以產生需要的結果。構件之間交流或者協調不足在測試實驗資源中產生嚴重的硬件問題。
● 滿足每一個和所有團隊的日程安排需求
每一個團隊都有其自己的自動化需求。有些團隊可能需要執行日常的任務。挑戰在于理解來自所有團隊的需求,并開發一種日程安排機理,來處理所有不同的需求。
自動化系統的結構
測試自動化系統有兩個主要的構件:
● 用戶界面
→ 圖形化用戶界面
→ 命令行界面
● 測試引擎
圖形用戶界面(GUI)提供了一種管理測試的簡單方法。它有助于創建運行不同實驗資源的測試回歸,以測試安裝在其上的圖片。
命令行界面是執行測試的另外一種方法。在這里,用戶必須要執行一點更多的操作,以創建和管理其測試和測試回歸,因為測試與測試回歸的創建與管理需要頻繁的用戶交流。
測試引擎會接受來自 GUI 或者命令行界面,或者兩者的測試與測試回歸,并在實驗資源上
自動化系統的構件如圖1 所示。它包含了用戶界面,測試引擎以及測試系統。接下來的章節描述了這些構件的功能
圖 1. 一個自動化系統的功能

用戶界面
這種界面可以是一種基于網絡的 GUI 或者命令行。您可以使用網絡技術來開發一個基于網絡的界面。對于一個不使用瀏覽器的程序來說,一個命令行界面起的作用十分有限。作為測試自動化系統的一部分,用戶界面發揮著重要的作用。這就是測試自動化開始的地方。不同的用戶界面伴隨著不同的特性。其中有些界面包含了以團隊的格式維護用戶工作區域。下面就是用戶界面的主要任務:
1、提供一個用戶友好性的界面
2、提供一種輕松的方式來創建測試和測試回歸
3、為測試提供測試執行環境
4、顯示測試結果
5、分配管理的資源
測試引擎
測試引擎就是測試自動化系統的核心,因為它使用不同的實驗資源來運行測試。這種類型的軟件用于測試軟件,硬件,或者一個完整的系統。選擇一個合適的測試引擎非常重要。它取決于您想要實現自動化的測試的類型。不同的測試引擎提供了不同的功能。例如,IBM? Rational? Build Forge? 以及開放源 STAX 引擎提供了并發特性以及測試的序列性執行。有時,測試自動化框架包含了測試引擎,它支持框架處理的自動化。測試引擎主要有以下任務:
1、對程序或者圖片執行(運行)測試或者測試回歸
2、重復測試
3、收集測試結果
4、分析測試結果
5、監視執行結果
6、向測試員發送關于失敗信息的電子郵件通知
自動化進程
多個平臺的微觀開發需要收集來自開發員的源代碼,并將代碼整合成一個單元。當實驗資源安裝該單元之后,它需要多種測試來確認它的正確性。這種測試的自動化降低了測試員執行測試所需要的時間,這樣他們就可以將更多的注意力放在微觀開發上了。
很明顯,自動化需要減少手動與測試相交流所需要的時間與工作量。通過運行腳本或者運行命令都可以執行測試。您可以以任何語言來編寫腳本。測試引擎應該能夠分析這些腳本訪問并執行測試。
框架的選擇,與測試引擎一起,都是自動化進程的重要部分。測試自動化系統中可以使用多種框架,例如開放源軟件測試自動化框架(STAF),或者您可以創建自己的框架。
許多公司通過創建自己的自動化框架和測試引擎,來處理自動化。在您擁有自動化系統的兩個構件之后,您可以在自動化進程之中使用它們來執行以下的任務:
1、使用用戶界面來創建和管理測試以及測試回歸
2、提交測試以在程序或者圖片上運行
3、對程序或者圖片(測試引擎)執行測試
4、通知測試員需要注意的事項
5、生成和分析測試結果(測試引擎)
6、如果測試失敗的話向測試員發送電子郵件
日程安排的自動化系統
帶有日程安排功能的自動化系統如圖2 所示。
圖 2. 日程安排者的自動化系統

它包含了一個或者多個名為安排者的構件。安排者的作用在于識別您想要執行任務的類型。如果它的類型是安排類型的,那么安排者將會指導引擎安排任務;或者,他會讓測試引擎直接執行測試。您可以通過用戶界面來安排執行。
構建在日程安排功能之上的自動化框架
自動化框架,它包含了日程安排特性,可能需要在一個系統上運行自動化服務器。來自不同團隊的用戶可能位于不同的地理區域,這使得日程安排的時間也有差異。日程安排者應該能夠識別時區差異,并根據用戶的請求來安排任務。
自動化框架可以幫助您基于 圖3中給出的選項來創建日程安排。如果有需要,您還可以指定安排的日期和時間,并重復日程安排。圖3 中描述的安排表安排了日常的任務,并計劃到三天之后。它還顯示了運行測試的日期。用戶界面還提供了安排準備期間選擇測試系統和任務的選項(屏幕截圖中沒有顯示出來)。
圖 3. 帶有日程安排者 UI 的自動化框架

使用 Java 技術實施日程安排特性
Java 提供了計時器框架,使得程序員能夠更輕松地執行日程安排。它包含了一個 java.util.Timer 以及 java.util.TimerTask 類。Timer 與 TimerTask 協同工作以提供日程安排功能。您可以使用計時器來安排一項任務。任務可以是 TimerTask 的一個實例。在創建一個任務之后,您可以使用 Timer 實例來安排它。計時器使用以下的方法來幫助日程安排:
● 空白日程(TimerTask TTask,等待較長的時間)
● 空白日程(TimerTask TTask,等待較長的時間,長時間的重復)
● 空白日程(TimerTask TTask,Date targetTime)
● 空白日程(TimerTask TTask,Date targetTime,長時間重復)
● 測試引擎生成了測試結果并分析它
● 空白的 scheduleAtFixedRate(TimerTask TTask,長時間的重復,長時間的重復)
● 空白 scheduleAtFixedRate(TimerTask TTask,Date targetTime,長時間的重復)
這種方法清晰地告訴了您怎樣去計劃一項任務。為了提供更大的靈活性,您可以使用觀察者模式來提供一系列的日程安排機理。使用這種方法,可以提供一種內線程的交流方式,通過通知您新安排的產生來通知日程安排者。這種方法基于 Java 技術。您可以實施日程安排機理,它最適合于自動化的框架。
圖 4 描述了日程安排構件之間的交流。一旦有人添加了一條安排,那么安排者會自動通知執行者或者測試啟動者構件以執行測試。一旦給出了日程安排,它就必須從安排列表中刪除,并讓下一個安排的測試在指定的時間運行。
圖 4. 日程安排構件之間的交流

創建和刪除一條任務
注意:
您可以使用 Java 中的 Timer 類,用以下的方法取消或者甚至刪除安排的任務:
● void cancel() // cancel the timer thread
● int purge () // delete the cancelled task from timers queue
擁有日程安排功能的自動化系統的框架
接下來的框架描述就是一種解決方案,您可以使用它來理解自動化框架的操作。正如前面所描述的那樣,自動化系統包括用戶界面,測試引擎,測試的系統。自動化框架包含了以下的基本構件:
● 用戶界面,它可以是基于網絡的
● 存儲您想要執行任務的數據庫
● 一個持續性檢查執行任務數據庫的進程
● 從以上進程中獲取任務的安排者
● 執行日程安排者提供任務的測試引擎
圖 5 描述了自動化系統構件之間的完整交流:
用戶添加執行的任務,以及安排的日期與時間,和測試的系統。
該信息存儲在數據庫之中。
daemon 會不斷運行進程,以從數據庫中獲得任務,將其交給日程安排者,然后添加包含系統健康狀況測試的信息。
然后日程安排者會將任務交給測試執行引擎,與測試系統相交流。
圖 5. 自動化系統構件之間的完整交流

網絡框架的其他責任在于得到測試的結果并分析它。日程安排者幫助您管理自動化系統的以下方面:
● 測試回歸,它包含了您對測試系統想要執行的任務
● 測試系統
● 如有需要的話,執行測試回歸和重復的日期與時間
性能評價
自動化不但能夠幫助您更有效地管理花在重復性測試上的時間,而且能夠幫助您分析測試的結果。它能讓您將更多的注意力放在微觀開發上,而不是把大把的時間花在測試上。一旦開發員進行微觀開發,那么通過管理和安排回歸測試,執行構建的全部測試操作,只不過是一次點擊的操作而已。因此,它降低了手動測試期間人為交流和干預的頻率。
日程安排功能,在另一方面上,降低了重復測試期間的出錯率。圖 6 中的圖顯示了測試系統最新構建全部測試的性能改進。條形圖顯示了每日,每周,每月進行的測試,測試自動化框架的日程安排功能能夠幫助您實現全部這些功能。
圖 6. 性能評價條形圖

為了進一步深入研究 Rational 軟件為測試和自動化提供的功能,您可以查看其他相關資料。