自動化軟件測試的投資回報率解析

  存在許多不成功的AST嘗試和與實施AST相關的神話,再加上缺乏足夠的AST知識,導致人們提出這樣的問題:“我們為什么要自動化?”第4章闡明并澄清了一些圍繞在AST周圍的神話以及應該避免的陷阱,但在這里我們首先重點回答“為什么要自動化?”

  我們通過描述軟件測試中一些關鍵實踐以及許多可以自動化的方面來闡釋“為什么要自動化”。這里討論的目的是在“為什么要AST”的上下文中培養讀者關于軟件測試關鍵實踐的意識。

  AST是一種解決當今許多軟件測試人員面臨的挑戰的關鍵技術。經驗表明,如果正確實施了AST,則可以達到以下效果:

  1. 減少軟件測試時間和成本。

  2. 改進軟件質量。

  3. 通過擴大測試覆蓋率加強手動測試工作,取代手動測試這種日常進行的體力活。

  4. 進行手動測試難以完成的(比如,在特定條件下檢測內存泄漏、并發測試以及性能測試)、需要更高的成本、更長的計劃、更高的質量(對于任何軟件開發和產品來說又都是重要的參數)的任務。

  我們將討論AST如何對每一條作出貢獻。

  當今測試軟件面臨的挑戰

  如今測試軟件所面臨的主要挑戰是:客戶希望更多的軟件功能,交付得更快,造價更便宜,同時,他們希望軟件的質量即使不能超過他們的期望,但至少要達到預期。

  這意味著軟件測試團隊責任重大,更多的功能意味著每個要測試的軟件基線更大、更復雜,這意味著要為每次交付執行更多的測試用例。對其他程序而言,更快的交付意味著只能花更少的時間來測試每次交付,而且每年要交付很多次,也許是三四個產品版本而不是一兩個。更多的交付也意味著更多的回歸測試周期。降低成本意味著用較少的工作時間完成測試。簡而言之,是更多的軟件需要測試,測試的頻度更高,但是投入更少的人員。

  NIST發表一個報告開篇指出:

  降低軟件開發成本并提高軟件質量是美國軟件行業的重要目標。但是,支持美國計算機經濟所需的基礎軟件的復雜性正在以驚人的速度增長。軟件產品的規模不再僅以幾千行代碼來衡量,取而代之是數以百萬行計的代碼。這種日益增加的復雜性以及平均市場生命周期的減少使許多軟件產品高度關注軟件質量。

  這份報告還估算每年軟件導致的錯誤將消耗美國經濟約59.5億美元,他們預計通過改進測試可以減少三分之一的費用。

  在過去幾十年里,商業硬件和軟件技術在開發實踐、理論和工具方面取得重大進展,這些實踐、理論和工具具備了全新的、有創造性的、價格合理的和及時處理信息的能力。此外,通過復用標準接口、通用架構框架和通用功能庫可以進一步減少時間和成本。

  因為要減少開發時間,但又要創建可復用的組件,所以高效并且徹底地測試軟件變得前所未有的重要。開發人員進行的軟件測試不再是只在軟件開發的初期使用,以后不再使用了。因為要遞增地構建軟件,以及更高的軟件復用能力,那么在產品交付之前,軟件測試需要執行并復用許多次。而在過去,復雜處理系統的成本主要消耗在硬件上,結果導致傳統的測試方法學主要圍繞硬件演化。然而,當今開發的大多數系統主要建立在不太昂貴的硬件上,而主要的日程和成本都堅定不移地以軟件開發和測試為中心。

  現今的系統主要以軟件為基礎,隨著復雜性的增加,越來越依賴于成功復用在其他程序中開發的軟件。盡管開發實踐和工具已經取得進展,但加快系統交付速度和減少成本的目標不能單純依靠更快地編寫軟件,而沒有相應的測試實踐和工具。