作者在本文中描述了一些構建更易維護的和健壯的自動化測試腳本的技巧。作者給那些使用自動化測試工具并且為將來測試工作而建立自動化測試腳本庫的測試人員提供了有價值的遠見。本文提供了許多在文檔化測試腳本,調試測試腳本,執行測試腳本的同行評審和同步測試腳本方面的建議。
增量式調試腳本
錄制測試腳本,和其他的軟件開發成果一樣,會變得非常大。為了可以成功的回放,需要調試幾百行的代碼,為了參數化的數據驅動測試腳本,它可能包含了幾個數據集。常見的調試測試腳本方法是首先錄制所有的業務流程和需求,然后測試人員回放測試腳本以驗證并糾正問題。測試人員繼續調試腳本直到它和可以一(或多)組數據集一起成功地回放。
當測試腳本有成百的代碼行,驗證點,分支的邏輯,錯誤處理,參數和數據在多個已錄制的業務流程之間的相關性時,調試并且解決測試腳本中的問題變得特別的乏味和難以處理。對于調試那些復雜且又冗長的測試腳本,一個更加容易管理的方法是錄制腳本的一部分并且在錄制測試腳本的其他部分之前分開調試他們。在測試單個的部分后,你可以決定測試腳本的一部分如何和另一部分工作和數據如何從一個已錄制的流程流向其他的流程。在測試腳本的所有部分都錄制后,測試人員就可以回放整個測試腳本,并確保腳本同一個或多個數據集一起從頭到尾被正確地回放了。
舉個例子,我錄制并自動化了一個執行了以下業務流程的復雜的測試腳本:
檢查在貨倉中的庫存
執行一次MRP運行
補充庫存
挑出一些要發送的貨物并且進行發貨
確定交貨需要移交的訂單
驗證發送的貨物到達了它們的目的地。
這個測試腳本有一些代碼行,參數,驗證點和需要象一個整體一樣工作的數據相關性。首先我錄制了每一個單獨的流程并且驗證了他們分別可以成功的回放。然后我將所有錄制好的流程集成尾一個大的測試腳本并且驗證它同多個數據集一起能夠成功的回放。如前面所述,一個關鍵的目的是確信在繼續錄制整個測試腳本的剩余部分之前每一個已錄制的流程可以成功的回放。我沒有錄制所有提及的流程(從1到6)并把它們排列一起回放,而不首先驗證所有的流程可以作為單獨的流程成功的回放。
這部分是為了避免等待調試腳本,直到整個測試腳本錄制好。
測試腳本的同步
測試工具會用比終端用戶手工按鍵快的多的速度回放已錄制的測試腳本。接著由于應用程序可能不夠快地顯示數據或從數據庫取出數值以允許測試腳本正確地回放,這可能會擊垮所測試的應用程序。當測試地應用程序不能響應測試腳本時,腳本執行會突然中斷,然后需要用戶干涉。為了同步所測試應用程序和回放中地測試腳本,測試小組在已錄制的測試腳本中引入了人為的等待時間。為了放慢測試腳本的執行,嵌入在測試腳本中的等待時間是最任意的且通過試驗和錯誤最佳估計。等待時間主要的問題是它們要不是等的太長就是不夠長時間。
例如,測試人員或許注意到對于所測試的應用程序測試腳本回放得太快。他可能打算放慢它幾次直到測試腳本執行和測試的應用程序相同步。這個技巧可以會造成相反的結果-甚至失。绻跍y試執行時,由于外部的因素(例如網絡有延遲或系統維護)導致應用程序運行比新引入的等待時間更慢。在這種情況下,每次測試人員將不得不不斷的猜測一個新的合理的等待時間。用等待時間放慢腳本不是十分科學的,并且對于創建強健的,在沒有用戶干涉情況下能夠成功運行的自動化測試腳本沒有什么幫助。
如果有可能的化,測試人員應該避免引入人為的等待時間或任意的sleep變量以使測試腳本和應用程序同步。
"While"語句或嵌套的"loops"語句是用于同步需要同步點的測試腳本且不管所測試程序的響應時間都可以成功回放的正確的技術。在測試腳本種插入嵌套的loops或“while”語句也可以減少在測試腳本回放時用戶的干涉。例如,我插入"while"語句在錄制好的測試腳本里,不斷按Enter鍵直到創建了一個計劃中的協議,不管所測試應用程序要花多長時間產生協議。測試腳本不依賴所測試應用程序的響應時間工作。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/