zoukankan      html  css  js  c++  java
  • C/C++软件静态测试现状

    对于C/C++软件而言,静态测试越来越趋向软件安全功能测试。包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等。

    通常情况下,C/C++静态测试是把程序源代码变换成易于分析处理的程序模型。有4个分析模型:

    ● 词法分析:使用正则表达式匹配将源代码转换为等价的符号流。

    ● 语法分析:使用上下文无关语法将符号流规整为语法树,作为源代码逻辑结构的最直接的表现。

    ● 抽象语法分析:通过简化语法将语法树转换为包含更少节点和分支的抽象语法树,以方便后续处理。

    ● 语义分析:从抽象语法树建立符号表,为每个标识符关联类型信息。至此,已经具备了足够的信息来进行所谓的结构化分析。编译器通常将抽象语法树和符号表 转化 成易于优化的中间形式,然后送给后端生成平台相关的目标代码。安全分析工具可以建立更高阶的中间形式,或者直接在抽象语法树和符号表上进行后续步 骤。

    在分析模型建立后,就可以开始进行静态测试。静态测试直接分析被测程序特征,寻找可能导致错误的异常。

    C/C++静态测试技术目前的发展趋势是将静态测试的各种技术进行结合,以提高性能。结合方式有以下方法:

    ● 提供一个框架,使用不同检测技术对程序进行检测,获取大量检测结果之后进行分析。从误报率来说,使用多种技术的检测结果的交集来进行漏洞判断决策,可减少误报率。从漏报率来说,对于同一种漏洞,使用多种检测技术的结果的并集可以减少漏报率。

    ● 直接在检测技术上结合,通过技术的结合来得到新的方法,如在符号执行的过程中加入类型推导的技术,在变量模拟执行的过程中增加其类型特征的推导,可获取更高的漏洞检测率。

    下载C/C++静态测试领导者:Parasoft C/C++test

  • 相关阅读:
    携程的 Dubbo 之路
    应用上云新模式,Aliware 全家桶亮相杭州云栖大会
    重构:改善饿了么交易系统的设计思路
    Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令
    如何检测 Web 服务请求丢失问题
    VPGAME的Kubernetes迁移实践
    Flink SQL 系列 | 5 个 TableEnvironment 我该用哪个?
    如何构建批流一体数据融合平台的一致性语义保证?
    Flink on YARN(下):常见问题与排查思路
    愚蠢的操作
  • 原文地址:https://www.cnblogs.com/xinyu9/p/3345957.html
Copyright © 2011-2022 走看看