如果要增加測試 Script 的可維護性和可重複使用性,它們應該先結構化,再實作。 您可能會發現有些動作會出現在多個測試 Script 中。您應該有的一項目標是識別這些動作,以便能夠重複使用它們的實作。
例如,您可能會有用來處理記錄的不同動作所組成的測試 Script。 這些測試 Script 可能是新增、修正和刪除記錄的組合:
-
新增、修改、刪除(這個很明顯)
-
新增、刪除、修改
-
新增、刪除、新增、刪除、...
-
新增、新增、新增、...
如果您將這些動作識別和實作成個別測試 Script,且在其他測試 Script 中重複使用它們,您實現的重複使用層次便比較高。
另一個目標是建立將您的測試 Script 的結構,使目標軟體的變更能夠在您的測試 Script 中造成區域化且可控制的變更。這會使您的測試 Script 對於目標軟體的變更更具復原力。
例如,軟體的登入部分有了改變。對於所有會遍訪登入部分的測試案例而言,只有與登入相關的測試 Script 需要變更。
如果要使測試 Script 更好維護,您應該將它們記錄成最不容易受到測試目標變更的影響。比方說,如果是填寫對話框欄位的測試 Script,便會有如何從一個欄位移至下一欄位的選項:
在這些選項中,有些比較容易受到設計變更的影響,有些比較不會。如果新欄位是插入畫面中,TAB 鍵方式便不可靠。如果重新指派了快速鍵,它們無法提供好的記錄。如果滑鼠用來識別欄位的方法會改變,那它也不是可靠的方法。不過,有些測試自動化工具有測試
Script 錄製器,它們可以在指示之下,利用更可靠的方法來識別欄位,例如開發工具(PowerBuilder、SQLWindows 或 Visual Basic)指派給它的物件名稱。在這個方式之下,錄製的測試 Script
不會受到使用者介面次要變更(如版面配置變更、欄位標籤變更、格式變更等)的影響。
許多測試 Script 都會在給定資料輸入畫面中,輸入多組欄位資料來檢查欄位驗證功能、錯誤處理等。程序步驟是相同的,不過,資料不同。測試 Script
並不需要針對每一組輸入資料來記錄,您應該建立單一記錄,再修改它來處理多個資料集。例如,因資料無效而產生相同錯誤的所有資料集,都共用相同的記錄測試 Script。測試 Script
修改成將資料當作變數資訊來處理、從檔案或其他外部來源讀取資料集,以及在迴圈中處理所有相關的資料集。
如果已發展測試 Script 或測試程式碼,以在迴圈中處理各組輸入和輸出資料,就必須建立資料集。這些資料集所用的格式通常是文字檔中用逗號分隔的欄位記錄。 從測試 Script 和測試程式碼中,很容易讀取這個格式,也很容易建立和維護。
大部分資料庫和試算表套件都可以產生用逗號分隔的文字輸出。利用這些套件來組織或擷取資料集有兩個重要好處。首先,與簡單使用文字編輯器或文字處理器相比,它們提供可用來輸入和編輯資料的更加結構化的環境。其次,它們大部分都有能力查詢現有的資料庫和擷取傳回的資料,可讓您輕易擷取現有來源的資料集。
記錄的測試 Script 是循序執行的。沒有分支點。測試 Script 中強韌的錯誤處理,需要其他回應錯誤狀況的邏輯。發生錯誤時所能採用的決策邏輯包括:
-
分支到不同的測試 Script。
-
呼叫試圖清除錯誤狀況的 Script。
-
結束 Script 和啟動下一 Script。
-
在這個測試 Script 失敗之後,結束 Script 和軟體,在下一個測試 Script 時,再重新啟動、回復測試。
每個錯誤處理技術都需要在測試 Script 中加入程式邏輯。 這個邏輯應該儘可能限制在用來控制低階測試 Script 序列的高階測試 Script。這使您能夠從錄製中,完整建立低階測試 Script。
當執行壓力測試時,通常最好使測試 Script 同步化,使它們能夠在預先定義的時間啟動。您可以比較所需要的時間和系統時間,將測試 Script 修改成在特定時間啟動。在網路系統中,每個測試工作站都會透過網路來共用相同的時鐘。
在下列範例(來自 BASIC 所撰寫的 Script)中,陳述式插入 Script 的開頭來暫停執行 Script,直到到達需要的時間。
InputFile$ = "TIME.DAT"
Open InputFile$ For Input As 1
Input #1, StartTime$
Close #1
Do While TimeValue(StartTime$) > Time
DoEvents
Loop
[Start script]
在這個範例中,必要的開始時間儲存在檔案中。這使您不需要變更測試 Script,就能夠變更開始時間。 這個時間會讀取和儲存在稱為 StartTime$ 的變數中。Do While
迴圈會繼續運作,直到到達開始時間為止。DoEvents 陳述式非常重要:它可以在測試 Script 暫停並等待啟動時,讓背景作業持續執行。當沒有 DoEvents
陳述式時,系統要等到到達開始時間時,才能夠回應。
當在錄製的相同軟體上執行新錄製的測試 Script 時,應該不會有錯誤。 環境和軟體與錄製之時相同。可能會有測試 Script 無法順利執行的實例。進行測試 Script 的測試會彰顯這些情況,可讓您在真實測試中使用這些 Script
之前,更正這些 Script。這裡討論兩個典型的問題類型:
-
用來選取使用者介面項目的方法語意不明,會使測試 Script 每次重播各不相同。例如,依文字(或標題)來辨織的兩個項目,可能會有相同的文字。當執行 Script 時,語意可能會不明。
-
測試執行/會議專用資料會錄製下來(也就是指標、日期/時間戳記,或一些其他系統產生的資料值),但重播時會不相同。
錄製和重播的時差可能會造成問題。錄製測試 Script 來就是比執行測試 Script 慢的流程。有時這個時差會造成在軟體之前執行測試 Script。在這些情況下,您可以插入等待狀態來節流控制測試 Script 的速度,以配合軟體的速度。
|