51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1817|回复: 0
打印 上一主题 下一主题

[原创] C/C++软件静态测试现状

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-8 14:51:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    对于C/C++软件而言,静态测试越来越趋向软件安全功能测试。包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等。

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

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

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

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

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


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

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

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

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



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 07:58 , Processed in 0.063976 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表