程序的代码段测试方法、装置和系统的制作方法

文档序号:6527022阅读:162来源:国知局
程序的代码段测试方法、装置和系统的制作方法
【专利摘要】本发明公开了程序的代码段测试方法、装置和系统,其中程序的代码段测试方法包括:在对被测程序进行测试时,在被测程序中调用被测试代码段的位置,设置断点/跳转处理单元;运行所述被测程序,当被测程序执行至调用被测试代码段位置时,断点/跳转处理单元中断被测试代码段的执行流程,并将被测程序的执行跳转至测试流程;在执行测试流程中,运行测试代码段,并获取测试结果。本发明通过一个测试程序来控制被测试代码段所属的程序执行,使其中断后进入测试流程来完成代码段的测试;由于本发明不需要在被测程序中嵌入测试模块,从而也就避免了由此带来的对原被测程序的干扰。
【专利说明】程序的代码段测试方法、装置和系统
【技术领域】
[0001]本发明属于计算机程序领域,尤其涉及程序的代码段测试方法、装置和系统。
【背景技术】
[0002]随着目前软件系统的复杂度不断提高,使软件测试的重要性也得到了进一步的体现。
[0003]现有技术中,在对二进制的程序映像进行测试的方式包括,在程序的内部嵌入测试模块,即,通过运行特定的代码段来进行程序测试。
[0004]发明人经过研究发现,上述现有技术中的程序测试方式,需要增加新的测试模块,这样会使得程序的逻辑的复杂度进一步提高,进而就有可能引入新的缺陷;这样,在发生缺陷时,就难以定位缺陷到底是测试对象,即,被测试代码段自身的问题还是由于测试模块的加入造成的,即,现有技术中的程序测试方式会使得程序的复杂度增加,由于测试模块本身就有可能引入额外的缺陷,从而对原有程序造成干扰。

【发明内容】

[0005]有鉴于此,本发明提供了程序的代码段测试方法和装置,以减少对原有程序的干扰目的。
[0006]第一方面,本发明提供了一种程序的代码段测试方法,包括:
[0007]在对被测程序进行测试时,在所述被测程序中调用被测试代码段的位置,设置断点/跳转处理单元;
[0008]运行所述被测程序,当所述被测程序执行至调用所述被测试代码段位置时,所述断点/跳转处理单元中断所述被测试代码段的执行流程,并将所述被测程序的执行跳转至测试流程;
[0009]在执行所述测试流程中,运行测试代码段,并获取测试结果。
[0010]在第一方面的第一种可能的实现方式中,所述被测试代码段的代码类型包括:
[0011]二进制程序映像。
[0012]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述被测程序包括:
[0013]操作系统程序或应用程序。
[0014]结合第一方面的第二种可能的实现方式中,在第三种可能的实现方式中,所述断点/跳转处理单元包括:
[0015]通过设置断点、探针、动态修改代码段或虚拟执行中的一种或任意组合实现。
[0016]在第一方面的第四种可能的实现方式中,所述获取测试结果后,还包括:
[0017]测试流程结束后,恢复所述被测程序程的执行。
[0018]结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述测试流程包括:[0019]构造和检查测试环境;
[0020]调用所述被测试代码段;
[0021]所述被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
[0022]结合第一方面的第四种可能的实现方式,在第六种可能的实现方式中,所述测试流程包括:
[0023]构造和检查测试环境;
[0024]调用所述被测试代码段的副本;
[0025]所述被测试代码段的副本执行完毕后,进行所述测试环境结果的检查和记录。
[0026]结合第一方面的第五种或第六种可能的实现方式,在第七种实现方式中,还包括:
[0027]恢复被中断的所述被测程序的执行前,清理所述测试环境。
[0028]结合第一方面的第六种可能的实现方式,在第八种可能的实现方式中,所述构造和检查测试环境前,还包括:
[0029]当所述被测试代码段的副本不存在时,创建所述被测试代码段的副本。
[0030]结合第一方面的第八种可能的实现方式,在第九种可能的实现方式中,所述被测试代码段的副本包括:
[0031]与所述被测试代码段逻辑功能等效的代码段。
[0032]第二方面,本发明提供一种程序的代码段测试装置,包括:
[0033]断点设置单元,用于在对被测程序进行测试时,在所述被测程序中调用被测试代码段的位置,设置断点/跳转处理单元;
[0034]所述断点/跳转处理单元,用于当所述被测程序执行至调用所述被测试代码段位置时,所述断点/跳转处理单元中断所述被测试代码段的执行流程,并将所述被测程序的执行跳转至测试流程;
[0035]测试单元,用于在执行所述测试流程中,运行测试代码段,并获取测试结果。
[0036]在第二方面的第一种可能的实现方式中,所述被测试代码段的代码类型包括:
[0037]二进制程序映像。
[0038]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述被测程序包括:
[0039]操作系统程序或应用程序序。
[0040]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述断点/跳转处理单元包括:
[0041 ] 断点、探针、动态修改代码段或虚拟执行中的一种或任意组合。
[0042]在第二方面的第四种可能的实现方式中,还包括:
[0043]恢复单元,用于通过所述断点/跳转处理单元,恢复所述被测程序程的执行。
[0044]结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述测试单元,包括:
[0045]测试环境构造模块,用于构造和检查测试环境;
[0046]代码段调用模块,用于调用所述被测试代码段;
[0047]测试结果获取模块,用于在所述被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
[0048]结合第二方面的第四种可能的实现方式,在第六种可能的实现方式中,所述测试单元,包括:
[0049]测试环境构造模块,用于构造和检查测试环境;
[0050]代码段调用模块,用于调用所述被测试代码段的副本;
[0051]测试结果获取模块,用于所述被测试代码段的副本执行完毕后,进行所述测试环境结果的检查和记录。
[0052]结合第二方面的第五种或第六种可能的实现方式,在第七种实现方式中所述测试单元,还包括:
[0053]测试环境清理模块,用于在恢复被中断的所述被测程序程的执行前,清理所述测试环境。
[0054]结合第二方面的第六种可能的实现方式,在第八种可能的实现方式中,所述测试单元,还包括:
[0055]副本创建模块,用于在所述构造和检查测试环境前,当所述被测试代码段的副本不存在时,创建所述被测试代码段的副本。
[0056]结合第二方面的第八种可能的实现方式,在第九种可能的实现方式中,所述被测试代码段的副本包括:
[0057]与所述被测试代码段逻辑功能等效的代码段。
[0058]第三方面,本发明提供一种程序的代码段测试系统,包括程序的代码段测试装置;所述代码段测试装置包括:
[0059]断点设置单元,用于在对被测程序进行测试时,在所述被测程序中调用被测试代码段的位置,设置断点/跳转处理单元;
[0060]所述断点/跳转处理单元,用于当所述被测程序执行至调用所述被测试代码段位置时,所述断点/跳转处理单元中断所述被测试代码段的执行流程,并将所述被测程序的执行跳转至测试流程;
[0061]测试单元,用于在执行所述测试流程中,运行测试代码段,并获取测试结果。
[0062]从上述的技术方案可以看出,本发明中对于代码段的测试不再是像现有技术中那样,在采用硬编码的方式,需要在被测程序的内部构建测试模块;而是可以通过一个测试程序来控制被测程序执行,使其在运行被测程序至调用被测试代码段的位置中断,并将执行流程跳转至测试流程来完成代码段的测试;由于本发明中的技术方案没有在被测程序中设有测试模块,所以不会提高被测程序逻辑的复杂度,也就不会给被测程序引入新的缺陷,进而通过本发明,就可以避免由于引入新的缺陷而造成的对原有被测程序造成干扰。
【专利附图】

【附图说明】
[0063]为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0064]图1为本申请中所述代码段测试方法的流程示意图;[0065]图2为本申请中所述测试流程的流程示意图;
[0066]图3为本申请中所述代码段测试方法的又一流程示意图;
[0067]图4为本申请中所述测试流程的又一流程示意图;
[0068]图5为本申请中所述代码段测试方法的又一流程示意图;
[0069]图6为本申请中所述代码段测试装置的结构示意图;
[0070]图7为本申请中代码段测试装置的硬件构成示意图。
【具体实施方式】
[0071]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0072]为了实现减少对原有程序的干扰的目的,在本发明的一方面,提供了一种程序的代码段测试方法,如图1所示,包括步骤:
[0073]S11、在对被测程序进行测试时,在被测程序中调用被测试代码段的位置,设置断点/跳转处理单元。
[0074]本发明中,对程序中的代码段进行测试,可以通过一个测试程序来实现,为了便于理解和区分,在本发明中,将被测试代码段所属的程序称为被测程序,将对被测试代码段进行测试的程序称为测试程序。
[0075]为了对被测程序中设定的代码段段进行测试,首先测试程序在被测试代码段的调用位置设置了断点/跳转处理单元,以方便对于被测程序的控制。
[0076]S12、运行被测程序,当被测程序执行至调用所述被测试代码段的位置时,断点/跳转处理单元中断被测试代码段的执行流程,并将被测程序的执行跳转至被测试代码段的测试流程
[0077]在进行代码段的测试时,首先运行被测程序,当被测程序运行到需要调用被测试代码段的位置时,断点/跳转处理单元就会接管被测试代码段的调用过程;并将被测程序重定向至测试程序的测试流程,接管被测试代码段的调用过程。具体可以包括,首先中断被测试代码段的执行流程,接着,将被测程序的执行跳转至被测试代码段的测试流程。
[0078]S13、在执行所述测试流程中,运行测试代码段,并获取测试结果。
[0079]在被测程序的执行跳转至被测试代码段的测试流程后,测试程序即可执行对应的测试流程,进而可以获取测试结果。
[0080]在实际应用中,测试代码段可以是转调用的被测试代码自身,也可以是测试代码段的副本。从而可以通过测试代码段的运行来对被测试代码进行测试。
[0081]本发明中,对于代码段的测试不再是像现有技术中那样,在采用硬编码的方式,需要在被测程序的内部构建测试模块,而是可以通过一个测试程序来控制被测试代码段所属程序的执行路径,使其中断后进入测试流程来完成代码段的测试;这样,就不会提高被测试代码段所属的程序中逻辑的复杂度,从而避免对原有程序的干扰。
[0082]优选的,在本发明中,对于执行测试的被测试代码段的代码类型,可以是二进制的代码段程序映像,比如,操作系统程序映像,由于内核程序运行时很难控制并且本身即为底层的服务提供者,所以无法直接应用现有的,如Xunit等测试工具,所以通过本发明中的测试方式,可以在不改变内核二进制镜像场景下,对其进行测试。这样,在内核设置的跳转/断点处理单元被触发后,程序跳转到测试流程中执行。测试流程中可以设有测试代码,测试代码可以与被测试代码编译在一个二进制镜像文件,也可以采用动态形式加载。这样,在本发明中,通过跳转/断点技术,解决了不改变内核二进制镜像场景下的内核测试困难的问题,从而提升了内核开发的调试与测试效率。
[0083]在实现代码段的测试过程中,测试代码转调用被测试代码,可以通过跳转/断点触发与测试代码逻辑的配合,或者通过生成被测试代码等效副本的方式,防止被被测试代码被再次触发,从而避免出现跳转/断点处理单元与被测试代码间出现死循环,最终实现测试代码部分对被测试代码的封装功能。
[0084]在实际应用中,断点/跳转处理单元具体可以是通过断点、探针、动态修改代码段或虚拟执行中的一种或多种设置的结合来实现。
[0085]进一步的,在本发明中,为了不影响被测程序的执行,或是,可以继续进行后续的其他代码段的测试,在获取被测试代码段的测试结果后,还可以将测试代码段的执行流程跳转至被测程序;这样,在测试流程结束后,就可以恢复被测程序的执行。
[0086]在实际应用中,测试流程的步骤可以如图2所示,包括:
[0087]S21、构造和检查测试环境;
[0088]S22、调用所述被测试代码段;
[0089]S23、所述被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
[0090]如图3所示,在采用步骤S21至S23所记载的测试流程时,进行代码段的测试的整体流程为:
[0091]被测程序正常执行至被测试代码段的位置时,测试程序通过位于此处的断点/跳转处理单元接管被测程序的调用过程,即,中断被测试代码段的执行流程,然后通过跳转指令将被测试代码段所属的程序的执行重定位至测试流程。
[0092]测试流程中,首先构造和检查测试环境,此外,在测试过程调用被测试代码前,测试程序还要禁止跳转/断点处理逻辑中跳转指令的重复执行。
[0093]接着,测试程序可以调用被测试代码段,使被测试代码段执行其运行;
[0094]当被测试代码段的运行执行完毕后,执行测试环境结果的检查和记录,S卩,生成测试结果;
[0095]接着,将测试代码段的执行流程跳转至被测程序,从而可以恢复被测程序的后续执行。
[0096]优选的,在将测试代码段的执行流程跳转至被测程序之前,还可以包括步骤:清理测试环境,从而进行环境清理工作。
[0097]在实际应用中,测试流程的步骤还可以如图4所示,包括:
[0098]S31、构造和检查测试环境;
[0099]S32、调用所述被测试代码段的副本;
[0100]S33、所述被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
[0101]如图5所示,在采用步骤S31至S33所记载的测试流程时,进行代码段的测试的整体流程为:[0102]被测程序正常执行至被测试代码段的位置时,测试程序通过位于此处的断点/跳转处理单元接管被测程序的调用过程,即,中断被测试代码段的执行流程,然后通过跳转指令将被测试代码段所属的程序的执行重定位至测试流程。
[0103]测试流程中,首先构造和检查测试环境。
[0104]接着,测试程序可以调用被测试代码段的副本,并运行被测试代码段的副本;具体的,在本发明中,被测试代码段的副本可以与被测试代码段完全相同,此外,被测试代码段的副本也可以是与被测试代码段逻辑功能等效的代码段。
[0105]当被测试代码段的副本的运行执行完毕后,返回执行测试环境结果的检查和记录,即,生成测试结果;
[0106]接着,将测试代码段的执行流程跳转至被测程序,从而可以恢复被测程序的后续执行。
[0107]优选的,在将测试代码段的执行流程跳转至被测程序之前,还可以包括步骤:清理测试环境,从而进行环境清理工作。
[0108]优选的,在上述调用被测试代码段的副本前,当被测试代码段的副本不存在时,还可以创建被测试代码段的副本的步骤。
[0109]对应于图1所示出的程序的代码段测试方法实施例,在本申请的另一方面,还提供了一种程序的代码段测试装置,如图6所示,包括:
[0110]断点设置单元01,用于断点设置单元,用于在对被测程序进行测试时,在所述被测程序中调用被测试代码段的位置,设置断点/跳转处理单元;
[0111]断点/跳转处理单元02,用于所述断点/跳转处理单元,用于当所述被测程序执行至调用所述被测试代码段位置时,所述断点/跳转处理单元中断所述被测试代码段的执行流程,并将所述被测程序的执行跳转至测试流程;
[0112]测试单元03,用于在执行所述测试流程中,运行测试代码段,并获取测试结果。
[0113]本发明中,对程序中的代码段进行测试的代码段测试装置,可以是一个通过软件来实现的测试程序,为了便于理解和区分,在本发明中,将被测试代码段所属的程序称为被测程序,将对被测试代码段进行测试的程序称为测试程序。
[0114]为了对被测程序中设定的代码段段进行测试,首先断点设置单元01在被测试代码段的调用位置设置了断点/跳转处理单元,这样,在进行代码段段的测试时,首先运行被测程序,当被测程序运行到需要调用被测试代码段的位置时,断点/跳转处理单元02就会接管被测试代码段的调用过程;并将被测程序重定向至测试程序的测试流程,接管被测试代码段的调用过程具体包括,首先中断被测试代码段的执行流程,接着,将被测程序的执行跳转至被测试代码段的测试流程。
[0115]在被测程序的执行跳转至被测试代码段的测试流程后测试单元03即可启动测试流程的执行,进而可以运行测试代码段,并获取测试结果。
[0116]本发明中,对于代码段的测试不再是像现有技术中那样,在采用硬编码的方式,需要在被测程序的内部构建测试模块,而是可以通过一个测试程序来控制被测试代码段所属程序的执行路径,使其中断后进入测试流程来完成代码段的测试;这样,就不会提高被测试代码段所属的程序中逻辑的复杂度,从而避免对原有程序的干扰。
[0117]优选的,在本发明中,对于执行测试的被测试代码段的代码类型,可以是二进制的代码段程序映像,比如,操作系统程序映像,由于内核程序运行时很难控制并且本身即为底层的服务提供者,所以无法直接应用现有的,如Xunit等测试工具,所以通过本发明中的测试方式,可以在不改变内核二进制镜像场景下,对其进行测试。这样,在内核设置的跳转/断点处理单元被触发后,程序跳转到测试流程中执行。测试流程中可以设有测试代码,测试代码可以与被测试代码编译在一个二进制镜像文件,也可以采用动态形式加载。这样,在本发明中,通过跳转/断点技术,解决了不改变内核二进制镜像场景下的内核测试困难的问题,从而提升了内核开发的调试与测试效率。
[0118]在实现代码段的测试过程中,测试代码转调用被测试代码,可以通过跳转/断点触发与测试代码逻辑的配合,或者通过生成被测试代码等效副本的方式,防止被被测试代码被再次触发,从而避免出现跳转/断点处理单元与被测试代码间出现死循环,最终实现测试代码部分对被测试代码的封装功能。
[0119]在实际应用中,断点/跳转处理单元具体可以是通过断点、探针、动态修改代码段或虚拟执行中的一种或多种设置的结合来实现。
[0120]进一步的,在本发明中,为了不影响被测程序的执行,或是,可以继续进行后续的其他代码段的测试,在获取被测试代码段的测试结果后,还可以包括恢复单元,这样,通过恢复单元通将测试代码段的执行流程跳转至被测程序;从而使得,在测试流程结束后,就可以恢复被测程序的执行。
[0121]在实际应用中,测试单元03具体可以包括:
[0122]测试环境构造模块,用于构造和检查测试环境;
[0123]代码段调用模块,用于调用被测试代码段;
[0124]测试结果获取模块,用于被测试代码段执行完毕后,进行测试环境结果的检查和记录。
[0125]如图3所示,在采用测试单元包括上述测试环境构造模块、代码段调用模块和测试结果获取模块时,进行代码段的测试的整体流程可以为:
[0126]被测程序正常执行至被测试代码段的位置时,位于此处的断点/跳转处理单元02接管被测程序的调用过程,即,中断被测试代码段的执行流程,然后通过跳转指令将被测试代码段所属的程序的执行重定位至测试流程。
[0127]测试流程中,首先测试环境构造模块构造和检查测试环境,此外,在测试过程调用被测试代码前,测试环境构造模块还要禁止跳转/断点处理逻辑中跳转指令的重复执行。
[0128]接着,代码段调用模块调用被测试代码段,使被测试代码段执行其运行;
[0129]当被测试代码段的运行执行完毕后,测试结果获取模块返回执行测试环境结果的检查和记录,即,生成测试结果;
[0130]接着,恢复单元将测试代码段的执行流程跳转至被测程序,从而可以恢复被测程序的后续执行。
[0131 ] 优选的,本申请中的测试单元,还可以包括测试环境清理模块,测试环境清理模块用于在将测试代码段的执行流程跳转至被测程序之前,清理测试环境,从而进行环境清理工作。
[0132]在实际应用中,测试单元03具体还可以包括:
[0133]测试环境构造模块,用于构造和检查测试环境;[0134]代码段调用模块,用于调用所述被测试代码段的副本;
[0135]测试结果获取模块,用于被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
[0136]如图3所示,在采用测试单元03包括上述测试环境构造模块、代码段调用模块和测试结果获取模块时,进行代码段的测试的整体流程可以为:
[0137]被测程序正常执行至被测试代码段的位置时,位于此处的断点/跳转处理单元02接管被测程序的调用过程,即,中断被测试代码段的执行流程,然后通过跳转指令将被测试代码段所属的程序的执行重定位至测试流程。
[0138]测试流程中,首先测试环境构造模块构造和检查测试环境。
[0139]接着,代码段调用模块测试程序可以调用被测试代码段的副本,并运行被测试代码段的副本;具体的,在本发明中,被测试代码段的副本可以与被测试代码段相同,此外,被测试代码段的副本也可以是与被测试代码段逻辑功能等效的代码段。
[0140]当被测试代码段的副本的运行执行完毕后,测试结果获取模块返回执行测试环境结果的检查和记录,即,生成测试结果;
[0141]接着,恢复单元将测试代码段的执行流程跳转至被测程序,从而可以恢复被测程序的后续执行。
[0142]优选的,本申请中的测试单元,还可以包括测试环境清理模块,测试环境清理模块用于在将测试代码段的执行流程跳转至被测程序之前,清理测试环境,从而进行环境清理工作。
[0143]优选的,本发明中的测试单元03还可以包括副本创建模块,副本创建模块用于在上述调用被测试代码段的副本前,当被测试代码段的副本不存在时,创建被测试代码段的副本。
[0144]在本申请的另一方面,还提供了另一种程序的代码段测试系统,该代码段测试系统包括了上一实施例中的代码段测试装置,由于本实施例中的代码段测试系统中的代码段测试装置与上一实施例中的代码段测试装置的结构相同、工作原理相同且有益效果相同,所以在此就不再赘述。
[0145]进一步地,本发明实施例还提供了代码段测试装置的硬件构成。可包括至少一个处理器(例如CPU),和至少一个存储器。处理器用于执行存储器中存储的可执行模块,例如计算机程序。存储器可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口(可以是有线或者无线)实现该系统网关与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
[0146]参见图7,在一些实施方式中,存储器中存储了程序指令,程序指令可以被处理器执行,其中,程序指令包括断点设置单元01,断点/跳转处理单元02和测试单元03,各单元的具体实现可参见图6所揭示的相应单元。
[0147]本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0148]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0149]以上对本发明实施例进行了详细介绍,本文中应用了【具体实施方式】对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种程序的代码段测试方法,其特征在于,包括: 在对被测程序进行测试时,在所述被测程序中调用被测试代码段的位置,设置断点/跳转处理单元; 运行所述被测程序,当所述被测程序执行至调用所述被测试代码段位置时,所述断点/跳转处理单元中断所述被测试代码段的执行流程,并将所述被测程序的执行跳转至测试流程; 在执行所述测试流程中,运行测试代码段,并获取测试结果。
2.根据权利要求1中所述的方法,其特征在于,所述被测试代码段的代码类型包括: 二进制程序映像。
3.根据权利要求2中所述的方法,其特征在于,所述被测程序包括: 操作系统程序或应用程序。
4.根据权利要求3中所述的方法,其特征在于,所述断点/跳转处理单元包括: 通过设置断点、探针、动态修改代码段或虚拟执行中的一种或任意组合实现。
5.根据权利要求1中所述的方法,其特征在于,所述获取测试结果后,还包括: 测试流程结束后,恢复所述被测程序程的执行。
6.根据权利要求5中所述的方法,其特征在于,所述测试流程包括: 构造和检查测试环境; 调用所述被测试代码段; 所述被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
7.根据权利要求5中所述的方法,其特征在于,所述测试流程包括: 构造和检查测试环境; 调用所述被测试代码段的副本; 所述被测试代码段的副本执行完毕后,进行所述测试环境结果的检查和记录。
8.根据权利要求6或7中任一所述的方法,其特征在于,还包括: 恢复被中断的所述被测程序的执行前,清理所述测试环境。
9.根据权利要求7中所述的方法,其特征在于,还包括: 所述构造和检查测试环境前,当所述被测试代码段的副本不存在时,创建所述被测试代码段的副本。
10.根据权利要求9中 所述的方法,其特征在于,所述被测试代码段的副本包括: 与所述被测试代码段逻辑功能等效的代码段。
11.一种程序的代码段测试装置,其特征在于,包括: 断点设置单元,用于在对被测程序进行测试时,在所述被测程序中调用被测试代码段的位置,设置断点/跳转处理单元; 所述断点/跳转处理单元,用于当所述被测程序执行至调用所述被测试代码段位置时,所述断点/跳转处理单元中断所述被测试代码段的执行流程,并将所述被测程序的执行跳转至测试流程; 测试单元,用于在执行所述测试流程中,运行测试代码段,并获取测试结果。
12.根据权利要求11中所述的装置,其特征在于,所述被测试代码段的代码类型包括: 二进制程序映像。
13.根据权利要求12中所述的装置,其特征在于,所述被测程序包括: 操作系统程序或应用程序。
14.根据权利要求13中所述的装置,其特征在于,所述断点/跳转处理单元包括: 断点、探针、动态修改代码段或虚拟执行中的一种或任意组合。
15.根据权利要求11中所述的方法,其特征在于,还包括: 恢复单元,用于测试流程结束后,恢复所述被测程序程的执行。
16.根据权利要求15中所述的装置,其特征在于,所述测试单元,包括: 测试环境构造模块,用于构造和检查测试环境; 代码段调用模块,用于调用所述被测试代码段; 测试结果获取模块,用于在所述被测试代码段执行完毕后,进行所述测试环境结果的检查和记录。
17.根据权利要求15中所述的装置,其特征在于,所述测试单元,包括: 测试环境构造模块,用于构造和检查测试环境; 代码段调用模块,用于调用所述被测试代码段的副本; 测试结果获取模块,用于所述被测试代码段的副本执行完毕后,进行所述测试环境结果的检查和记录。
18.根据权利要求16或17中任一所述的装置,其特征在于,所述测试单元,还包括: 测试环境清理模块,用于在恢复被中断的所述被测程序程的执行前,清理所述测试环境。
19.根据权利要求17中所述的装置,其特征在于,所述测试单元,还包括: 副本创建模块, 用于在所述构造和检查测试环境前,当所述被测试代码段的副本不存在时,创建所述被测试代码段的副本。
20.根据权利要求19中所述的装置,其特征在于,所述被测试代码段的副本包括: 与所述被测试代码段逻辑功能等效的代码段。
21.一种程序的代码段测试系统,其特征在于,包括如权利要求11至20中任一所述程序的代码段测试装置。
【文档编号】G06F11/36GK103761184SQ201310752450
【公开日】2014年4月30日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】冯蛟, 麻先盛 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1