白盒测试覆盖信息提取方法技术

技术编号:39656428 阅读:4 留言:0更新日期:2023-12-09 11:25
本申请实施例提供一种白盒测试覆盖信息提取方法

【技术实现步骤摘要】
白盒测试覆盖信息提取方法、系统、设备及介质


[0001]本申请涉及软件测试领域,尤其涉及一种白盒测试覆盖信息提取方法

系统

设备及介质


技术介绍

[0002]白盒测试也称为逻辑驱动测试,是围绕被测单元内部如何进行工作而开展的测试

在白盒测试过程中,动态测试需测试者提前观察代码实现,然后根据程序的控制结构设计测试用例,运行被测程序,最后分析问题

测试用例对代码的覆盖情况是白盒测试的重要过程数据

测试覆盖信息既能体现测试的充分性,也是测试人员分析问题的重要依据

因此,对于测试覆盖信息的提取和保存是白盒测试的关键

[0003]目前存在一些商业化的测试工具能够直观显示测试用例对代码的覆盖情况

但是,这些商业化的测试工具大多价格昂贵,使用成本较大

同时,上述测试工具的测试覆盖信息通常以工程脚本的形式保存,不便于在测试环境之外查看,效率较低,直观性较差,不利于测试人员在短时间内完成白盒测试


技术实现思路

[0004]为了解决上述技术缺陷之一,本申请实施例中提供了一种白盒测试覆盖信息提取方法

系统

设备及介质

[0005]根据本申请实施例的第一个方面,提供了一种白盒测试覆盖信息提取方法,所述方法包括:
[0006]在待测程序中插入探针;
[0007]编译运行所述插入探针的待测程序,生成运行覆盖记录;
[0008]根据所述运行覆盖记录向临时文件中写入覆盖信息;
[0009]解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制
SVG
控制流图,通过所述
SVG
控制流图表征所述白盒测试覆盖信息

[0010]根据本申请实施例的第二个方面,提供了一种白盒测试覆盖信息提取系统,所述系统包括:
[0011]探针插入单元,用于在待测程序中插入探针;
[0012]编译运行单元,用于编译运行所述插入探针的待测程序,生成运行覆盖记录;
[0013]信息写入单元,用于根据所述运行覆盖记录向临时文件中写入覆盖信息;
[0014]绘制单元,用于解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制
SVG
控制流图,通过所述
SVG
控制流图表征所述白盒测试覆盖信息

[0015]根据本申请实施例的第三个方面,提供了一种电子设备,包括:
[0016]存储器,用于存储计算机程序;
[0017]处理器,用于执行所述计算机程序时实现如上所述的白盒测试覆盖信息提取方法

[0018]根据本申请实施例的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的白盒测试覆盖信息提取方法

[0019]采用本申请实施例中提供的白盒测试覆盖信息提取方法,通过向待测程序中插入探针,编译运行插入探针的待测程序获得覆盖信息并写入临时文件,再通过对临时文件进行解析获得覆盖信息,最后通过
SVG
绘制矢量图将白盒测试覆盖信息表征出来

本申请通过
SVG
数据保存方式,能够使用
Web
浏览器

图片查看器或记事本等多种常用工具查看白盒测试覆盖信息,增加测试灵活性

降低工具使用成本

规范过程数据管理

辅助测试人员快速定位程序缺陷

附图说明
[0020]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定

在附图中:
[0021]图1为本申请实施例1所述的一种白盒测试覆盖信息提取方法的流程图;
[0022]图2为本申请实施例1所述的临时文件的结构示意图;
[0023]图3为采用本申请实施例1所述的白盒测试覆盖信息提取方法生成的
SVG
控制流图;
[0024]图4为本申请实施例2所述的白盒测试覆盖信息提取系统的原理示意图

具体实施方式
[0025]为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合

[0026]实施例1[0027]如图1,本实施例提出了一种白盒测试覆盖信息提取方法,该方法包括:
[0028]S101、
在待测程序中插入探针

[0029]具体的,软件探针是一种预定义的代码片段或函数,可用来标记程序运行过程中的关键信息

本实施例则是根据上述软件探针的特点,在待测程序中插入探针,从而可以标记被测程序在运行过程中的关键节点

[0030]本实施例在待测程序中插入探针的过程采用的策略为分支覆盖

首先,本实施例在待测程序的条件语句前插入决策节点探针

决策节点是软件控制流模型中的元素之一,用以标记程序执行过程中信息分流的位置

然后,在被测程序的各分支中插入分支探针,以标记各个分支的位置

最后在所有分支结束的位置插入汇入节点探针

汇入节点是软件控制流模型中的元素之一,用以标记程序执行过程中信息合流的位置

由此,本实施例在待测程序中完成探针插入过程,这一过程相当于在一个树的树干

树枝和树梢中均作出了标记,从而使整个待测程序的运行过程完整的串联起来

[0031]对于较为复杂的待测程序,每个分支内部还可能存在有子分支

对于这种情况,我们可以将分支和子分支单独提取出来作为独立的待测程序来看待

即,首先在待测程序的
分支中的次级条件语句前插入子决策节点探针,其目的同样是标记程序执行过程中信息分流的位置,只不过与上述决策节点探针所标记的位置有所不同而已

然后在子分支中插入子分支探针,以标记该子分支位置

如果子分支内部仍含有子子分支,则继续上述插入决策节点探针和分支探针的过程,直至遍历所有分支,以此使待测程序中所有重要节点以及分支均被标记,保证待测程序在运行过程中逻辑的完整性

[0032]下文所示的为一段插入探针的代本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种白盒测试覆盖信息提取方法,其特征在于,所述方法包括:在待测程序中插入探针;编译运行所述插入探针的待测程序,生成运行覆盖记录;根据所述运行覆盖记录向临时文件中写入覆盖信息;解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制
SVG
控制流图,通过所述
SVG
控制流图表征所述白盒测试覆盖信息
。2.
根据权利要求1所述的方法,其特征在于,所述在待测程序中插入探针的过程包括:在待测程序的条件语句前插入决策节点探针;在待测程序的各分支中插入分支探针;在待测程序的每个分支结束的位置插入汇入节点探针
。3.
根据权利要求2所述的方法,其特征在于,所述在待测程序中插入探针的过程还包括:当任意分支内部包含子分支时,在所述待测程序的次级条件语句前插入子决策节点探针;在子分支中插入子分支探针,直至遍历所有分支
。4.
根据权利要求1所述的方法,其特征在于,所述编译运行所述插入探针的待测程序,生成运行覆盖记录的过程包括:将所述插入探针的待测程序打包成桩代码编译运行;编译运行结束后,根据待测程序中插入探针的位置生成软件控制流节点标记规则;根据所述软件控制流节点标记规则生成运行覆盖记录
。5.
根据权利要求2或3所述的方法,其特征在于,所述临时文件中包含有节点标识和决策信息,所述节点标识包括节点深度和节点序号,所述节点深度相同时,根据所述节点序号判断节点位置
。6.
根据权利要求1所述的方法,其特征在于,所述根据所述解析获得的覆盖信息绘制
SVG
控制流图的过程包括:通过
XML
标记语言预先设定控制流图中各元素的表现形式;根据所述解析获得覆盖信息进行描点,生成所述覆盖信息所对...

【专利技术属性】
技术研发人员:刘峻霄唐逢光尹显峰
申请(专利权)人:成都交控轨道科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1