API 測試(15)

自動運行測試套件

 

問題

 

      如何讓測試套件自動運行。

 

方案

 

      我們經常會想要讓測試程序自動運行。例如,我們可能安排4個自動測試套件在凌晨2:00開始執行,這樣它就能連夜運行,而當早上來上班的時候就可以看到運行結果了。通過Windows Task Scheduler在Windows環境下可以很容易地實現任務調度。需要指定測試套件的可執行文件,想要它開始運行的時間,以及與測試套件運行相關的安全選項。

 

      如果有好幾個輕量級的自動化測試套件需要運行,則可以創建一個BAT文件,在這個文件里加上運行它們的命令,如:

 

@echo off

echo Starting test automation sequence

echo.

C:/TestHarness1/bin/Debug/Run.exe

C:/TestHarness2/bin/Debug/Run.exe

C:/TestHarness3/bin/Debug/Run.exe

echo.

echo Test automation sequence complete

 

      如果測試套件本身就把測試用例結果記錄到外部文件,那麼這麼做就可以了。如果測試套件只把測試用例結果輸出到命令行程序,則可以通過系統重定向很容易把這些結果存儲到外部文件:

 

C:/TestHarness1/bin/Debug/Run.exe > C:/Results/Harness1Results.txt

C:/TestHarness2/bin/Debug/Run.exe > C:/Results/Harness2Results.txt

 

註解

 

      對於大多數輕量級的自動化測試場景來說,使用.BAT文件來管理各個測試程序是一種簡單有效的方法。另一種方法是用C#寫一個主測試套件(master harness),讓這個主測試套件來協調並且調用其他的測試套件。我們可以使用System.Diagnostics.Process命名空間的Start()方法來編寫代碼用於調用其他的測試套件:

 

Console.WriteLine("Starting test automation sequence/n");

Process.Start("C://TestHarness1//bin//Debug//Run.exe");

Process.Start("C://TestHarness2//bin//Debug//Run.exe");

Process.Start("C://TestHarness3//bin//Debug//Run.exe");

Console.WriteLine("/n Test automation sequeue complete/n");

 

然後通過Task Scheduler 來調度這個主測試程序。使用.BAT文件的好處是它非常簡單。使用C#編寫主測試程序的好處是它可以做更多的事情,比如捕獲異常,或者添加一個邏輯分支讓某個測試套件只在另外一個測試套件的測試結果滿足某些條件時才得以執行。

 

      如果不用Windows Task Scheduler,還可以使用古老的at命令來讓測試套件自動運行。但是通過at命令調度一個測試套件或者主測試套件讓它自動運行,比使用Windows Task Scheduler要麻煩得多。應該只在測試系統不支持Task Scheduler或者把一個新的測試系統集成到一個已經使用at命令的測試系統時,才考慮使用at命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章