返回杂志主页

测试的“e”进化

测试的“e”进化

作者:西蒙·罗伊,Coherent Laboratories联合创始人

西蒙·罗伊(Simon Roy)是 Coherent Laboratories 的联合创始人,这是一家致力于解决团队在构建尖端嵌入式系统时所面临的持续验证挑战的新创公司。作为特斯拉(Tesla)的前资深固件工程师,他曾负责为该公司的整车产品线设计、实现并投入量产电机控制算法和逆变器固件。

从电动汽车到公用事业级电池储能系统,向电气化转型的过程以快速创新、不断演进的软件以及日益复杂的网络物理系统为特征。这促使嵌入式软件工程师在保持构建安全关键系统所需工程严谨性的同时,以更快的速度交付日益复杂的软件。因此,各组织正在重新审视传统的设计方法,并采用一种新的开发范式。

传统的V型开发模型是瀑布模型的演进形式,其特点在于具有顺序的设计阶段、多层结构以及明确的设计和验证阶段。该模型依赖于对“开发什么”、“如何开发”以及“如何测试”的周密规划。一些行业法规规定,V型模型是设计安全关键系统所必需的、最先进的方法论。

在嵌入式软件系统中,验证阶段通常包括:

01 –单元测试

最低级别的测试,侧重于最小的可测试单元(如单个函数或逻辑块),以确保其正确实现。

02 –集成与系统测试

测试主要子系统或组件之间的接口和交互,以确保它们能够协同工作。

03 –HIL/SIL测试

使用软件在环(SIL)或硬件在环(HIL)测试平台对嵌入式系统的组件级进行测试。

04 –验收测试

最高级别的测试,用于验证产品是否完全符合要求。

V模型允许在验证过程中发现问题时进行设计变更。该过程涉及重新审视先前的设计阶段、更新所有下游交付物,并按线性顺序重复测试序列。然而,如果在验证阶段后期才发现设计问题,可能会导致长时间的延误和高昂的重新设计成本。 此外,V模型所期望的静态产品定义与快节奏环境的动态特性不相符,而其“一次设计正确”的理念也与嵌入式系统开发的实际情况相冲突。只有通过对实物产品的测试,才能对硬件和软件设计进行优化。为解决这些不足,一种混合型的“敏捷-V”(Agile-V)方法正被越来越广泛地采用。

Agile-V 在保留 V 型模型的宏观结构和工程严谨性的同时,融入了快速的敏捷迭代。通过迅速使产品达到可运行状态,Agile-V 有助于尽早发现关键的软件和硬件设计问题。额外的功能和改进会在后续迭代(也称为“冲刺”)中逐步融入。
采用敏捷开发模式的软件组织通过运用“持续验证”的概念来实施这一流程。 在冲刺期间,针对单个工作项执行 V 模型的聚焦版本。这些变更在完成规格定义、实现和测试后,会经过一个范围更窄的验证周期进行验证,然后合并到代码库中。一旦冲刺的功能完成截止日期到来,代码库就会被锁定在发布状态,此时仅允许进行关键修复。对合并后的变更集进行全面验证,从而有效地为该冲刺关闭更广泛的 V 模型。

在嵌入式系统中,如果不遵循这些原则,可能会导致代价高昂的生产延误、产品召回以及硬件无法正常运行。工程团队必须建立正确的文化氛围、激励机制并采用合适的工具,才能确保 Agile-V 流程取得成功。

采用 AGILE-V 需要遵循以下关键原则:

  • 确保需求、设计和可追溯性保持最新:尽管 Agile-V 允许直接修改实现代码,但组件负责人必须确保所有相关设计文档始终保持最新,即使冲刺阶段的重点是交付当下的功能。这样可以避免利益相关者产生困惑,并确保流程合规。
  • 扩展和维护测试用例覆盖率:持续开发和调整产品软件,也意味着要根据所需的覆盖率指标来添加和更新测试用例。
  • 最大限度地实现测试自动化:持续验证需要高度自动化的测试基础设施。在合并之前完成更大比例的整体验证工作,可以降低在冲刺后期发现产品回归问题的可能性。在此模式下,手动测试难以扩展。

Coherent Laboratories 通过在 HiL 和 SiL 平台上自动生成测试用例,帮助团队最大限度地提高测试覆盖率和测试自动化水平。我们的 AI 代理基于需求以及对被测设备的深入理解,生成并维护可追溯的测试用例。这节省了添加和更新测试所花费的时间,使软件工程师能够将精力集中在需求、设计和实现上。