減少軟件測試的時間和成本(一)
雖然人們普遍關注軟件開發成本,并且從提供開發生產率改進的技術中獲得了激動人心的進步,但軟件測試成本和生產率往往被忽視,或者干脆說“這就是它的成本,這就是它的生產率。”具有諷刺意味的是,軟件測試成本和時間通常與開發軟件所需要的時間和成本相近。
Boris Beizer報告稱,“開發一個可工作的程序的一半工作量一般都消耗在測試活動上。”
IDT對軟件測試進行獨立調查(詳見第4章),收到超過700份回復。其中我們提出的一個問題是總程序的計劃百分之多少消耗在測試上。46%的回復認為占30%~50%,另外19%認為占50%~70%。
與軟件測試相關的成本和時間占項目總成本和計劃的很大一部分,因此,對提高測試效率和減少勞動時間的改進會有顯而易見的效果。評估影響的主要考慮因素有:
哪些方面,有多少測試可以自動化?
預期減少多少測試時間和計劃?
對提高測試覆蓋率和質量的影響的期望是什么?
是否還需考慮其他要降低的因素?
有多少測試程序可以自動化?并非項目中所有測試都能夠或應該自動化。作為AST的最佳對象是那些最常重復和勞動密集型的測試。只運行一次或很少運行的測試是不值得進行自動化的測試,除非規定的環境中要求自動化,例如,手動測試很困難或非常耗時。此外,如果每次發布測試用例都會變化,從而AST每次都需要改變也不值得自動化。第6章將進一步介紹“是否需要自動化以及哪些要自動化”。
對大部分項目而言,我們的經驗是40%~60%的測試能夠且應該自動化。對每個項目都應該進行初步的高層次評估。第6章詳細介紹了這種做法。隨著在更多項目中實施AST的經驗積累,將不斷地改善你根據歷史數據對測試程序中應用AST的等級的精確估算能力。
預期減少多少測試時間和計劃?在任何測試自動化之前,應計算ROI。計算ROI的細節參見第3章。此外,還要考慮在這些測試領域中可自動化的最佳候選測試的需要:自動化測試計劃和開發、測試數據生成、測試執行和結果分析、錯誤狀態和監視以及報告的生成,這會在下一節討論。
經驗表明,在測試執行階段中,AST對減少項目進度有很大的影響。這個階段一般包括的活動有:執行測試、分析測試結果、修正錯誤和生成測試報告。根據經驗,如果這些過程自動化了,可以節省大量的時間。
經驗還表明,在最初的測試自動化實施階段,即測試自動化的開發階段,將會有初始的時間增長。
1、自動測試計劃和開發——初始測試的工作量增加
自動化測試初期增加了測試工作的復雜程度。在決定引入自動測試工具之前,需要考慮許多特殊的地方,關于這一點的討論將貫穿整本書。例如,需要回顧計劃的AUT或SUT,以確定它是否與測試工具兼容。有時市場上沒有能滿足自動化需求的工具,這時就需要自己開發測試軟件和框架。此外,需要審查未自動化測試提供支持的樣本數據的有效性。需列出所需數據的種類和變體,然后為獲取或開發需要創建的樣本數據制定計劃,這將在下一節中討論。還需要考慮測試腳本的模塊化和復用。自動化測試具有自己的開發工作類型,具備自己的小型開發生命周期。必須支持測試開發生命周期的計劃,可以與應用程序開發工作同時進行,具有增加測試計劃工作的效果。
過去,測試過程的開發是一個緩慢、昂貴且耗時的過程。當軟件需求或軟件模塊改變時,測試工程師往往要重新開發已有的測試過程,并從頭開始創建新的測試過程。利用測試管理和自動測試工具的能力來生成或修改測試過程(參考第1章的介紹),花費的時間只是耗費手動測試過程的一小部分。
2、生成測試數據——測試工作/計劃減少
使用測試數據生成工具也有助于減少測試工作。有效的測試策略需要仔細獲取和準備測試數據。如果測試數據不佳,功能測試將遭受挫折。相反,如果測試數據良好,將有助于改善功能測試。好的測試數據是結構化的,可以增進理解,提高可測性。正確選擇數據的內容,可以減少維護工作,并更具靈活性。在需求模糊的情況下,數據的準備工作有助于將注意力集中在業務上。
數據字典和詳細的設計文檔對確定樣本數據非常有用。除了提供數據元素名稱,數據字典還可能提供數據結構、基數、使用規則和其他有用信息。設計文檔,特別是數據庫模式(schema)的設計文檔,同樣有助于確定程序與數據之間的交互情況,以及數據和元素之間的關系。
因為有太多的可能性,通常無法測試所有的輸入輸出的組合和變體,以檢驗應用程序的功能性及非功能性需求是否得到滿足。但是,自動化測試以及各種測試設計技術可幫助縮小大量的數據輸入輸出組合和變體。其中一種測試技術是“數據流覆蓋”,旨在將數據流包含進所選擇的測試過程步驟中。使用這種技術有助于確定測試路徑的選擇,以便滿足所有適合的路徑的數據流的某些特性。還有其他一些技術,比如邊界條件測試技術。
【編輯推薦】