CN106354625A - 一种测试范围确定方法及装置 - Google Patents

一种测试范围确定方法及装置 Download PDF

Info

Publication number
CN106354625A
CN106354625A CN201510432313.9A CN201510432313A CN106354625A CN 106354625 A CN106354625 A CN 106354625A CN 201510432313 A CN201510432313 A CN 201510432313A CN 106354625 A CN106354625 A CN 106354625A
Authority
CN
China
Prior art keywords
function
code
tested
test scope
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510432313.9A
Other languages
English (en)
Inventor
汪德合
李佳
王艳娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sogou Technology Development Co Ltd
Original Assignee
Beijing Sogou Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Sogou Technology Development Co Ltd filed Critical Beijing Sogou Technology Development Co Ltd
Priority to CN201510432313.9A priority Critical patent/CN106354625A/zh
Publication of CN106354625A publication Critical patent/CN106354625A/zh
Pending legal-status Critical Current

Links

Abstract

本发明涉及软件工程领域,公开了一种测试范围确定方法及装置,以解决现有技术中对测试范围确定不够准确的技术问题。该方法包括:获取待测试代码所包含的M个函数,M为正整数;确定与M个函数存在调用关系的N个函数,N为正整数;基于待测试代码、M个函数和N个函数确定测试范围。达到了提高所确定的测试范围的准确性的技术效果。

Description

一种测试范围确定方法及装置
技术领域
本发明涉及软件工程领域,尤其涉及一种测试范围确定方法及装置。
背景技术
在较大的互联网软件项目工程里,代码工程庞大且整体更新迭代速度快,软件系统人员需要在测试新增功能和原有功能迭代的基础上,需要全面的确认测试范围。其中,申请号为:201410209145.2的中国专利申请,公开了通过以下方式确定出测试方式:
获取待测试的变更代码数据的路径信息;
根据所述获取的路径信息到预先构建的数据库中查找与所述获取的路径信息匹配的回归测试范围参考信息;
输出所述查找到的回归测试范围参考信息,以使测试人员根据所述回归测试范围参考信息确定回归测试范围。
该方案存在以下技术问题:该方案中确定出回归测试范围时,仅仅考虑变更代码的路径信息以及与变更代码对应的参考信息,故而能够提示的测试范围仅是发生变化的代码本身,对于未变化的代码产生的影响无法涵盖。由此可见,现有技术中的方案存在着对测试范围确定不够准确的技术问题。
发明内容
本发明提供一种测试范围确定方法及装置,以解决现有技术中对测试范围确定不够准确的技术问题。
第一方面,本发明实施例提供一种测试范围确定方法,包括:
获取待测试代码所包含的M个函数,M为正整数;
确定与所述M个函数存在调用关系的N个函数,N为正整数;
基于所述待测试代码、所述M个函数和所述N个函数确定测试范围。
可选的,所述获取待测试代码所包含的M个函数,具体包括:
获取所述待测试代码的第一路径信息;
获取到路径信息为所述第一路径信息的所述M个函数。
可选的,所述基于所述待测试代码、所述M个函数和所述N个函数确定测试范围,具体包括:
从所述M个函数和所述N个函数中确定出L个函数,L为不大于M与N之和的正整数;
将所述待测试代码和包含有所述L个函数的至少一个函数的文件和/或模块所对应的代码作为所述测试范围。
可选的,所述确定与所述M个函数存在调用关系的N个函数,具体为:
确定与所述M个函数中的任意一个函数存在直接或间接调用关系的N个函数。
可选的,在所述确定与所述M个函数中的任意一个函数存在直接或间接调用关系的N个函数时,所述方法还包括:
确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;
若在所述脉络信息所包含的至少一条脉络的第一脉络中,第一函数出现第二次,则停止继续获取所述第一脉络上所对应的函数。
可选的,所述从所述M个函数和所述N个函数中确定出L个函数,具体包括:
将所述M个函数和所述N个函数全部作为所述L个函数;或
确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;以及确定出所述脉络关系中层级位于前S级的函数作为所述L个函数,S为大于1的正整数。
可选的,在所述基于所述待测试代码、所述M个函数和所述N个函数确定测试范围之后,所述方法还包括:
对所述测试范围所包含的代码进行测试。
可选的,在所述获取待测试代码所包含的M个函数之前,所述方法还包括:
通过日志分析工具从版本控制服务器导入日志信息;
从所述日志信息中提取出内容发生变化的代码作为所述待测试代码。
第二方面,本发明实施例提供一种测试范围确定装置,包括:
获取模块,用于获取待测试代码所包含的M个函数,M为正整数;
第一确定模块,用于确定与所述M个函数存在调用关系的N个函数,N为正整数;
第二确定模块,用于基于所述待测试代码、所述M个函数和所述N个函数确定测试范围。
可选的,所述获取模块,具体包括:
第一获取单元,用于获取所述待测试代码的第一路径信息;
第二获取单元,用于获取到路径信息为所述第一路径信息的所述M个函数。
可选的,所述第二确定模块,具体包括:
第一确定单元,用于从所述M个函数和所述N个函数中确定出L个函数,L为不大于M与N之和的正整数;
第二确定单元,用于将所述待测试代码和包含有所述L个函数的至少一个函数的文件和/或模块所对应的代码作为所述测试范围。
可选的,所述第一确定模块,具体用于:
确定与所述M个函数中的任意一个函数存在直接或间接调用关系的N个函数。
可选的,所述第一确定模块,具体包括:
第三确定单元,用于确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;
停止单元,用于若在所述脉络信息所包含的至少一条脉络的第一脉络中,第一函数出现第二次,则停止继续获取所述第一脉络上所对应的函数。
可选的,所述第一确定单元,具体用于:
将所述M个函数和所述N个函数全部作为所述L个函数;或
确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;以及确定出所述脉络关系中层级位于前S级的函数作为所述L个函数,S为大于1的正整数。
可选的,所述装置还包括:
测试模块,用于在基于所述待测试代码、所述M个函数和所述N个函数确定测试范围之后,对所述测试范围所包含的代码进行测试。
可选的,所述装置还包括:
导入模块,用于在获取待测试代码所包含的M个函数之前,通过日志分析工具从版本控制服务器导入日志信息;
提取模块,用于从所述日志信息中提取出内容发生变化的代码作为所述待测试代码。
本发明有益效果如下:
由于在本发明实施例中,首先获取待测试代码所包含的M个函数,M为正整数;然后确定与M个函数存在调用关系的N个函数,N为正整数;最后基于待测试代码、M个函数和N个函数确定测试范围。也就是在确定测试范围时,不仅考虑待测试代码,还要考虑待测试代码所包含的函数的影响范围,从而达到了提高所确定的测试范围的准确性的技术效果;
并且,该方案还能够防止由于底层函数变化,影响上层其他函数,而人工方式无法发现这些问题,从而导致测试范围的遗漏,另外,也能够防止所确定的测试范围过大,从而还能够提高确定测试范围的时间。
附图说明
图1为本发明实施例中测试范围确定方法的流程图;
图2为本发明实施例测试范围确定方法的软件架构图;
图3为本发明实施例测试范围确定方法中函数A的脉络图;
图4为本发明实施例测试范围确定方法中基于待测试代码、M个函数和N个函数确定测试范围的流程图;
图5为本发明实施例测试范围确定方法中从M个函数和N个函数中确定出L个函数的流程图;
图6为本发明实施例测试范围确定方法中测试范围的示意图;
图7为本发明实施例一中测试范围确定方法的流程图;
图8为本发明实施例二中测试范围确定方法的系统架构图;
图9为本发明实施例中测试范围确定装置的结构图。
具体实施方式
本发明提供一种测试范围确定方法及装置,以解决现有技术中对测试范围确定不够准确的技术问题。
本申请实施例中的技术方案为解决上述的技术问题,总体思路如下:
首先获取待测试代码所包含的M个函数,M为正整数;然后确定与M个函数存在调用关系的N个函数,N为正整数;最后基于待测试代码、M个函数和N个函数确定测试范围。也就是在确定测试范围时,不仅考虑待测试代码,还要考虑待测试代码所包含的函数的影响范围,从而达到了提高所确定的测试范围的准确性的技术效果;
并且,该方案还能够防止由于底层函数变化,影响上层其他函数,而人工方式无法发现这些问题,从而导致测试范围的遗漏,另外,也能够防止所确定的测试范围过大,从而还能够提高确定测试范围的时间。
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
第一方面,本发明实施例提供一种测试范围确定方法,请参考图1,包括:
步骤S101:获取待测试代码所包含的M个函数,M为正整数;
步骤S102:确定与M个函数存在调用关系的N个函数,N为正整数;
步骤S103:基于待测试代码、M个函数和N个函数确定测试范围。
如图2所示,为该测试范围确定方法的软件架构图,其可以包括以下几个功能模块:
函数管理系统20;
函数分析工具21,用于自动对工程项目进行分析,进而将函数关系信息导入到函数管理系统20,其中,每个函数的函数关系信息包括:函数的路径信息、函数名、函数调用信息、函数被调信息、函数源码、函数行数等信息。
日志分析工具22;
日志变更管理系统23日志分析工具22用于将日志信息导入到日志变更管理系统23,每个日志信息可以包括:提交人、提交时间、备注信息、提交版本、变更文件信息等信息,其中变更文件信息又可以包括:文件名、路径信息、修改类型(例如:新增一段代码、在一段代码中增加内容、在一段代码中删除内容、修改一段代码等等)。
作为一种可选的实施例,在基于步骤S101获得待测试代码之前,该方法还包括:
通过日志分析工具22从版本控制服务器导入日志信息;
从日志信息中提取出内容发生变化的代码作为待测试代码。
举例来说,软件开发人员进行代码修改之后,将修改后的代码提交至版本控制服务器,进而在版本控制服务器中就会新增一条日志信息,然后由日志分析工具22将日志信息导入日志变更管理系统23,日志变更管理系统23通过对日志信息进行分析确定出内容发生变化的代码,该内容发生变化的代码即为待测试代码,其中,日志分析工具22例如为:SVN日志工具、版本控制服务器例如为:SVN服务器,在这种情况下,则日志信息为SVN日志信息。
另外,在具体实施过程中,待测试代码可以仅仅包含内容发生变化的代码,也可以还包含一些其他代码,本发明实施例不作限制。
步骤S101中,函数指的是一段预处理好的程序,能完成特定的功能,在函数写好之后,就可以在代码中被调用,进而不需要在代码中将函数重新再写一遍,待测试代码中所包含的M个函数指的是被待测试代码所调用的M个函数。
步骤S101中,可以通过多种方式获得待测试代码所包含的M个函数,下面列举其中的两种进行介绍,当然,在具体实施过程中,不限于以下两种情况。
获取待测试代码所包含的M个函数的第一种方式,具体包括:获取待测试代码的第一路径信息;获取到路径信息为第一路径信息的M个函数。
举例来说,从日志信息中的变更文件信息中就可以确定出待测试代码所对应的第一路径信息;然后将第一路径信息与函数管理系统20中的每个函数的路径信息进行匹配,如果匹配成功,则说明匹配成功的函数位于待测试代码中,进而就可以确定出M个函数。
获取待测试代码所包含的M个函数的第二种方式,具体包括:在待测试代码中遍历获得M段满足预设格式的代码,这M段代码即对应M个函数。
通常情况下,函数都满足预设格式,以该代码为C语言编写的代码为例,则函数会包含以下格式:
函数类型函数名称(参数列表)
故而,通过预设格式在待测试代码中遍历也可以获得M个函数。
步骤S102中,确定与M个函数存在调用关系的N个函数,具体为:确定与M个函数中的任意一个函数存在直接或间接调用关系的N个函数。
以M个函数中的函数A为例,则首先通过函数A的函数被调关系确定出直接调用函数A的函数,假设为函数B、C;然后再确定出间接调用函数A的函数,首先确定出直接调用函数B、C的函数,其中,假设不存在调用函数B的函数,而函数D、E直接调用函数C,则接着再确定出直接调用函数D、E的函数,依此类推。
作为一种可选的实施例,在确定与M个函数中的任意一个函数存在直接或间接调用关系的N个函数时,本发明实施例所述方法还包括:确定M个函数和N个函数的脉络关系,脉络关系表征M个函数和N个函数之间的调用关系。
举例来说,在确定直接或间接调用函数A的函数时,还可以确定出对应的脉络信息,该脉络信息能够表征调用函数A的多个函数之间的调用关系,其中脉络关系可以通过脉络图表示,也可以通过文字方式表示,如图3所示,为函数A的脉络信息的脉络图,从图3可以看出,其包含三条脉络,分别为:
①A→B
②A→C→D→A
③A→C→E
而如果通过文字方式表示,则可以为:函数A被函数B或函数C调用,函数C被函数D或函数E调用,函数D被函数A调用,其中,函数A位于第一层级,函数B、C位于第二层级,函数D、E位于第三层级等等,当然在通过文字方式表示时,也可以通过上面的脉络方式表示,对于采用何种方式表示脉络信息,本发明实施例不再详细列举,并且不作限制。
由图3所示的脉络图可知,函数A位于待测试代码,而函数A直接影响到函数B、C,间接影响到函数D、E,故而函数A涉及到的模块或文件,以及函数B、C、D、E涉及到的模块或文件都可能需要重点关注进行测试。
其中,在类推过程中,如果遇到下面两种情况,则针对对应函数的类推结束:
①如果类推至某个函数时,不存在其他函数调用该函数,则针对该函数的类推结束,例如:在上述类推过程中,在第①条脉络中,在类推至函数B之后,不存在调用函数B的函数,则针对函数B的类推结束;在第③条脉络中,在类推至函数E之后,不存在调用函数E的函数,故而针对函数E的类推结束。
②若在脉络信息所包含的至少一条脉络的第一脉络中,第一函数出现第二次,则停止继续获取第一脉络上所对应的函数。例如,在上述脉络图中,第②条脉络中,函数A出现了两次,如果继续获取调用函数A的函数的话,则会出现死循环,为了防止这种情况,则停止搜索获得第②条脉络中的函数。
在上述方案中,如果M为大于1的整数的话,针对M个函数中的每个函数都会存在一个脉络信息,进而可以确定出M个脉络信息,这M个脉络信息表征M个函数和N个函数之间的调用关系。
步骤S103中,可以通过多种方式确定出测试范围,下面列举其中的两种方式进行介绍,当然,在具体实施过程中,不限于以下两种情况。
步骤S103基于待测试代码、M个函数和N个函数确定测试范围的第一种方式,具体包括:
步骤S401:从M个函数和N个函数中确定出L个函数,L为不大于M与N之和的正整数;
步骤S402:将待测试代码和包含有L个函数的至少一个函数的文件和/或模块所对应的代码作为测试范围。
步骤S401中,又可以通过多种方式从M个函数和N个函数中确定出L个函数,下面列举其中的两种进行介绍,当然,在具体实施过程中,不限于以下两种情况。
第一种情况:从M个函数和N个函数中确定出L个函数,请参考图5,具体包括:
步骤S501:确定M个函数和N个函数的脉络信息,脉络信息表征M个函数和N个函数之间的调用关系;
步骤S502:将脉络信息提供给测试人员;
步骤S503:响应测试人员基于脉络信息的选择操作,进而确定出L个函数。
步骤S501中,脉络信息例如图3所示,其中通过该脉络信息能够表征各个函数之间的调用关系,例如:函数B、函数C为直接调用函数A的函数,而函数D、E、A则是间接调用函数A的函数等等。
步骤S502中,可以将脉络信息对应的脉络图、或者脉络信息直接显示到测试人员的显示单元,进而将脉络信息提供给测试人员。
步骤S503中,测试人员可以根据需要选择出L个函数,例如:为了提高测试速率,则测试人员可以仅仅选择M个函数以及直接调用M个函数的其他函数作为L个函数,为了保证测试范围更加全面,则测试人员可以选择M个函数以及N个函数的总和作为L个函数,当然,测试人员还可以基于其他原则选择L个函数,对此本发明实施例不再详细列举,并且不作限制。
第二种情况从M个函数和N个函数中确定出L个函数,具体为:系统直接确定L个函数的范围,而不需要测试人员手动选择。
在这种情况下,又可以通过多种方式确定出L个函数,其中一种可选的实施例为,将M个函数和L个函数全部作为L个函数,在这种情况下,所确定的测试范围更加广泛;另一种可选的实施例为,确定M个函数和N个函数的脉络关系,脉络关系表征M个函数和N个函数之间的调用关系;以及确定出脉络关系中层级位于前S级的函数作为L个函数,S为大于1的正整数,以图3所示的脉络关系为例,则函数A位于第一层级,函数B、C位于第二层级,函数D、E位于第三层级,S可以根据实际需求进行设定,例如:2、3等等,其中,如果S等于2,则是获取位于第一层级、第二层级的函数(也即函数A、B、C)作为L个函数;如果S等于3,则是获取位于第一层级至第三层级的函数(也即函数A、B、C、D、E)作为L个函数等等。
步骤S402中,通常情况下,一个工程项目中可以包含多个模块,而每个模块又可以包含多个文件,在基于L个函数确定测试范围时,为了节省测试时间,可以选择包含L个函数中的任一函数的所有文件的代码作为测试范围;而为了保证测试的准确性,则可以选择包含L个函数中的任一函数的所有模块的代码作为测试范围。另外,也可以针对L个函数中的L1函数,选择包含其中任一函数的所有模块作为测试范围,针对L个函数中的其他L2个函数,则选择包含其中任一函数的所有文件作为测试范围等等,其中,L等于L1与L2之和,对于如何基于L个函数确定出测试范围,本发明实施例不再详细列举,并且不作限制。
步骤S103基于待测试代码、M个函数和N个函数确定测试范围的第二种方式,具体包括:
确定包含M个函数和N个函数中的任意一个函数的全部或部分模块和/或文件;
将待测试代码以及上步骤确定的全部或部分模块和/或文件作为测试范围。
具体来讲,也就是在确定测试范围时,会考虑M个函数和N个函数中的所有函数或部分函数;其中,在确定测试范围时,考虑M个函数和N个函数中的所有函数,基于M个函数和N个函数确定出对应的全部模块和/或文件的方式,与通过L个函数确定出对应的模块和/或文件的方式类似,故而在此不再赘述,在这种情况下,确定出的测试范围与将M与N个函数全部作为L个函数所确定出的测试范围相同。
作为进一步的优选实施例,在步骤S103基于待测试代码、M个函数和N个函数确定测试范围之后,方法还可以包括:
对测试范围所包含的代码进行测试。
在具体实施过程中,通过Web页面,相关人可以查看到函数列表及代码变更列表。测试人员也可以查看到某个变更日志影响的范围信息(也即测试范围),包含了由于函数调用受到影响的文件列表和/或模块列表,如图6所示。测试人员在获得对应的测试范围之后,就可以进行对应的测试,无需担心测试范围的遗漏,同时还节省了验证全部功能的时间。
为了使本领域所属技术人员能够进一步地了解本发明实施例所介绍的测试范围确定方法,下面将以该方法在具体实施过程中的应用对其进行介绍,当然,以下实施例仅仅为举例,并不作为限制。
实施例一
本实施例中以该测试范围确定方法应用于SVN(Subversion)系统为例进行介绍,请参考图7,该测试范围确定方法包括以下步骤:
步骤S701:预先通过函数分析工具导入函数关系信息,每个函数的函数关系信息可以包括:函数的路径信息、函数名、函数调用信息、函数被调信息、函数源码、函数行数等信息。
步骤S702:通过SVN日志工具从SVN服务器导入SVN日志信息,每个日志信息可以包括:提交人、提交时间、备注信息、提交版本、变更文件信息等信息,其中变更文件信息又可以包括:文件名、路径信息、修改类型,当然,在实际应用中,也可以通过其他日志分析工具导入其他日志信息,本发明实施例不作限制。
步骤S703:从日志信息中提取出内容发生变化的代码作为待测试代码;
步骤S704:从待测试代码中确定出M个函数,以及直接或间接调用M个函数的N个函数;
步骤S705:构建这M个函数和N个函数的脉络图,通过该脉络图可以包含M个函数和N个函数之间的调用关系;
步骤S706:将该脉络图显示于测试人员的显示单元;
步骤S707:响应测试人员的选择操作,从M个函数和N个函数选择出L个函数,另外,在具体实施过程中,也可以由系统自动从M个函数以及N各函数中选择出L个函数;
步骤S708:确定包含L个函数中的至少一个函数的所有文件(或者模块),并将这些文件(或者模块)以及待测试代码作为测试范围。
实施例二
本实施例中基于该测试范围确定方法的系统框图对该测试范围确定方法进行介绍,请参考图8,该系统包括以下结构:
SVN服务器80,SVN服务器80中存储有工程项目的项目代码,并且开发人员会将修改的代码提交到SVN服务器80,基于开发人员提交的代码,就会在SVN服务器80生成对应的日志信息;
配置系统81,用于存储配置信息,配置信息例如为:测试人员信息。
函数管理系统82,用于获取函数分析工具所提取的函数关系信息,函数关系信息中可以包括:函数的路径信息、函数名、函数调用信息、函数被调信息、函数源码、函数行数等信息;
SVN变更管理系统83,用于接收SVN日志分析工具所获取的日志信息,每个日志信息中可以包括:提交人、提交时间、备注信息、提交版本、变更文件信息等信息,其中变更文件信息又可以包括:文件名、路径信息、修改类型。
其中,SVN变更管理系统83基于日志信息和函数关系信息,就可以确定出测试范围,然后将其提供给测试人员。
第二方面,基于同一发明构思,本发明实施例提供一种测试范围确定装置,请参考图9,包括:
获取模块90,用于获取待测试代码所包含的M个函数,M为正整数;
第一确定模块91,用于确定与所述M个函数存在调用关系的N个函数,N为正整数;
第二确定模块92,用于基于所述待测试代码、所述M个函数和所述N个函数确定测试范围。
可选的,所述获取模块90,具体包括:
第一获取单元,用于获取所述待测试代码的第一路径信息;
第二获取单元,用于获取到路径信息为所述第一路径信息的所述M个函数。
可选的,所述第二确定模块92,具体包括:
第一确定单元,用于从所述M个函数和所述N个函数中确定出L个函数,L为不大于M与N之和的正整数;
第二确定单元,用于将所述待测试代码和包含有所述L个函数的至少一个函数的文件和/或模块所对应的代码作为所述测试范围。
可选的,所述第一确定模块91,具体用于:
确定与所述M个函数中的任意一个函数存在直接或间接调用关系的N个函数。
可选的,所述第一确定模块91,具体包括:
第三确定单元,用于确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;
停止单元,用于若在所述脉络信息所包含的至少一条脉络的第一脉络中,第一函数出现第二次,则停止继续获取所述第一脉络上所对应的函数。
可选的,所述第一确定单元,具体用于:
将所述M个函数和所述N个函数全部作为所述L个函数;或
确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;以及确定出所述脉络关系中层级位于前S级的函数作为所述L个函数,S为大于1的正整数。
可选的,所述装置还包括:
测试模块,用于在基于所述待测试代码、所述M个函数和所述N个函数确定测试范围之后,对所述测试范围所包含的代码进行测试。
可选的,所述装置还包括:
导入模块,用于在获取待测试代码所包含的M个函数之前,通过日志分析工具从版本控制服务器导入日志信息;
提取模块,用于从所述日志信息中提取出内容发生变化的代码作为所述待测试代码。
由于本发明实施例第二方面所介绍的装置,为实施本发明实施例第一方面所介绍的测试范围确定方法所采用的装置,基于本发明实施例第一方面所介绍的测试范围确定方法,本领域所属技术人员能够了解本发明实施例所介绍的测试范围确定装置的具体结构及变形,故而在此对于该装置不再赘述,凡是实施本发明实施例所介绍的测试范围确定方法所采用的装置都属于本发明实施例所欲保护的范围。
本发明一个或多个实施例,至少具有以下有益效果:
由于在本发明实施例中,首先获取待测试代码所包含的M个函数,M为正整数;然后确定与M个函数存在调用关系的N个函数,N为正整数;最后基于待测试代码、M个函数和N个函数确定测试范围。也就是在确定测试范围时,不仅考虑待测试代码,还要考虑待测试代码所包含的函数的影响范围,从而达到了提高所确定的测试范围的准确性的技术效果;
并且,该方案还能够防止由于底层函数变化,影响上层其他函数,而人工方式无法发现这些问题,从而导致测试范围的遗漏,另外,也能够防止所确定的测试范围过大,从而还能够提高确定测试范围的时间。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的嵌入式控制器以产生一个机器,使得通过计算机或其他可编程数据处理设备的嵌入式控制器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种测试范围确定方法,其特征在于,包括:
获取待测试代码所包含的M个函数,M为正整数;
确定与所述M个函数存在调用关系的N个函数,N为正整数;
基于所述待测试代码、所述M个函数和所述N个函数确定测试范围。
2.如权利要求1所述的方法,其特征在于,所述获取待测试代码所包含的M个函数,具体包括:
获取所述待测试代码的第一路径信息;
获取到路径信息为所述第一路径信息的所述M个函数。
3.如权利要求1所述的方法,所述基于所述待测试代码、所述M个函数和所述N个函数确定测试范围,具体包括:
从所述M个函数和所述N个函数中确定出L个函数,L为不大于M与N之和的正整数;
将所述待测试代码和包含有所述L个函数的至少一个函数的文件和/或模块所对应的代码作为所述测试范围。
4.如权利要求1所述的方法,其特征在于,所述确定与所述M个函数存在调用关系的N个函数,具体为:
确定与所述M个函数中的任意一个函数存在直接或间接调用关系的N个函数。
5.如权利要求4所述的方法,其特征在于,在所述确定与所述M个函数中的任意一个函数存在直接或间接调用关系的N个函数时,所述方法还包括:
确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;
若在所述脉络信息所包含的至少一条脉络的第一脉络中,第一函数出现第二次,则停止继续获取所述第一脉络上所对应的函数。
6.如权利要求3所述的方法,其特征在于,所述从所述M个函数和所述N个函数中确定出L个函数,具体包括:
将所述M个函数和所述N个函数全部作为所述L个函数;或
确定所述M个函数和所述N个函数的脉络关系,所述脉络关系表征所述M个函数和所述N个函数之间的调用关系;以及确定出所述脉络关系中层级位于前S级的函数作为所述L个函数,S为大于1的正整数。
7.如权利要求1-6任一所述的方法,其特征在于,在所述基于所述待测试代码、所述M个函数和所述N个函数确定测试范围之后,所述方法还包括:
对所述测试范围所包含的代码进行测试。
8.如权利要求1-6任一所述的方法,其特征在于,在所述获取待测试代码所包含的M个函数之前,所述方法还包括:
通过日志分析工具从版本控制服务器导入日志信息;
从所述日志信息中提取出内容发生变化的代码作为所述待测试代码。
9.一种测试范围确定装置,其特征在于,包括:
获取模块,用于获取待测试代码所包含的M个函数,M为正整数;
第一确定模块,用于确定与所述M个函数存在调用关系的N个函数,N为正整数;
第二确定模块,用于基于所述待测试代码、所述M个函数和所述N个函数确定测试范围。
10.如权利要求9所述的装置,其特征在于,所述获取模块,具体包括:
第一获取单元,用于获取所述待测试代码的第一路径信息;
第二获取单元,用于获取到路径信息为所述第一路径信息的所述M个函数。
CN201510432313.9A 2015-07-21 2015-07-21 一种测试范围确定方法及装置 Pending CN106354625A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510432313.9A CN106354625A (zh) 2015-07-21 2015-07-21 一种测试范围确定方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510432313.9A CN106354625A (zh) 2015-07-21 2015-07-21 一种测试范围确定方法及装置

Publications (1)

Publication Number Publication Date
CN106354625A true CN106354625A (zh) 2017-01-25

Family

ID=57843172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510432313.9A Pending CN106354625A (zh) 2015-07-21 2015-07-21 一种测试范围确定方法及装置

Country Status (1)

Country Link
CN (1) CN106354625A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107015841A (zh) * 2017-03-31 2017-08-04 腾讯科技(深圳)有限公司 一种程序编译的预处理方法及程序编译设备
CN107818419A (zh) * 2017-11-03 2018-03-20 中国银行股份有限公司 一种功能测试范围的确定方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176895A (zh) * 2011-12-22 2013-06-26 阿里巴巴集团控股有限公司 一种回归测试方法和系统
CN103186463A (zh) * 2011-12-30 2013-07-03 阿里巴巴集团控股有限公司 确定软件的测试范围的方法和系统
CN103309801A (zh) * 2012-03-15 2013-09-18 百度在线网络技术(北京)有限公司 一种确定回归测试范围的方法和装置
CN103678097A (zh) * 2012-09-05 2014-03-26 百度在线网络技术(北京)有限公司 一种选择回归测试用例的方法和装置
CN103699488A (zh) * 2013-12-30 2014-04-02 优视科技有限公司 基于调用关系依赖图的回归测试方法及系统
CN103955429A (zh) * 2014-05-16 2014-07-30 北京金山网络科技有限公司 确定回归测试范围的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176895A (zh) * 2011-12-22 2013-06-26 阿里巴巴集团控股有限公司 一种回归测试方法和系统
CN103186463A (zh) * 2011-12-30 2013-07-03 阿里巴巴集团控股有限公司 确定软件的测试范围的方法和系统
CN103309801A (zh) * 2012-03-15 2013-09-18 百度在线网络技术(北京)有限公司 一种确定回归测试范围的方法和装置
CN103678097A (zh) * 2012-09-05 2014-03-26 百度在线网络技术(北京)有限公司 一种选择回归测试用例的方法和装置
CN103699488A (zh) * 2013-12-30 2014-04-02 优视科技有限公司 基于调用关系依赖图的回归测试方法及系统
CN103955429A (zh) * 2014-05-16 2014-07-30 北京金山网络科技有限公司 确定回归测试范围的方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107015841A (zh) * 2017-03-31 2017-08-04 腾讯科技(深圳)有限公司 一种程序编译的预处理方法及程序编译设备
CN107818419A (zh) * 2017-11-03 2018-03-20 中国银行股份有限公司 一种功能测试范围的确定方法及装置
CN107818419B (zh) * 2017-11-03 2021-08-10 中国银行股份有限公司 一种功能测试范围的确定方法及装置

Similar Documents

Publication Publication Date Title
Amparore et al. 30 years of GreatSPN
US7340475B2 (en) Evaluating dynamic expressions in a modeling application
CN107957957A (zh) 测试用例的获取方法和装置
CN106662986B (zh) 优化的浏览器渲染过程
CN106484606A (zh) 一种代码提交方法和设备
US11347492B2 (en) Software deployment control using blockchain
CN108897571B (zh) 程序打包部署方法、装置、系统、电子设备及存储介质
CN103425584A (zh) 基于Java字节码的大型应用回归测试信息处理方法
CN105446874A (zh) 一种资源配置文件的检测方法和装置
US9524366B1 (en) Annotations to identify objects in design generated by high level synthesis (HLS)
CN103309806A (zh) 一种快速开发测试的装置及方法
CN110019642A (zh) 一种相似文本检测方法及装置
US20150018060A1 (en) System and method for decision making in strategic environments
CN103955429B (zh) 确定回归测试范围的方法及装置
CN110019660A (zh) 一种相似文本检测方法及装置
CN109739526A (zh) 代码更新方法和装置
CN108595313A (zh) 应用程序的日志生成方法、装置、电子设备及存储介质
CN111026664B (zh) 基于ann的程序检测方法和检测系统及应用
Pourbafrani et al. SIMPT: process improvement using interactive simulation of time-aware process trees
CN103065000A (zh) 一种基于模型驱动工程进行SysML状态机图分析验证的方法
CN113434542B (zh) 数据关系识别方法、装置、电子设备及存储介质
CN106354625A (zh) 一种测试范围确定方法及装置
US20180137036A1 (en) Determining potential test actions
CN104104659A (zh) 一种通信指纹的提取方法以及装置
CN104166541A (zh) 用于更新被测控件库的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170125

RJ01 Rejection of invention patent application after publication