一种结构测试中的被测程序改造方法及其系统技术方案

技术编号:10959585 阅读:66 留言:0更新日期:2015-01-28 11:49
本发明专利技术涉及一种结构测试中被测程序的改造方法及其系统,所述方法包括:S1、根据被测程序的结构生成抽象语法树和控制流图,并得到所述被测程序的输入/输出函数信息;S2、改造被测程序,并在所述被测程序中分别构造驱动函数、桩函数和探针函数;S3、执行所述被测程序,得到所述探针函数的插桩返回信息,根据所述插桩返回信息和所述控制流图分析所述被测程序的路径覆盖情况。该方法通过改造被测函数单元,构造驱动函数,构造桩函数,构造探针函数,使被测程序可独立执行,大大提高了结构测试的自动化程度。

【技术实现步骤摘要】
一种结构测试中的被测程序改造方法及其系统
本专利技术涉及软件测试
,尤其涉及一种结构测试中的被测程序改造方法及 其系统。
技术介绍
软件测试是发现软件故障,提高软件可靠性的主要手段,是保证软件质量的关键 技术。软件测试方法主要分为白盒测试和黑盒测试,白盒测试又称为面向程序结构覆盖的 测试,简称结构测试,主要用在单元测试中。这种测试方法根据程序的内部逻辑结构进行测 试,测试人员依据程序内部逻辑结构的相关信息,设计测试用例,对程序的逻辑路径进行测 试,来检查程序中每条路径是否都能按预定的要求正确的执行。在面向程序结构覆盖的测 试中,通常使用测试覆盖准则来度量测试的充分性。 面向程序结构覆盖的测试方法能够精确地分析程序的行为,通过检查程序中不同 位置的状态,确定实际的状态是否与预期的状态一致,但是由于被测函数单元通常不能直 接单独执行,被测函数单元的路径多且复杂等原因,为完成一次单元测试,测试人员需要花 费大量的时间构造执行本次测试所需要的驱动函数,桩函数等确保该单元函数能够独立执 行,测试人员还需要人工分析路径的覆盖情况。
技术实现思路
本专利技术提供一种结构测试中的被测程序改造方法及其系统,通过改造被测函数单 元,构造驱动函数,构造桩函数,构造探针函数,使被测程序可独立执行,大大提高了结构测 试的自动化程度。 根据上述目的,本专利技术提供了一种结构测试中被测程序的改造方法,其特征在于, 所述方法包括: S1、根据被测程序的结构生成抽象语法树和控制流图,并得到所述被测程序的输 入/输出函数信息。 S2、改造被测程序,并在所述被测程序中分别构造驱动函数、桩函数和探针函数; S3、执行所述被测程序,得到所述探针函数的插桩返回信息,根据所述插桩返回信 息和所述控制流图分析所述被测程序的路径覆盖情况。 其中,所述步骤S2具体包括: S21、判断所述被测程序是否是主函数,是,则对所述被测程序重命名,然后执行步 骤S22 ;否则直接执行步骤S22 ; S22、对被测函数中的输入/输出函数进行变换,使输入函数中的参数作为所述被 测程序的输入,并将输出函数的输出结果保存; S23、将被测程序中对子函数的调用语句变换成桩函数,并对所述桩函数进行定 义,构造成可运行的桩函数; S24、将被测程序以探针函数进行插桩,并对所述探针函数进行定义,构造成可运 行的探针函数; S25、构造驱动函数。 其中,所述输入/输出函数信息包括:所述被测程序的形参名及其类型,所述被测 程序的返回值类型;输入/输出函数的函数名,输入/输出函数中参数名及其类型。 其中,所述输入/输出函数包括:控制台I/O函数,文件I/O函数,网络I/O函数, 数据库I/O函数。 根据本专利技术的另一个方面,提供一种结构测试中被测程序的改造系统,所述系统 包括: 分析单元,用于根据被测程序的结构生成抽象语法树和控制流图,并得到所述被 测程序的输入/输出函数信息; 改造单元,用于改造被测程序,并在所述被测程序中分别构造驱动函数、桩函数和 探针函数; 执行单元,用于执行所述被测程序,得到所述探针函数的插桩返回信息,根据所述 插桩返回信息和所述控制流图分析所述被测程序的路径覆盖情况。 本专利技术所公开一种结构测试中自动程序改造的方法及其系统,通过改造被测程 序,构造驱动函数、桩函数、探针函数,使被测程序可独立执行,然后分析路径覆盖情况,从 而大大提高了结构测试的自动化程度。 【附图说明】 通过参考附图会更加清楚的理解本专利技术的特征和优点,附图是示意性的而不应理 解为对本专利技术进行任何限制,在附图中: 图1示出了本专利技术的结构测试中被测程序的改造方法的流程图。 图2示出了本专利技术的结构测试中被测程序的改造方法的步骤S2的具体流程图。 图3示出了本专利技术的结构测试中被测程序的改造系统的结构框图。 图4示出了本专利技术的结构测试中被测程序的改造方法的具体实施例的被测程序 的控制流图结构示意图。 【具体实施方式】 下面将结合附图对本专利技术的实施例进行详细描述。 图1示出了本专利技术的结构测试中被测程序的改造方法的流程图。 图2示出了本专利技术的结构测试中被测程序的改造方法的步骤S2的具体流程图。 参照图1,本专利技术的实施例的结构测试中被测程序的改造方法包括: S1、根据被测程序的结构生成抽象语法树和控制流图,得到被测程序的输入/输 出函数信息,输入/输出函数信息包括:被测程序的形参名及其类型,被测程序的返回值类 型;输入/输出函数的函数名,输入/输出函数中参数名及其类型。 S2、改造被测程序,并在所述被测程序中分别构造驱动函数、桩函数和探针函数; S3、执行所述被测程序,得到所述探针函数的插桩返回信息,根据所述插桩返回信 息和所述控制流图分析所述被测程序的路径覆盖情况。 其中,步骤S2具体包括: S21、判断所述被测程序是否是主函数,是,则对所述被测程序重命名,然后执行步 骤S22 ;否则直接执行步骤S22 ; S22、根据对抽象语法树的分析,对被测函数中的输入/输出函数进行变换,使输 入函数中的参数作为所述被测程序的输入,并将输出函数的输出结果保存; 其中,I/O函数包括但不限于以下几种: 控制台I/O函数,包括但不限于在控制台读取字符类型、整型、浮点型等类型的数 据,和在控制台输出字符类型、整型、浮点型等类型的数据。 文件I/O函数,包括但不限于打开、关闭文件,读取文件内容,写文件内容,查看文 件状态等。 网络I/O函数,包括但不限于建立、断开网络连接,接收数据和发送数据,查看网 络连接状等。 数据库I/O函数,包括但不限于建立、断开数据库连接,从数据库读取数据,写数 据到数据库,查看数据库状态等。 S23、将被测程序中对子函数的调用语句以文本的形式变换成桩函数,并对所述桩 函数进行定义,构造成可运行的桩函数; 构造桩函数具体为:定义桩函数形参个数、顺序和类型,返回值类型与被调用子函 数一致,桩函数用来模拟被测函数中调用的接口,在桩函数中可以根据路径的约束改变其 返回值和参数值。 S24、将被测程序以探针函数进行插桩,并对所述探针函数进行定义,构造成可运 行的探针函数。 其中,插装的覆盖准则包括但不限于以下方式:基于语句覆盖的插装,基于分支覆 盖的插装和基于判定/条件覆盖的插装。 探针函数根据覆盖准则的不同分为但不限于以下三种:语句探针函数,分支探针 函数,判定/条件探针函数。 S25、构造驱动函数,驱动函数是一个主函数,根据测试用例生成的结果在驱动函 数中定义要传入被测函数的参数值,在驱动函数中调用被测函数单元,保存被测函数的返 回值。 根据本专利技术的另一个方面,提供一种结构测试中被测程序的改造系统,包括: 分析单元10,用于根据被测程序的结构生成抽象语法树和控制流图,并得到所述 被测程序的输入/输出函数信息; 改造单元20,用于改造被测程序,并在所述被测程序中分别构造驱动函数、桩函数 和探针函数; 执行单元30,用于执行所述被测程序,得到所述探针函数的插桩返回信息,根据所本文档来自技高网...

【技术保护点】
一种结构测试中被测程序的改造方法,其特征在于,所述方法包括:S1、根据被测程序的结构生成抽象语法树和控制流图,并得到所述被测程序的输入/输出函数信息;S2、改造所述被测程序,并在所述被测程序中分别构造驱动函数、桩函数和探针函数;S3、执行所述被测程序,得到所述探针函数的插桩返回信息,根据所述插桩返回信息和所述控制流图分析所述被测程序的路径覆盖情况。

【技术特征摘要】
1. 一种结构测试中被测程序的改造方法,其特征在于,所述方法包括: 51、 根据被测程序的结构生成抽象语法树和控制流图,并得到所述被测程序的输入/ 输出函数信息; 52、 改造所述被测程序,并在所述被测程序中分别构造驱动函数、桩函数和探针函数; 53、 执行所述被测程序,得到所述探针函数的插桩返回信息,根据所述插桩返回信息和 所述控制流图分析所述被测程序的路径覆盖情况。2. 根据权利要求1所述的结构测试中被测程序的改造方法,其特征在于,所述步骤S2 具体包括: 521、 判断所述被测程序是否是主函数,是,则对所述被测程序重命名,然后执行步骤 S22 ;否则直接执行步骤S22 ; 522、 对所述被测函数中的输入/输出函数进行变换,使输入函数中的参数作为所述被 测程序的输入,并将输出函数的输出结果保存; 523、 将所述被测程序中对子函数的调用语句变换成桩函数,并对所述桩函数进行定 义,构造成可运行的桩函数; 524、 对所述被测程序以探...

【专利技术属性】
技术研发人员:宫云战杨忆文王雅文黄俊飞金大海
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京;11

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

1