摘要
這篇文章詳細描述幾種自動化腳本編寫方法,各自的優、缺點,同時在腳本編寫的成本、編程技巧和腳本可維護性方面作出相應的
評價。
聲明
作者在對這幾種自動化腳本編寫方法作出關于成本的評價時,沒有參考任何自動化測試項目的成本分析文檔或成本效益分析結果。
建議讀者基于自己的理解和考慮風險來消化利用這些信息。
文章的編排
這篇文章主要分析自動化的成本,然后在描述每一種腳本編寫方法時指出它的優點和缺點。
關于優缺點,從以下方面進行評價:
腳本的編寫是否是結構化的
測試用例在什么地方定義
開發腳本的成本
需要怎樣的編程技能
如何計劃、設計和管理腳本
測試數據放在什么地方
腳本如何維護,維護成本
其它方面
成本
測試腳本相關的成本主要由開發成本和維護成本組成。在自動化測試過程中使用不同的腳本編寫方法會對成本有不同程度的影響。
“錄制回放”的方法是簡單的,也是脆弱的,但是它的開發成本很低,然而維護成本很高,因此總體成本也會很高。使用先進的關
鍵字驅動測試的方法,則維護成本會很低,但是開發成本會很高,因此總體成本也會很高。測試經理需要在這些方法中作出明智的選擇,以
便把總體成本盡量降低。
編寫腳本的方法
不同的自動化測試腳本編寫方法主要有:
線性的
結構化的
共享的
數據驅動的
關鍵字驅動的
線性腳本編寫方法
線性腳本編寫方法是使用簡單的錄制回放的方法,測試工程師使用這種方法來自動化地測試系統的流程或某些系統測試用例。它可
能包含某些多余的、有時候并不需要的函數腳本。
優缺點:
是一種非結構化的編程方式
測試用例由腳本定義
非常低的開發成本
測試人員所需要的編程方面的技巧幾乎可以忽略
不需要計劃、設計
測試數據在腳本中是硬編碼的
腳本會很脆弱,因此維護成本會很高
沒有公用的腳本,因此可能造成重復勞動
結構化腳本編寫方法
結構化腳本編寫方法在腳本中使用結構控制。結構控制讓測試員可以控制測試腳本或測試用例的流程。在腳本中,典型的結構控制
是使用“if-else”, “switch”,“for”,“while”等條件狀態語句來幫助實現判定、實現某些循環任務、調用其它覆蓋普遍功能的函
數
優缺點:
是結構化的腳本編寫方法
測試用例在腳本中定義
編程的成本要比線性腳本編寫方法略為高一點
需要測試員的調整編碼技巧
需要某種程度上的計劃、設計
測試數據也是在腳本中被硬編碼
因為相對穩定一點,所以需要相對少的腳本維護,維護成本比線性腳本編寫方法的要相對低
除了編程知識外,還需要一些腳本語言的知識
共享腳本編寫方法
共享腳本編寫方法是把代表應用程序行為的腳本在其它腳本之間共享。意味著把被測應用程序的公共的、普遍的功能的測試腳本獨
立出來,其它腳本對其進行調用。這使得某些腳本按照普遍功能劃分來標準化、組件化。這種腳本甚至也可以使用在被測系統之外的其它軟
件應用系統。
優缺點:
腳本是結構化的
測試用例在腳本中定義
開發成本相對于結構化腳本編寫方法來說要降低一些,因為減少了很多復制的勞動
需要測試員的調整代碼的編程技巧
由于腳本需要模塊化,所以需要更多的計劃和設計
測試數據也是硬編碼的
腳本維護和維護成本要比線性腳本編寫方法的相對低
數據驅動腳本編寫方法
這種方法把數據從腳本分離出去,存儲在外部的文件中。這樣腳本就只是包含編程代碼了。這在測試運行時要改變數據的情況下是
需要的。這樣腳本在測試數據改變時也不需要修改代碼。有時候,測試的期待結果值也可以跟測試輸入數據一起存儲在數據文件中。
優缺點:
腳本是以結構化的方式編程的
測試用例由測試數據或腳本定義
由于腳本參數化和編程成本,這種方法的開發成本跟共享腳本編寫方法比較要相對高
需要測試員較高的代碼調整方面的編程技巧
需要更多的計劃和設計
數據獨立存儲在數據表或外部文件
腳本維護成本較低
推薦在需要測試正反數據的時候使用
關鍵字驅動腳本編寫方法
這種方法把檢查點和執行操作的控制都維護在外部數據文件。因此測試數據和測試的操作序列控制都是在外部文件中設計好的,除
了常規的腳本外,還需要額外的庫來翻譯數據。是數據驅動測試方法的擴展。
優缺點:
綜合了數據驅動腳本編寫方法、共享腳本編寫方法、結構化腳本編寫方法
測試用例由數據定義
開發成本高,因為需要更多的測試計劃和設計、開發方面的投入
要求測試人員有很強的編程能力
最初的計劃和設計、管理成本會比較高
數據在外部文件存儲
維護成本比較低
需要額外的框架或庫,因此測試員需要更多的編程技巧
評價
關于開發的成本
隨著腳本編寫方法從線性到關鍵字驅動的改變,開發的成本不斷地增加。
關于維護的成本
隨著腳本編寫方法從線性到關鍵字驅動的改變,維護的成本在降低。
關于編程技能要求
隨著腳本編寫方法從線性到關鍵字驅動的改變,對一個測試員的編程熟練程度的要求在增加。
關于設計和管理的需要
隨著腳本編寫方法從線性到關鍵字驅動的改變,設計和管理自動化測試項目的要求在增加。
原文轉自:http://www.anti-gravitydesign.com