通过测试自动化转移安全关键软件测试

我们正面临安全关键软件的成本危机,这意味着所需增加的功能已经超出了支付其开发费用的能力。例如,波音 787 项目需要 650 万行代码,设计、开发和测试成本达 40 亿美元。波音777X项目的成本数字并未公开披露,波音737 MAX最初估计为36亿美元,但后来升至63亿美元,这还不包括数十亿美元的故障成本。

Parasoft 产品免费试用icon-default.png?t=N7T8https://www.evget.com/consult/parasoft/#Aps_contact

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

安全认证以及所需的测试和验证占软件开发预算的很大一部分。软件的左移测试(在 SDLC 的早期进行测试)在利用自动化的同时,在成本、风险和进度方面带来了巨大的回报。下图显示了商业航空公司软件开发每千行代码的成本为数百万美元,这清楚地显示了指数级增长。

显示每 KLOC 航空电子系统成本不断增加的图表(百万美元)

了解何时引入和检测到错误

毫不奇怪,大多数缺陷都是在项目一开始就被引入的,甚至是在编写第一行代码之前。大多数错误都是在测试期间发现并修复的。但有相当一部分(高达 20%)是在产品销售和运输后的运营过程中发现的。

在经过认证的系统中,这要么意味着极其昂贵的修复-测试-重新认证周期,要么意味着操作员需要解决问题。下图显示了软件开发生命周期每个阶段引入和检测到的错误的相对百分比。

显示开发阶段引入的缺陷与检测到的缺陷的百分比的图表

在生命周期的早期修复缺陷是最便宜的。在项目期间,查找和修复这些问题的成本会成倍增加。在操作中,产品交付到客户手中后,修复成本最高。部署后缺陷修复成本是保守的,不包括对您的品牌的损害以及现场安全事件的责任。

下图显示了在生命周期的每个阶段修复缺陷的相对成本。显然,目标是将检测到并修复的缺陷移至生命周期的早期。换句话说,左移。此外,希望减少交付给客户的缺陷数量,这在每个领域都是现实。

该图显示了在开发阶段修复缺陷的相对成本的增加

通过测试自动化进行左移测试

安全关键的软件行业认识到需要改变工作方式。太多的项目都在重新发明轮子,而认证全新的软件既耗时又昂贵。新产品的连接性和功能性的增长意味着方法需要改变。在这篇文章中,我们不会涵盖所提出的所有技术,而是集中讨论测试自动化在减少、检测和修复缺陷和安全漏洞方面所扮演的角色。

测试自动化的优点

任何安全关键项目的很大一部分都是测试。自动化对于实现安全、保障和质量目标是绝对必要的。以下是测试自动化工具如何支持现代软件开发方法并提高测试和文档生产力的示例。

支持敏捷和 CI/CD 管道

瀑布方法的问题已被理解,许多团队正在使用更现代的开发方法来提高质量和安全性。测试自动化是任何迭代开发方法的重要组成部分,因为测试套件在模块、组件等的每次新迭代上运行。

测试自动化通过可重复的自动化测试支持这些方法,为每个测试提供不同级别的报告,而且随着时间的推移提供累积结果。这些工具还旨在通过与工作项跟踪、需求管理、构建系统和源存储库服务集成来与 CI 流程配合使用。动态分析工具对于检测难以检测的运行时错误至关重要。静态分析在测试开始前检测缺陷方面发挥着重要作用。

支持软件检查

在开发生命周期早期消除缺陷的最佳实践之一是检查。检查意味着审查所有内容,而不仅仅是源代码。例如,检查需求和设计对于防止系统中错误的主要来源至关重要。请参见图 2。许多错误实际上是被设计到系统中的。工具在此阶段发挥的作用较小,但确实提高了代码审查的有效性。

自动化单元测试、动态错误检测和静态分析大大改进了项目早期编码阶段的错误检测。自动化测试的结果可以在代码审查中呈现,从而减少对手动错误检测的依赖,并留出更多时间来检测不正确的需求和设计决策。

提高测试效率

手动测试非常繁琐且可重复性较差。结果收集可以是临时的,尽管结果是“正确的”,但也可能会错过错误。实现所需的代码覆盖率(根据安全标准和项目的关键性而变化)很难跟踪。

测试自动化不仅使测试变得不再那么繁琐和可重复,而且高级测试工具的报告功能可以创建有关项目状态的重要管理信息。添加动态分析(在运行时分析代码以检测棘手的运行时错误)和静态分析(在运行前分析代码)大大提高了测试工具的错误检测能力。

自动遵守编码标准

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

自动化认证文档

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

加速遗留软件的重用

提高生产力的一个关键策略是重用软件。理想情况下,可以使用已经认证的组件来降低这些子单元的开发成本。使用静态和动态分析工具自动评估遗留软件可以降低使用这些组件的风险。

提高质量、安全和保障

即使严格的测试方案也可能会遗漏严重错误。例如,仅代码覆盖率不足以确保在安全攻击或多线程代码的情况下正确的行为。静态分析工具可以在不运行特定测试的情况下检测源代码中的错误,并且可以发现在单元或系统测试中难以发现的错误,例如安全漏洞。

动态分析工具可以检测测试期间运行代码中可能反映在测试结果中的错误,例如缓慢的内存泄漏。系统测试期间的模糊测试和渗透测试可以发现正常操作条件下遗漏的错误。总的来说,最先进的工具发现的额外缺陷和安全漏洞有助于降低成本、风险以及投入生产的 20% 左右的错误。

左移测试有什么影响?

很明显,必须采取一些措施来解决图 2 中清楚显示的问题。在生命周期开始时引入了太多缺陷并且未被发现。当产品被制造出来并在客户手中时,或者在飞机或汽车中(视情况而定)中,有太多的残留物。采用现代开发方法、重用组件、利用 COTS 和开源以及工具自动化都是提高开发效率的关键步骤。

假设开发过程使用最先进的工具,其中测试向左移动,并且在生命周期的早期检测到并修复更多缺陷,那么单元测试非常有效,有助于减少进入生产的错误。在图 4 中,一个假设的示例显示了生命周期中缺陷检测的变化,其中大部分缺陷检测和修复在生命周期的早期移至左侧。

标题为“向左移动缺陷检测”的图表,比较了更早和更晚发现错误的情况。 如果较早发现,错误检测会随着发布的临近而减少。

从上面的图3我们知道,在开发的每个阶段成本都会显着上升。下面的图 5 显示了传统方法与图 4 中所示的现代方法修复缺陷的成本比较。将发现和修复错误移到左侧,比稍后修复它们的成本要低。在此所示的情况下,总体成本差异约为 40%,有利于左移方法。

标题为“修复缺陷的相对成本”的图表比较了早期与晚期发现错误的成本。 如果较早发现,错误检测的成本会随着发布的临近而降低。

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

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

在某些软件安全标准(例如 DO-178C)中,认证是在系统级别完成的,并且各个工具和软件不是独立认证的。在这些情况下,该工具的供应商会提供资格认证套件以及文档和专业服务方面的帮助,从而大大减少了对项目中使用的工具进行资格认证所需的成本和工作量。

通过左移策略降低安全关键软件成本

安全关键软件无疑面临成本危机。新的大型安全关键项目的开发成本变得过于昂贵,甚至可能无法盈利。开发安全关键型软件需要现代方法,并且必须减少在软件开发生命周期后期发现的错误数量。向左移动,在生命周期中尽早检测和修复缺陷和安全漏洞可以显着降低成本。测试自动化在提高测试效率和结果方面发挥着关键作用。它是现代安全关键软件开发方法的重要组成部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/441312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python单线程、多线程、多进程

并发和并行 并发:单核CPU在不同时刻只执行一个任务,在同一时间段内,交替执行两个任务。 并行:双核CPU可以在同一时刻执行两个任务。 多核CPU的每个核心都可以独立执行一个任务,而且多个核心之间不会相互干扰。 并发…

typescript学习(更新中)

目录 开发环境搭建类型如何声明有哪些类型编译配置文件 开发环境搭建 npm i -g typescripttsc检查是否安装成功 类型如何声明 // 先声明再赋值 let a: number a 1// 直接赋值 let b 1function sum(a: number, b: number): number {return a b } console.log(sum(1, 2))有…

linux 将 api_key设置环境变量里

vi ~/.bashrc在最后添加api_key的环境变量 export GEMINI_API_KEYAIza**********WvpX7FwbdM刷新配置 source ~/.bashrc使用python 读取环境变量 import os gemini_api_key os.getenv(GEMINI_API_KEY) print(gemini_api_key)

Mysql的Cardinality值

什么是Cardinality值? Cardinality值是Mysql做索引优化时一个非常关键的值,优化器会根据这个值来判断是否使用这个索引,它表示索引中唯一值的数目估计值,该值应该尽可能接近1,如果非常小,则用户需要考虑是否…

企业计算机服务器中了mkp勒索病毒如何解密,mkp勒索病毒解密流程

网络技术的应用与发展,为企业的生产运营提高了效率,越来越多的企业利用网络开展多项工作业务,利用网络的优势,可以为企业更好的服务,但是稍不注意就会被网络威胁所盯上。近日,云天数据恢复中心接到多家企业…

二本双非|逆袭985/211只要做好这3件事

我的本科学校就是双非,但是我并不觉得考研是一件非常容易地事情,并且我身边的同学也没有一个觉得考研很轻松。可能网上很多经验贴说自己双非上岸985,二本上岸985,我觉得这是大家陷入了互联网时代的信息茧房。 考研不管是对985/211…

波奇学Linux: 信号捕捉

sigaction:修改信号对应的handler方法 act输入型参数&#xff0c;oldact输出型参数 void (*sa_handler) (int) //修改的自定义函数 sigset_t sa_mask // void handler(int signo) {cout<<"catch a signal, signal number: "<<signo<<endl; } int …

超市小程序有哪些功能 怎么制作

超市小程序是非常有用的工具&#xff0c;可以帮助超市提升用户体验&#xff0c;提高销售额。下面我们来看一下超市小程序可以具备哪些功能&#xff0c;以及如何制作一个高效的超市小程序。 1. **商品展示与搜索功能**&#xff1a;用户可以浏览超市的商品信息&#xff0c;包括价…

数字化转型导师坚鹏:大模型的应用实践(金融)

大模型的应用实践 ——开启人类AI新纪元 打造数字化转型新利器 课程背景&#xff1a; 很多企业和员工存在以下问题&#xff1a; 不清楚大模型对我们有什么影响&#xff1f; 不知道大模型的发展现状及作用&#xff1f; 不知道大模型的针对性应用案例&#xff1f; 课程…

雍禾医疗耀眼的“小”医生,雍禾植发刘树伟10年热爱一份事业

“你说你一个普外科大大夫&#xff0c;怎么改去做小小毛发医生了呢&#xff1f;”这是雍禾植发刘树伟医生&#xff0c;从公立医院转行做毛发医生时&#xff0c;被人质疑最多的点。然而&#xff0c;选择成为一名毛发医生&#xff0c;却是他花3年时间做出的重要的决定。 2009年&…

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】&#xff08;底层operator【】函数&#xff09; ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…

【校园安全】支小蜜防校园霸凌语音识别系统的好处

在校园安全领域&#xff0c;防校园霸凌语音识别系统的出现&#xff0c;为预防和应对校园霸凌行为提供了新的技术手段。本文将探讨防校园霸凌语音识别系统的好处&#xff0c;并分析其在校园安全建设中的重要作用。 通过安装在校园各个角落的语音识别设备&#xff0c;系统能够捕…

Flink并行度

1、Task flink中每个算子就是一个Task&#xff0c;比如flatMap、map、sum是一个Task。 2、SubTask 算子有几个并行度SubTask的数量就是几&#xff0c;比如 3、算子并行度 算子并行度指的是每个算子的并行度&#xff0c;可用env.setParallelism(1);设置所有算子的并行度&am…

浏览器是如何渲染页面的?

浏览器是如何渲染页面的&#xff1f; 1. 解析 HTML2. 样式计算 Computed Style3. 布局 Layout4. 分层 Layer5. 绘制 Paint6. 分块 Tiling7. 光栅化 Raster8. 画 draw完整过程面试题什么是 reflow&#xff08;回流/重排&#xff09;?什么是 repaint &#xff08;重绘&#xff0…

智慧城市中的数字孪生:构建城市管理的未来框架

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、实时监测与预警 2、模拟与优化 3、智能化决策 4、协同与共享 四、数字孪生技术构建城市管理的未来框架的价值 1、提高管理效率 2、优化资源配置 3、提升公共服务水平 4、增强应对突发事…

【Linux】Linux——Centos7安装

目录 虚拟机安装【空壳子】安装VMware Workstation新建虚拟机硬件兼容性(直接下一步)稍后安装操作系统客户及操作系统选择Linux&#xff0c;版本Centos764位给虚拟机命名&#xff0c;并选择安装位置处理器配置&#xff08;默认即可&#xff0c;不够用后面可以调&#xff09;虚拟…

JavaWeb - 3 - JavaScript(JS)

JavaScript(JS)官方参考文档&#xff1a;JavaScript 教程 JavaScript&#xff08;简称&#xff1a;JS&#xff09;是一门跨平台、面向对象的脚本语言&#xff0c;是用来控制网页行为的&#xff0c;它能使网页可交互&#xff08;脚本语言就不需要编译&#xff0c;直接通过浏览器…

谷歌广告(google Ads)投放技巧

Google广告投放涉及多个方面&#xff0c;以下是一些常用的技巧&#xff0c;可以帮助提高广告效果&#xff1a; 关键词选择&#xff1a; 选择与你的产品或服务紧密相关的关键词&#xff0c;并确保这些关键词与用户的搜索意图匹配。使用Google关键词规划工具来找到潜在的关键词&a…

python词嵌入

一、词嵌入的概念 自然语言处理的突破在2023年震撼世界&#xff0c;chatgpt3出来&#xff0c;之后chatgpt4、Gemini、Claude3等出来&#xff0c;问答越来越智能&#xff0c;非常厉害&#xff0c;其中有个基础性的概念&#xff0c;计算机要如何理解语言&#xff0c;基础工作就在…

IOS苹果通话记录在线生成网站源代码,直接上传就可使用

一键生成&#xff0c;PHP的上传到网站根目录打开域名访问即可 源码免费下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)