DevSecOps正在推動現代軟件開發組織在質量、安全性和效率方面的真正改進,但特定領域的挑戰阻礙了DevSecOps原則在智能邊緣和嵌入式系統領域的應用。這篇文章探討了自動化測試在DevSecOps中的重要性,影響嵌入式開發的特定領域的問題,以及使邊緣開發人員認識到DevSecOps的好處的解決方案的三個必要部分。
DevSecOps中的自動化測試
DevSecOps是一種集成開發、安全和操作以增強軟件開發實踐的方法。測試在確保軟件的可靠性、安全性和質量方面起著核心作用,DevSecOps鼓勵在整個開發周期中自動化測試過程,以提高效率和可重復性。
DevSecOps通常利用“管道”來自動化開發工作流,例如構建代碼、測試代碼,以及存儲來自管道運行的重要工件,以便在其他階段或管道中使用。這些管道經常在與它們的功能相關的組中被討論:持續集成(CI)管道專注于準備準備好被部署的工件,持續部署(CD)和持續交付管道專注于將工件部署到測試或生產環境中,雖然兩者通常都包含測試階段,但是也有專門專注于測試的持續測試(CT)管道。
雖然文化的改變使得在任何組織中建立DevSecOps實踐變得困難,但是傳統的it項目通常比側重于邊緣的項目更成功。
為什么嵌入式系統難以實現DevSecOps自動化
邊緣項目面臨的最大挑戰之一與待測嵌入式系統的可用性和連接性有關。這使得對嵌入式系統進行任何測試都具有挑戰性,并且所進行的測試往往會在開發過程的后期進行,這會增加返工,并對進度和成本產生負面影響。它還阻礙了自動化,因為測試技術通常需要手動步驟,或者是在孤立的系統或專門的實驗室中進行的。
嵌入式系統測試人員需要克服的挑戰包括:
1. 軟件開發比硬件開發和制造發生得更早或更快,通常會產生一段很長的時間,在這段時間里軟件需要測試,而硬件還沒有制造出來。
2. 產品硬件,尤其是為開發團隊設計的帶有調試頭和端口等額外資源的硬件,通常供應不足且價格昂貴。避免阻礙測試的瓶頸——影響質量、進度和成本–o組織需要平衡設計和構建這種硬件的費用與開發團隊的進度和可訪問性需求。
3. 開發硬件通常被隔離在開發人員桌面或測試實驗室中,很難從運行在云或其他系統上的自動化管道中訪問。
4. 開發人員可以構建自動化測試,以便在專門的環境中運行,例如在他們的桌面或測試工作臺上運行,但是這增加了對昂貴的開發硬件的需求,并且需要在專門的環境中運行測試,這阻礙了編程管理和訪問。
5. 對編程管道進行自動化測試需要一種可靠的方法來遠程訪問測試資源,這包括管理目標清單,建立到特定類型目標的連接以運行測試,以及防止其他人在測試運行時使用該目標。
支持嵌入式系統的自動化測試和開發
要在智能邊緣系統的開發過程中啟用DevSecOps,團隊必須解決所有這些問題。從實踐的角度來看,該解決方案有三個關鍵部分:模擬、遠程連接和目標管理。
利用模擬進行自動化測試
在嵌入式軟件開發過程中,硬件通常是不可用的,因此嵌入式項目通常會將測試推遲到開發過程的后期。當然,這比根本不測試要好,但是這會產生很多額外的工作,因為代碼更老,當發現失敗時更難記憶和修改。這也增加了進度風險,因為團隊解決失敗的時間更少了。
模擬技術提供了一種在過程的早期測試軟件的方法,甚至在硬件可用之前更大的規模與完全依賴基于硬件的測試相比,具有更快的迭代和更短的反饋循環。將某些測試卸載到模擬目標上也使得團隊能夠使用他們昂貴而稀缺的硬件只有在需要的時候–降低損壞風險,同時提高硬件成本和計劃的控制力和靈活性。
最終,模擬技術的采用允許更早和更可擴展的測試,同時最小化開發硬件生產過剩的風險。
通過遠程連接嵌入式硬件來改善協作
嵌入式測試人員通常依賴于連接到他們開發機器上的開發板,或者他們將這些機器移動到專門的測試實驗室來執行測試。從個人的角度來看,這可能很方便,但是使用隔離的系統和實驗室會妨礙采用從CI、CD和CT管道運行的標準化測試。這也增加了開發硬件的成本,因為每個開發人員或測試人員都需要自己的硬件。
到開發硬件的遠程連接消除了硬件在開發人員桌面上出現的需要,允許開發人員和測試人員從任何地方共享、訪問和測試目標。這提高了昂貴的開發硬件的利用率,增強了協作并加快了開發周期。
通過嵌入式設備目標管理實現測試自動化
然而,將管道連接到測試目標不僅僅是簡單的遠程連接。每個目標系統可能有不同的連接方式;一些可能有網絡接口,而另一些需要串行端口或JTAG,并且模擬目標可能需要在使用之前啟動。管道需要一種方法來找到可以運行測試的合適目標,通過防止其他用戶或測試運行的干擾來確保測試運行產生一致的結果,并在合適的目標不立即可用時從容等待或失敗。
有效的目標管理為訪問所有目標提供了一個健壯、統一的接口,使管道能夠跨模擬和物理目標執行相同的測試,而無需強迫開發人員為每個目標構建單獨的測試邏輯。它通過在整個團隊中共享測試配置和邏輯來改進協作,同時允許每個人按需訪問測試資源。這增加了測試實踐的靈活性和可伸縮性,同時增加了測試的頻率和覆蓋范圍。
用嵌入式系統實現開發
在DevSecOps時代,自動化測試在確保嵌入式系統的可靠性、安全性和質量方面起著至關重要的作用。通過采用模擬、遠程連接和有效的目標管理等方法,組織可以克服在開發智能邊緣時通常會中斷DevSecOps之旅的挑戰。通過自動化測試并將它們無縫地整合到CI和CD管道中,嵌入式開發人員可以實時了解他們代碼的質量和安全性。這些見解有助于在開發過程的早期階段識別和減少潛在的問題,從而縮短開發周期和加快上市時間。