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

  存在許多不成功的AST嘗試和與實施AST相關(guān)的神話,再加上缺乏足夠的AST知識,導(dǎo)致人們提出這樣的問題:“我們?yōu)槭裁匆詣踊俊钡?章闡明并澄清了一些圍繞在AST周圍的神話以及應(yīng)該避免的陷阱,但在這里我們首先重點回答“為什么要自動化?”

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

  AST是一種解決當(dāng)今許多軟件測試人員面臨的挑戰(zhàn)的關(guān)鍵技術(shù)。經(jīng)驗表明,如果正確實施了AST,則可以達(dá)到以下效果:

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

  2. 改進(jìn)軟件質(zhì)量。

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

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

  我們將討論AST如何對每一條作出貢獻(xiàn)。

  當(dāng)今測試軟件面臨的挑戰(zhàn)

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

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

  NIST發(fā)表一個報告開篇指出:

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

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

  在過去幾十年里,商業(yè)硬件和軟件技術(shù)在開發(fā)實踐、理論和工具方面取得重大進(jìn)展,這些實踐、理論和工具具備了全新的、有創(chuàng)造性的、價格合理的和及時處理信息的能力。此外,通過復(fù)用標(biāo)準(zhǔn)接口、通用架構(gòu)框架和通用功能庫可以進(jìn)一步減少時間和成本。

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

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