程序执行序列的获取方法及装置制造方法及图纸

技术编号:9967459 阅读:161 留言:0更新日期:2014-04-25 07:47
本发明专利技术提出一种程序执行序列的获取方法及装置,其中,程序执行序列的获取方法包括:在编译阶段为被测程序选择插桩节点植入探针,在探针中写入保存函数、收集序列函数和还原函数;当被测程序根据当前测试用例执行分支时,输出对应的基本块信息;以及根据所述基本块信息得到基本块图级别的执行序列,根据执行序列与对应的基本块图生成包含行号信息的执行序列信息。本发明专利技术实施例,通过插桩模块在探针中写入保存函数和还原函数,可以在不修改程序源代码的情况下,实现目标代码的插桩,通过执行测试用例后可以获得程序的多个执行序列,进而可以帮助测试人员实现软件工程任务,比如错误定位等。

【技术实现步骤摘要】
【专利摘要】本专利技术提出一种程序执行序列的获取方法及装置,其中,程序执行序列的获取方法包括:在编译阶段为被测程序选择插桩节点植入探针,在探针中写入保存函数、收集序列函数和还原函数;当被测程序根据当前测试用例执行分支时,输出对应的基本块信息;以及根据所述基本块信息得到基本块图级别的执行序列,根据执行序列与对应的基本块图生成包含行号信息的执行序列信息。本专利技术实施例,通过插桩模块在探针中写入保存函数和还原函数,可以在不修改程序源代码的情况下,实现目标代码的插桩,通过执行测试用例后可以获得程序的多个执行序列,进而可以帮助测试人员实现软件工程任务,比如错误定位等。【专利说明】程序执行序列的获取方法及装置
本专利技术涉及计算机
,尤其涉及一种程序执行序列的获取方法及装置。
技术介绍
程序测试是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。目前采用的测试方法包括白盒测试和黑盒测试等。其中,白盒测试也被称作结构测试或者逻辑驱动测试,它主要测试程序内部的结构。测试人员根据程序的内部逻辑结构信息,设计测试用例并测试程序的逻辑路径,验证执行结果。与白盒测试相对的是黑盒测试,黑盒测试又称为功能测试。黑盒测试不考虑软件内部结构和内部特性,而只关注接口输入输出的正确性。覆盖技术是白盒测试中常用的技术之一,逻辑覆盖是一种标准,表示测试用例在程序执行时对程序逻辑的覆盖程度。代码覆盖主要关注程序运行时内部逻辑的覆盖程度,按照粒度的不同可以分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖等。覆盖测试可以通过检测是否对程序的关键路径都已经覆盖完全来检查测试用例设计的合理性。程序插桩是覆盖测试所依赖的关键技术。插桩技术在不影响程序逻辑特性的前提下,使得运行时覆盖信息的收集成为可能。按照插桩时机的不同,程序插桩技术主要分为两种:(1)源代码插桩:源代码插桩就是直接对程序源文件进行修改,插入相应的桩代码。源代码插桩需要对源代码进行完整的词法分析和语法分析,从而确定插桩的位置。(2)目标代码插桩:相比源代码插桩,目标代码插桩不会影响源代码,但是会影响生成的目标代码。但是,目标代码中通常不具有相应的程序结构。基于程序插桩技术,就可以在覆盖测试中获得各个粒度级别的覆盖信息。在科研工作中通常使用源代码插桩的方式获取执行序列,这样能够获得精确的结果并且易于操作,但在工业应用中,通常不允许修改程序的源代码,因此,在工业应用中不能使用源代码插桩的方式来获取执行序列。
技术实现思路
本专利技术旨在至少解决上述技术问题之一。为此,本专利技术的第一个目的在于提出一种程序执行序列的获取方法。该方法,在不修改程序源代码的情况下,实现了目标代码的插桩,执行测试用例后可以获得程序的执行序列,进而可以帮助测试人员实现软件工程任务,比如错误定位。为了实现上述目的,本专利技术第一方面实施例的程序执行序列的获取方法,包括以下步骤:在编译阶段为被测程序选择插桩节点植入探针,在探针中写入保存函数、收集序列函数和还原函数;当被测程序根据当前测试用例执行分支时,输出对应的基本块信息;以及根据基本块信息得到基本块图级别的执行序列,根据执行序列与对应的基本块图生成包含行号信息的执行序列信息。本专利技术实施例的程序执行序列的获取方法,通过在探针中写入保存函数和还原函数,可以在不修改程序源代码的情况下,实现目标代码的插桩,通过执行测试用例后可以获得程序的多个执行序列,进而可以帮助测试人员实现软件工程任务,比如错误定位。为了实现上述目的,本专利技术第二方面实施例的程序执行序列的获取装置,包括:插桩模块、执行模块以及生成模块。本专利技术实施例的程序执行序列的获取装置,通过插桩模块在探针中写入保存函数和还原函数,可以在不修改程序源代码的情况下,实现目标代码的插桩,通过执行测试用例后可以获得程序的多个执行序列,进而可以帮助测试人员实现软件工程任务,比如错误定位等。本专利技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。【专利附图】【附图说明】本专利技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,图1是根据本专利技术一个实施例的程序执行序列的获取方法的流程图;图2是根据本专利技术另一个实施例的程序执行序列的获取方法的流程图;图3是根据本专利技术一个实施例的基本块图的示意图;图4是根据本专利技术一个实施例的程序执行序列的获取装置的结构示意图;图5是根据本专利技术另一个实施例的程序执行序列的获取装置的结构示意图。【具体实施方式】下面详细描述本专利技术的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。相反,本专利技术的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。在本专利技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本专利技术的描述中,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本专利技术中的具体含义。此外,在本专利技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本专利技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本专利技术的实施例所属
的技术人员所理解。下面参考附图描述本专利技术实施例的程序执行序列的获取方法及装置。图1是根据本专利技术一个实施例的程序执行序列的获取方法的流程图。如图1所示,程序执行序列的获取方法包括以下步骤:S101,在编译阶段为被测程序选择插桩节点植入探针,在探针中写入保存函数、收集序列函数和还原函数。其中,保存函数用于在调用收集序列函数之前,将寄存器数据保存到内存中;还原函数用于在调用收集序列函数之后,将保存在内存中的寄存器数据进行还原。在探针中写入保存函数的目的是保存收集序列函数的上下文场景;在探针中写入还原函数的目的是恢复收集序列函数上下文场景;在探针中写入收集序列函数的目的是收集程序执行序列。另外,在为被测程序选择插桩节点植入探针之前,该方法还可以包括:预处理被测程序的源文件,对源文件划分基本块和分支,并绘制基本块图。绘制完基本块图之后,根据基本块图确定需要插桩的分支,然后根据需要插桩的分支确定插桩节点。S102,当被测程序根据当前测试用例执行分支时,输出对应的基本块信息。测试用例是由测试数据和预期结果构成的,在本专利技术实施例中可以采用多个测试用例,这些测试用例包括执行成功的测试用例和执行失败的测试用例。执行不同测试用例可以获得不同的分支信息。当被测程序根据当前测试用例执行分支时,会执行分支中的基本文档来自技高网
...

【技术保护点】
一种程序执行序列的获取方法,其特征在于,包括:在编译阶段为被测程序选择插桩节点植入探针,在所述探针中写入保存函数、收集序列函数和还原函数;当所述被测程序根据当前测试用例执行分支时,输出对应的基本块信息;以及根据所述基本块信息得到基本块图级别的执行序列,根据所述执行序列与对应的基本块图生成包含行号信息的执行序列信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈振宇田亮张旭辉黄明明曾卫汪亚斌周锴高则宝沈毅房春荣
申请(专利权)人:北京百度网讯科技有限公司南京大学
类型:发明
国别省市:

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

1