测试是确保代码正确的唯一方法

描述

随着工业、汽车、医疗和能源市场中涉及人类生命和肢体的系统连接到物联网,风险越来越高,安全性和可靠性的压力也越来越大。虽然硬件可以进行物理隔离和保护,但一旦系统连接到互联网,它就会通过软件暴露出来,这构成了物联网的“软肋”。如果它们不安全,就不能认为它们是可靠或安全的。这意味着安全设备之战发生在软件领域。

生成安全可靠的代码有很多方面。在一个层面上,功能正确的代码——它完成了它应该做的事情——仍然可以包含黑客可以利用的漏洞。在另一个层面上,代码必须在功能上是安全的,因为它遵循防止伤害或损坏的规则,并且它必须在功能上是安全的,因为它包含防止访问的加密等机制。

我们在这些方面取得了重大进展,例如用于正确编码实践的 MISRA 和 CERT C 等编码标准和用于汽车的 ISO 26262 和用于医疗的 IEC 62304 等行业规范。遵循诸如此类的准则是一回事,但必须验证代码以确保已遵循所有详细规则,而这只能通过彻底的分析和测试来完成。

一套全面的验证和测试工具对于此类验证至关重要,它与其他软件工具和正在开发的特定行业部门的集成越好,效果就越好。安全和安保必须从底层开始,从 RTOS 和驱动程序一直到最终应用程序。基于需求的测试和验证必须在系统级别进行,同时,健壮性和更集中的分析和测试必须在单元级别进行。

从高级需求到源代码的追溯能力是由生命周期追溯工具完成的。这种可追溯性提供了影响分析能力以及软件开发生命周期的透明度和可见性。在编码阶段使用的静态分析工具可以分析软件的质量,在编译之前消除代码漏洞。这不会让代码级质量问题传播到可执行文件和集成单元中,从而节省时间和金钱。

静态分析工具还可以帮助确保代码遵循特定的编码标准,确保清晰度和一致性并消除代码级漏洞。静态分析可以作为自动测试用例生成的基础,因为它“了解”代码的复杂性和依赖性。

覆盖率分析是另一个关键的质量分析能力,它提供了测试过程有效性的度量,显示了在测试阶段哪些代码已经执行和哪些还没有执行。所有这些功能都应该集成起来,以加快软件开发和验证的路径,同时为质量团体或监管机构可能要求的过程提供透明度。

互联网

IBM Rational DOORS 系统管理整个项目的需求,例如大型隧道项目中的照明需求。其中许多需求链接到软件需求,集成的 LDRA 工具套件现在可以测试到源代码。

随着标准、规范和验证技术的进步,工具可以通过提供增强安全技术的附加包进行升级,这一点很重要。工具套件本身现在开始有针对主要行业领域的版本,例如用于汽车的 ISO 26262。具有复杂编辑器、调试器和性能工具的开发包可以与验证工具集成,允许客户在单一用户环境中进行开发和测试。通用工业工具,例如 IBM DOORS 套件,涵盖机械和其他需求以及软件,也可以通过集成深入的软件需求可追溯性来获得优势。

衡量整个测试过程的有效性对于开发高保证软件至关重要。了解需要加强测试的地方以及测试过程中存在的差距对于改进代码的整体过程和质量至关重要,并且随着工具越来越专注于应用程序领域,这种需求也会增加。因此,利用技术和技术——例如具有需求可追溯性的覆盖分析、静态分析和自动化测试——可以通过在软件开发生命周期早期和整个软件开发生命周期中识别代码中的潜在漏洞和弱点来节省时间和金钱。

审核编辑:郭婷

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分