通過分析錯誤產生于哪一個開發階段、而又在哪一個階段被發現,我們可以判斷從錯誤的產生到錯誤的發現,跨越了多少個開發階段。軟件開發的一條重要原則是盡早發現與修正錯誤。(當然,更高的一條原則是盡量預防錯誤的出現。)一個錯誤能夠超越本開發階段而不被發現,就指明了該開發階段的檢測手段有缺陷,從而也不難有針對性地制定出加強的措施與辦法。這也就是軟件過程改進的一項重要內容。如果能做到在同一開發階段發現及修正錯誤,該開發機構就可以預期有一個高質量的產品及一個低成本、高效率的軟件過程。
有些項目的主持人,認為以盡快的速度把測試之前的所有開發階段完成(實際并沒有完成),早日開始測試,以圖達到快速和高質量(因為似乎有更長的時間可用于測試)。實際的效果將會是俗語所說的“欲速不達”。從常識就可以知道,花開發時間去繼續擴大發展前面階段引入的錯誤,得出的只能是更大量的需要耗時修正的錯誤。
因此,正確分析與利用測試的結果,我們可以非常有效地進行軟件過程改進。
軟件開發全過程檢測,力爭本階段修正錯誤
從上面的討論,我們很自然的就能領會到,軟件錯誤的發現絕不能等到測試才開始(按常規,最早的測試就是編碼后的單元測試)。因此,筆者提出一個軟件工程的守則:軟件開發全過程檢測,力爭本階段修正錯誤。單元測試是在軟件開發的“實現階段”才開始的,在此之前的“可行性研究與計劃階段”,“需求分析階段”,“概要設計階段”,和“詳細設計階段”,都必須有非常明確切實的手段與措施對開發結果進行檢驗,以保證階段的正確完成。
怎樣判斷一個軟件過程的優劣,怎樣進行軟件過程改進,都可以在這個守則的指導下進行。這個守則是簡單明確的,但因企業背景、條件的不同,開發環境條件的不同,項目產品的不同,實際的軟件過程的實現方法就會變化無窮?紤]實現這個原則的方法的時候,可以盡量多參考各種理論及經驗,但在選擇制定本企業開發實踐中使用的軟件過程時,就必須處處根據是否能給自身的項目帶來好處,以及自身的條件進行考慮。千萬不要僅僅為了滿足某個“標準”的提法而做一些無實際意義的工作。要盡量避免煩瑣,爭取做到簡單、有條理和有最大的效果。
軟件測試的自動化
軟件測試的工作量很大(據統計,會用到40% 的開發時間;一些可靠性要求非常高的軟件,測試時間甚至占到總開發時間的60% ),但測試卻是在整個軟件過程中極有可能應用計算機進行自動化的工作,原因是測試的許多操作是重復性的、非智力創造性的、需求細致注意力的工作。計算機就最適合于代替人類去完成這些任務。企業在這方面的投資,會對整個開發工作的質量、成本、和周期帶來非常明顯的效果。
一些適于考慮進行自動化的測試操作為:
1.測試個案的生成(包括測試輸入,標準輸出,測試操作指令等)。
2.測試的執行寫控制(包括單機與網絡多機分布運行;夜間及假日運行。測試個案調用控制;測試對象、范圍、版本控制等。)。
3.測試結果與標準輸出的對比。
4.不吻合的測試結果的分析、記錄、分類、和通報。
5.總測試狀況的統計,報表的產生。
測試自動化與軟件配置管理是密不可分的。與測試有關的資源都應在配置管理中進行統一的計劃考慮。另外,測試工具的采用也是一個提高質量的關鍵,有些專用的測試工具能幫助發現一些用任何測試個案都難以觸及的錯誤。
文章來源于領測軟件測試網 http://www.kjueaiud.com/