0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件测试对于嵌入式系统的安全和保障至关重要

硕达科讯 来源:硕达科讯 作者:硕达科讯 2022-07-19 16:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统的世界中,不断发展和发展的不仅仅是技术。用于开发该技术的工具和方法正在不断成熟和改进。

在 1980 年代初期,我为一家小型计量公司开发了软件,将工程数学应用于坐标测量机 (CMM)。我想认为我很擅长。但我们的开发生命周期本质上将生产软件视为沙盒。我们将从生产代码开始,添加功能,执行一些相当基本的功能测试,然后发布。

在这样一个小公司,我们的工程团队自然包括软件和硬件专家。事后看来,令人惊讶的是,虽然我们开发的软件需要广泛的客户支持,但它所运行的硬件却远没有相同的消防文化。

软件开发是一门工程学科

软件和硬件支持之间的部分差异是原始开发过程的结果。但是软件的绝对可塑性以及由此产生的不断增加的功能的能力也起着重要作用。简而言之,出错的方法比正确的方法要多得多,而且这种特性要求它被视为一门工程学科。

这一切都没有什么新鲜事。多年来,领先的航空、汽车和工业功能安全标准(例如 DO-178、ISO 26262 和 IEC 61508)一直要求采用这种方法。但是,如果您要从当今旨在服务于这种方法的尖端开发和测试工具中获益,那么拥有工程学科的思维方式是必不可少的。

最近,ISO/IEC/IEEE 29119 的发展表明了软件测试的重要性,这是一套可在任何软件开发生命周期或组织中使用的软件测试国际标准。

需求很重要

电气系统设计通常从状态机开始,并了解特定产品的不同操作模式。工程师通常可以非常快速、轻松地将状态机功能映射到逻辑。如果状态机变得更复杂,它通常被翻译成软件。

高级别的要求对于确保系统正常运行至关重要。这样的需求描述了业务逻辑和预期的功能,并能够评估系统是否完成了它应该做的事情。最佳实践遵循从高级需求到分析到覆盖率的流程,自然,需求可追溯性工具旨在支持这一点。

在状态机模型中,表征每个状态的需求是高级需求的示例。通过代码跟踪执行路径以确保正确解释每个需求是检查正确实现的一种非常好的方法。

功能安全标准将此扩展到需求可追溯性的概念。他们经常要求用户从高级需求中执行所有代码,并通过低级测试解释和测试任何未发现的案例。最近,网络安全中的“左移”范式呼应了这一信息,如图 1 中的 V 模型所示。

pYYBAGLPAqKAOH0LAAir37hFUj8866.jpg


图 1. 顾名思义,V-model 体现了一个产品开发过程,该过程显示了每个开发阶段的测试规范之间的联系。资料来源:LDRA

测试组件,然后测试系统

在任何工程学科中,重要的是要确保组件在集成到系统之前自行正常工作。要将这种思想应用于软件,工程师需要定义较低级别的需求,并确保每个功能和功能集发挥作用。工程师还需要确保他们为系统的其余部分提供适当的接口

单元测试涉及在功能和模块级别对输入和输出进行参数化,执行审查以确保输入和输出之间的连接正确并遵循覆盖范围内的逻辑。单元测试工具可以提供经过验证的测试工具和图形表示,将各个输入和输出连接到执行路径,并使其正确性得到验证。

在功能和模块级别上理解接口也很重要。静态分析工具可以展示这些接口,连接不同层次的逻辑。

尽早发现问题

任何学科的工程师都会告诉你,越早发现问题,解决问题的成本就越低。

静态分析执行源代码分析以模拟系统的执行而不实际运行它。编写代码后立即可用,静态分析可以帮助开发人员最大限度地提高代码的清晰度、可维护性和可测试性。静态分析工具的主要特点包括:

代码复杂性分析:了解您的代码在哪里不必要地复杂,因此工程师可以执行适当的缓解活动。

程序流程分析:绘制程序执行的设计审查流程图,以确保程序按预期流程执行。

预测性运行时错误检测:通过尽可能多的可执行路径对代码执行进行建模,并寻找潜在的错误,例如数组边界溢出和被零除。

遵守编码标准:通常选择编码标准以确保关注网络安全、功能安全,或者在 MISRA 标准的情况下,选择其中之一或两者兼而有之。编码标准有助于确保代码符合最佳编程实践,无论应用程序如何,这无疑都是一个好主意。

poYBAGLPAr6AU4ghAAQ60hTM2V4315.jpg


图 2. 像静态分析这样的活动在开发生命周期的早期是一种开销,但从长远来看它们会带来好处。资料来源:LDRA

开发足够质量的代码

质量更高的工程产品价格更高也就不足为奇了。坚持任何开发过程都是有代价的,开发最好的产品可能并不总是在商业上可行。

在安全很重要的情况下,功能安全标准通常需要对成本和故障概率进行分析。每个系统、子系统和组件都需要进行这种风险评估,以确保执行相应的缓解活动。无论系统是安全关键还是安全关键,同样的原则都是有意义的。如果您以相同的严格程度测试系统的每个部分,您将过度投资于风险较低的系统部分,而无法充分缓解风险较高的故障。

软件安全实践首先要了解如果组件或系统发生故障会发生什么,然后将潜在故障跟踪到适当的活动中以降低这样做的风险。例如,考虑一个控制飞机引导的系统,该系统的故障可能是灾难性的。必须在子条件覆盖级别执行严格的缓解活动,以确保正确的代码生成。

与机上娱乐系统形成鲜明对比。如果该系统出现故障,飞机不会坠毁,因此测试机上娱乐系统的要求低于可能立即造成人员伤亡的系统。

软件的延展性既是福也是祸。它使系统在合理范围内几乎可以做任何事情变得非常容易。但是,在确保软件不会失败时,同样的灵活性也可能成为致命弱点。

即使在商业世界中,虽然并非所有软件故障都是灾难性的,但它们绝不是可取的。许多开发人员在对安全和安保至关重要的行业工作,别无选择,只能遵守最严格的标准。但是这些标准所提倡的原则是存在的,因为它们已被证明可以使最终的产品功能更好。因此,无论应用程序有多重要,以适当的方式采用这些原则都是完全有意义的。

尽管适用于软件开发的功能安全和安全标准令人困惑,但它们之间的相似之处远多于差异。所有这些都基于这样一个事实,即软件开发是一门工程学科,要求我们建立需求、设计和开发以实现它们,并针对需求进行早期测试。

采用这种思维方式将为整个行业的支持工具打开大门,从而更有效地开发更高质量的软件。

LDRA Software Technology的技术专家 Mark Pitchford与开发团队合作,希望在安全和安保关键环境中实现合规的软件开发。


审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20151

    浏览量

    328912
  • 软件测试
    +关注

    关注

    2

    文章

    245

    浏览量

    19878
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式系统的定义和应用领域

    不在影响着我们的生活和工作方式。 在嵌入式系统中,嵌入式操作系统嵌入式微处理器扮演着至关重要
    发表于 11-17 06:49

    如何采用SAFERTOS和ESM保护嵌入式系统安全

    信任根的重要组成部分是实时操作系统(RTOS),它为应用程序的运行提供了一个安全的平台。嵌入式系统的具体
    的头像 发表于 10-24 15:51 1158次阅读

    嵌入式软件测试与专业测试工具的必要性深度解析

    嵌入式系统作为控制、监视或辅助装置运行的专用计算机系统,其软件测试面临着独特的挑战和严格的要求。专业测试
    发表于 09-28 17:42

    入行嵌入式应该怎么准备?

    至关重要的,因此,掌握C/C++编程技巧是入行嵌入式的基础。 二、硬件基础知识了解基本的电子电路和数字逻辑是嵌入式系统开发的基础。你需要了解数字电路、模拟电路、传感器和执行器的工作
    发表于 08-06 10:34

    【「Yocto项目实战教程:高效定制嵌入式Linux系统」阅读体验】+基础概念学习理解

    软件包的依赖关系、编译选项、配置参数等。掌握元数据的使用方法对于定制和优化嵌入式 Linux 系统至关重要。 BitBake BitBake
    发表于 08-04 22:29

    【干货速递】嵌入式数据可靠性,软件设计的这些细节不能忽视!

    问题。软件设计软件设计在嵌入式数据存储可靠性中扮演着至关重要的角色。它不仅包括系统驱动的开发,还涉及应用层面的优化。一个精心设计的
    的头像 发表于 07-31 11:34 366次阅读
    【干货速递】<b class='flag-5'>嵌入式</b>数据可靠性,<b class='flag-5'>软件</b>设计的这些细节不能忽视!

    嵌入式软件行业增长驱动因素

    嵌入式软件在物联网应用中至关重要,因为它管理设备操作、控制传感器、支持连接并确保数据安全。例如,在智能家居中,恒温器、安全摄像头和灯光等设备
    的头像 发表于 05-09 11:26 665次阅读

    如何成为一名嵌入式软件工程师?

    RTOS的编程和使用对于提升嵌入式软件的实时性和稳定性至关重要。 开发环境:熟悉Keil、IAR、Eclipse等集成开发环境,以及JTAG、GDB等调试工具。 2)硬件接口与驱动
    发表于 04-15 14:37

    嵌入式软件单元测试的必要性、核心方法及工具深度解析

    一、为什么嵌入式软件必须重视单元测试? ‌嵌入式系统的特殊性‌ 在汽车 ECU、医疗设备控制器等场景中,
    的头像 发表于 03-21 14:53 962次阅读

    嵌入式系统测试必备:9大理由解析报告与可追溯性的重要性(附工具推荐TESSY)

    嵌入式系统软件测试项目中,报告和可追溯性至关重要,原因有多个。它们是确保嵌入式
    的头像 发表于 03-13 10:47 735次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>测试</b>必备:9大理由解析报告与可追溯性的<b class='flag-5'>重要</b>性(附工具推荐TESSY)

    嵌入式软件测试技术深度研究报告

    嵌入式软件测试技术深度研究报告 ——基于winAMS的全生命周期质量保障体系构建 一、行业技术瓶颈与解决方案框架 2025年嵌入式
    的头像 发表于 03-03 13:54 765次阅读

    嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用

    嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用。以下是其具体作用的分析: 一、提供交互界面 嵌入式工业级显示器为环保垃圾柜设备提供了一个直观、易用的交互界面。用户可以通过触摸屏幕进行操作
    的头像 发表于 02-21 11:36 571次阅读
    <b class='flag-5'>嵌入式</b>工业级显示器在环保垃圾柜设备中发挥着<b class='flag-5'>至关重要</b>的作用

    如何提高嵌入式代码质量?

    嵌入式代码的质量是至关重要的。本文将探讨如何通过有效的开发方法和工具来提高嵌入式代码的质量,以确保系统的可靠性和可维护性。 理解嵌入式
    发表于 01-15 10:48

    哪些专业适合学习嵌入式开发?

    :涉及传感器技术、网络通信等,是物联网领域的关键技术领域,适合转行到物联网和嵌入式领域。 3)自动化专业:自动化专业的知识对于嵌入式系统的设计和控制
    发表于 01-03 13:44

    嵌入式系统开发中的测试方法 嵌入式系统开发与AI结合应用

    嵌入式系统开发中的测试方法 嵌入式系统开发是一个复杂的过程,涉及到硬件和软件的紧密结合。
    的头像 发表于 12-09 10:22 2047次阅读