翻譯|行業資訊|編輯:胡濤|2024-03-04 11:40:54.560|閱讀 82 次
概述:開發安全關鍵軟件的成本很高。然而,可以通過軟件的自動化和左移測試來減少錯誤率,一起來看如何改善~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
我們正面臨安全關鍵軟件的成本危機,這意味著所需增加的功能已經超出了支付其開發費用的能力。例如,波音 787 項目需要 650 萬行代碼,設計、開發和測試成本達 40 億美元。波音777X項目的成本數字并未公開披露,波音737 MAX最初估計為36億美元,但后來升至63億美元,這還不包括數十億美元的故障成本。
重大安全關鍵項目的趨勢顯示總成本呈指數增長,軟件在總開發預算中所占比例逐年增加。使用先前項目中使用的相同技術,下一個大型航空航天項目可能無法負擔。所以,我們能做些什么?
安全認證以及所需的測試和驗證占軟件開發預算的很大一部分。軟件的左移測試(在 SDLC 的早期進行測試)在利用自動化的同時,在成本、風險和進度方面帶來了巨大的回報。下圖顯示了商業航空公司軟件開發每千行代碼的成本為數百萬美元,這清楚地顯示了指數級增長。
毫不奇怪,大多數缺陷都是在項目一開始就被引入的,甚至是在編寫第一行代碼之前。大多數錯誤都是在測試期間發現并修復的。但有相當一部分(高達 20%)是在產品銷售和運輸后的運營過程中發現的。
在經過認證的系統中,這要么意味著極其昂貴的修復-測試-重新認證周期,要么意味著操作員需要解決問題。下圖顯示了軟件開發生命周期每個階段引入和檢測到的錯誤的相對百分比。
在生命周期的早期修復缺陷是最便宜的。在項目期間,查找和修復這些問題的成本會成倍增加。在操作中,產品交付到客戶手中后,修復成本最高。部署后缺陷修復成本是保守的,不包括對您的品牌的損害以及現場安全事件的責任。
下圖顯示了在生命周期的每個階段修復缺陷的相對成本。顯然,目標是將檢測到并修復的缺陷移至生命周期的早期。換句話說,左移。此外,希望減少交付給客戶的缺陷數量,這在每個領域都是現實。
安全關鍵的軟件行業認識到需要改變工作方式。太多的項目都在重新發明輪子,而認證全新的軟件既耗時又昂貴。新產品的連接性和功能性的增長意味著方法需要改變。在這篇文章中,我們不會涵蓋所提出的所有技術,而是集中討論測試自動化在減少、檢測和修復缺陷和安全漏洞方面所扮演的角色。
測試自動化的優點
任何安全關鍵項目的很大一部分都是測試。自動化對于實現安全、保障和質量目標是絕對必要的。以下是測試自動化工具如何支持現代軟件開發方法并提高測試和文檔生產力的示例。
支持敏捷和 CI/CD 管道
瀑布方法的問題已被理解,許多團隊正在使用更現代的開發方法來提高質量和安全性。測試自動化是任何迭代開發方法的重要組成部分,因為測試套件在模塊、組件等的每次新迭代上運行。
測試自動化通過可重復的自動化測試支持這些方法,為每個測試提供不同級別的報告,而且隨著時間的推移提供累積結果。這些工具還旨在通過與工作項跟蹤、需求管理、構建系統和源存儲庫服務集成來與 CI 流程配合使用。動態分析工具對于檢測難以檢測的運行時錯誤至關重要。靜態分析在測試開始前檢測缺陷方面發揮著重要作用。
支持軟件檢查
在開發生命周期早期消除缺陷的最佳實踐之一是檢查。檢查意味著審查所有內容,而不僅僅是源代碼。例如,檢查需求和設計對于防止系統中錯誤的主要來源至關重要。請參見圖 2。許多錯誤實際上是被設計到系統中的。工具在此階段發揮的作用較小,但確實提高了代碼審查的有效性。
自動化單元測試、動態錯誤檢測和靜態分析大大改進了項目早期編碼階段的錯誤檢測。自動化測試的結果可以在代碼審查中呈現,從而減少對手動錯誤檢測的依賴,并留出更多時間來檢測不正確的需求和設計決策。
提高測試效率
手動測試非常繁瑣且可重復性較差。結果收集可以是臨時的,盡管結果是“正確的”,但也可能會錯過錯誤。實現所需的代碼覆蓋率(根據安全標準和項目的關鍵性而變化)很難跟蹤。
測試自動化不僅使測試變得不再那么繁瑣和可重復,而且高級測試工具的報告功能可以創建有關項目狀態的重要管理信息。添加動態分析(在運行時分析代碼以檢測棘手的運行時錯誤)和靜態分析(在運行前分析代碼)大大提高了測試工具的錯誤檢測能力。
自動遵守編碼標準
許多安全關鍵項目需要源代碼標準。例如,MISRA 在汽車軟件中很常見,但在其他行業也得到了認可。某些標準要求代碼符合滿足特定目標的公司標準。在每種情況下,手動強制執行編碼合規性都是乏味且容易出錯的。靜態分析工具是強制合規性的理想工具,而高級工具則可以進一步檢測超出格式違規范圍的錯誤。
自動化認證文檔
實現軟件安全認證的很大一部分工作量是記錄流程、驗證和驗證。測試自動化顯著降低了記錄測試結果和覆蓋率分析的成本。
加速遺留軟件的重用
提高生產力的一個關鍵策略是重用軟件。理想情況下,可以使用已經認證的組件來降低這些子單元的開發成本。使用靜態和動態分析工具自動評估遺留軟件可以降低使用這些組件的風險。
提高質量、安全和保障
即使嚴格的測試方案也可能會遺漏嚴重錯誤。例如,僅代碼覆蓋率不足以確保在安全攻擊或多線程代碼的情況下正確的行為。靜態分析工具可以在不運行特定測試的情況下檢測源代碼中的錯誤,并且可以發現在單元或系統測試中難以發現的錯誤,例如安全漏洞。
動態分析工具可以檢測測試期間運行代碼中可能反映在測試結果中的錯誤,例如緩慢的內存泄漏。系統測試期間的模糊測試和滲透測試可以發現正常操作條件下遺漏的錯誤。總的來說,最先進的工具發現的額外缺陷和安全漏洞有助于降低成本、風險以及投入生產的 20% 左右的錯誤。
很明顯,必須采取一些措施來解決圖 2 中清楚顯示的問題。在生命周期開始時引入了太多缺陷并且未被發現。當產品被制造出來并在客戶手中時,或者在飛機或汽車中(視情況而定)中,有太多的殘留物。采用現代開發方法、重用組件、利用 COTS 和開源以及工具自動化都是提高開發效率的關鍵步驟。
假設開發過程使用最先進的工具,其中測試向左移動,并且在生命周期的早期檢測到并修復更多缺陷,那么單元測試非常有效,有助于減少進入生產的錯誤。在圖 4 中,一個假設的示例顯示了生命周期中缺陷檢測的變化,其中大部分缺陷檢測和修復在生命周期的早期移至左側。
從上面的圖3我們知道,在開發的每個階段成本都會顯著上升。下面的圖 5 顯示了傳統方法與圖 4 中所示的現代方法修復缺陷的成本比較。將發現和修復錯誤移到左側,比稍后修復它們的成本要低。在此所示的情況下,總體成本差異約為 40%,有利于左移方法。
在安全關鍵項目中使用自動化工具需要對工具本身的信任。產品制造商有責任確信用于創建軟件的流程和工具滿足標準的要求。工具供應商可以通過在將工具出售給制造商之前讓工具經過安全標準機構的認證來幫助解決這一問題,或者在無法進行此類預先認證的情況下,提供資格協助。然后,他們可以在自己提交的認證中使用工具供應商的認證證據,并減少所需的工作量。例如,Parasoft C/C++test已獲得 TüV SüD 認證,具有根據 IEC 61508 和 ISO 26262 標準進行安全相關軟件開發的資格。
在某些軟件安全標準(例如 DO-178C)中,認證是在系統級別完成的,并且各個工具和軟件不是獨立認證的。在這些情況下,該工具的供應商會提供資格認證套件以及文檔和專業服務方面的幫助,從而大大減少了對項目中使用的工具進行資格認證所需的成本和工作量。
安全關鍵軟件無疑面臨成本危機。新的大型安全關鍵項目的開發成本變得過于昂貴,甚至可能無法盈利。開發安全關鍵型軟件需要現代方法,并且必須減少在軟件開發生命周期后期發現的錯誤數量。向左移動,在生命周期中盡早檢測和修復缺陷和安全漏洞可以顯著降低成本。測試自動化在提高測試效率和結果方面發揮著關鍵作用。它是現代安全關鍵軟件開發方法的重要組成部分。
如果您目前不是Parasoft C/C++test用戶,但希望通過C/C++test 2023.2,為C、C++開發人員賦能,歡迎聯系我們。了解更多有關Parasoft產品咨詢,歡迎咨詢
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn