❶ 如何更高效地進行軟體測試的方法探討
From:檸檬班學習群:333782754
在實際工作中,可通過以下幾個途徑提高軟體的可測試性:減少並控制需求的變更;加強軟體可測試性的設計;重視並規范技術文檔的編寫。
1 減少並控制需求的變更
用戶需求可分為如下三個層次:基本需求、預期需求和擴展需求三類。其中預期需求是明示的,而基本需求和擴展需求是非明示的。所謂擴展需求是指這些特徵在用戶的期望范圍之外,並且當其存在時將是非常令人滿意的。由於種種原因,軟體的需求不確定性是客觀存在的,是不可避免的,軟體規模越大,研製周期越長,需求的不確定性就越大。軟體需求不確定性原因主要包括:用戶在表述需求時常常帶有不確定性與模糊性;隨著開發進程的推進,用戶對所建應用系統理解的不斷深入,對原來模糊的或非明示的需求有了新的認識,隨時會提出需求的變更;由於開發人員的領域知識的局限性,導致引發對需求的誤解;用戶需求的獲取過程與描述形式往往採用非形式化的自然語言,以及自然概念中存在的本質矛盾,使需求的規范描述發生困難。
(1)識別項目需求
識別項目需求是項目成功的關鍵,為了減少需求的不確定性,首先應充分認識確定需求的重要性,通過與用戶的溝通,使用戶能充分認識到軟體需求的變更對軟體質量、進度和成本的影響,積極參與到確定軟體需求的活動中,達到在進行軟體設計前盡量確定軟體需求的目的。同時在識別項目需求時,除了用戶明示的需求外,還需關注用戶基本需求,用戶基本需求常常體現在項目的領域知識、項目所在行業的相關標准等方面。實踐證明,開發人員對領域知識掌握的程度直接影響到項目需求的確定,開發人員通過對領域知識的積累有助於項目需求的確定。
(2)需求文檔化及需求評審
按照軟體工程化要求,用戶應該向研製方正式提交需求文檔,研製方根據用戶需求進行需求分析形成產品需求,用戶需求及產品需求均需文檔化並經過評審,以盡早發現不合理的需求。
(3)需求管理、需求變更的控制
在系統研製過程中應對需求進行管理,首先建立需求庫及需求跟蹤矩陣,在需求跟蹤矩陣中反映研製各階段工作產品與需求的對應關系,並對需求進行需求的雙向跟蹤。
(4)採用軟體需求管理工具
採用需求管理工具,可以提高需求管理工作流程的自動化程度,使需求管理可以在項目實施過程中得到有效地推行。需求管理工具可以在整個項目生命周期內,幫助團隊有效地協作,將需求的變更信息及時傳送到團隊的每個成員,可以使跨項目團隊的所有成員都能掌握必要的需求詳細信息,並對軟體項目規劃、項目跟蹤與監督實施管理。
2 加強軟體可測試性設計
在項目設計階段應注重對軟體可測試性的設計。項目負責人可根據項目具體情況對軟體可測試性提出具體要求,對軟體注釋率、軟體模塊規模、模塊圈復雜度、基本圈復雜度、操作數的個數以及過程出口個數等進行規定,在軟體設計及編程階段嚴格按照規范執行,可有效地提高軟體測試效率。實踐證明,如果在項目設計階段不進行軟體可測試性的設計,待軟體完成後再根據可測試性要求對腔皮指軟體進行修改完善常常需要花費巨大的人力和物力,同時大量修改對軟體質量也會帶來不利影響。
3 重視並規范技術文檔的編寫
技術文檔不僅是開發人員進行信息交流的手段,也是測試人員進行測試的依據。所以軟體相關文檔應描述明確詳細,組織合理,並根據需求和設計的變更及時更新。同時為了給獨立測試人員提供更多的信息,在技術文檔中可增加各軟體模塊的重要程度、重用性及測試歷史等信息,使得獨立測試人員可以合理分配精力,對重要軟體進行重點測試,減少不必要的重復勞動,提高測試效率。
3、軟體測試方法與組織
3.1 軟體測試方法
軟體模塊級測試分為白盒測試和黑盒測試。黑盒測試注重於測試軟體的伍配功能性需求,試圖發現功握爛能缺陷或遺漏、界面錯誤、數據結構或外部資料庫訪問錯誤、性能錯誤及初始化和中止等類型的錯誤。白盒測試依賴對程序細節的嚴密檢驗,對軟體的邏輯路徑進行測試,在不同的程序點檢驗「程序的狀態」以判定預期狀態或待驗證狀態與真實狀態是否相符。在軟體測試中,常常結合黑盒和白盒兩種測試方法,相互補充。
3.2 軟體測試人員
軟體測試可由軟體開發人員、獨立測試人員或用戶進行。在組織軟體測試時,可根據不同人員的特點進行組織,使得各類測試相互補充。
軟體開發人員熟悉軟體需求及被測軟體,清楚各軟體模塊的重要程度和相互關系,了解各軟體模塊以前的測試及修改等歷史情況,可以有針對性地進行測試;軟體開發人員和用戶交流較為方便,在測試中能夠發現與需求不一致的軟體錯誤。但是開發人員急於證明他們的程序是毫無錯誤的,是按照用戶的需求開發的,而且完全能夠按照預定的進度和預算完成,這將影響開發人員完成相關測試任務。
獨立測試人員應具備較強的測試理論水平和測試經驗,熟練掌握軟體測試工具,並知悉被測軟體的功能需求才能夠對軟體進行系統全面的測試。但獨立測試人員有時會缺乏相應領域的專業知識,主要測試依據是用戶的技術要求及開發人員在軟體研製過程中形成的文檔,一方面這些文檔中缺乏對用戶基本需求的描述;另一方面,獨立測試人員常常需通過開發人員來進行需求的理解,因此在軟體測試中有時無法發現軟體不滿足需求方面的錯誤。但這種錯誤往往從用戶角度來看是最嚴重的。同時,獨立測試人員由於對各軟體模塊的重要性及相互關系了解不深。有時會影響測試效率。
在條件允許的情況下,軟體完成後可提交用戶試用。用戶在試用中根據實際使用需求進行操作,其中包括各種正常操作流程和非正常操作流程。用戶試用可有效檢驗軟體是否滿足用戶需求,同時在用戶試用中對軟體的可靠性等方面也同步進行了測試。因為用戶試用方式同實際使用方式非常接近,所以通過用戶試用獲得好評的軟體基本可以滿足今後的實際使用要求。
3.3 提高軟體測試效率的方法
為了提高軟體測試效率,測試人員需要熟悉掌握軟體涉及的領域知識,了解軟體各項功能的重要程度和成熟程度,掌握測試理論和工具;用戶是驗證需求正確性的主導力量,應充分發揮用戶的積極作用。
在組織軟體測試時,可通過以下幾個方面提高軟體測試效率:
根據不同測試人員的特點進行測試分工,單元測試應以軟體開發人員為主進行,以保證每個單元能夠完成設計的功能。在很多情況下,集成測試也可以開發人員為主進行。當軟體體系結構完成後,獨立測試機構介人;
軟體測試人員應注重與用戶的溝通,及早發現需求分析、理解不合理的問題,避免今後花費大量的資源和時間進行改正;
對於軟體開發人員,需加強測試方法的培訓,提高自我測試的效率;
在選擇獨立測試人員時,盡量選擇比較熟悉了解被測軟體相關領域知識的人員;
獨立測試人員應該在軟體開發的需求階段就參與項目的研製,以便更好地制定測試計劃、確定測試目標及編寫測試用例。通過找出項目中關鍵的模塊和出錯率高的模塊,可使測試首先集中在最重要的部分,避免發生把過多時間花費在非重要模塊的測試而沒有時間測試重要的模塊的情況;
被測軟體在測試中發現了問題,要進行有組織的分析研究,然後權衡利弊進行規范化修改,避免反復修改,反復測試;
規范軟體配置管理,通過管理及技術手段,對軟體和文檔版本進行控制,保障軟體測試的有效性。
4、結束語
實踐證明,通過提高被測軟體的可測試性,以及合理組織軟體測試工作,可以有效地提高軟體測試效率。隨著軟體測試的重要性得以承認,軟體測試階段在整個軟體開發周期中所佔的比重也日益增大。為了將缺陷和錯誤消滅在萌芽之中,軟體測試將逐步發展成為軟體開發每一階段都要進行而且需要反復進行的活動。軟體測試中大量的工作是機械的、重復的、枯燥的和非智力的,但逐步加強軟體自動化測試的研究和推廣將是今後軟體產業的發展趨勢。