新闻动态
把嵌入式系统带入DevSecOps时代


Jon Jarboe, 风河公司产品线高级经理

DevSecOps正在为现代软件开发组织带来质量、安全性和效率方面的实际提升,但在智能边缘和嵌入式系统领域,该领域特定的挑战阻碍了DevSecOps原则的应用。本文旨在探讨自动化测试在DevSecOps中的重要性,分析影响嵌入式开发的领域特有问题,并且提出了使边缘开发人员获得DevSecOps优势的解决方案的三个必要部分。

DevSecOps中的自动化测试

DevSecOps是一种融汇开发、安全和运营为一体来提升软件开发实践的方法。测试在确保软件可靠性、安全性和质量方面起着核心作用,DevSecOps鼓励在整个开发周期中实现测试过程自动化,以便提高效率和可重复性。

DevSecOps经常采用“流水线(Pipeline)”来实现自动化开发工作流程,例如构建代码、测试代码,以及存储流水线运行中产生的重要制品,供其他环节或流水线使用。这些Pipeline经常会根据其功能分组来加以讨论: 持续集成(CI) 流水线专注于准备随时可部署的制品;持续部署(CD)和持续交付流水线专注于将制品部署到测试环境或生产环境中;虽然上述两种流水线通常都包含测试阶段,但也有专门用于测试的持续测试(CT) 流水线。

虽然文化变革使得在任何组织中建立DevSecOps实践都很困难,但专注边缘计算的项目通常比传统的IT项目更不容易取得成功。

为什么嵌入式系统在实行DevSecOps时会遇到更多困难?

边缘项目面临的最大挑战之一是这些待测试嵌入式系统的可用性和接入互联性。由此导致对嵌入式系统进行任何测试都存在更多挑战,而且测试工作往往都是在开发过程的后期进行,这会增加返工并对进度和成本产生负面影响。这些因素还阻碍了自动化的实现,因为测试技术通常都是手动实现,很多都是在孤立的系统或专门的实验室中进行。

嵌入式系统测试人员需要克服的挑战主要包括:

  1. 由于软件开发通常比硬件开发和制造更早且更快,这通常会导致一个漫长的时期,在此期间需要测试软件,但硬件尚未制造出来。

  2. 产品硬件,特别是专为开发团队设计的硬件,带有额外资源如调试接头和端口,通常都供应短缺且价格昂贵。为了消除测试瓶颈,确保质量、进度和成本,企业需要在控制设计和构建此类硬件的费用与开发团队的进度和可访问性需求之间找到平衡。

  3. 硬件开发通常是在开发人员的工作台或测试实验室中独立进行,因而让运行在云端或其它系统上的自动化Pipeline软件感觉到鞭长莫及、难以协同。

  4. 开发人员可以构建自动化测试在特定环境(如桌面或测试台)中运行,但这增加了对昂贵开发硬件的需求,并要求在特殊环境中运行测试,这阻碍了程序化管理和访问。

  5. 面向Pipeline软件的自动化测试需要可靠的方式来远程访问测试资源,其中包括管理目标资源、建立与特定类型目标的连接以运行测试,以及在测试运行过程中防止其他人员使用该目标。

让嵌入式系统测试自动化与DevSecOps并驾齐驱

为了在智能边缘系统的开发过程中推行DevSecOps,企业团队必须解决所有上述问题。从实际情况来看,其解决方案包含三个关键部分:模拟仿真、远程接入和目标管理。

利用模拟仿真进行自动化测试

在开发嵌入式软件初期,硬件通常是不可用的,因此嵌入式项目通常只能将测试工作推迟到工作流程的后期。当然,这比根本不测试要好得多,但它会产生大量额外的工作,因为代码已经完成很久了,在发现故障时更难加以记录和修改。这也增加了进度方面的不确定性,因为留给企业团队解决故障问题的时间更少了。

模拟仿真技术提供了一种在整个流程中更早开始软件测试的方法,甚至在硬件尚未可用之前即可开始进行软件测试,并且能够以更快的迭代和更短的反馈循环进行更大规模的测试,而不是完全依赖基于硬件的测试。将某些测试工作迁移到模拟仿真的硬件目标上,还可以使团队仅在需要时才去用到那些昂贵且稀缺的硬件目标,从而降低了硬件损坏的风险,同时降低了成本,提升了项目进度的可控性和灵活性。

最重要的一点是,采用模拟仿真技术可以进行更早、更具可扩展性的测试,同时将硬件生产过剩的风险降至最低。

通过实现嵌入式硬件的远程接入来改善协作

嵌入式系统测试人员通常依赖于连接到他们开发机器上的开发板,或者他们需要将这些硬件设备移动到专门的实验室来进行测试工作。从个人的角度来看,这样是比较方便,但是使用孤立的系统和实验室会阻碍采用从CI、CD和CT流水线运行的标准化测试。这种方式还增加了开发硬件成本,因为每个开发人员和测试人员都需要分别配备硬件。

与开发硬件建立远程接入,这就使硬件不需要物理地出现在软件开发人员桌面上,允许开发人员和测试人员从任何地方对硬件进行共享、访问和测试。由此提高了硬件目标的利用率,增强了协作并加快了开发周期。

利用嵌入式设备目标管理技术实现测试自动化

将流水线连接到测试的硬件目标,并不是仅仅实现远程接入就万事大吉。每个硬件目标可能有不同的连接方式——有些目标可能具备网络接口,而另一些目标则需要采用串行端口或JTAG;如果是模拟硬件目标,则可能需要先行启动才能使用。流水线需要采用某种方法来找到可以运行测试的合适硬件目标,还需要防止其他用户或测试流程的干扰,以便确保当前测试获得正确的结果。在所需目标不能立即可用时,还要能够优雅的等待或失败。

有效的目标管理技术为访问所有目标提供了健壮、一致的接口,使流水线能够在模拟和物理目标上执行相同的测试,而无需强迫要求开发人员为每个目标构建单独的测试逻辑。这种技术通过在整个团队中共享测试配置和测试逻辑来改善协作效率,同时使每个开发人员都可以按需访问测试资源。这就增加了测试实践的灵活性和可扩展性,同时提高了测试的频率和覆盖率。

把嵌入式系统带入DevSecOps时代

在DevSecOps时代,自动化测试技术可以大幅提升嵌入式系统的可靠性、安全性和质量,并在其中发挥至关重要的作用。通过采用模拟仿真、远程互联以及有效的目标管理技术等方法,企业开发团队可以克服许多挑战,在开发智能边缘的过程中顺畅走上DevSecOps旅程。引入自动化测试技术,并将这种技术无缝地集成到CI和CD的流水线之中,开发人员就可以实时地掌握代码质量和安全性。由此获得的洞察力有助于在开发过程的早期阶段识别并解决潜在问题,缩短开发周期并加快上市时间。

Wind River Studio Developer是一个为智能边缘开发专门构建的全功能DevSecOps平台,旨在解决阻碍嵌入式系统开发团队采用DevSecOps的各种挑战。请随时联系我们,了解Wind River Studio Virtual Lab(虚拟实验室)如何帮助您在整个嵌入式开发生命周期中建立可预测的、可扩展的协作测试,从而加速嵌入式系统开发。