Parasoft C/C++test:需求管理和可追溯性矩陣
嚴(yán)格的軟件開發(fā)過程的基石是需求管理以及這些需求對實施的可追溯性,以及隨后對正確實施的證明。
需求可追溯性由作者Gotel和Finkelstein定義為“具有在向前和向后的方向(即從需求的起源、發(fā)展、規(guī)范到隨后的部署和描述)中描述和跟蹤需求壽命的能力。使用,以及在任何這些階段進(jìn)行不斷完善和迭代的階段。”
跟蹤需求不僅是將文檔中的段落鏈接到代碼或測試部分。當(dāng)需求體現(xiàn)在設(shè)計、架構(gòu)和實施中時,必須在整個開發(fā)階段中保持可追溯性??紤]軟件的典型“V”圖。
圖1:經(jīng)典的V圖顯示了可追溯性如何在開發(fā)的每個階段前進(jìn)和后退。
每個階段都驅(qū)動下一個階段。反過來,這些階段中的工作項必須滿足上一階段的要求。系統(tǒng)設(shè)計從需求出發(fā)。系統(tǒng)設(shè)計滿足要求,依此類推。
需求可追溯性管理(RTM)證明每個階段都滿足每個后續(xù)階段的需求。但是,這只是圖片的一半。這些可追溯性都不能證明已滿足要求。那需要測試。
圖2:需求可追溯性的另一個重要部分是驗證和確認(rèn)測試,以從相應(yīng)的設(shè)計階段證明規(guī)范的實施。驗證通常在與客戶進(jìn)行最終驗收測試的開發(fā)周期結(jié)束時進(jìn)行。
在圖2所示的V圖中,每個測試階段都會驗證與相應(yīng)的設(shè)計/實施階段相關(guān)的規(guī)范是否滿足。在該示例中,驗收測試驗證需求,集成測試驗證架構(gòu)設(shè)計,單元測試驗證模塊設(shè)計,等等。驗證通常發(fā)生在與客戶進(jìn)行驗收測試的開發(fā)生命周期末期。
需求可追溯性既需要實現(xiàn)和驗證的鏈接,也需要開發(fā)過程中的所有相關(guān)工件。任何現(xiàn)實規(guī)模的軟件開發(fā)都將有許多需求,復(fù)雜的設(shè)計和體系結(jié)構(gòu),并可能有成千上萬的單元和單元測試。測試中RTM的自動化是必要的,特別是對于要求對證書和審核進(jìn)行追溯的文檔的安全性至關(guān)重要的軟件而言。
需求追蹤矩陣
需求可追溯性矩陣是一個文檔,它說明了對相應(yīng)工作項(例如單元測試、模塊源代碼、體系結(jié)構(gòu)設(shè)計元素等)的滿足。該矩陣通常顯示為表格,該表格顯示了產(chǎn)品的相應(yīng)部分如何“檢查”每個需求。這些矩陣的創(chuàng)建和維護(hù)通常是使用需求管理工具自動進(jìn)行的,能夠以多種形式可視化顯示它們,甚至在需要時以硬拷貝顯示。
以下是Intland codeBeamer的需求可追溯性矩陣示例。它顯示了分解為高級和低級需求的系統(tǒng)級別需求,以及驗證每個需求的測試用例。
圖3:Intland codeBeamer中的需求可追溯性矩陣示例。
為什么需要需求可追溯性?
從最簡單的意義上講,需要具有需求可追溯性,以準(zhǔn)確跟蹤您在編寫軟件時正在構(gòu)建的內(nèi)容。這意味著確保該軟件能夠?qū)崿F(xiàn)預(yù)期的功能,并且僅在構(gòu)建所需的功能。
可追溯性既可以證明您滿足要求,又可以找出不滿足要求的地方。如果存在無法追溯到需求的體系結(jié)構(gòu)元素或源代碼,則存在風(fēng)險,不應(yīng)存在。好處不只是提供實施證明。嚴(yán)格的可追溯性是開發(fā)進(jìn)度的重要可見性。
可追溯性在企業(yè)軟件應(yīng)用程序中不一定嚴(yán)格,盡管這種情況肯定會有所改善。但是,這是安全和關(guān)鍵任務(wù)軟件中的必需活動。
安全關(guān)鍵軟件中的需求可追溯性
安全關(guān)鍵軟件的要求是產(chǎn)品設(shè)計和開發(fā)的關(guān)鍵驅(qū)動力。這些要求包括功能安全、應(yīng)用要求和完全定義產(chǎn)品的非功能要求。對文件要求的依賴是一個喜憂參半的問題,因為糟糕的需求是軟件中安全事件的關(guān)鍵原因之一。換句話說,實施過程沒有錯,但是需求不佳或缺失。
重要的是要認(rèn)識到,對安全至關(guān)重要的軟件中的許多要求都源于安全分析和風(fēng)險管理。當(dāng)然,該系統(tǒng)必須執(zhí)行其預(yù)期的功能,但它還必須減輕風(fēng)險,以大大降低受傷的可能性。此外,為了記錄和證明這些安全功能已得到完全正確的實施和測試,可追溯性至關(guān)重要。
自動化雙向追溯
保持任何規(guī)模的可追溯性記錄都需要自動化。應(yīng)用程序生命周期管理工具包括成熟的需求管理功能,并且往往成為可追溯性的中心。諸如Parasoft之類的集成軟件測試工具通過提供對可執(zhí)行測試用例的自動化雙向可追溯性來完成對需求的驗證和確認(rèn),其中包括通過或失敗結(jié)果,并追溯到實現(xiàn)需求的源代碼。
Parasoft集成了市場領(lǐng)先的需求管理和敏捷計劃系統(tǒng),例如Intland codeBeamer,西門子的Polarion,Atlassian Jira,CollabNet VersionOne和TeamForge。
如下圖所示,Parasoft的每個測試自動化工具(C/C++test,Jtest,dotTEST,SOAtest和Selenic)都支持將測試與這些系統(tǒng)中定義的工作項(例如需求、案例、缺陷、測試用例定義)關(guān)聯(lián)起來。可追溯性通過Parasoft的中央報告和分析儀表板(Parasoft DTP)進(jìn)行管理。
圖4:Parasoft提供了從工作項到測試用例以及測試結(jié)果的雙向可追溯性——既顯示了使用Parasoft DTP的可追溯性報告,又將結(jié)果報告回了需求管理系統(tǒng)。
Parasoft DTP將管理系統(tǒng)中的唯一標(biāo)識符與靜態(tài)分析結(jié)果、代碼覆蓋率以及單元、集成和功能測試的測試結(jié)果相關(guān)聯(lián)。結(jié)果顯示在Parasoft DTP的可追溯性報告中,并發(fā)送回需求管理系統(tǒng)。它們提供了完整的雙向可追溯性,并作為系統(tǒng)可追溯性矩陣的一部分進(jìn)行報告。
Parasoft DTP中的可追溯性報告是高度可定制的。下圖顯示了Jira中編寫的故事的需求可追溯性矩陣模板,該故事可追溯到測試用例、靜態(tài)分析結(jié)果、源代碼文件和手動代碼審查。
圖5:集成了Altassian Jira的Parasoft DTP的需求可追溯性矩陣模板。
測試結(jié)果與工作項之間的雙向關(guān)聯(lián)為需求可追溯性提供了基礎(chǔ)。Parasoft DTP添加了測試和代碼覆蓋率分析,以評估測試的完整性。在需求、測試和實現(xiàn)需求的工件之間保持這種雙向關(guān)聯(lián)是可追溯性的重要組成部分。
管理缺陷/問題創(chuàng)建的工作流程
Parasoft DTP還可以幫助將缺陷和問題的產(chǎn)生分類到新的工作項中。測試自動化和靜態(tài)分析會消耗大量數(shù)據(jù)。幫助管理這些數(shù)據(jù)的工具對于確定工作項目的優(yōu)先級并防止工具壓倒團(tuán)隊很重要。
使用如下所示的Parasoft DTP中的違規(guī)和測試瀏覽器,團(tuán)隊可以在對測試失敗和靜態(tài)分析違規(guī)進(jìn)行分類之后,有效地創(chuàng)建新的工作項。可追溯性與分類問題/缺陷創(chuàng)建的結(jié)合為工作流提供了完整的反饋循環(huán)。
圖6:在VersionOne中創(chuàng)建新的缺陷,同時對Parasoft DTP中的測試失敗進(jìn)行分類。
總結(jié)
需求可追溯性是軟件開發(fā)中需求管理的關(guān)鍵部分??勺匪菪缘男问郊墑e因應(yīng)用程序類型而異,但是對于安全性至關(guān)重要的軟件,這種做法是絕對必要的。
雙向可追溯性很重要,因此需求管理工具和其他生命周期工具可以將結(jié)果關(guān)聯(lián)起來并使它們與需求和相關(guān)的工作項保持一致。
現(xiàn)代軟件項目的復(fù)雜性要求自動化以擴(kuò)展需求的可追溯性。Parasoft工具旨在與同類最佳的需求管理工具集成,以幫助將追溯性納入測試自動化結(jié)果,并完成軟件測試驗證和需求確認(rèn)。