原創|其它|編輯:鄭恭琳|2020-09-03 14:50:57.253|閱讀 321 次
概述:連續測試提供了一個框架,可以在生命周期的早期階段進行測試??梢院喕瘻y試并使其在敏捷和連續過程中更少地成為抑制劑。需要做些什么?正確的自動化應用程序,并通過使用容器進行安全的軟件開發,將精力集中在應用程序的最高風險領域。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
連續測試提供了一個框架,可以在生命周期的早期階段進行測試??梢院喕瘻y試并使其在敏捷和連續過程中更少地成為抑制劑。需要做些什么?正確的自動化應用程序,并通過使用容器進行安全的軟件開發,將精力集中在應用程序的最高風險領域。
容器在左移測試中扮演重要角色。并成功地進行了持續測試和DevSecOps一般。隨著容器化的開發和測試環境提供與部署一樣的好處,它們也對開發有所幫助。這里有一些:
容器在現代DevSecOps開發中扮演著重要角色,因為容器可以幫助軟件開發中的安全流程向左移動。
帶有容器和持續測試的加速DevSecOps白皮書詳細介紹了利用容器進行安全軟件開發以實現快速安全性的方法。這篇文章著眼于白皮書中討論的以下關鍵領域,以更好地將容器集成到軟件開發的開發和測試階段:
目標是實現更好的安全性,同時最大程度地減少對日常工作流程的影響。
通過利用容器提供的一致性和可重用性,當團隊中的每個開發人員和測試人員都使用相同的配置進行工作時,連續的安全性測試最有效。將工具和相關的配置移動到容器中可確保一致的使用,任何更改均會立即傳播。更智能的DevSecOps工作流程意味著從一開始就將“安全性”納入其中。
安全要求為開發人員增加了額外的工作量。您的管理方式使準時安全的產品與較晚且不安全的產品有所不同。至關重要的要求是將安全性集成到現有的開發過程中,從而減輕負擔,減少部分質量和整個工作流程。
圖1:DevSecOps工作流程,其中包含安全控制和流程的容器化實現。
工作流程
工作流程始于安全的編碼策略。架構師或負責人創建一個配置(可能基于由諸如UL-2900或PCI DSS之類的標準驅動的CERT,CWE,OWASP等編碼準則),以便團隊的其他成員直接在其IDE中使用。這使開發人員能夠在提交到源代碼管理之前在其計算機上本地檢查代碼。他們可以在何時何地更便宜、更容易地發現并修復安全違規行為。
組態
通過容器映像復制相同的配置,以提供一致性,然后通過在構建過程中執行的分析來利用相同的配置。這項全面的分析超出了開發人員本地修改的代碼的范圍,并提供了一個安全網來控制交付管道,以確保不安全的代碼不會被提升到后續階段。
分析
最后,分析結果通過集中的報告和分析儀表板發送回開發人員的IDE。在這里,您可以跟蹤進度,進行課程更正并實時生成審核報告。
經理和安全負責人可以基于中央儀表板中的CWE Top 25,OWASP Top 10或SEI CERT等安全標準評估項目。這些儀表板可以顯示趨勢信息并回答以下問題:
能夠回答這些和其他問題并采取行動,將開發團隊從具有一定安全性的DevOps轉變為DevSecOps。
盡管渴望提高安全性和質量,但敏捷和持續的流程在早期采用和日常運營中遇到了障礙。減慢敏捷過程的罪魁禍首通常是測試。之所以出現問題,是因為團隊不完全了解每次迭代期間要測試的內容。他們要么嘗試測試所有內容,要么測試不足,要么只是猜測。這三個結果都是不可接受的,特別是從安全角度來看。智能測試執行可進一步幫助團隊集中精力進行測試,真正實現連續測試。
測試金字塔
測試金字塔定義了在項目上投入時間和精力的最佳位置。在理想的金字塔中,您將寶貴的時間和精力投入到金字塔基礎上的一套全面的單元測試套件中,并由API和服務測試提供支持。金字塔頂端是較少數量的基于系統和GUI的測試。這些測試需要人工干預,例如UX測試。
圖2:理想的測試金字塔是建立在單元測試基礎之上的。重疊的倒金字塔反映了許多組織當前的工作。
該金字塔經常被倒置成蛋卷冰淇淋形狀。團隊花費大量時間和精力進行脆弱和復雜的系統級GUI測試,這些測試需要實現和集成完整的功能。結果是測試團隊無法在SDLC的早期階段連續執行。
這在安全性方面尤其成問題。將安全測試留到開發的后期階段既昂貴又冒險。成功進行連續測試的關鍵是融化冰淇淋蛋筒。專注于為功能和安全性創建自動化的單元和API測試,這些測試可以在開發人員實施新功能時連續執行。
測試最佳做法
使測試金字塔正面朝上的最佳方法(與DevSecOps所需的最佳實踐很好地吻合)是采用以下測試最佳實踐:
API級測試提供了以更高的可重用性和更少的UI級更改對系統功能進行測試的功能。這意味著自動化過程會生成大量數據。為了支持決策,必須將這些數據匯總到集中的質量視圖中。圖形化的儀表板提供了測試進度的頂級視圖。您可以基于對數據的檢查,發現的缺陷和其他問題來創建其他工作項。
通過智能測試執行來提高安全性
上面列出的最佳實踐缺少集中測試的方法。它對以下問題提出了答案:“要測試什么?”將測試重點放在開發人員在每次代碼更改后需要檢查的內容上,對于加速測試,啟用連續測試和加快DevSecOps管道至關重要。
為了加快敏捷或連續流水線中的測試速度,團隊需要在每個構建基礎上執行智能測試。它減少了團隊需要執行以解決每次新迭代引入的風險所需的測試集。測試影響分析提供的分析對于將測試僅集中在您絕對需要測試的內容而不是the彈槍方法上至關重要。
只有通過智能,基于數據的決策才能實現連續測試。使開發團隊專注于最少的測試集以確保每次迭代都覆蓋適當的范圍,這是將敏捷性重新帶回敏捷開發方法的關鍵。
圖3:Parasoft DTP提供的示例高級圖表,顯示通過、失敗、不完整和需要重新測試的測試分布。用戶可以單擊餅圖以查看更多詳細信息。
智能測試執行使用測試影響分析來跟蹤針對應用程序的手動測試的執行情況,以及與這些測試相關的捕獲的代碼覆蓋率信息。自動化測試使用類似的技術。該分析指出需要執行哪些手動測試才能訪問每個新版本交付的已更改功能。因此,在他們的本地IDE的開發人員和測試人員級別,智能測試執行至關重要。它使他們能夠集中精力進行測試,消除猜測工作和其他“以防萬一”的工作。
為了實現有效的DevSecOps管道,開發人員需要獲得自動化功能,從而消除了他們日常工作中的繁瑣工作。成功的安全性以及質量和安全性開發需要來自單元測試、API測試、UI測試和SAST結果的快速反饋。另外,根據安全團隊的最新發現對安全控制進行微調。
容器對開發團隊的好處擴展到了開發人員的桌面。容器在開發人員、構建、集成和部署環境中提供了一致且可重用的工具鏈(包括測試/SAST配置)。它們消除了每次更新配置時都更新本地工作站的需要。在基于容器的開發中,僅需要更新容器映像。整個團隊受益。
基于團隊的工具部署
基于團隊的工具部署可以使用容器來托管存儲庫,不同的工具鏈(對于嵌入式軟件開發尤其重要)、SAST和測試工具。下面顯示了可能的容器化開發環境的說明性示例。
圖4:容器為開發人員提供了一種有效的方式,使其擁有一致的開發和測試環境。
開發人員真正開始加速安全開發的地方是通過本地“工作站”采用智能測試執行。在代碼修改之間以及將任何更改提交到源代碼管理系統之前,都要加強良好的安全性和工程實踐(以在本地進行并經常進行安全性分析和測試執行)。此過程大大減少了對修改后的代碼的安全性和質量的反饋循環。通常,它可以加快“編碼、測試、提交”工作流程。
消除不必要的測試
開發團隊可以使用連續的測試工作流程來幫助集中測試工作,并確保他們僅執行必要的測試。此外,使用SAST工具持續監控代碼安全性對于確保團隊遵守編碼標準以及棘手的漏洞不會逃避安全測試至關重要。
對SAST和測試結果的快速反饋和分析減少了連續測試中的摩擦?;谌萜鞯拈_發環境提供的一致性意味著整個團隊的結果是相同的。當結果不匹配時,它減少了“調試”不同開發環境的需要。將智能測試執行功能帶到開發人員的桌面上,可真正加快安全軟件開發的速度。
容器是一種行之有效的執行和部署方法。它們還支持版本控制和集中控制,從而在不同主機環境之間實現快速部署和可移植性。CI/CD對于DevSecOps管道中的安全開發也很重要,因為它可以提供帶有內置安全控制的可重現應用程序環境。
連續測試提供了一個框架,可以在生命周期的早期階段進行測試。有了正確的自動化應用程序并專注于應用程序中最高風險的領域,就可以簡化測試,從而減少敏捷和連續過程中的抑制劑。通過提供一致的工具鏈、測試/SAST配置、開發和(本地)部署以及測試環境,使用容器進行安全的軟件開發可將版本控制和可重用性的優勢擴展到開發人員桌面。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn