基于Eclipse CDT的程序修改与信息提取技术

  • 格式:pdf
  • 大小:91.34 KB
  • 文档页数:1
表 达 式 、 多 目表 达 式 等 。
S T ) 信息 。 本文采用 E c l i l : l S C C D T开源包 ,
待 测程序 AS T的获取 ,并结合 此结 构完 f 盖策 略实现的部分工作 。
当 AS T访 问完 成,通 过邻接 矩阵 即可完 成路 径总数计算 。
入 “ { ”,然后写入 i f 语句,最后写入 “ 1 ”,
首 先 ,对于 一组 顺序 执 行语 句来 说,可 以将其看作 一个节 点。对于条件语句来说 ,情 况较 为复杂,往往需要考虑条件 的类型 ,具体 我们 需要建 立三个 节点,节点 1为 “ a<b ”, 当取真时 ,则进入 i f 语句块 内执行 ,否则执行 节 点 2“ b<C ”,对 于节 点 2 ,当取 真时,执 行节 点 3“ C>1 ”,否则 ,会直接 执行整个 i f
键词 】白盒测试 插桩 E c l i p s e C D T抽 象
条件表达 式为假之后的语句 。另外 ,跳转语句
隐 藏段 的作 用主 要是 用来 记录 程序 的执 行路径 ,以便 于进行覆盖分析 、路径分析乃至 之后 不应该与其他 节点有边相连。 3 . 2 . 2节 点之 间的边 根 据 节点 类 型,边 的关 系有 ,顺序 节 点 与条件 节点相连,条件节点与顺序节 点相连 , 条件 节点中不同类型的子表达式节点相连 ,其
几种覆盖策 略所需条件的算法实现 。同时 ,除
了本 文 中 C DT适 用 于 C / C + + ,基 于 E c l i p s e的
种方式,这种方式特 点是,语法识别准确 ,
AS T提取工具还可 以支持 J a v a 、J a v a s c r i p t 等, 它们 都可 以同 C DT集 成,对于 完成更 加强大 通用 的应用 ,提供广泛 的支持。
S o f t wa r e A p p l i c a t i o n・ 软件应 用
基于 E c l i p s e CD T的程序修改与信息提取技术
文/ 顾卫华 丁晓 明 费立 国 蒋和超
对 于 一条 路径 ,需要 考虑 两 个元 素, 一 是节 点,二是 节点之 间的边 。
他 节 点 与跳 转 节 点相 连等 。
树 程序 修改 信息提取
测试用例生成等工作 ,列如 只有 i f 语句而缺少
目前 常用 来进 行信 息 提取 修改 的工 具 主 Gc c 、J a v a C C等 ,虽 然 可 以达 到 目的, 论 实 现 的复杂 度还 是 可操 作性 都面 临较 j 挑 战,而 E c l i l : I s e C DT开源工 具提供 了有 ) 支 持,基于其强大 的方法 库以及清晰简洁
的源代码信 息比较 准确 ,编写静态信 息输
} 口也有利于实现交 互,但 是 由于语言描述 复杂,实现难度 比较大 。
覆 盖 率: 至 垫 堑二 ! 墼
总 的i t e m数 具 体到 不 同 的策 略,i t e m 可 以是 可 执行 语句 、条件 语 句、 分支 语句 和 路径 等 。利用 AS T节 点类型 , 实现这些信息 的统计非常方便 。
3 . 1 统 计 信 息
可 以集 中在 覆盖算法设计实现上 ,本文提 出了
3 . 2 . 1 节 点
பைடு நூலகம்
判 断 C AS T I f S t a t e me n t 节 点 下 是 否 存 在 CAS T C o mp o u n d S t a t e me n t 节 点判断该 i f 语 句 是否有语句块标记 ,如果没有的话 ,在将 i f 语 句的对应 的 t o k e n写入新文 件之前 ,应 该先写
而对应 CAS T S wi t c h S t a t e me n t 语句 以及 循环语 等有相似的操作 。这样 ,通 过去除注释 以及添 加花括号,我们得到标准 的程序结构,为后续 插桩点确定 、路径统计等做准备 。
2 . 2 隐 藏 段 的 添 加
句 C AS T F o r S t a t e me n t ,CAS T Wh i l e S t a t e me n t 来说 , 例 如表 达式 “ i f ( a<b【 l b <C&&C>1 ) ”,
构 , 我 们 可 以方 便 地 使 用 程 序 抽 象 语 法 树
与之 搭配 的 e l s e语句 ,就需要 在遍 历 AS T的
过 程 中 自动 添 加 e l s e隐 藏 段 。
2 . 3 探 针 函数 的插 桩
在遍历 AS T过 程 中,我们通 过节 点名来 判断节 点类 型,并 以此来 建立节点与节点之间
的边 的关 系 , 可 以选 邻 接 矩 阵 来 进 行 存 储 表 示 。
在对 AS T访 问的过程 中,读取 之前 信息
提取时确定 的插装 点信 息,将探针库的头文件 “ p r o b e . h ”以及相应 的探针 函数 调用使用文件
流 写到文件中 。 为了不影响源 程序的逻辑完整 , 插 入探针函数时可 以采用特殊结 构,例如逗号
4 总 结
软 件 白 盒 测 试 中 , 程 序 信 息 的修 改 与 获
呈 序 修改与信息提取工具 3基 于E c I i p s e C D T 的程序信息提取
对 源 程序 进行 修 改及 信息 提取 主要 有 以 种 方式: ( 1 )直接 编写针 对源程 序语 言的词法 、 分析器 ,对源程序 进行分析 ,得到源程 序 i 息,并在修改后重建 。
( 2 )利 用 开 源 工 具 实 现 。 常 用 工 具 属 于

取 是 关键 点, 常规 工 具如 Gc c 、J a v a CC等面 临复 杂度 高,操 作不 方便 的 问题 ,而 E c l i p s e C DT提供 了强大 的分析功 能。在此基础之上 ,
软件测试覆盖率计算公式为 :