GitLab如何革新嵌入式系统测试周期
嵌入式开发人员对这个循环非常熟悉:编写代码,等待数天或数周在硬件测试台上进行测试,发现错误,修复错误,然后再次等待。虚拟测试环境承诺提供更快的反馈,但大多数实现会带来新的问题,例如环境蔓延和成本上升。
GitLab的托管生命周期环境解决了这些虚拟测试挑战。通过虚拟环境自动化,GitLab加速了嵌入式开发周期,而无需复杂的配置和成本超支。
虚拟测试挑战
虚拟测试环境——模拟嵌入式系统行为和真实世界条件的硬件设置——具有减少硬件瓶颈的潜力。团队可以在模拟处理器上测试固件,在MATLAB/Simulink中运行模型在环(MIL)测试,或者在没有物理硬件访问的情况下在虚拟嵌入式系统上验证软件。
然而,团队通常使用两种常见方法之一实现虚拟环境,这两种方法都会带来不可持续的挑战。
有缺陷的方法1:流水线生命周期环境
流水线生命周期环境为每个CI/CD运行重新创建整个测试设置。当代码更改触发CI/CD流水线时,系统会配置基础设施,安装软件模拟,并在运行测试之前从头开始配置所有内容。
这种方法适用于简单场景,但随着复杂性的增加而变得低效。例如,在复杂的虚拟环境中进行软件在环(SIL)测试。每次流水线运行都需要完全重新创建环境,包括虚拟处理器配置、工具链安装和目标配置。这些过程可能耗费大量时间。
此外,随着嵌入式系统需要更复杂的虚拟硬件配置,配置成本迅速增加。
为了避免这些重建成本和延迟,许多团队转向在测试运行之间持续存在的长期环境。但它们也有缺点。
有缺陷的方法2:长期环境
长期环境无限期存在以避免不断重建。开发人员从IT或DevOps团队请求这些环境,等待批准,然后需要有人手动配置基础设施。这些环境随后与个别开发人员/团队绑定,而不是特定的代码更改,并且它们支持跨多个项目的持续开发工作。
虽然这消除了重建开销,但它造成了环境蔓延。环境不断积累,没有明确的终止日期。随着环境无限期消耗资源,基础设施成本攀升。
长期环境还遭受"配置腐化"——环境保留先前测试的设置、缓存数据或软件版本,这些可能影响后续结果。本应失败的测试由于先前测试的残留而最终通过。
最终,管理长期环境是一个手动过程,会降低开发速度并增加运营开销。
解决方案:托管生命周期环境
GitLab通过"托管生命周期环境"提供了第三种方法。这种方法结合了长期环境和流水线生命周期环境的优点,同时避免了缺点。
GitLab的托管生命周期环境将虚拟测试设置与合并请求(MR)绑定,而不是流水线运行或个别开发人员。您也可以将它们视为"托管MR测试环境"。当您为新功能创建MR时,GitLab自动协调必要虚拟测试环境的配置。这些环境在整个功能开发过程中持续存在。
主要优势
-
无需重建的持久环境:相同的虚拟环境处理多个流水线运行,因为您在功能上进行迭代。无论您是在MATLAB/Simulink中运行MIL测试,还是在专用嵌入式处理器上运行SIL测试,环境都保持配置并准备就绪。
-
自动清理:当您合并功能并删除分支时,GitLab自动触发环境清理,消除环境蔓延。
-
单一事实来源:MR在一个位置记录所有构建结果、测试结果和环境元数据。团队成员可以跟踪进度并进行协作,而无需在不同工具或电子表格之间切换。
观看此概述视频,了解托管生命周期环境在实践中如何工作:
GitLab自动化整个测试工作流程。每次运行固件测试时,GitLab在适当的虚拟环境中协调测试,记录结果,并提供每个流水线运行的完全可见性。这种方法将复杂的虚拟测试从手动、易出错的过程转变为自动化、可靠的工作流程。
结果:团队获得可重用环境而不会产生失控成本。他们在保持每个功能的干净、隔离测试设置的同时提高了效率。
观看在虚拟硬件上测试固件的托管生命周期环境演示:
业务影响
GitLab的托管生命周期环境在嵌入式开发工作流程中带来了可衡量的改进。在MATLAB/Simulink中运行MIL测试和在Infineon AURIX或BlackBerry QNX系统等专用处理器上运行SIL测试的团队不再面临持续环境重建或不受控制的环境蔓延之间的权衡。相反,这些复杂的虚拟测试设置在功能开发期间持续存在,同时在完成时自动清理,从而实现:
- 更快的产品开发周期
- 更短的上市时间
- 更低的基础设施成本
- 更高质量保证
立即开始改变虚拟测试
下载"在嵌入式开发中解锁敏捷性并避免失控成本",深入了解托管生命周期环境,并学习如何显著加速嵌入式开发工作流程。