当前位置: 首页 > news >正文

CrowdStrike 的失败如何凸显了左移测试的重要性

通过自动化软件测试并将其左移,组织可以显著降低 CrowdStrike 等事件发生的风险。继续阅读,了解采用左移测试方法的强大之处。

Parasoft下载   

测试中偷工减料的风险

CrowdStrike 软件更新失败是一个重要的教训,它让我们认识到早期、自动化和全面的软件测试的重要性。正如我的同事Miroslaw Zielinski在《CrowdStrike 事件中的软件测试见解》中所强调的那样,为了节省时间和金钱而偷工减料可能会导致灾难性的后果。测试不仅仅是一个需要检查的框。它是确保您交付的软件可靠、安全并能够在现实世界中按预期运行的重要组成部分。

虽然这次失败背后有多种因素,但我经常听到组织提出的一个共同挑战是频繁发布更新的持续压力。这种压力往往使优化测试成本和时间成为一个有吸引力的目标。然而,避免 CrowdStrike 失败等事件的关键在于采用全面的、左移的测试方法。

Parasoft 的软件测试(尤其是静态分析)旨在促进这种左移方法。但在深入研究此解决方案之前,让我们先了解左移测试的强大功能。

左移测试的力量

左移测试是现代软件开发中最强大的概念之一,它能够及早发现错误并提高整体代码质量。传统上,测试和调试是在开发周期的最后阶段进行的——在代码编写和集成之后——通常是在初始测试阶段之后。这种方法通常会导致在流程后期发现关键的错误和问题,而修复这些问题要困难得多,而且耗时得多。

通过在实施过程中实施静态分析,工程师可以在编写代码时解决编码问题或合规性违规问题。这种即时反馈使开发人员能够当场纠正问题,从一开始就显著提高代码质量。结果就是大幅减少了缺陷,否则这些缺陷会在开发生命周期的后期才被发现,而修复这些缺陷会变得越来越复杂和昂贵。

例如,如果通过静态分析及早发现缺陷,则可以快速有效地解决该问题。但是,如果同一缺陷直到后来才通过质量保证测试发现,解决过程就会变得更加复杂。涉及的团队成员更多,记录、报告、重现和修复问题的步骤需要更长的时间,从而导致工作量增加和延误。

如果缺陷影响到生产,风险会更高。现场修复缺陷尤其具有挑战性,因为它会直接影响客户,可能需要紧急修补、召回,甚至采取损害控制措施来保护产品的声誉。开发团队必须迅速采取行动修复错误,而 QA 团队需要重新测试解决方案,这增加了流程的复杂性。

回顾 CrowdStrike 事件,我们清楚地知道静态分析对于在开发过程早期识别和解决缺陷、防止代价高昂且具有破坏性的问题影响生产至关重要。

静态分析不仅仅是语法检查

静态分析是一种先进的技术,用于检查源代码以识别潜在错误,例如使用未初始化的变量、空指针取消引用、缓冲区溢出和许多其他编码缺陷,而无需执行代码。

例如,Parasoft 的静态分析引擎不仅限于简单的语法检查。它不仅执行控制流和数据流分析来捕获各种错误和编码问题,而且还通过独特的 AI 和机器学习应用领先于竞争对手。我们的 AI驱动解决方案会在与代码库的历史交互和以前的静态分析结果的背景下审查新的静态分析结果,预测相关性并确定新发现的优先级,以帮助组织更有效地采用静态分析。

静态分析检测的问题类型

以下仅列举了静态分析可以检测到的几种类型的错误或问题。

  • 空指针取消引用。自动检测取消引用 NULL 指针的尝试。
  • 内存泄漏。识别已分配但未正确释放内存的情况。
  • 缓冲区溢出。对于安全来说至关重要,检测写入缓冲区的数据是否超出其可容纳的数据量。
  • 未初始化的变量。标记在初始化之前使用的变量。
  • 无限循环。检测可能永不终止并导致程序挂起的循环。
  • 死代码。查找从未执行过且可以安全删除的代码。
  • 除以零。确定分母可能为零的除法,因为这会导致运行时错误。
  • 语法和类型错误。标记代码中阻止编译的错误。
  • 逻辑错误。捕获代码逻辑中可能导致不正确行为的错误。
  • 安全漏洞。检测已知漏洞库的使用情况和其他安全问题。
  • 违反编码标准。 确保遵守编码标准,这对于在安全关键环境中获得认证至关重要。

在安全关键型开发中,人们会积极寻找并缓解此类编码错误,因为如果系统崩溃或出现故障,可能会造成生命损失。虽然安全概念不是 CrowdStrike 的要求,但软件质量是必需的,他们应该考虑采用MISRA、CERT、CWE等编码标准。

MISRA 等编码标准是由具有多年经验的专家开发的,而 Parasoft 作为MISRA C 和 C++ 2023编码标准的贡献成员,提供了基于这些专业知识的强大静态分析解决方案。

尽管有这些明显的好处,但令人惊讶的是,仍然有很多开发团队没有使用静态分析。采用静态分析对于降低软件测试成本、提高代码质量至关重要。

通过将静态分析纳入其持续集成/持续部署 (CI/CD) 管道,CrowdStrike 可以自动识别导致其软件更新失败的内存访问问题。

将静态分析集成到 CI/CD 管道中

在现代 CI/CD 环境中,开发人员编写并提交代码,从而触发自动构建过程。构建成功完成后,将运行自动测试(包括静态分析)。Parasoft C 和 C++ 测试解决方案(如 C/C++test)可轻松集成到 CI/CD 管道中,并与 Jenkins、GitLab、Bamboo、VS Code、Eclipse 等工具无缝协作。

这种集成可确保持续监控和改进代码质量,开发人员可立即收到有关静态分析发现的任何问题反馈。通过自动执行这些质量检查,组织可以:

  • 防止技术债务累积。
  • 通过在开发早期发现问题来降低测试成本。
  • 在整个开发过程中实现高标准的代码质量。
CrowdStrike 事件的教训

CrowdStrike事件为开发团队提供了宝贵的教训。

  1. 抵制偷工减料的诱惑。快速交付的压力可能会导致质量下降。抵制这种诱惑并优先进行全面测试以防止代价高昂的故障至关重要。
  2. 了解系统的关键性。即使看似不重要的系统在发生故障时也会产生重大影响。了解与软件相关的真正风险是做出有关测试和质量保证的明智决策的关键。
  3. 向安全至关重要的行业学习。汽车和航空航天等行业已经制定了严格的测试标准,软件故障可能会造成生死攸关的后果。采用其中一些最佳实践可以帮助提高软件的可靠性,即使它不是安全至关重要的。
结论

CrowdStrike 软件更新失败凸显了在当今软件开发环境中全面、自动化测试的重要性。组织可以通过利用 Parasoft 的静态分析解决方案以及单元测试、代码覆盖率和其他测试方法显著降低此类事件的风险。我们的工具可帮助团队在管理业务风险的同时保持高标准的软件质量,确保他们的软件可靠、安全且随时可在现实世界中运行。

相关文章:

CrowdStrike 的失败如何凸显了左移测试的重要性

通过自动化软件测试并将其左移,组织可以显著降低 CrowdStrike 等事件发生的风险。继续阅读,了解采用左移测试方法的强大之处。 Parasoft下载 测试中偷工减料的风险 CrowdStrike 软件更新失败是一个重要的教训,它让我们认识到早期、自动…...

HarmonyOS开发实战( Beta5版)高负载组件的渲染实践规范

简介 在应用开发中,有的页面需要在列表中加载大量的数据,就会导致组件数量较多或者嵌套层级较深,从而引起组件负载加重,绘制耗时增长。虽然可以通过组件复用避免组件重复创建,但是如果每个列表项中包含的组件较多&…...

NLP从零开始------16.文本中阶处理之序列到序列模型(1)

1. 序列到序列模型简介 序列到序列( sequence to sequence, seq2seq) 是指输入和输出各为一个序列(如一句话) 的任务。本节将输入序列称作源序列,输出序列称作目标序列。序列到序列有非常多的重要应用, 其中最有名的是机器翻译( machine translation), 机…...

【匈牙利汽车产业考察,开启新机遇】

匈牙利汽车工业发展历史悠久,拥有发达的基础设施和成熟的产业基础,全球20大汽车制造厂商中,有超过14家在匈牙利建立整车制造工厂和汽车零部件生产基地,比亚迪、宁德时代、欣旺达、蔚来等企业纷纷入驻。匈牙利位于东西方交汇处&…...

并行程序设计基础——动态进程管理

目录 一、组间通信域 二、动态创建新的MPI进程 1、MPI_COMM_SPAWN 2、MPI_COMM_GET_PARENT 3、MPI_COMM_SPAWN_MULTIPLE 三、独立进程间的通信 1、MPI_OPEN_PORT 2、MPI_COMM_ACCEPT 3、MPI_CLOSE_PORT 4、MPI_COMM_CONNECT 5、MPI_COMM_DISCONNECT 6、MPI_PUBLISH…...

C# 字符串(String)使用教程

在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是 System.String 类的别名。 创建 String 对象 您可以使用以下方法之一来创建 string 对象: 通过给 Str…...

django之ForeignKey、OneToOneField 和 ManyToManyField

在Django中,ForeignKey、OneToOneField 和 ManyToManyField 是用于定义模型之间关系的字段类型。 ForeignKey ForeignKey 用于定义多对一的关系。例如,一个Employee可以属于一个Department,一个Department可以有多个Employee。 from djang…...

java.lang.IndexOutOfBoundsException: setSpan ( 0...x ) ends beyond length X

1,可能是EditText,setSelection(x)时超过了 输入框内容的实际长度导致的。 2,手机开启“拼写检查功能”,EditText设置了最大长度,选择提示的某一项文案时超过设置的最大长度限制,导致崩溃。 针对情况2 开…...

技术进展:CH-90树脂在去除硫酸钠柠檬酸钠溶液中铁锰离子上的应用

随着环境保护法规的日趋严格,以及工业生产中对产品纯度要求的不断提高,去除废水中的重金属离子已成为一个亟待解决的问题。铁和锰作为常见的杂质离子,在电池制造等行业中,对溶液纯度的影响不容忽视。 三元前驱体废水中通常含有硫…...

录屏时摄像头无法识别?如何录屏时打开摄像头,解决方案及录屏软件推荐

在数字时代,无论是游戏玩家、在线教育者还是企业培训师,录屏软件都已成为日常工作和娱乐中不可或缺的工具。但有时候想录制人物摄像头画面的时候,当录屏软件无法识别到摄像头时,这无疑会给用户带来不小的困扰。本文将提供一系列解…...

达梦数据库-DM8 企业版安装指南

一、DM8 企业版简介 达梦数据库(DM8)是中国自主研发的一款高性能数据库管理系统,广泛应用于企业级应用场景。DM8 企业版具备高可用性、强一致性和高性能等特点,支持多种操作系统和硬件平台。本文将详细介绍如何在 Kylin 操作系统上安装达梦数据库 DM8 企业版。 二、安装前…...

心脑血管科董田林医生:心律失常患者饮食,调养秘诀,助你找回健康心跳

在纷繁复杂的健康议题中,心律失常作为一种常见的心脏疾病,不仅影响着患者的生活质量,更牵动着每一个家庭的神经。幸运的是,通过科学合理的饮食调养,心律失常患者可以在很大程度上改善病情,逐步找回健康的心…...

期权杂记(一)

2024年9月5日: 切忌裸奔!如果你想暴富,押注期权还不如去澳门;做任何策略都可以多多关注希腊字母;对冲也是又方向性的,可以偏购,也可以偏沽,通过Delta Money来尝试计算;单…...

【MATLAB源码-第163期】基于matlab的BPSK+瑞利(rayleigh)信道下有无波束成形误码率对比仿真。

操作环境: MATLAB 2022a 1、算法描述 在通信系统中,波束成形(Beamforming)技术是一种广泛使用的信号处理技术,通过调整天线阵列中各个元素的相位和幅度,使得信号在特定方向上增强,在其他方向…...

【数据分享】2000-2022年我国省市县三级的逐日O3数据(免费获取\excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2022年的省市县三级的逐日PM2.5数据、2013-2022年的省市县三级的逐日CO数据、2013-2022年的省市县三级的逐日SO2数据、2008-2022年我国省市县三级的逐日NO2数据和2000-2022年我国省市县三级…...

Python 的http.server库详细介绍

http.server 是 Python 标准库中的一个模块,用于创建基本的 HTTP 服务器。这个模块非常适合用于开发、测试、以及在本地网络中共享文件。以下是对 http.server 模块的详细介绍。 Python 官方文档:http.server — HTTP 服务器 模块概述 http.server 提…...

使用ffmpeg在视频中绘制矩形区域

由于项目需要对视频中的人脸做定位跟踪, 我先使用了人脸识别算法,对视频中的每个帧识别人脸、通过人脸库比对,最终记录坐标等信息。 然后使用ffmpeg中的 drawbox 滤镜功能,选择性的绘制区域。从而实现人脸定位跟踪 1、drawbox …...

计算机,数学,AI在社会模拟中的应用

这些模型通常属于社会模拟的范畴,利用计算机技术和复杂系统理论来模拟和预测社会动态。以下是几种常见的社会模拟模型: 1. 系统动力学模型 系统动力学模型通过建立数学方程来描述社会系统中的各种变量及其相互关系。这种模型适用于宏观层面的社会变化分…...

【数据结构】排序算法系列——插入排序(附源码+图解)

插入排序 算法思想 插入排序的算法思想其实很容易理解,它秉持着一个不变的循环:比较->交换->比较->交换…因为我们排序最终的目的是要得到递增或者递减的数据,那么在原有的数据中,我们可以将数据依次两两进行比较&…...

TOMATO靶机漏洞复现

步骤一,我们来到tomato页面 什么也弄不了只有一番茄图片 弱口令不行,xxs也不行,xxe还是不行 我们来使用kali来操作... 步骤二,使用dirb再扫一下, dirb http://172.16.1.133 1.发现这个文件可以访问.我们来访问一下 /antibot_i…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...