通过自动化软件测试并将其左移,组织可以显著降低 CrowdStrike 等事件发生的风险。继续阅读,了解采用左移测试方法的强大之处。
测试中偷工减料的风险
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 的静态分析解决方案以及单元测试、代码覆盖率和其他测试方法显著降低此类事件的风险。我们的工具可帮助团队在管理业务风险的同时保持高标准的软件质量,确保他们的软件可靠、安全且随时可在现实世界中运行。