掌桥专利:专业的专利平台
掌桥专利
首页

白盒测试覆盖信息提取方法、系统、设备及介质

文献发布时间:2024-04-18 19:58:26


白盒测试覆盖信息提取方法、系统、设备及介质

技术领域

本申请涉及软件测试领域,尤其涉及一种白盒测试覆盖信息提取方法、系统、设备及介质。

背景技术

白盒测试也称为逻辑驱动测试,是围绕被测单元内部如何进行工作而开展的测试。在白盒测试过程中,动态测试需测试者提前观察代码实现,然后根据程序的控制结构设计测试用例,运行被测程序,最后分析问题。测试用例对代码的覆盖情况是白盒测试的重要过程数据。测试覆盖信息既能体现测试的充分性,也是测试人员分析问题的重要依据。因此,对于测试覆盖信息的提取和保存是白盒测试的关键。

目前存在一些商业化的测试工具能够直观显示测试用例对代码的覆盖情况。但是,这些商业化的测试工具大多价格昂贵,使用成本较大。同时,上述测试工具的测试覆盖信息通常以工程脚本的形式保存,不便于在测试环境之外查看,效率较低,直观性较差,不利于测试人员在短时间内完成白盒测试。

发明内容

为了解决上述技术缺陷之一,本申请实施例中提供了一种白盒测试覆盖信息提取方法、系统、设备及介质。

根据本申请实施例的第一个方面,提供了一种白盒测试覆盖信息提取方法,所述方法包括:

在待测程序中插入探针;

编译运行所述插入探针的待测程序,生成运行覆盖记录;

根据所述运行覆盖记录向临时文件中写入覆盖信息;

解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制SVG控制流图,通过所述SVG控制流图表征所述白盒测试覆盖信息。

根据本申请实施例的第二个方面,提供了一种白盒测试覆盖信息提取系统,所述系统包括:

探针插入单元,用于在待测程序中插入探针;

编译运行单元,用于编译运行所述插入探针的待测程序,生成运行覆盖记录;

信息写入单元,用于根据所述运行覆盖记录向临时文件中写入覆盖信息;

绘制单元,用于解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制SVG控制流图,通过所述SVG控制流图表征所述白盒测试覆盖信息。

根据本申请实施例的第三个方面,提供了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述的白盒测试覆盖信息提取方法。

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

采用本申请实施例中提供的白盒测试覆盖信息提取方法,通过向待测程序中插入探针,编译运行插入探针的待测程序获得覆盖信息并写入临时文件,再通过对临时文件进行解析获得覆盖信息,最后通过SVG绘制矢量图将白盒测试覆盖信息表征出来。本申请通过SVG数据保存方式,能够使用Web浏览器、图片查看器或记事本等多种常用工具查看白盒测试覆盖信息,增加测试灵活性、降低工具使用成本、规范过程数据管理、辅助测试人员快速定位程序缺陷。

附图说明

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

图1为本申请实施例1所述的一种白盒测试覆盖信息提取方法的流程图;

图2为本申请实施例1所述的临时文件的结构示意图;

图3为采用本申请实施例1所述的白盒测试覆盖信息提取方法生成的SVG控制流图;

图4为本申请实施例2所述的白盒测试覆盖信息提取系统的原理示意图。

具体实施方式

为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

实施例1

如图1,本实施例提出了一种白盒测试覆盖信息提取方法,该方法包括:

S101、在待测程序中插入探针。

具体的,软件探针是一种预定义的代码片段或函数,可用来标记程序运行过程中的关键信息。本实施例则是根据上述软件探针的特点,在待测程序中插入探针,从而可以标记被测程序在运行过程中的关键节点。

本实施例在待测程序中插入探针的过程采用的策略为分支覆盖。首先,本实施例在待测程序的条件语句前插入决策节点探针。决策节点是软件控制流模型中的元素之一,用以标记程序执行过程中信息分流的位置。然后,在被测程序的各分支中插入分支探针,以标记各个分支的位置。最后在所有分支结束的位置插入汇入节点探针。汇入节点是软件控制流模型中的元素之一,用以标记程序执行过程中信息合流的位置。由此,本实施例在待测程序中完成探针插入过程,这一过程相当于在一个树的树干、树枝和树梢中均作出了标记,从而使整个待测程序的运行过程完整的串联起来。

对于较为复杂的待测程序,每个分支内部还可能存在有子分支。对于这种情况,我们可以将分支和子分支单独提取出来作为独立的待测程序来看待。即,首先在待测程序的分支中的次级条件语句前插入子决策节点探针,其目的同样是标记程序执行过程中信息分流的位置,只不过与上述决策节点探针所标记的位置有所不同而已。然后在子分支中插入子分支探针,以标记该子分支位置。如果子分支内部仍含有子子分支,则继续上述插入决策节点探针和分支探针的过程,直至遍历所有分支,以此使待测程序中所有重要节点以及分支均被标记,保证待测程序在运行过程中逻辑的完整性。

下文所示的为一段插入探针的代码程序:

通过插入探针的方式在上述段程序中标注关键信息,标记对象是条件语句或其他代码片段,标记目的即为识别出程序控制流模型中的决策节点和覆盖分支。

S102、编译运行所述插入探针的待测程序,生成运行覆盖记录。

具体的,本实施例在S101中对待测程序插入探针后,将该插入探针的待测程序打包成桩代码。该桩代码指用来代替真实代码的临时代码,其可以满足待测程序中源代码的平台兼容性,能够更为快速的被编译运行,提高待测程序的运行效率。

将打包成桩代码的待测程序进行编译运行后,根据S101中待测程序中插入探针的位置可生成软件控制流节点标记规则,然后根据该节点标记规则可生成待测程序的运行覆盖记录。

S103、根据所述运行覆盖记录向临时文件中写入覆盖信息。

具体的,在S102编译运行插入探针的待测程序,并生成运行覆盖记录后,根据该运行覆盖记录向临时文件中写入运行覆盖信息,其中,用于记录运行覆盖信息的数据封装格式可以为如下形式:

图2为本实施例提供的一种写入运行覆盖信息的临时文件,该临时文件结合上述数据封装格式,每个信息节点长度133字节,其中节点标识5字节,决策信息128字节,每个节点可由节点深度+节点序号唯一标识。在节点深度相同的情况下,可根据节点序号判断节点位置,节点序号越小,则表示所对应的节点越靠近控制流的上游,以此来保证节点标识的唯一性和准确性。

S104、解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制SVG控制流图,通过所述SVG控制流图表征所述白盒测试覆盖信息。

具体的,可缩放矢量图形(Scalable Vector Graphics,SVG)基于XML标记语言,是一种通用的数据保存格式,可使用Web浏览器、图片查看器、记事本等工具查看,具有较强的便利性和直观性。本实施例在获得写入覆盖信息的临时文件后,首先对该临时文件进行解析,以提取临时文件中的覆盖信息。该解析过程可采用常规手段执行,本实施例不做特殊说明和限定。然后将提取的覆盖信息进行描点,使得覆盖信息被解析成多条覆盖路径。多条覆盖路径将会以队列的形式保存起来,保存介质可以为内存或其他存储介质,本实施例不做特殊限定。

在获取覆盖信息所对应的多条覆盖路径后,依照队列的排列形式,以队首的覆盖路径为起点依次对所有覆盖路径进行读取,以获取每条覆盖路径所对应的坐标、属性和决策信息文字等关键信息。由于本实施例采用SVG的形式表征覆盖信息,SVG主要是通过图形的方式对程序的运行过程进行表征。因此,本实施例在获取覆盖路径之前,需要使用XML标记语言预先定义绘图元素的表现形式,例如形状、样式、颜色等等。形状进一步可设定为矩形、圆形、梯形等,样式进一步可设定为线段、曲线、虚线等,颜色进一步可设定为黑色、绿色、灰色等,本实施例只是简单举例说明,不做过多限定。

在获得每条覆盖路径所对应的坐标、属性和决策信息文字等关键信息后,只需将上述关键信息与预先定义的绘图颜色的表现形式进行匹配后,即可绘制处每条覆盖路径所对应的SVG控制流图,进而可通过该SVG控制流图直观查看白盒测试覆盖信息。所绘制的SVG控制流图可使用Web浏览器、图片查看器、记事本等工具查看,具有较强的便利性和直观性。

在每一条覆盖路径绘制完成后,将已绘制完成的覆盖路径存储在绘制完成队列中。当一条覆盖路径绘制完成并开始绘制下一条覆盖路径之前,首先扫描绘制完成的队列中是否存在下一条覆盖路径,如果已经存在,那么跳过该条覆盖路径,对下下一条覆盖路径进行操作;如果不存在绘制完成的队列中,则对该条覆盖路径进行绘制,直至所有覆盖路径绘制完成。这样,不仅能够实现覆盖路径的全面绘制,也提高了绘制效率。

最后,如果某个决策节点下的分支均为覆盖,那么将该决策节点认定为未覆盖分支,使用区别于已覆盖的决策节点的表现形式进行标记。

如图3所示的SVG控制流图,该SVG控制流图即为S101中所插入探针的待测程序采用图2所示的写入覆盖信息的临时文件所绘制出来的。该SVG控制流图中,决策节点采用矩形标识,汇合点和分支由点和线段标识,被覆盖的决策点填充灰色,并在下方注明决策信息。未覆盖的决策点采用无填充虚线边框标识,同样被覆盖的分支采用线段标识,反之使用虚线。通过该SVG控制流图可清晰直观的查看待测程序的运行过程。当然,本实施例由于附图要求无法添加彩色,实际应用中,可通过不同颜色对不同节点状态进行区分,效果更加直观和明显。

本实施例通过向待测程序中插入探针,编译运行插入探针的待测程序获得覆盖信息并写入临时文件,再通过对临时文件进行解析获得覆盖信息,最后通过SVG绘制矢量图将白盒测试覆盖信息表征出来。通过SVG数据保存方式,能够使用Web浏览器、图片查看器或记事本等多种常用工具查看白盒测试覆盖信息,增加测试灵活性、降低工具使用成本、规范过程数据管理、辅助测试人员快速定位程序缺陷。

实施例2

对应实施例1,本实施例提出一种白盒测试覆盖信息提取系统,如图4所示,所述系统包括:

探针插入单元,用于在待测程序中插入探针;

编译运行单元,用于编译运行所述插入探针的待测程序,生成运行覆盖记录;

信息写入单元,用于根据所述运行覆盖记录向临时文件中写入覆盖信息;

绘制单元,用于解析所述临时文件获得覆盖信息,并根据所述解析获得的覆盖信息绘制SVG控制流图,通过所述SVG控制流图表征所述白盒测试覆盖信息。

由于白盒测试覆盖信息提取系统的实施例与白盒测试覆盖信息提取方法部分的实施例相互对应,因此白盒测试覆盖信息提取系统的实施例请参见白盒测试覆盖信息提取方法部分的实施例的描述,这里不再赘述。

实施例3

本实施例提出一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述的白盒测试覆盖信息提取方法。

由于电子设备部分的实施例与白盒测试覆盖信息提取方法部分的实施例相互对应,因此电子设备部分的实施例请参见白盒测试覆盖信息提取方法部分的实施例的描述,这里不再赘述。

实施例4

本实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的白盒测试覆盖信息提取方法。

由于计算机可读存储介质部分的实施例与白盒测试覆盖信息提取方法部分的实施例相互对应,因此存储介质部分的实施例请参见白盒测试覆盖信息提取方法的实施例的描述,这里不再赘述。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接或可以互相通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 实现白盒OTN硬件设备的方法及装置、存储介质
  • 文本信息提取方法、装置、介质及电子设备
  • 身份信息提取方法、装置、电子设备与存储介质
  • 票据信息提取方法、装置、计算机设备及存储介质
  • 一种信息提取方法、信息提取系统、电子设备及存储介质
  • 用于获取测试覆盖率的方法、装置、系统、电子设备和介质
技术分类

06120116491180