**摘要:**
軟體測驗是保證軟體質量的重要手段,如何組織軟體測驗,耗費最少時間與最小作業量完成軟體測驗,使軟體質量滿足用戶要求,是軟體研發單位需要解決的問題,本文結合工程實踐,從軟體的可測驗性及測驗組織等方面探討提高軟體測驗效率的方法,
**引言:**
* 自從上世紀七八十年代全面爆發軟體危機起,軟體產業的發展程序中始終伴隨著巨大的管理難題,整個軟體產業存在著軟體代價高、難于控制開發進度、軟體作業量估計困難、質量低,以及軟體修改、維護困難等問題,而要解決這些問題,在很大程度上取決于提高軟體的設計、開發和測驗質量,
隨著軟體開發規模的增大,軟體的質量問題越來越突出,軟體測驗是提高軟體質量的有效途徑,在軟體測驗作業中投入的人力、物力、財力逐漸加大,國外有些軟體公司的測驗人員和開發人員的比例甚至達到1:1或2:1的程度,因此如何提高軟體測驗效率是每個軟體研發單位和研發專案面臨的嚴峻問題,
本文結合工程實踐,從軟體的可測驗性和軟體測驗組織兩個方面進行分析,探討提高軟體測驗效率的方法,
**1、影響軟體測驗效率的因素**
影響軟體測驗效率的因素很多,本文只論述被測軟體質量和軟體測驗組織對軟體測驗效率的影響,通過軟體測驗可以發現軟體中的某些問題,軟體中存在的某些潛在問題由于受測驗工具、測驗方法和測驗時間的限制而無法發現,測驗中發現的問題最終需要通過軟體開發人員進行糾正,從某種角度來看,軟體測驗并不能從根本上提高軟體質量,軟體質量的高低直接取決于軟體開發人員的設計與編程水平,好的軟體開發人員撰寫完成的軟體具有問題少、易維護等特點,但有時會出現修改完成了一個軟體缺陷,同時又引人多個軟體缺陷的情況,需經過多輪回歸測驗才能夠完成問題歸零,所以,雖然軟體測驗是提高軟體質量的有效途徑,但提高軟體開發人員的水平,提高反映軟體設計質量和開發質量的軟體的可測驗性是提高軟體質量的根本途徑,
軟體測驗人員對專案需求的理解程度,對測驗理論、測驗工具和測驗方法的掌握程度,以及對被測軟體模塊在專案中的重要程度和成熟程度的認識,對軟體測驗效率同樣有很大的影響,所以在工程中需合理組織軟體測驗,提高軟體測驗效率,
**
**軟體的可測驗性****
可測驗軟體具有以下特征:
(1)可操作性,可操作性是指:被測軟體的錯誤很少,可以避免重復測驗的開銷;沒有阻礙測驗連續執行的錯誤;在軟體設計時應允許在開發階段進行部分測驗活動,
(2)可觀察性,可觀察性包括:每個輸入有唯一的輸出;系統狀態和變數可見,或在運行中可查詢;過去的系統狀態和變數可見,或在運行中可查詢;所有影響輸出的因素都可見;容易識別錯誤輸出;自動報告內部錯誤;可獲取源代碼,
(3)可控制性,可控制性是指:所有可能的輸出都產生于某種輸入組合;通過某種輸入組合,所有代碼都可能被執行;軟體測驗人員可直接控制軟體和硬體的狀態及變數;輸入和輸出格式保持一致且有規范的結構;能夠便利地對測驗進行說明,以及方便地執行和重構測驗,
(4)可分解性,軟體系統由眾多獨立模塊構成,每個軟體模塊均可獨立進行測驗,
(5)簡單性,簡單性包括功能簡單性、結構簡單性、代碼簡單性,
(6)穩定性,軟體的變化是不經常的,變化是可控制的,軟體的變化不影響已有的測驗,失效后能夠得到良好恢復,
(7)易理解性,易理解性包括:設計能夠被很好地理解;內部、外部和共享構件之間的依賴性能夠被很好地理解;測驗人員可方便獲取技術檔案,并及時掌握設計更改情況;技術檔案組織合理、明確詳細,
**提高軟體可測驗性的途徑**
在實際作業中,可通過以下幾個途徑提高軟體的可測驗性:減少并控制需求的變更;加強軟體可測驗性的設計;重視并規范技術檔案的撰寫,
**減少并控制需求的變更**
用戶需求可分為如下三個層次:基本需求、預期需求和擴展需求三類,其中預期需求是明示的,而基本需求和擴展需求是非明示的,所謂擴展需求是指這些特征在用戶的期望范圍之外,并且當其存在時將是非常令人滿意的,由于種種原因,軟體的需求不確定性是客觀存在的,是不可避免的,軟體規模越大,研制周期越長,需求的不確定性就越大,軟體需求不確定性原因主要包括:用戶在表述需求時常常帶有不確定性與模糊性;隨著開發行程的推進,用戶對所建應用系統理解的不斷深入,對原來模糊的或非明示的需求有了新的認識,隨時會提出需求的變更;由于開發人員的領域知識的局限性,導致引發對需求的誤解;用戶需求的獲取程序與描述形式往往采用非形式化的自然語言,以及自然概念中存在的本質矛盾,使需求的規范描述發生困難,
(1)識別專案需求
識別專案需求是專案成功的關鍵,為了減少需求的不確定性,首先應充分認識確定需求的重要性,通過與用戶的溝通,使用戶能充分認識到軟體需求的變更對軟體質量、進度和成本的影響,積極參與到確定軟體需求的活動中,達到在進行軟體設計前盡量確定軟體需求的目的,同時在識別專案需求時,除了用戶明示的需求外,還需關注用戶基本需求,用戶基本需求常常體現在專案的領域知識、專案所在行業的相關標準等方面,實踐證明,開發人員對領域知識掌握的程度直接影響到專案需求的確定,開發人員通過對領域知識的積累有助于專案需求的確定,
(2)需求檔案化及需求評審
按照軟體工程化要求,用戶應該向研制方正式提交需求檔案,研制方根據用戶需求進行需求分析形成產品需求,用戶需求及產品需求均需檔案化并經過評審,以盡早發現不合理的需求,
(3)需求管理、需求變更的控制
在系統研制程序中應對需求進行管理,首先建立需求庫及需求跟蹤矩陣,在需求跟蹤矩陣中反映研制各階段作業產品與需求的對應關系,并對需求進行需求的雙向跟蹤,
(4)采用軟體需求管理工具
采用需求管理工具,可以提高需求管理作業流程的自動化程度,使需求管理可以在專案實施程序中得到有效地推行,需求管理工具可以在整個專案生命周期內,幫助團隊有效地協作,將需求的變更資訊及時傳送到團隊的每個成員,可以使跨專案團隊的所有成員都能掌握必要的需求詳細資訊,并對軟體專案規劃、專案跟蹤與監督實施管理,
**加強軟體可測驗性設計**
在專案設計階段應注重對軟體可測驗性的設計,專案負責人可根據專案具體情況對軟體可測驗性提出具體要求,對軟體注釋率、軟體模塊規模、模塊圈復雜度、基本圈復雜度、運算元的個數以及程序出口個數等進行規定,在軟體設計及編程階段嚴格按照規范執行,可有效地提高軟體測驗效率,實踐證明,如果在專案設計階段不進行軟體可測驗性的設計,待軟體完成后再根據可測驗性要求對軟體進行修改完善常常需要花費巨大的人力和物力,同時大量修改對軟體質量也會帶來不利影響,
**重視并規范技術檔案的撰寫**
技術檔案不僅是開發人員進行資訊交流的手段,也是測驗人員進行測驗的依據,所以軟體相關檔案應描述明確詳細,組織合理,并根據需求和設計的變更及時更新,同時為了給獨立測驗人員提供更多的資訊,在技術檔案中可增加各軟體模塊的重要程度、重用性及測驗歷史等資訊,使得獨立測驗人員可以合理分配精力,對重要軟體進行重點測驗,減少不必要的重復勞動,提高測驗效率,
**3、軟體測驗方法與組織**
**軟體測驗方法**
軟體模塊級測驗分為白盒測驗和黑盒測驗,黑盒測驗注重于測驗軟體的功能性需求,試圖發現功能缺陷或遺漏、界面錯誤、資料結構或外部資料庫訪問錯誤、性能錯誤及初始化和中止等型別的錯誤,白盒測驗依賴對程式細節的嚴密檢驗,對軟體的邏輯路徑進行測驗,在不同的程式點檢驗“程式的狀態”以判定預期狀態或待驗證狀態與真實狀態是否相符,在軟體測驗中,常常結合黑盒和白盒兩種測驗方法,相互補充,
**軟體測驗人員**
軟體測驗可由軟體開發人員、獨立測驗人員或用戶進行,在組織軟體測驗時,可根據不同人員的特點進行組織,使得各類測驗相互補充,
軟體開發人員熟悉軟體需求及被測軟體,清楚各軟體模塊的重要程度和相互關系,了解各軟體模塊以前的測驗及修改等歷史情況,可以有針對性地進行測驗;軟體開發人員和用戶交流較為方便,在測驗中能夠發現與需求不一致的軟體錯誤,但是開發人員急于證明他們的程式是毫無錯誤的,是按照用戶的需求開發的,而且完全能夠按照預定的進度和預算完成,這將影響開發人員完成相關測驗任務,
獨立測驗人員應具備較強的測驗理論水平和測驗經驗,熟練掌握軟體測驗工具,并知悉被測軟體的功能需求才能夠對軟體進行系統全面的測驗,但獨立測驗人員有時會缺乏相應領域的專業知識,主要測驗依據是用戶的技術要求及開發人員在軟體研制程序中形成的檔案,一方面這些檔案中缺乏對用戶基本需求的描述;另一方面,獨立測驗人員常常需通過開發人員來進行需求的理解,因此在軟體測驗中有時無法發現軟體不滿足需求方面的錯誤,但這種錯誤往往從用戶角度來看是最嚴重的,同時,獨立測驗人員由于對各軟體模塊的重要性及相互關系了解不深,有時會影響測驗效率,
在條件允許的情況下,軟體完成后可提交用戶試用,用戶在試用中根據實際使用需求進行操作,其中包括各種正常操作流程和非正常操作流程,用戶試用可有效檢驗軟體是否滿足用戶需求,同時在用戶試用中對軟體的可靠性等方面也同步進行了測驗,因為用戶試用方式同實際使用方式非常接近,所以通過用戶試用獲得好評的軟體基本可以滿足今后的實際使用要求,
**提高軟體測驗效率的方法**
為了提高軟體測驗效率,測驗人員需要熟悉掌握軟體涉及的領域知識,了解軟體各項功能的重要程度和成熟程度,掌握測驗理論和工具;用戶是驗證需求正確性的主導力量,應充分發揮用戶的積極作用,
**在組織軟體測驗時,可通過以下幾個方面提高軟體測驗效率:**
根據不同測驗人員的特點進行測驗分工,單元測驗應以軟體開發人員為主進行,以保證每個單元能夠完成設計的功能,在很多情況下,集成測驗也可以開發人員為主進行,當軟體體系結構完成后,獨立測驗機構介人;
軟體測驗人員應注重與用戶的溝通,及早發現需求分析、理解不合理的問題,避免今后花費大量的資源和時間進行改正;
對于軟體開發人員,需加強測驗方法的培訓,提高自我測驗的效率;
在選擇獨立測驗人員時,盡量選擇比較熟悉了解被測軟體相關領域知識的人員;
獨立測驗人員應該在軟體開發的需求階段就參與專案的研制,以便更好地制定測驗計劃、確定測驗目標及撰寫測驗用例,通過找出專案中關鍵的模塊和出錯率高的模塊,可使測驗首先集中在最重要的部分,避免發生把過多時間花費在非重要模塊的測驗而沒有時間測驗重要的模塊的情況;
被測軟體在測驗中發現了問題,要進行有組織的分析研究,然后權衡利弊進行規范化修改,避免反復修改,反復測驗;
規范軟體配置管理,通過管理及技術手段,對軟體和檔案版本進行控制,保障軟體測驗的有效性,
**結束語**
實踐證明,通過提高被測軟體的可測驗性,以及合理組織軟體測驗作業,可以有效地提高軟體測驗效率,隨著軟體測驗的重要性得以承認,軟體測驗階段在整個軟體開發周期中所占的比重也日益增大,為了將缺陷和錯誤消滅在萌芽之中,軟體測驗將逐步發展成為軟體開發每一階段都要進行而且需要反復進行的活動,軟體測驗中大量的作業是機械的、重復的、枯燥的和非智力的,但逐步加強軟體自動化測驗的研究和推廣將是今后軟體產業的發展趨勢,
在這里推薦一個軟體測驗交流群,QQ:642830685,群中不定期的分享軟體測資源,測驗面試題以及行業資訊,大家可以在群中積極交流問題,還有技術大佬為你解答問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250488.html
標籤:其他
