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

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

3天内不再提示

使用测试自动化左移您的安全关键软件测试

星星科技指导员 来源:嵌入式计算设计 作者:Marc Brown 2022-06-29 14:25 次阅读

我们正处于安全关键软件的成本危机中。现在需要的增加的功能已经超出了支付其开发费用的能力。例如, 波音 787 计划需要 650 万行代码,设计、开发和测试花费了 40 亿美元。

主要安全关键项目的趋势显示总成本呈指数级增长,软件在年度开发总预算中占较大比例。使用以前项目中使用的相同技术,下一个大型航空航天项目可能无法负担。所以,我们能做些什么?

安全认证以及所需的测试和验证是软件开发预算的很大一部分。在开发生命周期的早期开始软件测试,同时利用自动化在成本、风险和进度方面带来了巨大的收益,如图 1 所示。

pYYBAGK78HaAIn8LAAHAR5Jk-A8323.png

【图1 | 商业航空项目中每行代码的软件开发成本]

创建和发现错误的位置以及成本影响

不出所料,大多数缺陷都是在项目开始时引入的,甚至在编写第一行代码之前。大多数错误是在测试过程中发现并修复的,但很大一部分(高达 20%)是在产品发货后的操作过程中发现的。在经过认证的系统中,这要么意味着极其昂贵的修复-测试-重新认证周期,要么意味着针对问题的操作员解决方法(图 2)。

pYYBAGK78H6ALWkeAAIkglkED84987.png

【图2 | 在不同开发阶段引入和检测到的缺陷百分比]

在项目的整个过程中,发现和修复缺陷的成本会成倍增加。最坏的情况是在产品交付给客户后修复缺陷。部署后的缺陷修复成本是保守的,不包括对您的品牌造成的损害和现场安全事故的责任(图 3)。显然,目标是将检测到并修复的缺陷移到生命周期的早期——换句话说,“左移”。此外,希望减少传递给客户的缺陷数量(每个领域的现实)。

poYBAGK78IWAWM-pAAHQpPjYJcM679.png

【图3 | 在每个开发阶段查找和修复错误的相对成本。在需求和设计期间是基线 (1x) 和修复缺陷成本最低的地方。]

测试自动化在左移中的作用

安全关键软件行业认识到需要改变做事的方式。太多的项目试图重新发明轮子,而认证新软件既耗时又昂贵。

新产品的连接性和功能性的增长意味着方法需要改变。任何安全关键项目的很大一部分都是测试,而自动化对于实现安全、安保和质量目标是绝对必要的。以下是测试自动化工具如何支持新的软件开发方法并提高测试和文档生产力的示例:

支持敏捷和迭代开发方法: 了解瀑布方法的问题,许多团队使用更现代的开发方法来提高质量和安全性。测试自动化是任何迭代开发方法的重要组成部分,因为测试套件在模块、组件等的每个新迭代上运行。测试自动化通过可重复的自动化测试支持这些方法,为每个测试提供不同级别的报告,但也可以累积结果随着时间的推移。动态分析工具对于检测难以检测的运行时错误至关重要,而静态分析在测试开始前检测缺陷方面起着重要作用。

支持软件检查: 检查是在开发生命周期早期消除缺陷的良好实践。检查意味着审查所有内容,而不仅仅是源代码。例如,检查需求和设计对于防止系统中的主要错误来源至关重要(再次图 2)。许多错误是从字面上设计到系统中的。工具在这个阶段发挥的作用较小,但确实提高了代码审查的有效性。自动化单元测试、动态错误检测和静态分析在项目的早期编码阶段提供了极大改进的错误检测。自动化测试的结果可以在代码审查中呈现,从而减少对手动错误检测的依赖,并留出更多时间来检测不正确的需求和设计决策。

提高测试效率: 手动测试乏味且可重复性较差。结果收集可能是临时的,尽管结果“正确”,但仍可能遗漏错误。实现所需的代码覆盖率,这取决于安全标准和项目的关键性,很难跟踪。测试自动化不仅减少了测试的乏味和可重复性,而且高级测试工具的报告功能创建了有关项目状态的重要管理信息。添加动态分析(在代码运行时分析代码(以检测棘手的运行时错误))和静态分析(在代码运行之前分析代码)增加了测试工具的错误检测能力。

自动化编码标准合规性: 许多安全关键项目需要源代码标准。例如,MISRA 在汽车软件中很常见,但已在其他行业中获得认可。一些标准要求代码符合满足特定目标的公司标准。在每种情况下,手动强制执行代码合规性都是乏味且容易出错的。静态分析工具可以强制执行合规性,高级工具通过检测超出格式违规的错误更进一步。

自动化认证文档: 实现软件安全认证的大部分工作量是记录流程、验证和验证。测试自动化显着降低了记录测试结果和覆盖分析的成本。

加速第三方软件的重用: 提高生产力的一个关键策略是软件重用。理想情况下,可以使用已经过认证的组件来降低这些子单元的开发成本。项目需要使用 COTS(现成的商业)软件以及可能的开源和其他源代码。使用静态和动态分析工具自动评估该软件可降低使用这些组件的风险。

提高质量、安全性和保障性: 即使是严格的测试方案也可能遗漏严重错误。例如,仅代码覆盖率不足以确保在安全攻击或多线程代码情况下的正确行为。静态分析工具可以在不运行特定测试的情况下检测源代码中的错误,并且可以发现单元或系统测试中难以发现的安全漏洞等错误。动态分析工具可以在测试期间检测运行代码中可能反映在测试结果中的错误(例如,缓慢的内存泄漏)。系统测试期间的模糊测试和渗透测试可以发现在正常操作条件下遗漏的错误。总体而言,最先进的工具发现的额外缺陷和安全漏洞有助于降低成本、风险以及使其投入生产的 20% 左右的许多错误。

左移有什么影响?

很明显,必须采取一些措施来解决图 2 中清楚显示的问题。在生命周期的开始,引入了太多缺陷并且未被发现,而当产品交到客户手中时,产品中留下了太多缺陷。 采用新的开发方法、重用组件、利用 COTS 和开源以及工具自动化都是提高开发效率的关键步骤。

pYYBAGK78I6AcP1GAAJnvm7qhWI131.png

【图4 | 该图显示了改进的开发过程,该过程在生命周期的早期转移了对错误和安全漏洞的检测。]

从图 3 中我们知道,每个开发阶段的成本都会显着增加。图 5 显示了修复传统方法与图 4 中所示方法的缺陷的成本比较。更早发现和修复错误,不出所料,成本低于稍后修复它们。在此处介绍的情况下,总体成本差异约为 40%,有利于左移方法。

poYBAGK78JaATFDoAAI44-EppR8583.png

[图 5. 该图显示了修复传统方法与左移方法中的错误的相对成本。即使总缺陷数量相同,早期检测也会显着降低成本。]

认证工具链和资格协助的重要性

在安全关键项目中使用自动化工具需要对工具本身的信任。产品制造商有责任确信用于创建软件的流程和工具符合标准要求。工具供应商可以通过在出售给制造商之前获得安全标准机构认证的工具来提供帮助,或者在无法进行此类预认证的情况下,提供资格援助。然后,他们可以在自己的认证提交中使用工具供应商的认证证据,并减少所需的工作量。例如, Parasoft C/C++test 已通过 TÜV SÜD 认证,符合 IEC 61508 和 ISO 26262 标准的安全相关软件开发资格。

在某些软件安全标准中,例如 DO-178B 和 DO-178C,认证是在系统级别完成的,个别工具和软件没有独立认证。在这些情况下,工具供应商会在文档和专业服务方面提供鉴定工具包和帮助,从而大大降低鉴定用于项目的工具所需的成本和工作量。

审核编辑:郭婷

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

    关注

    28

    文章

    5032

    浏览量

    77722
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66726
  • 线程
    +关注

    关注

    0

    文章

    487

    浏览量

    19490
收藏 人收藏

    评论

    相关推荐

    纳米软件分享:电源管理芯片自动化测试方案

    在纳米软件与江苏某科技公司合作的电源管理芯片产线测试项目中,需要完成单入单出、单入双出、单入三出、单入四出系列微模块的14个项目的自动化测试。该公司之前是手动
    的头像 发表于 04-23 13:47 17次阅读
    纳米<b class='flag-5'>软件</b>分享:电源管理芯片<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>方案

    Eggplant—HMI自动化测试软件

    Eggplant是英国TestPlant公司推出的创新性自动化测试工具。通过VNC或RDP通讯技术远程桌面连接被测对象,基于图像和文字识别算法进行对象定位,进而驱动和确认被测HMI设备的响应,能够
    的头像 发表于 01-23 18:00 229次阅读

    ETC自动化测试系统ETC Runsys. #ETC #自动化测试 #OBU #RSU

    自动化测试
    度纬仪器
    发布于 :2024年01月12日 10:01:20

    CANoe中诊断29服务的实现#诊断自动化测试

    自动化测试
    北汇信息POLELINK
    发布于 :2023年12月29日 21:47:49

    UDS诊断之29服务--服务介绍#诊断自动化测试

    自动化测试
    北汇信息POLELINK
    发布于 :2023年12月20日 12:17:03

    HamronyOS自动化测试框架使用指南

    概述 为支撑 HarmonyOS 操作系统的自动化测试活动开展,我们提供了支持 JS/TS 语言的单元及 UI 测试框架,支持开发者针对应用接口进行单元测试,并且可基于 UI 操作进行
    发表于 12-19 10:26

    电源测试怎么自动化?电源模块自动化测试系统如何实现?

    纳米软件在电测行业深耕十余年,在行业的大背景下,为了进一步完善自动化测试,开发出了新的智能化的电源模块自动化测试系统ATECLOUD-POW
    的头像 发表于 12-15 14:40 303次阅读
    电源<b class='flag-5'>测试</b>怎么<b class='flag-5'>自动化</b>?电源模块<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>系统如何实现?

    LabVIEW与Tektronix示波器实现电源测试自动化

    LabVIEW与Tektronix示波器实现电源测试自动化 在现代电子测试与测量领域,自动化测试系统的构建是提高效率和精确度的
    发表于 12-09 20:37

    基于软件性质的自动化测试技术

    软件开发的生命周期中,测试是至关重要的一环。为了确保软件产品的质量,开发团队需要进行全面的测试,以发现和修复软件中潜在的缺陷和问题。传统的
    的头像 发表于 10-09 16:29 277次阅读
    基于<b class='flag-5'>软件</b>性质的<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>技术

    GAT通用自动测试系统

    同一平台,支持多品牌仪表兼容互换。 ◆ 安全性:按用户进行权限管理,权限细化到每个功能点及产品。 ◆ 高效性:产品自动测试用例的快速搭建,通过引入自动化工装、开关矩阵实现一键测试,提升
    发表于 09-26 10:09

    接口自动化测试流程讲解 企业接口自动化测试步骤

    接口自动化测试是指通过编写脚本或使用自动化工具,对软件系统的接口进行测试的过程。接口测试
    发表于 07-28 14:54 1183次阅读
    接口<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>流程讲解 企业接口<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>步骤

    嵌入软件单元测试/集成测试自动化工具

    CoverageMaster winAMS : 适用于嵌入式目标机代码的单元测试/集成测试工具 全面支持嵌入式微机!验证嵌入式C/C++软件 实施以模块为单位的自动化单元
    的头像 发表于 07-11 17:11 456次阅读
    嵌入<b class='flag-5'>软件</b>单元<b class='flag-5'>测试</b>/集成<b class='flag-5'>测试</b><b class='flag-5'>自动化</b>工具

    半导体测试系统 芯片自动化测试软件 可定制测试方案ATECLOUD-IC

    测试产品:芯片半导体器件。纳米软件ATECLOUD-IC芯片自动化测试系统适用于二极管、三极管、绝缘栅型场效应管、结型场效应管、单向和双向可控硅、普通和高速光耦、整流桥、共阴共阳二极管
    的头像 发表于 06-20 16:55 817次阅读
    半导体<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>方案ATECLOUD-IC

    一个自动化测试流程

    一个自动化测试流程。
    发表于 05-04 17:48 0次下载

    自动化测试选择合适的Python框架

    测试自动化是使用框架和工具自动执行测试以更快地执行测试并减少对人工测试人员的需求的实践。在这种
    的头像 发表于 05-04 12:02 1147次阅读