代码测试方法及代码测试系统的制作方法

文档序号:9452983阅读:508来源:国知局
代码测试方法及代码测试系统的制作方法
【技术领域】
[0001]本发明涉及代码测试领域,特别涉及一种代码测试方法以及一种代码测试系统。
【背景技术】
[0002]在目前的软件应用中,在开发出软件后,通常需要对软件代码进行测试,软件测试主要用于对软件正确性进行分析和对软件漏洞进行检测。在进行软件测试时,通常需要确定测试用例的执行完整情况,通过测试用例的执行完整情况来对测试工作进行评估,进而便于对测试用例等进行调整,在此基础上对软件代码进行完善。代码覆盖(Code coverage)是软件测试中的一种度量,描述软件代码中程式中源代码被测试的比例和程度,所得比例称为代码覆盖率,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至于用来考核测试任务完成情况。现有的代码覆盖率的确定,都是针对需要进行测试的全部代码进行测试和收集代码覆盖率,并基于针对全部代码的代码覆盖率对测试工作的完成情况进行评估,并不能很好地对测试人员的测试效果或者执行结果有效评估。

【发明内容】

[0003]基于此,针对上述现有技术中存在的问题,本发明的目的在于提供一种代码测试方法、一种代码测试系统,其可以提高对代码测试效果进行评估时的有效性。
[0004]为达到上述目的,本发明实施例采用以下技术方案:
[0005]一种代码测试方法,包括步骤:
[0006]将编码后的待测试代码与编码前代码进行比较,获得增量变化代码;
[0007]对所述待测试代码进行插桩,在所述待测试代码中添加插桩标记,获得插桩后的待测试代码;
[0008]对所述插桩后的待测试代码进行测试,并记录测试过程中的代码测试信息;
[0009]根据所述增量变化代码、所述插桩标记、所述代码测试信息确定所述待测试代码的增量覆盖率。
[0010]一种代码测试系统,包括:
[0011]变更比较单元,用于将编码后的待测试代码与编码前代码进行比较,获得增量变化代码;
[0012]插桩单元,用于对所述待测试代码进行插桩,在所述待测试代码中添加插桩标记,获得插桩后的待测试代码;
[0013]测试单元,用于对所述插桩后的待测试代码进行测试,并记录测试过程中的代码测试信息;
[0014]增量覆盖率确定单元,用于根据所述增量变化代码、所述插桩标记、所述代码测试信息确定所述待测试代码的增量覆盖率。
[0015]根据如上所述的本发明实施例的方案,其在进行测试时,是在获得待测试代码相对于编码前代码的增量变化代码后,再对待测试代码进行插桩并进行测试获得代码测试信息,然后根据增量变化代码、插桩标记以及代码测试信息确定增量覆盖率。由于其所得到的是增量覆盖率,是针对增量变化代码的测试执行情况,由于编码前代码一般都是已经测试通过的有效代码,针对增量变化代码确定增量覆盖率能更好地对代码测试的测试执行效果进行有效评估,提高了对代码测试效果进行评估时的有效性,使得代码测试评估结果更准确。
【附图说明】
[0016]图1是本发明的代码测试方法实施例一的流程示意图;
[0017]图2是本发明的代码测试方法实施例二的流程示意图;
[0018]图3是本发明的代码测试方法实施例三的流程示意图;
[0019]图4是本发明的代码测试系统实施例一的结构示意图;
[0020]图5是本发明的代码测试系统实施例二的结构示意图;
[0021]图6是本发明的代码测试系统实施例三的结构示意图;
[0022]图7是一个具体示例中能够实现本发明实施例的计算机系统的模块结构示意图。
【具体实施方式】
[0023]为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发明,并不限定本发明的保护范围。
[0024]图1中示出了本发明的代码测试方法实施例一的流程示意图,如图1所示,本实施例中的代码测试方法包括步骤:
[0025]步骤SlOl:将编码后的待测试代码与编码前代码进行比较,获得增量变化代码;
[0026]步骤S102:对所述待测试代码进行插桩,在所述待测试代码中添加插桩标记,获得插桩后的待测试代码;
[0027]步骤S103:对所述插桩后的待测试代码进行测试,并记录测试过程中的代码测试信息;
[0028]步骤S104:根据所述增量变化代码、所述插桩标记、所述代码测试信息确定所述待测试代码的增量覆盖率。
[0029]根据如上所述的本发明实施例的方案,其在进行测试时,是在获得待测试代码相对于编码前代码的增量变化代码后,再对待测试代码进行插桩并进行测试获得代码测试信息,然后根据增量变化代码、插桩标记以及代码测试信息确定增量覆盖率。由于其所得到的是增量覆盖率,是针对增量变化代码的测试执行情况,由于编码前代码一般都是已经测试通过的有效代码,针对增量变化代码确定增量覆盖率能更好地对代码测试的测试执行效果进行有效评估,提高了对代码测试效果进行评估时的有效性,使得代码测试评估结果更准确。
[0030]在上述得到增量覆盖率之后,就可以根据该增量覆盖率对代码测试效果进行评估,增量覆盖率越高,说明代码测试执行的效果越好,在一定程度上也说明了测试效果越好。
[0031]其中,在上述步骤SlOl中将编码后的待测试代码与编码前代码进行比较,获得增量变化代码时,可以采用diff工具进行,diff工具是一个工具程序,用来比较文本文件,它能比较单个文件或者目录内容,并输出两者的不同之处。
[0032]由于diff工具输出的结果是源代码的行数变化,因此,在上述步骤S104中确定增量覆盖率时,可以基于待确定的增量覆盖率的类型的不同,根据待测试代码中的行数与代码信息类型之间的对应关系,来确定对应的增量覆盖率,例如,代码信息类型为函数时,通过行数与函数的对应关系,确定函数增量覆盖率,代码信息类型为语句时,通过行数与语句的对应关系,确定语句增量覆盖率,其他代码信息类型与此类似,在此不再展开赘述。
[0033]上述步骤S102中对待测试代码进行插桩时,用于插桩的代码,可以根据实际需要进行设定。所谓插桩,是指在不破坏被测程序原有逻辑完整性的情况下,在被测程序的相应位置插入用于插桩的代码(也称之为探针),这些探针本质上是进行信息采集的代码段,通过探针的执行并输出程序的运行特征数据,从而基于这些特征数据的分析,揭示程序的内部行为和特性。
[0034]其中,在上述对待测试代码进行插桩时,可以基于待测试代码的特性,在待测试代码的不同位置进行插桩,从而可以据此确定不同情况下的增量覆盖率。
[0035]以下结合其中两种方式进行举例说明。
[0036]图2中示出了本发明的代码测试方法实施例二的流程示意图。在本实施例中,与上述实施例一的不同之处主要在于,本实施例中是在函数进行插桩,从而求取函数增量覆盖率。
[0037]如图2所示,本实施例中的代码测试方法包括步骤:
[0038]步骤S201:将编码后的待测试代码与编码前代码进行比较,获得增量变化代码;
[0039]步骤S202:在待测试代码中的函数添加插桩标记,获得插桩后的待测试代码;
[0040]步骤S203:对插桩后的待测试代码进行测试,并记录测试过程中的代码测试信息;
[0041]步骤S204:根据代码测试信息中的插桩标记确定增量变化代码中已被测试执行的函数的数目;
[0042]步骤S205:根据所述增量变化代码、所述插桩标记、所述代码测试信息确定所述待测试代码的增量覆盖率。
[0043]在其中一个具体示例中,上述步骤S205确定的增量覆盖率可以是增量变化代码中已被测试执行的函数的数目与增量变化代码中的函数总数的比值。由于在本实施例中是通过在函数中进行插桩且是基于函数的测试执行情况来确定增量覆盖率,因此,本实施例中得到的增量覆盖率可以称之为函数增量覆盖率。
[0044]因此,该函数增量覆盖率可以通过下述公式确定:
[0045]函数增量覆盖率=(增量变化代码中已被测试执行的函数的数目/增量变化代码中的函数的总数)*100%。
[0046]如上所述,在步骤S201中将编码后的待测试代码与编码前代码进行比较,获得增量变化代码时,可以采用diff工具进行。由于diff工具输出的结果是源代码的行数变化,因此,在采用diff工具获得增量变化代码的情况下,上述增量变化代码中已被测试执行的函数的数目,可以基于增量变化代码中行数与函数的对应关系来确定,相应地,上述增量变化代码中的函数的总数,也可以基于增量变化代码中行数与函数的对应关系来确定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1