軟件質量保證是軟件開發過程的重要一環。所謂軟件質量保證就是使軟件綜合品質符合用戶需求,軟件質量保證的理論、技術、措施很多,測試是其中最重要的手段之一。實踐證明,雖然軟件的質量并不完全依賴于測試,但科學、合理、有效的測試方案卻可以極大地提高軟件質量。其中,基于需求的測試(RBT)就是軟件質量保證的重要工具途徑之一。相關權威研究表明,已發現的軟件缺陷中超過50%的缺陷源于錯誤或者不恰當的軟件需求。
保證需求與軟件的統一
Richard Bender是基于需求的軟件測試方法創始人。他認為:改進軟件系統測試方法的最佳途徑在于改進軟件需求定義開發過程和功能測試設計過程,基于需求的測試是一種最根本的軟件測試。
軟件需求分析解決的主要問題是“軟件產品必須或應該做什么”,軟件需求分析的最重要成果就是需求說明書,需求說明書是軟件產品的雛形,軟件產品是需求說明書的最終展現成果。由于需求和軟件之間是相互對應的,編碼和測試用例之間也是相互對應的,所以需求和測試用例之間是互相對應的,在本質上也是互相關聯、密不可分的,可以實現需求和測試用例之間的雙向跟蹤追溯。
值得一提的是,在軟件開發過程中,編程和測試是緊密相關、相輔相成的活動,兩者同等重要、缺一不可。測試的目的是為了發現盡可能多的缺陷,并期望通過修改完善缺陷以提高軟件的質量。成功的測試在于發現了迄今尚未發現的缺陷,測試人員的職責是設計這樣的測試用例,它能有效地揭示潛伏在軟件里的缺陷。
然而,在企業應用軟件項目的實施過程中,普遍存在重編碼輕測試、缺乏高素質軟件測試人員的現象。事實上,設計與測試應該完全分離,好的開發者構建事務,好的測試者破壞事務,一個好的軟件測試工程師應該要比開發工程師對整個系統的理解更加透徹。目前很多軟件測試工程師處在軟件項目組的最低職級,缺乏高層的重視和支持,自身對于整個應用系統“該做什么、要做什么、必須做什么”并不清楚,如果再加上與設計人員的溝通交流協作過程中不講究原則性、策略性,其工作成效可想而知。
基于需求的軟件測試方法
要實施基于需求的軟件測試,其正確的工作步驟如下:
1.全面清晰地掌握用戶需求
全面、清晰、準確地認識理解用戶需求、軟件平臺架構是軟件測試工程師開展一切測試工作的前提和基礎。軟件測試工程師應認真閱讀、研究、分析《用戶需求說明書》、《軟件產品設計說明書》(分為概要設計和詳細設計)等關鍵文檔,清晰掌握平臺架構設計、數據庫結構設計、模塊功能設計、核心算法、界面展現、人員權限角色分配、輸入輸出數據等要素,將業務操作流程和以上要素分別逐一對應關聯。
2.明確測試的目標和任務
軟件測試的任務就是驗證軟件是否準確地實現了用戶需求,檢驗需求和軟件之間是否一致。好的測試用例能發現軟件中潛在的新缺陷,糟糕的測試用例在目標及任務尚不明確的情況下盲目進行評測,不僅效率低下,而且毫無效果。
3.分階段制訂測試計劃方案
測試計劃方案不是從頭到尾一成不變的,應根據企業應用軟件項目所處的不同階段制訂,不同的項目階段所需的測試方法是不一致的。可以借鑒RBT理論關于基于需求的測試方法的最佳實踐(參見鏈接)。
4.設計基于需求的復合測試用例
在很多情況下,單一的測試方法很難實現軟件缺陷或錯誤的全面檢查,在軟件工程中使用最多的往往是組合多種測試方法的復合測試用例。例如黑盒測試和白盒測試兩者的功能作用就可以互相彌補,實踐中可以將兩種測試方法組合起來設計復合測試用例。
5.妥善處理測試和設計之間的關系
測試是“破壞性”的,而開發卻是“建設性”的。從行為學角度看,開發與測試是對立的。如果測試人員對開發人員的錯誤批評指責過多,容易導致雙方的關系對立隔閡;如果測試人員對開發人員的錯誤疏忽怠慢,容易導致軟件質量的隱形下降,實踐中需要找到一個平衡點。
6.建立測試報告審批通報制度
建立測試報告審批通報制度對于提升軟件質量具有明顯作用。作為一名優秀的測試工程師,要養成書面起草測試工作報告的好習慣。將已經定位發現的缺陷或錯誤進行分析匯總,用統計數字、圖表等方式說明缺陷或錯誤的根源,及時將測試工作報告提交上級主管領導審議,并通知研發設計人員,使設計人員做到對缺陷心中有數、控制有道,以防患于未然。
鏈接
基于需求的測試理論的五項最佳實踐
1.轉變“編碼后進行測試”的傳統觀念。在軟件編碼開始之前的設計階段就根據需求文檔和設計文檔開發出90%以上的測試用例,盡早發現和排除絕大部分的缺陷。
2.根據各項應用功能的優先級、重要性制訂不同等級的測試方案、測試用例。重要的模塊投入較多的測試資源(人力、時間、物資),次要的模塊投入較少的測試資源。
3.盡早測試,頻繁測試。測試進行得越早,缺陷發現越早,修復缺陷的代價越小;測試進行得越晚,缺陷發現越遲,修復缺陷的代價越大。
4.摒棄“經驗至上”的想法。設計系統、嚴謹、合理的測試用例才能使測試達到實效。
5.加強對測試過程的監控跟蹤。當用戶需求發生變更時,軟件需求文檔和設計文檔都隨之發生變更,相應測試用例也應發生變更。要隨時監控需求的變化,保證測試用例和用戶需求的雙向追溯統一。