沈云凌
中國電子科技集團公司第七研究所,廣東 廣州,510310
當前是“軟件定義一切”[1]的智能時代,隨著信息更新速度加快,軟件更新交付周期縮短,用戶需求變化層出不窮,對軟件質量效能的要求也越來越高。軟件測試是軟件全生命周期中保障軟件質量的關鍵實踐[2],因此,作為以確保用戶需求和期望得到滿足為目標,決定軟件測試結果有效性的關鍵組成,軟件測試需求管理效能的提升已成為關注熱點。隨著對軟件測試需求管理活動重視程度的提高,近幾年陸續發布的軟件和測試相關的能力成熟度標準均關注并細化了軟件和測試需求管理活動的要求。測試需求管理活動主要在能力等級二級和三級中涵蓋,能力等級三級的軟件測試需求管理活動能發揮其更大的效能。同時,由于各類標準對軟件測評實驗室開展測試需求管理活動的實施和改進指導仍存在不足之處,因此,有必要研究一種基于TMMi三級的軟件測試需求管理過程,為軟件測評實驗室開展測試需求管理活動提供具體的實施和改進指導,以提高軟件測評質量與測試結果的有效性,從而促進軟件測試效能的提高。
能力成熟度模型集成(CMMI)V2.0于2018年3月發布,包括初始、已管理、已定義、已測量和優化五個成熟度等級[3]。CMMI2.0不但是過程改進模型,更是一個業務能力改進的模型[4]。CMMI2.0—DEV視圖將“需求開發”、“需求管理”合并為“需求開發和管理”[3],同時將“驗證”和“確認”合并為“驗證和確認”[3],提高了對需求管理和測試活動的重視程度。CMMI2.0的需求管理活動主要涵蓋在二級規范級和三級全面級兩個等級共13個子實踐域中。
GJB5000B于 2021年12月發布,是依據CMMI 2.0并結合軟件工程實踐經驗編制的軟件能力成熟度模型。GJB5000B適用于軟件論證、研制、實驗和維護能力的評價和過程改進,包括初始級、規范級、全面級、量化級、卓越級五個成熟度等級[5]。GJB5000B的需求管理活動涵蓋在二級規范級和三級全面級兩個等級共11個子實踐域中,且每個子實踐均給出了活動實例和工作產品實例,其精細化的管理和改進思想對軟件需求管理活動的實施和改進指導更有意義。
相比CMMI和GJB5000B專注于組織級別、軟件和系統工程的過程,測試成熟度模型集成(TMMi)則重點關注測試領域。TMMi是應測試行業過程改進需要而出現的測試能力成熟度的評估標準和實現方式集合。TMMi的組織架構與CMMI兼容,作為CMMI的補充模型與CMMI 配合使用,可有效解決CMMI對于測試關注度不夠的問題[6]。TMMi的能力等級結構與CMMI一樣有五個成熟度等級[6]。軟件測試需求管理活動內容主要在TMMi的二級已管理和三級已定義兩個等級的5個工程實踐域中涵蓋。但TMMi并未采用獨立的實踐域對測試需求管理活動進行說明,且只包括部分的需求管理活動實踐和改進指導內容,因此,對軟件測評實驗室開展軟件測試需求管理活動的實施和改進指導略有不足。TMMi是CMMI模型的補充模型,GJB5000B是CMMI針對軟件過程的本地化改進模型,因此,TMMi也可以與GJB5000B配合使用。
表1[3-6]從需求管理活動主要涉及的內容、強項與不足等方面對TMMi、CMMI2.0和GJB5000B三項標準進行了對比和分析。經分析對比可知,上述三項標準對軟件測評實驗室開展軟件測試需求管理活動的實踐和改進指導均存在不足之處。且上述標準均采用了繼承原則,即達到能力等級三級的軟件測試需求管理要求時,其二級要求便已覆蓋。能力等級三級的軟件測試需求管理活動發揮的效能更大。因此,基于TMMi三級的軟件測試需求管理實踐,借鑒CMMI2.0和GJB5000B的需求管理思想強項,并結合工程實踐經驗,提出的軟件測試需求管理過程,對軟件測評實驗室開展測試需求管理過程改進及業務能力改進,提高實驗室的測試效能具有重要意義。

表1 標準的需求管理內容對比分析
本文提出的基于TMMi三級的軟件測試需求管理過程包括獲取和分析測試需求、獲得對測試需求的理解和承諾、建立并維護測試需求雙向追溯性、管理需求變更、建立并維護測試需求分析準則、分析和重用共性測試需求這六項活動。其中,前四項活動對應能力等級二級的要求,后兩項活動對應能力等級三級的要求。該過程的主要活動如圖1所示。

圖1 軟件測試需求管理的主要活動
按測試需求分析準則的要求獲取和分析軟件測試需求后,建立需求的雙向跟蹤矩陣,并通過評審及各種溝通方式與利益相關方對測試需求達成一致的理解和承諾。當委托方提供的需求發生變更或需求不一致須糾正時,觸發測試需求變更流程,開展需求變更影響分析,變更測試需求并同步更新測試需求的雙向跟蹤矩陣,且與利益相關方達成一致的理解和承諾。在分析測試需求時,應根據已建立的重用準則進行重用分析,確認是否存在共性測試需求可使用重用庫的可重用測試需求資產,或是否存在共性測試需求可按準則的要求提取為可重用測試需求資產并積累到重用庫。持續改進測試需求分析準則和重用準則。
軟件測試需求的利益相關方關系如圖2所示。本文所指的利益相關方包括委托方和軟件測評實驗室的相關人員,委托方包括軟件研制方、軟件使用方、研制任務總體方、研制任務下達方和質量管理方。委托方提供軟件需求及相關測試要求,所有利益相關方均參與軟件測試需求的確認和變更評審活動。

圖2 軟件測試需求與利益相關方的關系
下面將從目標、角色及職責、時機/頻度、入口準則、輸入、活動要求、輸出和出口準則這八個方面,詳細闡述基于TMMi三級的軟件測試需求管理過程的各項主要活動。
(1)目標。獲取和分析測試需求的目標是依據測試合同、技術文檔、利益相關方的需求、期望、測試要求等信息,分析、提取軟件測試需求并將其轉化為測試項,同時確定測試方法和充分性等測試內容。
(2)責任角色及職責。委托方提供測試需求,實驗室獲取和分析測試需求。
(3)時機/頻度。測試需求分析、需求變更時。
(4)入口準則。測試項目已接收并啟動。
(5)輸入。測試合同、技術文檔、利益相關方的需求、期望、測試要求等。
(6)活動要求。分析提取軟件需求并挖掘隱含需求。根據測試合同、技術文檔等信息,結合測試級別,分析軟件的功能、性能、接口、質量特性、設計約束和數據等需求。若測試依據文檔不夠完善,則可借助啟發式分析方法,從系統業務目標、結構、功能、數據、運行平臺、操作等多方面綜合分析[7],同時通過對利益相關方的訪談及觀察、接口分析、用戶界面分析、文檔分析等方式[8],挖掘未明示的隱含需求。引出測試標準、規范等測試要求,并根據測試級別、測試標準及相關要求和軟件需求內容,確定測試類型。結合測試類型,將已分析并獲取的軟件需求及隱含需求轉化為測試項。測試項可由一種或多種測試類型覆蓋,同一個測試對象應對應多個測試項,一個測試項可劃分為多個測試子項。測試項中應包括唯一的名稱和標識、優先級、測試方法(測試數據生成及注入方法、使用的測試工具等)、適用的測試場景與環境等內容[9]。確定測試的正常和異常終止的條件及情況。根據委托方的測試要求、軟件的重要性和約束條件進行分析的測試充分性,確定測試范圍及覆蓋程度,并說明不覆蓋的原因。最后,形成文檔化的軟件測試需求文檔。將委托方提供并通過評審的測試輸入項入庫并建立測試需求基線。
(7)輸出。軟件測試計劃/大綱、溝通記錄、測試輸入項評審記錄、測試需求基線等。
(8)出口準則。測試需求的獲取和分析活動符合充分性、正確性、完整性和協調性的原則,測試需求基線已納入配置管理,產生的所有記錄均已納入數據管理。
(1)目標。獲得對測試需求的理解和承諾的目標是與委托方就測試需求達成共識,與利益相關方一起對測試需求(含變更)做出承諾。
(2)責任角色及職責。實驗室組織軟件測試計劃/大綱的評審,委托方及其他利益相關方參與評審。
(3)時機/頻度。測試需求分析、需求變更時。
(4)入口準則。軟件測評項目已接收并啟動。
(5)輸入。軟件測試計劃/大綱、測試需求跟蹤矩陣。
(6)活動要求。確定合適的委托方準則,明確產生需求的合適渠道或來源。制定評價和驗收需求的準則可包括正確性、二義性、完整性、一致性、可實現性、可測試性、可追溯性、唯一標識等內容。與委托方充分溝通并達成共識的方式包括調研、訪談、評審、郵件等。實驗室需對與利益相關方對達成一致的測試需求及更改做出承諾。
(7)輸出。委托方、需求評價和驗收的準則、針對需求(含變更)的審批確認記錄、評審記錄等。
(8)出口準則。所有評審問題均已關閉或得到妥善處理,軟件測試計劃/大綱已納入配置管理,產生的所有記錄均已納入數據管理。
(1)目標。建立并維護測試需求雙向追溯性的目標是建立并維護軟件測試需求的雙向可追溯性,保證測試項、用例、記錄與軟件需求一致。
(2)責任角色及職責。實驗室建立和維護測試需求雙向追蹤關系。
(3)時機/頻度。軟件測試技術文檔(軟件測試計劃/大綱、軟件測試說明(含用例)、軟件測試記錄)建立/更改時。
(4)入口準則。軟件測試輸入項(測試依據、測試要求文件等)已通過評審并建立需求基線。
(5)輸入。軟件測試輸入項、軟件測試技術文檔。
(6)活動要求。在測試的全生命周期內,建立并維護從委托方的軟件需求到測試項、到測試用例、到測試記錄及軟件問題的雙向跟蹤關系。測試需求跟蹤的內容需全面,包括功能、性能、接口、質量特性等所有委托方提供的軟件需求及隱含需求。在測試生命周期內,監控并維護軟件測試計劃/大綱、軟件測試說明(含用例)、軟件測試記錄(含問題)等軟件測試技術文檔與軟件需求的一致性,當發生需求變更時,應做好充分的影響分析并同時變更受影響的測試需求及相關軟件測試技術文檔。在測試需求跟蹤時,識別并標識不一致問題及其來源,必要時啟動糾正措施。不一致主要包括未正確驗證、有多余項、有缺漏項等。
(7)輸出。測試需求跟蹤矩陣、不一致的記錄、評審記錄等。
(8)出口準則。所有評審問題和不一致問題均已關閉或得到妥善處理,軟件技術文檔已納入配置管理,產生的所有記錄均已納入數據管理。
(1)目標。管理需求變更的目標是在測試全生命周期內,對測試需求變更進行管理。
(2)責任角色及職責。實驗室組織軟件測試需求變更影響分析和評審,審批、實施和驗證測試需求變更。委托方及其他利益相關方評審變更。
(3)時機/頻度。測試需求變更時。
(4)入口準則。軟件測評需求基線已建立。
(5)輸入。委托方提供的需求變更或測試需求不一致問題。
(6)活動要求。測試需求變更影響分析,評估測試需求變更的必要性、可行性及對測試技術文檔和進度的影響。需求變更的來源包括委托方的需求產生變更、測試需求跟蹤時發現不一致問題糾正。變更級別包括重要變更、一般變更和勘誤性變更三類。重要變更是指涉及重要技術指標、影響互聯互通或軟件關鍵需求的變更;一般變更是指軟件非關鍵需求內容的變更;勘誤性變更是指文字描述或其他勘誤性錯誤的需求變更。變更過程包括申請、影響分析、審批、實施和驗證。所有涉及的利益相關方參與變更評審。變更后,更新并發布需求變更涉及的測試工作產品,若涉及需求基線,則應一并更新發布。測試需求變更記錄納入數據管理。
(7)輸出。更改后的軟件技術文檔/需求基線、變更申請、審批和驗證記錄、配置管理記錄、變更評審記錄等。
(8)出口準則。所有評審問題均已關閉或得到妥善處理,變更涉及的工作產品已納入配置管理,產生的所有記錄均已納入數據管理。
(1)目標。建立并維護測試需求分析準則的目標是實驗室根據業務類型、測試標準建立測試需求分析準則,并依據準則進行測試需求分析。
(2)責任角色及職責。實驗室建立和維護測試需求分析準則。
(3)時機/頻度。測試需求分析準則建立、修訂時。
(4)入口準則。測試需求分析準則建立和修訂工作啟動。
(5)輸入。實驗室的業務類型、測試標準。
(6)活動要求。建立并維護用于指導和檢查測試需求分析的測試需求分析準則,如軟件測試需求分析指南、規范等。按測試類型、測試標準建立并維護專項需求分析準則,如功能類測試需求分析準則、性能類測試需求分析準則、接口類測試需求分析準則、專項類測試需求分析準則、民用軟件測試方法需求分析準則等。所有分析準則均需通過評審并持續改進。
(7)輸出。測試需求分析準則、評審記錄、改進記錄等。
(8)出口準則。所有評審問題均已關閉或得到妥善處理,測試需求分析已納入體系管理,產生的所有記錄均已納入數據管理。
(1)目標。分析和重用共性測試需求的目標是實驗室建立共性測試需求和重用準則,并依據準則建立共性測試需求,項目依據準則重用共性測試需求。
(2)責任角色及職責。實驗室編制重用準則、實施共性需求分析和重用、組織重用分析準則的評審,委托方及其他利益相關方參與評審。
(3)時機/頻度。共用準則建立/修訂工作啟動時,測試需求分析和重用時。
(4)入口準則。軟件測評項目啟動/重用改進工作啟動。
(5)輸入。共性測試需求。
(6)活動要求。建立和維護共性測試需求的建立及重用準則。建立準則一般規定共性測試需求的提取、評審與確定要求和改進維護要求等,重用準則一般明確共性測試需求在項目中的重用條件、重用方式、評審與確定要求和問題反饋機制等。依據共性測試需求建立準則,采用領域分析(自上而下)與逆向提取(自下而上)相結合的方法建立共性測試需求,基于通用功能需求實現其測試需求的可擴展性、可配置項,形成共性測試項并文檔化。評審共性測試需求并將通過評審的共性測試需確定為可重用測試需求納入組織資產(重用庫)進行管理。在項目的測試需求分析階段開展測試需求重用分析時,結合項目的任務要求和測試類型,從功能、性能、接口、質量特性等方面分析測試項目是否可以重用組織資產中的共性測試需求,并標識項目中重用的共性測試需求。在項目的收尾階段,分析項目是否存在可提取為可重用測試需求的共性測試需求,并按重用準則的要求提取、評審并確定為可重用測試需求并納入重用庫中。
(7)輸出。共性測試需求的建立和重用準則、共性測試需求描述文檔、共性測試需求的重用分析記錄、評審記錄等。
(8)出口準則。所有評審問題均已關閉或得到妥善處理,共性測試需求的建立和重用準則、共性測試需求說明文檔已納入組織資產,產生的所有記錄均已納入數據管理。
基于TMMi三級的軟件測試需求管理過程已在該實驗室中開展初步應用和驗證。初步驗證結果表明,該管理過程的應用有效指導和規范軟件測評實驗室的軟件測試需求管理活動,減少軟件測試需求管理活動的不符合,穩步提升測試質量和效率,提高客戶滿意度。其中,測試需求分析準則的使用和共性測試需求資產的建立和重用,對軟件測試需求質量的促進效果明顯。隨著后續的應用和持續改進,軟件測試質量和效能將持續提高。
軟件測試需求管理活動貫穿整個軟件測試生命周期,是軟件需求滿足、軟件測試結果有效的重要保證[10]。本文分析對比了CMMI、GJB5000B和TMMi三項標準在軟件測試需求管理活動實施和改進指導的強項與不足,針對上述標準在軟件測評實驗室開展測試需求管理活動方面的不足,在基于TMMi的軟件測試需求管理實踐,并借鑒CMMI和GJB5000B的需求管理強項思想的基礎上,結合工程實踐經驗,提出了基于TMMi三級的軟件測試需求管理過程。旨在指導和規范軟件測評實驗室開展的測試需求管理活動的實施和改進工作,促使其軟件測試需求管理活動達到測試成熟度模型三級的要求,提高軟件測評過程質量和軟件測試結果有效性,達到提高軟件測試效能的目的。