安全相關軟體的挑戰
嵌入式軟體已經逐漸成為當今創新型產品的核心。對於在我們日常生活 中必不可少的產品來說,嵌入式軟體是定義其功能,控制其電氣和機械繫統的重要組件。例如,在飛機 、汽車、火車或醫療設備中,故障可能會導致人身傷亡。此時必須倍加謹慎,也需要付出額外的努力, 確保系統安全運作,保證使用者的安全,避免代價高昂的產品召回。
對於極度注重安全的代碼, 企業必須遵循嚴格的開發標準和指導準則,例如針對商業航空電子裝置的 DO-178C 和 DO-178B;針對 汽車的 ISO 26262;針對醫療設備的 IEC 62304;以及針對一般功能安全要求的 IEC 61508。各公司須 負責提供其採用良好開發流程的證據,例如從需求到實現的跟蹤能力,充分的測試,以及其工具不會造 成產品中存在錯誤。此外還必須抽出額外的時間、執行額外的測試,以確認軟體符合安全要求,而這一 切都會顯著增加開發時間和成本。
利用基於模型測試的自動化測試
利用基於模型的測試,您就可以通過 圖形化的方式捕獲測試案例。這有益於建立更易於理解、富有表現力的測試案例,簡化整個Team Dev內 的溝通。測試案例可跟蹤需求,從而輕鬆理解需求變化的影響。IBM? Rational? Rhapsody? TestConductor Add On 為 Rational Rhapsody Developer、Rational Rhapsody Designer for Systems Engineers 或 Rational Rhapsody Architect for Software 版本添加了以 UML 測試組態文 件為基礎的基於模型的測試功能。測試組態檔案在 UML 中添加了測試架構和測試行為的概念,以便根 據測試量身定製開發環境。測試架構擴充了現有 UML 2.0 結構概念,以便描述相關測試元素及其之間 的關係。類似地,測試行為擴充了現有 UML 2.0 的行為概念,以便包含測試過程中的所有觀察結果和 活動。
Rhapsody TestConductor Add On 可自動為正在測試的系統建立測試架構。使用者可以使 用 UML 順序圖、狀態圖或流程圖,以圖形的方式建立測試案例。測試案例的圖形化表示允許更好地就 測試進行溝通,有助於理解設計的行為。使用者可以執行測試並檢視結果,以便自動化單元測試和迴歸測 試。通過在開發流程早期的設計模型階段執行測試,品質保障經理和軟體工程師可以高效地、有效地對 設計進行需求驗證,儘快識別出問題。
基於模型的測試在安全相關開發中的優勢
安全相關軟體必須具 備從需求到軟體架構再到代碼的完整可跟蹤能力。除此之外,還必須具備從需求到針對所開發軟體檢查 需求正確性測試案例的跟蹤能力。實現元素(例如測試架構、測試案例)以及模型層級的概念允許在模 型層級上直接實現雙向跟蹤能力。這支援自動分析模型和代碼的需求覆蓋率以及結構覆蓋率。除此之外 ,如果使用 UML 順序圖、狀態機器等標註法以圖形的方式指定測試案例,驗證將比傳統以代碼為中心的 測試案例更加輕鬆有效。基於模型的方法允許在統一的架構內開發設計工件和測試工件。因此,該方法 能夠提高開發與測試流程的敏捷性,與具有獨立開發與測試階段的流程相比,效率更高、成本更低。 IBM Rational Rhapsody TestConductor Add On 可自動化許多測試活動,包括建立測試架構和執行測 試用例。因此,測試人員可以專註於其測試案例的正確性和完整性,不必花時間去處理繁瑣的、易於出 錯的任務,例如建立測試裝置。與傳統測試指令碼語言相比,模型驅動的測試架構和測試案例有著圖形化 的特點和明確的文檔,因此更易於維護。
採用基於模型的測試的參考工作流程概述
Rational Rhapsody 參考工 作流描述了一種基於模型的開發方法,包括適用於安全相關軟體開發的自動代碼產生和基於模型的測試 。圖 1 展示了該參考工作流程中的主要活動。工作流程的上半部分描述了設計和實現安全相關軟體的活動 。工作流程的下半部分描述了驗證軟體的活動。
該方法同時解決了設計和實現,同時還提供了恰 當的測試和驗證。使用文本形式表示的需求來指導正式 UML/SysML 模型的開發,這些模型隨後將使用 代碼產生轉化為代碼。完善步驟均附帶恰當的指南和檢查。
從文本需求到可用於代碼產生的設 計模型的完善步驟將通過執行基於與系統需求的模型級測試加以驗證,此驗證過程將利用 IBM Rational Rhapsody 動畫通過模型類比完成。這種測試也稱為模型在環(Model-in-the-Loop,MiL)測 試。產生的程式碼可在電腦上驗證,方法是執行 MiL 過程中的相同測試案例,但不包含 Rational Rhapsody 動畫。這種測試也稱為軟體在環(Software-in-the-Loop,SiL)測試。MiL 與 SiL 的測試 結果將執行自動等效檢查(對比測試),以驗證結果。此外,還可在目標處理器上執行一組測試來補充 此類驗證,這種測試稱為處理器在環(Processor-in-the-Loop,PiL)測試。模型和代碼的測試執行提 供了結構化的覆蓋率度量,可評估測試的完整性,避免包含不必要的功能。需求覆蓋率是在測試案例的 執行過程中度量的。
圖 1. IBM Rational Rhapsody Reference 工作流程的活動
工作流程中的第一項活動是利用恰當的建模指導原則,將給定需求轉化為可執行模型。隨後,添加基 於模型的測試,確保模型確實正確地捕獲了需求。覆蓋率測試(需求覆蓋率和模型覆蓋率)可度量基於 模型的測試套件的完整性。代碼產生用於通過模型產生實現。模型與代碼間的對比測試或等效性測試是 代碼驗證的關鍵要素。在兩個層級同時運行測試可驗證模型和代碼是否表現出相同的行為。程式碼涵蓋範圍 指標用於根據預定義的程式碼涵蓋範圍標準確保測試套件的完整性。