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

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

3天内不再提示

代码质量:动态和静态分析相结合使工程师和审核员满意

星星科技指导员 来源:嵌入式计算设计 作者:MARK PITCHFORD 2022-11-01 09:38 次阅读

在过去美好的时光里,在编写软件成为“软件工程”之前,代码开发是一门黑艺术,由刚从大学毕业的奇怪书孩子实践。对他们来说,编码绝不是一门结构化的学科。如果你设法让他们沟通,他们可能会告诉你,他们正在一起破解代码,并使用临时测试数据来查看它是否做了他们执行它时应该做的事情。

无论他们是否知道,他们都在通过系统功能测试进行动态分析。与静态分析不同,动态分析涉及代码执行的定义。

但是,除了显示基本功能对于任何基本的测试数据大致正确之外,这还做了什么?虽然总比没有好,但可能不超过一半的代码被执行。行业软件专家、Ganssle Group首席顾问兼行业编辑Jack Ganssle对此表示赞同:“研究证实,如果不使用代码覆盖率分析,测试通常只执行50%的代码。给定典型的错误率,这意味着程序中的 100K 行代码将附带 2500 到 5000 个错误。这些错误会导致许多系统故障。

为什么?因为无论测试多么富有想象力,现实生活中都有可能抛出一些曲线球来尝试未经测试的路径。如果执行某些内容未经测试,您可能会遇到一些意外和潜在的灾难性故障。

快进 30 或 40 年。虽然这种朴素的方法并不能与复杂的军事嵌入式应用相提并论,但功能测试仍然是动态测试的核心。精心挑选的测试数据表明,源代码中的分支和语句是按照规范执行的,不仅使我们能够证明系统在功能上是正确的,而且我们已经执行了所有这些功能。当与静态分析结合使用时,动态分析提供了所需的支持证据,以证明我们所有其他良好的工作和最佳实践产生了安全、可靠和高质量的最终产品

与多年前的黑客攻击不同,今天的自动化测试工具通过使用仪器探针等技术精确地跟踪执行路线。这些探测器本质上是附加的函数调用,从源代码中的战略点生成“我来过这里”消息,并允许整理覆盖率数据。它们允许动态测试生成有关其全面程度的反馈,以便我们可以在每组结果的基础上连续构建,直到达到所需的覆盖水平。

反过来,这为我们一次执行多少代码提供了灵活性。可以对整个系统进行动态分析,但总有一些通过代码的路由,我们的系统在正常运行期间无法执行这些路由——例如防御性代码;也许是除以零的支票。

在这种情况下,最好也使用“单元测试”。单元测试封装了系统的一个子集,并允许传递参数,以便执行示例中的防御机制代码。我们甚至可以选择完全基于单元测试进行应用程序动态分析,在每个模块开发时整理代码覆盖率数据,并消除等待完整系统的任何要求。

当今的军事应用需要支持 ARINC 653 或FACE等架构标准,以提高代码的可移植性和可重用性。通过动态分析提供全面的覆盖数据提供了证据,证明即使移植到不同的应用程序,代码仍然是可维护的、安全的,特别是当与有效的静态分析制度结合使用时。

审核编辑:郭婷

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

    关注

    5083

    文章

    19131

    浏览量

    305544
  • 代码
    +关注

    关注

    30

    文章

    4790

    浏览量

    68654
收藏 人收藏

    评论

    相关推荐

    嵌入式工程师常用的开发工具有哪些?

    工程师可以连接调试器与目标设备,进行深入的调试和分析。 四、版本控制工具 Git是目前最流行的版本控制工具之一。嵌入式工程师可以使用 Git 来管理代码的版本,跟踪
    发表于 12-20 15:29

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    的设计和实现。他们使用硬件描述语言(如 Verilog 或 VHDL)来编写代码,构建复杂的数字逻辑系统。工作包括模块的设计、功能的实现、时序的优化以及与其他硬件组件的接口设计等。 FPGA 原型验证工程师
    发表于 09-23 18:26

    安全对决:动态IP vs 静态IP,谁为网络安全保驾护航?

    动态IP和静态IP在安全性方面各有特点,不能简单地判断哪个更安全,而是取决于具体的使用场景和需求。
    的头像 发表于 09-13 09:45 565次阅读

    DevOps中的质量门工作原理,以及静态代码分析Klocwork和Perforce Helix QAC在质量门中的实践应用

    如何使用静态代码分析工具(如Klocwork 和 Helix QAC)实现质量门。 什么是质量门? 质量
    的头像 发表于 07-29 15:12 410次阅读

    暂态稳定和静态稳定的区别是什么

    暂态稳定和静态稳定是电力系统稳定性分析中的两个重要概念,它们分别描述了电力系统在受到扰动后的动态响应和稳态运行状态。下面将介绍暂态稳定和静态稳定的区别,并从多个方面进行比较。 定义上的
    的头像 发表于 07-26 09:41 2741次阅读

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件工程师是软件开发领域中的一种专业工程师,他们主要负责设计和开发嵌入式软件,
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    浅析CMOS电路的静态功耗和动态功耗

    CMOS电路功耗主要由动态功耗和静态功耗组成,动态功耗又分为开关功耗、短路功耗两部分
    的头像 发表于 04-01 16:16 6128次阅读
    浅析CMOS电路的<b class='flag-5'>静态</b>功耗和<b class='flag-5'>动态</b>功耗

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00