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

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

3天内不再提示

通过覆盖分析深入研究安全关键代码测试

星星科技指导员 来源:嵌入式计算设计 作者:Jay Thomas 2022-06-19 15:55 次阅读

对于安全关键代码,确保应用程序执行它应该执行的操作并正确执行这些操作的功能测试只是表面上的问题。应用程序包含隐藏的复杂性,这些复杂性可能会在不可预测的条件下出现。如果编码不正确,它们可能会导致灾难。开发人员必须深入挖掘以测试所有底层代码是否存在细微错误。但这究竟是什么意思?

虽然可以从系统需求文档手动生成基本功能测试,但使用自动化工具(生成测试工具和测试用例的工具、运行这些测试的工具以及评估测试有效性的工具)进行更深层次的测试会更有效。 最后,关键活动是通过覆盖分析完成的。

在基本层面上,函数(或过程)覆盖分析显示每个函数是否已被调用。语句覆盖更进一步,提供了一种方法来确保每一行代码至少被执行一次。但是虽然这些都很有用,但覆盖分析不仅仅是函数和语句覆盖。

安全关键代码需要更深入的分析

可以在多个级别测试代码,安全关键代码需要深入、彻底的研究。分支/决策覆盖提供了更彻底的检查,旨在证明每个分支至少被采用一次,而分支条件组合覆盖需要测试所有可能的条件组合。

这听起来很简单,但如果一个决定取决于四个或更多条件,那么测试每个组合的要求就会变得不合理。修改条件/决策覆盖或 MC/DC 旨在提供一种实用的替代方案。MC/DC 确保:

调用每个入口和出口点

每一个决定都有每一个可能的结果

决策中的每个条件都包含所有可能的结果

决策中的每个条件都显示为独立地影响决策的结果

函数调用覆盖扩展了该查询线,并通过生成有关已执行哪些函数调用的信息来构建函数覆盖概念。这很重要,因为错误通常发生在模块之间的接口中。

在某些情况下,例如受 DO-178C 等标准约束的关键航空电子应用,还需要进行更苛刻的测试。对于最关键的“DAL A”应用,DO-178C 需要目标代码验证,其中包括分析汇编代码和源代码的覆盖信息。

动态测试通常使用软件工具进行,该工具检测源代码的副本以在运行时提供覆盖率数据。随后分析该数据以准确揭示代码的哪些部分已被执行,以及执行到什么级别。它以数据和控制流程图以及带有符号的源代码等显示形式使开发人员可以看到结果(图 1)。

poYBAGKu1oGAFoDPAAD6ZJmP9aY348.png

【图1 | LDRA 的 TBvision 代码覆盖为 DO-178C 等安全关键标准提供语句、分支和 MC/DC 覆盖。背景是一个分支/决策图,交叉引用了带注释的源代码。前景是每个功能和通过/失败结果的覆盖范围摘要。]

使用自动化工具减轻琐碎的测试任务

动态分析可以应用于完整的应用程序(系统测试)或它的子集(单元测试,包括集成组件测试),并且通常在完整系统可用时使用这两种方法的组合。一个集成的工具套件整理来自两个来源的信息,以提供整体覆盖率指标。单元测试工具通过静态分析代码结构,然后围绕应用程序创建一个“线束”或框架,在测试期间注入输入并接收输出,从而减轻了设置测试环境的繁琐工作。对于安全关键型应用程序,“测试向量”必须基于要求,以提供证据证明代码对预期和未预期的输入都按预期执行,但仍满足要求,仅此而已。

还可以通过对源代码的深入静态分析自动生成测试向量,这通常会导致在运行时覆盖 50% 到 75% 的代码。显然,这并不能提供正确功能的证据,但它确实在非关键应用程序中占有一席之地,否则覆盖率分析可能不会发生。即使在关键应用程序中,这种方法通过验证面对边界值、空指针和默认 switch 语句条件等数据的稳健行为,将动态分析超越了基于需求的测试。

在开发周期中尽早开始单元测试是最具成本效益的,甚至可能在目标硬件可供开发人员使用之前。这意味着使用在主机开发系统和目标硬件上应用相同测试向量的工具非常重要,以便生成一次测试用例,从而节省时间和金钱。

一个完整的工具套件还可以提供数据和控制流分析形式的分析,这是 DO-178C(航空电子)和 ISO 26262(汽车)等标准所要求的,以确保功能的每次调用都已执行,并且对数据的每次访问都已执行。它通过源代码跟踪变量并报告异常使用(图 2)。

poYBAGKu1oiAQYh6AAD-tLioVe8065.png

【图2 | 基于当前测试运行的变量和参数使用报告突出显示文件中使用变量的文件和位置,并使用自定义过滤器进行更精细的测试。]

这种深层次的测试——以及对测试的彻底和严格的评估——只有使用一套集成的软件分析工具才能可靠地完成。

审核编辑:郭婷

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

    关注

    3014

    文章

    7745

    浏览量

    164935
  • 源代码
    +关注

    关注

    96

    文章

    2942

    浏览量

    66448
  • 航空电子
    +关注

    关注

    15

    文章

    486

    浏览量

    45061
收藏 人收藏

    评论

    相关推荐

    单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级覆盖率、代码访问分析、增强覆盖率审查

    各种测试对象和方法的所有覆盖率测量结果,并记录在新的测试总结报告中。 了解更多TESSY新版本功能详情或申请免费试用,欢迎咨询TESSY中国授权分销商——龙智。 新版本功能亮点速览: 1、超级
    的头像 发表于 07-08 16:20 294次阅读
    单元<b class='flag-5'>测试</b>工具TESSY 新版本亮点速览:提供<b class='flag-5'>测试</b>驾驶舱视图、超级<b class='flag-5'>覆盖</b>率、<b class='flag-5'>代码</b>访问<b class='flag-5'>分析</b>、增强<b class='flag-5'>覆盖</b>率审查

    信息安全驱动汽车行业快速向数字化转型

    经纬恒润针对ISO/SAE 21434、WP.29 R155等法规进行了深入研究,结合多年功能安全、信息安全经验,可以为客户提供信息安全全流程解决方案。
    的头像 发表于 07-05 14:35 1421次阅读
    信息<b class='flag-5'>安全</b>驱动汽车行业快速向数字化转型

    伦敦商学院深入研究中国神州数码战略转型

    China)数字化转型历程的深入研究为基础,共同撰写了案例研究「神州数码的转型:驾驭数据、云和人工智能的潜力(The Transformation of Digital China
    的头像 发表于 07-02 11:25 403次阅读
    伦敦商学院<b class='flag-5'>深入研究</b>中国神州数码战略转型

    功能测试覆盖中最常见的是什么方法

    常见的方法,包括黑盒测试、白盒测试、灰盒测试、等价类划分、边界值分析、错误推测法、因果图法、状态迁移测试、场景法、决策表
    的头像 发表于 05-30 14:55 376次阅读

    开关电源安全测试项目有哪些?如何测试

    总结而言,通过对开关电源进行过压保护、过流保护、短路保护、绝缘电阻测试、高压测试以及温升测试等一系列全面的安全性检测,可以充分评估电源的可靠
    的头像 发表于 05-23 17:41 627次阅读
    开关电源<b class='flag-5'>安全</b>性<b class='flag-5'>测试</b>项目有哪些?如何<b class='flag-5'>测试</b>?

    深入研究:我国工业实时操作系统的核心技术与演进路径

    RTOS广泛应用于各类关键场景,且相较于传统软件单品,更需要通过建设丰富的软、硬件生态,进一步满足广泛连接和多样化负载的需求。在此背景下,统一而规范的接口和基础设施是代码移植和复用的前提,也是各种
    的头像 发表于 04-07 17:24 564次阅读
    <b class='flag-5'>深入研究</b>:我国工业实时操作系统的核心技术与演进路径

    迈威通信工业以太网交换机通过软件源代码安全审定

    深入测试,MISCOM7000交换机的软件源代码安全审定中表现出色,不仅未发现任何明显的安全漏洞和缺陷,更展现出强大的防御能力,能够有效
    的头像 发表于 03-29 10:43 265次阅读
    迈威通信工业以太网交换机<b class='flag-5'>通过</b>软件源<b class='flag-5'>代码</b><b class='flag-5'>安全</b>审定

    深入理解FFmpeg阅读体验》+ 书收到了,崭新的开篇

    今天收到了《深入理解FFmpeg》 崭新的书,一个在2022年较近距离接触过却尚未深入研究的领域图像处理。最近刚好在作这方面的研究,希望自己可以把握这次机会,好好学习下 FFMpeg,相信可以让自己
    发表于 01-07 18:57

    怎么用Vivado做覆盖分析

    在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。
    的头像 发表于 01-03 12:34 1261次阅读
    怎么用Vivado做<b class='flag-5'>覆盖</b>率<b class='flag-5'>分析</b>

    GSM覆盖增强技术和超远覆盖原理的研究分析

    电子发烧友网站提供《GSM覆盖增强技术和超远覆盖原理的研究分析.pdf》资料免费下载
    发表于 11-17 16:36 0次下载
    GSM<b class='flag-5'>覆盖</b>增强技术和超远<b class='flag-5'>覆盖</b>原理的<b class='flag-5'>研究</b><b class='flag-5'>分析</b>

    AbsInt—确保代码安全的静态性能分析工具

    德国AbsInt公司是专注于安全苛求软件研发、确认、验证和认证的工具链供应商,能够为客户提供完整的确保代码安全的性能分析工具套件以及软件分析
    的头像 发表于 11-08 11:15 376次阅读
    AbsInt—确保<b class='flag-5'>代码</b><b class='flag-5'>安全</b>的静态性能<b class='flag-5'>分析</b>工具

    代码覆盖率记录

    为确保具体的产品(例如,医疗或航空电子市场)质量合格, 通常需要提供语句覆盖与判定覆盖认证证明。对于各种嵌 入式系统,规范要求高度优化的代码需要实时测试。禁止
    发表于 11-03 11:02 0次下载
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖</b>率记录

    使用VectorCAST MATLAB Toolbox获取代码覆盖度的基本步骤

    不同阶段的常用方法,用于有效验证生成的嵌入式代码。SIL测试目的是验证嵌入式代码的正确性,甄别潜在的问题,并评估程序的初步性能,一般在PC上即可执行;PIL则须运行在物理目标板上,主要用于验证嵌入式
    的头像 发表于 10-26 11:06 898次阅读
    使用VectorCAST MATLAB Toolbox获取<b class='flag-5'>代码</b><b class='flag-5'>覆盖</b>度的基本步骤

    芯片剪切力测试机试验机推力速度

    探索芯片剪切力测试机的推力速度对于了解芯片性能和质量具有重要意义。博森源电子将介绍芯片剪切力测试机的概念和原理,并深入研究推力速度对测试结果的影响。
    的头像 发表于 10-09 15:46 601次阅读
    芯片剪切力<b class='flag-5'>测试</b>机试验机推力速度

    通过双比率检验测试供应商延迟交付率

    测试分析两个供应商(供应商A和供应商b)之间的延迟交付率。通过深入研究数据并执行2-比例测试,我们旨在辨别哪个供应商的延迟交付率更高。 什么是2比例检验? 2-比例检验也称为双比率检
    的头像 发表于 10-09 15:05 345次阅读