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事件为开发团队提供了宝贵的教训。
- 抵制偷工减料的诱惑。快速交付的压力可能会导致质量下降。抵制这种诱惑并优先进行全面测试以防止代价高昂的故障至关重要。
- 了解系统的关键性。即使看似不重要的系统在发生故障时也会产生重大影响。了解与软件相关的真正风险是做出有关测试和质量保证的明智决策的关键。
- 向安全至关重要的行业学习。汽车和航空航天等行业已经制定了严格的测试标准,软件故障可能会造成生死攸关的后果。采用其中一些最佳实践可以帮助提高软件的可靠性,即使它不是安全至关重要的。
结论
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…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
