静态分析和动态分析

在开发早期,发现并修复bug在许多方面都有好处。它可以减少开发时间,降低成本,并且防止数据泄露或其他安全漏洞。特别是对于DevOps,尽早持续地将测试纳入SDLC软件开发生命周期是非常有帮助的。

这就是动态和静态分析测试的用武之地。它们在SDLC中各自服务于不同的目的,同时也为任何开发团队提供独特且几乎即时的投资回报率。

静态与动态分析:了解两者的区别

静态代码分析是一个广义的术语,用于描述几种不同类型的分析。然而,所有这些分析都有一个共同的特征:它们不需要代码执行即可运行。

相比之下,动态分析需要代码执行。尽管还有其他区别,但这一特征是区分这两种测试方法的根本因素。

这也意味着每种方法在开发过程的不同阶段都提供了不同的好处。为了理解这些差异,我们可以回顾以下内容。

  • 每种策略需要什么。

  • 需要使用测试类型。

  • 协助该过程的工具。

什么是静态分析?

静态代码分析测试可以包括各种类型,其中两种主要的类型是基于模式的测试和基于流的测试。

基于模式的静态分析可以查找出违反定义编码规则的代码。除了确保代码满足合规性或内部计划的统一期望外,它还可以帮助团队预防缺陷,如资源泄漏、性能和安全问题、逻辑错误和API滥用等。

基于流的静态分析可以查找和分析代码的各种路径。这可以通过控制流(执行行(hang)的顺序)和数据流(变量或类似实体可以被创建、改变、使用和销毁的顺序)来实现。这些过程可以暴露出导致关键缺陷的问题,例如:

  • 内存损坏(缓冲区覆盖)

  • 内存访问违规

  • 空指针解引用

  • 竞态条件(Race conditions)

  • 死锁(Deadlocks)

它还可以通过绕过安全关键代码(如身份验证或加密代码)的路径来检测安全问题。

此外,度量分析包括对代码的各个方面进行衡量和可视化。它可以帮助检测现有的缺陷,但更常见的是,为后续代码维护时,提前消除可能带来未知缺陷的可能性。这是通过发现代码中的复杂性和冗长性来完成的,例如:

  • 过大的组件

  • 过多的循环嵌套

  • 一系列过于冗长的判定

  • 复杂的组件间依赖关系

什么是动态分析?

动态分析有时被称为运行时错误检测,动态分析是测试类型之间的区别开始变得模糊的地方。动态应用程序安全测试(DAST)是一种分析测试,目的是检查测试项目而不是执行它。这种白盒测试检查的是内部行为,并非外部行为。然而测试中的代码必须被执行。这是通过运行与动态测试相同的黑盒测试来完成的。

这意味着动态分析可以在内部故障发生的瞬间检测并报告这些故障。这使得测试人员更容易精确地将这些故障与测试行动关联起来,以便进行事故报告。类似于好的静态分析,DAST提供了完整的技术细节,使开发人员能够隔离和修复潜在的缺陷。

DAST还扩展了所有级别的测试能力,从单元测试到验收,使检测内部故障成为可能,这些故障指向在测试停止后发生或将要发生的无法观察到的外部故障。

静态分析的利弊

凡事皆有利弊,静态分析测试也有优点和缺点。

静态分析的利弊

优点:缺点
1. 在不执行源代码的情况下评估源代码;1. 可能返回误报和漏报,会分散开发人员的注意力;
2. 分析整个代码的漏洞和错误;2. 手动操作需要很长时间;
3. 遵循定制的、定义好的规则;3. 无法找到运行时环境中出现的错误或漏洞;
4. 增强开发人员的责任感;4. 决定应用哪些行业编码标准可能会令人困扰;
5. 具有自动化能力;5. 确定偏离违反规则是否合适,可能具有挑战性。
6. 尽早突出错误并减少修复漏洞所需的时间。

虽然这些缺点看起来令人生畏,但静态分析的缺点可以用两件事来补充:

  • 自动化静态分析

  • 使用动态分析技术

为什么静态代码分析如此有价值?

所有这些类型的静态分析都有一个共同点:它们会涉及扫描或检查程序源代码。

这是一种快速而简单的暴露关键缺陷的方法。他实现了100%的覆盖率和100%的客观结果。

不断地执行这样的静态代码分析是有意义的,因为它提供了这些可操作的结果,减少了成本和开发时间,增加了代码覆盖率,等等。

超越静态分析的范畴

静态扫描提供信息来帮助预测代码集成和执行时可能会发生的情况。它根据工具认为的缺陷标准来检测缺陷。通常也可以根据您的偏好和优先级进行定制。

但是,工具不能告诉您测试中或生产中的系统何时交付了意外的、不适当的或不准确的结果。

这里的挑战是难以观察意想不到的行为。例如,对于用户、测试人员或测试执行工具来说,事务可能看起来正确地进行,但实际上,组件抛出了一个未处理的异常,并且未能正确地处理它。一个控制系统可能会在测试三天内快速正确地响应,但可能会在生产的第四天出现内存泄漏并导致崩溃。

通过使用静态代码分析工具修复所有检测到的缺陷,并不能保证不会有其他缺陷导致类似的失败。这就是为什么将失败的定义应用于内部和外部行为是很重要的,即使在集成之后也是如此。内部故障必须在外部故障出现之前检测到。

结合静态和动态分析的最佳实践

将静态和动态分析相结合,是获得可操作结果、减少错误发生、增加错误检测并创建更安全代码的最佳选择。两者并无优劣之分。它们像精心制作的瑞士手表的所有齿轮一样协同工作。

要同时使用静态和动态分析,请遵循这些最佳实践:

  • 将它们与符合您需求的手动和自动化解决方案一起使用;

  • 使代码对其他开发人员具有可读性和可重用性;

  • 在SDLC的正确点使用正确的方法——在早期使用静态方法,在运行时环境中使用动态方法;

  • 利用这两种方法对您的项目进行更全面的概述;

  • 避免只依赖一种测试方法的陷阱,一个小的疏忽可能导致大的问题。

将静态和动态分析相结合,使团队能够定位更大范围和数量的代码威胁。

获取有价值的见解,来选择最适合您团队的软件测试解决方案。

Parasoft中国
关注 关注
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试学习(二)静态白盒测试、动态白盒测试、配置测试、兼容性测试、外国语言测试
丨康有为丨的博客
10-12 784
静态是指不启动,白盒是指看内部代码。静态白盒测试是在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时称为结构化分析。进行静态白盒测试的首要原因是尽早发现软件缺陷,以找出动态黑盒测试难以发现或隔离的软件缺陷。在开发过程初期让测试小组集中精力进行软件设计的审查非常有价值。进行静态白盒测试的另外一个好处是,为黑盒测试员在接受软件进行测试时设计和应用测试用例提供思路。他们可能不必了解代码的细节,但是通过听审查评论,可以确定有问题或者容易产生软件缺陷的特性范围。
静态代码分析工具汇总
06-17
文档包括静态代码分析工具的汇总。 静态代码测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
国内外主流静态分析类工具汇总
热门推荐
manok的专栏
07-27 1万+
笔者从事该软件安全方面工作,在工作和学习中收集了国内外比较主流的静态分析类工具,供大家参考。大多是资料来自于网络整理,如有不足或欠缺,还请在评论中指出。我进行修正。也欢迎同行多多交流。 我使用0标注北大软件CoBOT,因为他是国内第一款基于主流SAST技术的静态分析工具,填补了国内在缺陷检测、安全漏洞软件工具上的空白。值得称赞的工具。 0、北大软件CoBOT CoBOT(库博)是北京大学...
程序静态分析
weixin_34383618的博客
09-06 972
这是我在实习期间对程序静态分析写的报告,以普及大家对程序静态分析 程序静态分析简述 静态程序分析: 程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。 它可以帮助软件开发人员、质量保证人...
静态分析与软件测试中的动态分析
weixin_33735077的博客
07-25 3711
什么是静态分析静态分析不涉及被测软件的动态执行,并且可以在运行程序之前的早期阶段检测可能的缺陷。静态分析在编码之后和执行单元测试之前完成。静态分析可以由机器完成,以自动“遍历”源代码并检测不合规规则。经典的例子是一个编译器,它可以找到词汇,句法甚至一些语义错误。静态分析也可以由审查代码的人执行,以确保使用正确的编码标准和约定来构建程序。这通常称为代码审查,由同行开发人员(编写代码的开发人员以外的...
什么是静态分析?代码分析工具
Pokemogo的博客
12-21 5083
为了从一开始就在您的软件中提高质量,请使用静态分析——软件工程师可以执行的最简单、最有效的方法来防止缺陷并强化代码,同时加快应用程序交付。 在对任何类型的系统进行工程设计时,尽早(并经常)检查缺陷和修复错误使团队可以显着减少添加到项目中的下游工作量,并且是避免在此过程中出现多头麻烦的可靠方法。 在软件开发中,不是一开始就设计出更好的软件,而是试图落入一个通用的陷阱中,并试图简单地对软件项目的质量进行测试(通常是在最后)。但是,重要的是要避免采用这种方法的诱惑,这种方法依赖于单元或功能测试来测试产品的质量。.
静态分析vs动态分析
weixin_42492218的博客
04-26 2330
静态分析有助于在部署软件之前识别潜在的漏洞,但它不提供有关软件在与环境交互时的行为方式的信息。它涉及分析应用程序的运行时行为,包括其输入、输出以及与其他系统的交互。静态分析是一种在不执行或运行的情况下分析应用程序或程序的方法。静态分析测试可以自动化,并提供在软件开发生命周期的早期识别潜在缺陷的机会。静态分析动态分析分析软件代码以查找错误、漏洞或其他问题的两种常用方法。总的来说,这两种方法各有优缺点,可能需要结合静态动态分析才能全面了解软件的弱点并改善其整体安全态势。
动态分析静态分析最主要的区别是什么?
02-22 3521
动态分析静态分析的主要区别是是否考虑时间因素。 动态分析(dynamic analysis)是相对于静态分析来讲的,动态分析是只改变一下自变量,因变量相应的做出的改变,动态改变一般是一次的改变,这种分析在经济学中很少用,尤其在基础经济学的过程中,动态经济学阐述了一段时间状态的变化过程,前后进行比较,而静态分析是对一种均衡状态所做的分析静态分析(static analysis)指的是一种均衡状态,一般指的是市场比较成熟,达到了利润固定的状态,这种状态可能是一种短暂的平衡或者是一种长久的平衡状态。
静态分析简介
早点变成刘强东就好
08-16 6935
一:程序静态分析简介(Program Static Analysis): 程序静态分析简介(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。目前静态分析技术向模拟执行的技术发展以能够发现更多传统意义上动态测试才能发现的缺...
温故知新:静态分析
我相信......
11-07 886
代码在计算机上运行,但用途并不限于此,同样是用来阅读和理解的。不易理解的代码不能轻易地维护或改进,代码库的复杂性与其缺陷率之间存在着相关性。理解大型的代码库是困难的,因此需要各种工具和技术...
apkanalysis:APK 的静态动态分析
06-17
静态分析模块主要基于Androguard 1.9,需要很多环境配置,所以不包括在内。
静态时序分析
01-07
T1:时钟延迟(已知) T_cycle:时钟周期(已知) △T=T3-T2(已知)时钟偏斜 ...器件决定建立时间和保持时间门限。 T1=3ns,T2=2.5ns,T3=1.5ns T=2ns Tcycle=8ns,Tsetup = 0.5ns,Thold =0.5ns Tsslack=T
Android 静态分析
05-10
Android 静态分析 还可以参考http://blog.csdn.net/lpohvbe/article/details/7981386 注:invoke-static:调用静态方法,invoke-direct:调用私有或者构造函数,invoke-virtual:调用public或者protected方法
Java反序列化漏洞静态分析与动态验证研究与实现
04-10
随着互联网应用的兴起, Java的类库越来越多, 导致反序列化漏洞的类型和数量都急剧上升。... 文章基于污点分析提出 种静态检测和动态验证的方法, 实现调用链检测工具TaintGadget。 本文的主要研究内容如下:
静态时序分析_fpga_静态时序分析_
09-29
fpga 静态时序分析 是电子工程中,对数字电路的时序进行计算、预计的工作流程,该流程不需要通过输入激励的方式进行仿真。
LINUX基础培训三十一之实操题模拟测试试卷
最新发布
有莘不破的博客
04-27 184
自制的LINUX基础实操模拟参考试卷一张
k8s部署maven项目
Web+
04-27 429
今天在执行kubectl get nodes的时候报的证书验证问题,看了一圈首次搭建k8s的都是高频出现的问题。加上也确实会提示这个其实就是.kube目录下的config文件有问题,里面有集群的certificate-authority-data和客户端的证书数据client-certificate-data,退出服务,删掉config文件再重启hosts文件添加到此k8s环境算是连通这是我之前搞的一个maven项目,在本地打包后手工推到阿里云ARC的镜像。
什么是DevOps
youngpa的博客
04-27 254
维基百科定义 DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。DecOps可以实现:快速迭代的增量开发、持续的自动化测试、持续集成、频繁部署、持续的质量和性能监控、快速的反馈和改进机制。DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。随着项目体量、业务规模越来越大,制作团队的人员肯定也需要增多。
DevOps入门到精通】导读:探索软件开发与运维的协同之道
Coder加油站的专栏
04-27 481
DevOps是一种文化和专业实践,旨在促进开发(Dev)和运维(Ops)团队的协作,通过自动化和监控整个软件构建、测试、发布到部署过程中的各个阶段。这种方法不仅提高了软件开发和发布的速度,还显著提升了工作效率和产品质量。定义与重要性:DevOps是一种文化和专业实践,旨在促进开发(Dev)与运营(Ops)的协作互动,通过自动化软件交付过程,改善和加速开发与部署的过程。基本原则:版本控制、持续集成(CI)、自动化测试、持续交付(CD)、快速反馈。
matlab动态分析音频
11-13
MATLAB是一款功能强大的计算机软件,它具备许多分析和处理音频的工具。对于音频的动态分析,MATLAB提供了许多有用的函数和方法。 首先,我们可以使用MATLAB的音频录制工具来采集音频信号。使用MATLAB的声音录制函数,我们可以通过麦克风或其他音频输入设备录制音频数据,并将其保存为音频文件。 接下来,我们可以使用MATLAB的音频读取工具加载音频文件,并将其转换为数字信号。使用MATLAB的音频读取函数,我们可以读取音频文件的数据,并将其存储为MATLAB可处理的数字信号。 一旦我们将音频数据加载到MATLAB中,我们可以使用MATLAB的信号处理工具对其进行动态分析。MATLAB提供了许多处理音频信号的函数,如时域分析、频域分析和频谱分析。 在时域分析中,我们可以使用MATLAB的时域分析函数对音频信号进行时间序列分析。我们可以观察音频信号的振幅变化,了解声音的强度和变化趋势。 在频域分析中,我们可以使用MATLAB的傅里叶变换函数将音频信号转换为频域表示。通过傅里叶变换,我们可以观察音频信号的频率分量,了解声音的频率特征。 在频谱分析中,我们可以使用MATLAB的频谱分析函数对音频信号进行频谱分析。通过频谱分析,我们可以观察声音的频谱图,了解音频信号的频率分布情况。 总之,MATLAB提供了丰富的工具和函数,可以用于动态分析音频。通过使用MATLAB的音频录制、读取和处理工具,我们可以对音频信号进行时域分析、频域分析和频谱分析,以深入了解声音的特性和变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Parasoft C++test 快速安装指南 11464
  • Parasoft如何满足DISA STIG标准 9248
  • Parasoft的自动化测试平台到底强在哪? 8464
  • 你真的了解DISA STIG吗? 7863
  • 如何为C++test产品添加绑定License(2024.1更新) 4802

分类专栏

  • casestudy 1篇
  • 软件测试 31篇
  • 自动化 15篇
  • 安全标准 8篇
  • 嵌入式 3篇

最新评论

  • Parasoft C++test 快速安装指南

    梦游异世间: 请问linux下的parasoft C/C++ test如何设置中文显示呀

  • Parasoft C++test 快速安装指南

    Parasoft中国: hello 您可以在我们官网上填写一下联系方式,会有同事和您联系的

  • Parasoft C++test 快速安装指南

    Top_DayUp: 能给一份linux安装包吗

  • Parasoft C++test 快速安装指南

    Parasoft中国: 您好,可以在Parasoft官网上填写一下您的需求哈

  • Parasoft C++test 快速安装指南

    Parasoft中国: 您好,可以在https://www.parasoftchina.cn/contact/填一下您的需求哦

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 中国航天日特辑 | PARASOFT——从NASA JPL到航空航天的星辰大海
  • Parasoft 为「台湾联发科技」提供完整半导体解决方案
  • MISRA C++ 2023指南:您需要了解的一切
2024年6篇
2023年23篇
2022年27篇
2013年6篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司平顶山网站推广多少钱吴忠百度竞价包年推广多少钱邢台网站设计多少钱福州网站制作设计多少钱益阳百姓网标王推广公司张家界企业网站设计公司陇南百搜标王报价和田网页设计哪家好日照网站优化按天收费报价潮州企业网站制作哪家好安顺营销网站多少钱衢州网站推广工具哪家好泰州企业网站改版价格云浮英文网站建设报价许昌网站优化按天扣费报价德阳企业网站制作菏泽百度网站优化排名报价枣庄设计网站推荐漳州网站定制报价松原网站推广系统公司大浪网络营销公司临沧网站搜索优化黔东南企业网站建设哈密企业网站建设哪家好黑河网页设计推荐南山网页设计报价和县网站推广方案报价坪山品牌网站设计推荐湘潭网站改版报价固原企业网站改版哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化