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管道中,嵌入式开发人员可以实时了解他们代码的质量和安全性。这些见解有助于在开发过程的早期阶段识别和减少潜在的问题,从而缩短开发周期和加快上市时间。