CN115292197A - 一种软件测试方法、装置、电子设备及存储介质 - Google Patents
一种软件测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115292197A CN115292197A CN202211089860.8A CN202211089860A CN115292197A CN 115292197 A CN115292197 A CN 115292197A CN 202211089860 A CN202211089860 A CN 202211089860A CN 115292197 A CN115292197 A CN 115292197A
- Authority
- CN
- China
- Prior art keywords
- code
- software
- interface
- testing
- test case
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种软件测试方法、装置、电子设备及存储介质,涉及数据处理技术领域,具体方案为:获得待测试软件中的更新代码能够影响到的变动接口,将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例,使用各目标测试用例对所述待测试软件进行测试。应用本发明实施例提供的方案,能够提高软件测试的代码覆盖率。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种软件测试方法、装置、电子设备及存储介质。
背景技术
为了满足用户复杂的需求,软件开发人员需要不断对软件的代码进行完善更新。为减少用户使用软件过程中出现的问题,软件开发人员对软件的代码进行更新后,需要对软件进行测试。
当前对软件进行测试时,主要针对软件中更新的代码进行测试,由于一个软件中集成有用于实现各种功能的代码,这样易导致软件测试的代码覆盖率较低。
发明内容
本发明实施例的目的在于提供一种软件测试方法、装置、电子设备及存储介质,以在软件测试中能够提高软件测试的代码覆盖率。具体技术方案如下:
根据本发明实施例的一方面,提供了一种软件测试方法,所述方法包括:
获得待测试软件中的更新代码能够影响到的变动接口;
将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例;
使用各目标测试用例对所述待测试软件进行测试。
本发明的一个实施例中,在所述将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例之后,还包括:
确定变动接口中不存在目标测试用例的接口,作为新增接口;
获得覆盖所述新增接口的新增测试用例;
使用所述新增测试用例对所述待测试软件进行测试。
本发明的一个实施例中,所述方法还包括:
在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测,并确定所述更新代码中的未覆盖测试代码段;
获得所述未覆盖测试代码段能够影响到的接口,作为新的变动接口;
根据所述新的变动接口,获得能够覆盖上述新的变动接口的完善测试用例;
使用所述完善测试用例对所述待测试软件进行测试,返回所述在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测的步骤,直至所述更新代码中不存在未覆盖测试的代码段。
本发明的一个实施例中,所述方法还包括:
获得为所述待测试软件更新所述更新代码的更新需求;
检测对所述待测试软件进行测试使用的测试用例的测试功能是否覆盖所述更新需求;
若为否,针对所述更新需求中未被覆盖的需求,获得补充测试用例;
使用所述补充测试用例对所述待测试软件进行测试。
本发明的一个实施例中,所述获得待测试软件中的更新代码能够影响到的变动接口,包括:
确定所述更新代码所属的第一代码单元;
获得由第一代码单元和第二代码单元确定的单元调用链路,其中,所述第二代码单元为:与所确定的第一代码单元存在调用或者被调用关系的代码单元;
遍历所述待测试软件的代码,确定使用所述单元调用链路中的代码单元实现的接口,作为变动接口。
根据本发明实施例的另一方面,提供了一种软件测试装置,所述装置包括:
接口获得模块,用于获得待测试软件中的更新代码能够影响到的变动接口;
测试用例确定模块,用于将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例;
第一软件测试模块,用于使用各目标测试用例对所述待测试软件进行测试。
本发明的一个实施例中,所述装置还包括:
接口确定模块,用于确定变动接口中不存在目标测试用例的接口,作为新增接口;
新增测试用例获得模块,用于获得覆盖所述新增接口的新增测试用例;
第二软件测试模块,用于使用所述新增测试用例对所述待测试软件进行测试。
本发明的一个实施例中,所述装置还包括:
代码覆盖检测模块,用于在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测,并确定所述更新代码中的未覆盖测试代码段;
新的变动接口获得模块,用于获得所述未覆盖测试代码段能够影响到的接口,作为新的变动接口;
完善测试用例获得模块,用于根据所述新的变动接口,获得能够覆盖上述新的变动接口的完善测试用例;
第三软件测试模块,用于使用所述完善测试用例对所述待测试软件进行测试,触发所述代码覆盖检测模块,直至所述更新代码中不存在未覆盖测试的代码段。
根据本发明实施例的另一方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述实施例中任一软件测试方法步骤。
根据本发明实施例的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一软件测试方法步骤。
根据本发明实施例的另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一软件测试方法步骤。
本发明实施例有益效果:
使用的测试用例为覆盖变动接口的测试用例,由于更新代码为待测试软件中发生更新的代码,这些代码更新可能会影响到一些接口对应的软件功能,这些接口是更新代码中影响的接口,因此,使用上述测试用例对待测试软件进行测试时,能够覆盖到与更新代码相关的接口,进而也就能够使得测试过程覆盖到与上述接口相关的代码,能够覆盖到更新代码本身。从而应用本发明实施例提供的方案进行软件测试,能够提高软件测试过程中代码的覆盖率。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例提供的一种软件测试方法的流程示意图;
图2为本发明实施例提供的一种获得变动接口方法的流程示意图;
图3为本发明实施例提供的一种调用关系示意图;
图4为本发明实施例提供的另一种软件测试方法的流程示意图;
图5为本发明实施例提供的再一种软件测试方法的流程示意图;
图6为本发明实施例提供的一种软件测试装置的结构示意图;
图7为本发明实施例提供的另一种软件测试装置的结构示意图;
图8为本发明实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
由于现有技术中存在软件测试过程中代码覆盖率低的技术问题,为解决这一技术问题,本发明实施例提供了一种软件测试方法、装置、电子设备及存储介质,下面分别进行详细说明。
参见图1,图1提供了一种软件测试方法的流程示意图,上述方法包括以下步骤S101-S103。
步骤S101:获得待测试软件中的更新代码能够影响到的变动接口。
更新代码是指待测试软件中发生了更新的代码,具体的,可以是新增的代码、删除的代码,还可以是被修改了的代码。
待测试软件中的代码可以通过不同的方式确定,一种实现方式中,可以通过代码管理软件确定,代码管理软件可以对待测试软件的测试版本和基准版本进行对比,从而确定待测试软件中的更新代码。另一种实现方式中,软件开发人员在完成待测试软件的版本升级之后,可以手动标注出待测试软件中的更新代码,这种情况下,测试设备可以根据软件开发人员的标注信息确定出待测试软件中的更新代码。
待测试软件中一般包含很多段代码,与此相对应的,上述更新代码中可能包含多个代码段,当然,也可能仅包含一个代码段,本发明实施例并不对此进行限定。
对于一个代码段而言,其可以存在用于实现一定软件功能的接口,另外,还有可能该代码段需要调用其他接口,在其他接口所实现软件功能的基础上,实现自己的软件功能。
鉴于上述情况,上述更新代码能够影响到的接口包括更新代码实现的接口以及和更新代码实现的接口存在调用与被调用关系的接口,为便于表述,将上述接口称为变动接口。
获得变动接口的具体实现方式可以参见后续实施例,这里暂不详述。
需要说明的是,待测试软件中可以存在多段更新代码,对于每一段更新代码而言,进行软件测试的过程是相同的,因此,本发明实施例中以一段更新代码为例进行的描述。当待测试软件中存在多段更新代码时,仅仅是使用一段更新代码进行软件测试的多次重复。
步骤S102:将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例。
已有测试用例可以包括在对软件各个历史版本进行测试的过程中编写并保存的测试用例,也可以包括针对当前版本的更新需求和更新功能编写新的测试用例,还可以包括针对各种软件共同点设计的通用测试用例。
已有测试用例可以针对待测试软件中的各个逻辑分支进行设计,这样可以确定已有测试用例理论上需要覆盖的逻辑分支覆盖的接口,从而得到接口列表,也就是,得到各个已有测试用例能够覆盖的接口列表。
一种实现方式中,基于上述接口列表,将各个变动接口依次与各个已有测试用例所覆盖的接口进行比对,从而从已有测试用例中确定出覆盖至少一个上述变动接口的测试用例,作为目标测试用例。
在遍历各个变动接口的过程中,若不同的变动接口命中同一个测试用例,可以在目标测试用例中不重复保留测试用例,这样能够有效保证目标测试用例中各个测试用例不同。
步骤S103:使用各目标测试用例对上述待测试软件进行测试。
测试用例可以对软件的一个或者多个功能进行测试,使用测试用例对软件进行测试后,能够通过获得软件的测试结果,然后,可以对测试结果进行分析,判断本次测试中软件有没有出现问题,进一步的也可以分析出软件中的哪一功能出现问题。
具体的,在使用各目标测试用例对待测试软件进行测试时,可以将各目标测试用例中包含的内容作为待测试软件的输入信息输入待测试软件,并在待测试软件上模拟目标测试用例中记录的动作,使得待测试软件在所输入信息的基础上,按照上述动作运动,从而使得测试结果。
例如,假设,待测试软件设置有用户登录功能和用户信息查询功能,在用户成功登录后可以查看自身的信息。那么,目标测试用例1的内容可以包括:用户1的账户和密码,动作是请求用户1的信息。如果在使用目标测试用例1对待测试软件进行测试时,将用户1的账户和密码输入待测试软件,并在待测试软件上模拟请求用户1的信息这一动作,待测试软件登录用户1的账号,并按照既定流程查询用户1的信息。若待测试软件返回了用户1的信息,表明待测试软件的用户登录功能以及用户信息查询功能没有问题。如果使用目标测试用例1对待测试软件进行测试后,待测试软件未能成功查询到用户1的信息,则表明待测试软件的用户登录功能或者用户信息查询功能存在问题。
由以上可见,使用的测试用例为覆盖变动接口的测试用例,由于更新代码为待测试软件中发生更新的代码,这些代码更新可能会影响到一些接口对应的软件功能,这些接口可能是更新代码影响的接口,因此,使用上述测试用例对待测试软件进行测试时,能够覆盖到与更新代码相关的接口,进而也就能够使得测试过程覆盖到与上述接口相关的代码,能够覆盖到更新代码本身。从而应用本发明实施例提供的方案进行软件测试,能够提高软件测试过程中代码的覆盖率。
本发明的一个实施例中,在上述实施例的基础上,本方法还包括下面的步骤A-C。
步骤A:确定变动接口中不存在目标测试用例的接口,作为新增接口。
更新代码不一定只是对待测试软件的代码中原有的代码进行修改,也可能包括新增加的代码。不论是修改代码还是新增代码都可能会提供新的接口。由于新增接口是在新的软件版本中出现的,所以曾经使用过的测试用例很难覆盖到新增接口。
一种实现方式中,从前面步骤S102处的描述可以看到,可以通过变动接口对比的方式确定出目标测试用例,在此基础上,依次将变动接口与各个已有测试用例覆盖的接口进行对比的过程中,若各个已有测试用例覆盖的接口中均不包含某一变动接口,则可以将该变动接口确定为新增接口。这样通过一次对变动接口的循环遍历,不仅能够确定出目标测试用例,还能够确定出新增接口,简化了过程,节省了计算量。
步骤B:获得覆盖上述新增接口的新增测试用例。
可以将确定得到的新增接口列表发送给员工的客户端并进行提示,获得由员工针对新增接口设计的新增测试用例。也可以从其他的测试用例中查找包含新增接口的新增测试用例。
步骤C:使用上述新增测试用例对上述待测试软件进行测试。
本步骤与前述步骤S103相类似,区别仅在于新增测试用例和目标测试用例不同,因此,这里不再详述。
可见上述实施例提供的方案中,对新增接口进行了检测,并获得了覆盖新增接口的测试用例,这样,可以有效保证新增的接口在测试过程中能够被覆盖到,另外,新增测试用例的引入丰富了测试用例,使得软件测试的代码覆盖率得以提高。
参见图2,图2提供了一种获得变动接口方法的流程示意图,上述方法包括以下步骤S201-S203。
步骤S201:确定上述更新代码所属的第一代码单元。
为了便于开发人员编写代码,不同的开发语言中定义了不同的代码单元,例如,包、类、方法等。
每一代码单元一般包括一段或多段代码,不同的代码单元之间可以存在调用与被调用关系。
更新代码也可以包含一段或者多段代码,各段代码归属于不同的代码单元。在确定更新代码后,可以按照更新代码中各段代码属于的代码单元,确定出上述第一代码单元。
具体的,确定各段代码属于的代码单元时,可以根据各段代码在代码中与各个代码单元之间的位置关系、语法关系、关键字等等确定。
步骤S202:获得由第一代码单元和第二代码单元确定的单元调用链路。
其中,上述第二代码单元为:与所确定的第一代码单元存在调用或者被调用关系的代码单元。
代码单元之间存在调用与被调用的关系。有时需要第一代码单元调用多个第二代码单元来实现第一代码单元的功能,而该功能又可能被其他第二代码单元调用,这时就会出现上下层的调用关系,多个调用关系和多层调用关系能够连成与第一代码单元相关的一组调用链路。
一种实现方式中,得到第一代码单元后,根据第一代码单元的名称、第一代码单元中的函数,在待测试软件代码中查找出各个第一代码单元与第二代码单元的调用或者被调用关系。再根据第二代码单元名称和第二代码单元中的函数,查找上述第二代码单元与其他代码单元的调用或者被调用关系。以此类推,找出与第一代码单元存在直接或者间接调用关系的第二代码单元。依据各个调用关系的顺序,将各个调用关系排列组合连接成调用链路,得到与第一代码单元相关的一组调用链路。
比如,如图3所示,图3提供了一种调用关系示意图,在图3中箭头指向被调用的代码单元,箭头上是各个调用关系的名称。首先,根据第一代码单元的名称、第一代码单元中的的函数,查找到第一代码单元调用了代码单元C和代码单元D,在待测试软件代码中又查找到代码单元E与代码单元F调用了第一代码单元。那么这时,代码单元C、代码单元D、代码单元E和代码单元F都是与所确定的第一代码单元存在调用或者被调用关系的代码单元,也就是第二代码单元。再根据第二代码单元名称和第二代码单元中的函数,查找上述第二代码单元与其他代码单元的调用或者被调用关系,这时得到代码单元A、代码单元B、代码单元G和代码单元H都为上述其他代码单元,其中,代码单元A和代码单元B被代码单元C所调用,代码单元G调用代码单元E,代码单元H调用代码单元F。以此类推,还发现代码单元I与代码单元G存在调用关系,且代码单元I、代码单元H、代码单元D、代码单元A和代码单元B都不与上述代码单元之外的代码单元存在调用关系时,完成寻找调用关系。
得到调用关系后,遍历符合调用关系所表明的顺序的各个调用链路,获得调用链路。调用关系不能随机组合,需要符合原有的先后调用顺序,然后遍历查找出所有调用链路。比如,调用关系1-3-4-5-7-9组成一条完整调用链路,调用关系2-3-4-5-7-9组成与上述调用链路不同的另一条调用链路。这样得到与第一代码单元相关的一组调用链路。
步骤S203:遍历上述待测试软件的代码,确定使用上述单元调用链路中的代码单元实现的接口,作为变动接口。
一种实现方式中,使用调用链路中表明的代码单元以及调用链路中的信息,遍历待测试软件代码确定得到变动接口。
在上述获得变动接口方法的步骤中,可以分别针对每段更新代码分别逐个确定变动接口,得到每段更新代码对应的各组变动接口,再将每组变动接口取并集作为上述变动接口。
由以上可见,通过更新代码所属的第一代码单元,来确定与第一代码单元存在调用与被调用关系的第二代码单元,通过上述调用与被调用关系确定得到的调用链路,能够更全面的表明可能被第一代码单元影响的变动接口,使用上述调用链路确定得到的变动接口更加全面。
参见图4,图4提供了另一种软件测试方法的流程示意图,上述方法在图1的基础上还包括以下步骤S104-S107。
步骤S104:在对上述待测试软件进行测试的过程中,对上述更新代码进行代码覆盖检测,并确定上述更新代码中的未覆盖测试代码段。
代码覆盖检测可以检测出软件测试中被执行的代码和未被执行的代码。
代码覆盖率是衡量软件测试完整度的一个重要指标。在使用测试用例进行了一轮或者多轮测试之后,代码覆盖率及代码覆盖检测结果能够直观的表明测试覆盖到的代码和测试未覆盖的代码。
一种实现方式中,可以在待测试软件进行测试的过程中,使用Jacoco(一种代码覆盖检测工具),且在Jacoco的on-the-fly模式或者offline模式下,基于行覆盖、类覆盖、分支覆盖、方法覆盖、圈复杂度等方式对代码覆盖进行检测。Jacoco可以对是否被覆盖的代码以颜色来区分,标记为绿色的代码为测试覆盖到的代码,标记为红色的代码为测试未覆盖到的代码。
步骤S105:获得上述未覆盖测试代码段能够影响到的接口,作为新的变动接口。
步骤S105中获得新的变动接口的实现方式与前述步骤S101获得变动接口的方式相类似,区别仅在于未覆盖测试代码和更新代码,属于概念名称不同,因此这里不再详述。
步骤S106:根据上述新的变动接口,获得能够覆盖上述新的变动接口的完善测试用例。
步骤S106中获得完善测试用例的实现方式与上述步骤B获得新增测试用例的方式相类似,区别仅在于步骤B中是根据新增接口获得新增测试用例,而步骤S106是根据新的变动接口获得完善测试用例,属于概念名称不同,因此,这里不再详述。
步骤S107:使用上述完善测试用例对上述待测试软件进行测试,返回上述步骤S104,直至上述更新代码中不存在未覆盖测试的代码段。
步骤S107中进行测试的方式与上述步骤S103相类似,区别仅在于完善测试用例和目标测试用例不同,因此,这里不再详述。但是,在使用完善测试用例对软件进行测试后,步骤S107还要返回上述步骤S104,再次对更新代码进行代码覆盖率测试。若代码覆盖率测试表明上述更新代码中存在未覆盖测试的代码段时,则再次执行步骤S105-S107。直到上述更新代码中不存在未覆盖测试的代码段时,也就是,在测试过程中更新代码中的代码段均被覆盖到,进而完成测试。
由以上可见,应用本实施例提供的方案进行软件测试,能对更新代码进行代码覆盖测试,当更新代码中存在未覆盖测试的代码段时,多次对未覆盖代码对应的测试用例进行补充,直至上述更新代码中不存在未覆盖测试的代码段,使得软件测试中更新代码的覆盖率得以提高。
本发明的一个实施例中,上述软件测试方法还可以针对测试用例对代码更新需求覆盖是否全面进行测试。
具体的,获得为上述待测试软件更新上述更新代码的更新需求,检测对上述待测试软件进行测试使用的测试用例的测试功能是否覆盖上述更新需求,若为否,针对上述更新需求中未被覆盖的需求,获得补充测试用例,使用上述补充测试用例对上述待测试软件进行测试。
在测试用例设计时,可以针对某一项或多项功能进行设计,可以在测试用例的信息中添加测试用例的功能列表。软件开发时开发人员根据更新需求进行开发和更新,那么测试设备可以通过获得更新需求列表,将更新需求列表与测试中使用的各个测试用例的功能列表进行检测,检测功能列表中的功能是否覆盖需求列表中的需求。若未能覆盖,则将未被覆盖的需求发送给测试人员的客户端,在测试人员根据未被覆盖的需求对测试用例进行补充后,获得补充测试用例,使用上述补充测试用例对上述待测试软件进行测试。
由以上可见,通过对更新需求列表与测试中使用的各个测试用例的功能列表进行检测,减少因为代码对测试不可见导致软件测试针对更新需求、更新功能和逻辑分支的漏测问题。
参见图5,图5提供了再一种软件测试方法的流程示意图,上述方法在图1和图2的基础上还包括上述步骤S104-S107和以下步骤S108-S111。
步骤S108:确定变动接口中不存在目标测试用例的接口,作为新增接口。
步骤S109:获得覆盖上述新增接口的新增测试用例。
步骤S110:使用上述新增测试用例对上述待测试软件进行测试。
步骤S108-S110与上述步骤A-C相似,这里不再详述。
步骤S111:判断更新代码中是否存在未覆盖测试的代码段。
在步骤S104后执行步骤S111,若判断更新代码中存在未覆盖测试的代码段时,则执行步骤S105-S107,并返回步骤S104,每次返回都会根据未覆盖代码对应的新的变动接口,获得完善测试用例来对软件进行测试。若判断更新代码中不存在未覆盖测试的代码段时,则完成此次测试。
另外,上述实施例中是先根据更新代码和未覆盖代码获得变动接口、新增接口和新的变动接口,再根据变动接口、新增接口和新的变动接口获得目标测试用例、新增测试用例和完善测试用例。这样通过代码确定接口,再通过接口确定测试用例的方式能够提高获得测试用例的精准度,使得上述获得的测试用例能够更完整的覆盖更新代码,提高软件测试的代码覆盖率。
由以上可见,应用本发明实施例所提供的方案对软件进行测试,不仅针对新增接口使用新增测试用例对软件进行检测,还在测试的过程中对更新代码进行代码覆盖率测试。当存在未覆盖代码时,针对未覆盖代码,获得完善测试用例并使用完善测试用例进行软件测试,然后再次对更新代码进行代码覆盖率测试。若仍存在未覆盖代码,则重复获得完善测试用例并进行软件测试的流程直到更新代码中不存在未覆盖代码,通过反复的完善测试用和软件测试的流程,在代码覆盖率测试表明更新代码中不存在未覆盖代码时,完成测试,这样,使得更新代码在软件测试的过程中被完整覆盖,也减少了软件测试中漏测的问题。
与上述软件测试方法相对应,本发明实施例还提供了一种软件测试装置。
本发明的一个实施例中,参见图6,图6提供了一种软件测试装置的结构示意图,上述装置包括:
接口获得模块601,用于获得待测试软件中的更新代码能够影响到的变动接口;
测试用例确定模块602,用于将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例;
第一软件测试模块603,用于使用各目标测试用例对上述待测试软件进行测试。
由以上可见,使用的测试用例为覆盖变动接口的测试用例,由于更新代码为待测试软件中发生更新的代码,这些代码更新可能会影响到一些接口对应的软件功能,这些接口可能是更新代码影响的接口,因此,使用上述测试用例对待测试软件进行测试时,能够覆盖到与更新代码相关的接口,进而也就能够使得测试过程覆盖到与上述接口相关的代码,能够覆盖到更新代码本身。从而应用本发明实施例提供的方案进行软件测试,能够提高软件测试过程中代码的覆盖率。
本发明的一个实施例中,上述软件测试装置,还包括:
接口确定模块,用于确定变动接口中不存在目标测试用例的接口,作为新增接口;
新增测试用例获得模块,用于获得覆盖上述新增接口的新增测试用例;
第二软件测试模块,用于使用上述新增测试用例对上述待测试软件进行测试。
可见上述实施例提供的方案中,对新增接口进行了检测,并获得了覆盖新增接口的测试用例,这样,可以有效保证新增的接口在测试过程中能够被覆盖到,另外,新增测试用例的引入丰富了测试用例,使得软件测试的代码覆盖率得以提高。
本发明的一个实施例中,参见图7,图7提供了另一种软件测试装置的结构示意图,上述装置还包括:
代码覆盖检测模块604,用于在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测,并确定所述更新代码中的未覆盖测试代码段;
新的变动接口获得模块605,用于获得所述未覆盖测试代码段能够影响到的接口,作为新的变动接口;
完善测试用例获得模块606,用于根据所述新的变动接口,获得能够覆盖上述新的变动接口的完善测试用例;
第三软件测试模块607,用于使用所述完善测试用例对所述待测试软件进行测试,触发所述代码覆盖检测模块604,直至所述更新代码中不存在未覆盖测试的代码段。
由以上可见,应用本实施例提供的方案进行软件测试,能对更新代码进行代码覆盖测试,当更新代码中存在未覆盖测试的代码段时,多次对未覆盖代码对应的测试用例进行补充,直至上述更新代码中不存在未覆盖测试的代码段,使得软件测试中更新代码的覆盖率得以提高。
本发明的一个实施例中,上述软件测试装置,还包括:
更新需求获得模块,用于获得为上述待测试软件更新上述更新代码的更新需求;
更新需求检测模块,用于检测对上述待测试软件进行测试使用的测试用例的测试功能是否覆盖上述更新需求;
补充测试用例获得模块,用于在上述更新需求检测模块检测为否时,针对上述更新需求中未被覆盖的需求,获得补充测试用例;
第四软件测试模块,用于使用上述补充测试用例对上述待测试软件进行测试。
由以上可见,通过对更新需求列表与测试中使用的各个测试用例的功能列表进行检测,减少因为代码对测试不可见导致软件测试针对更新需求、更新功能和逻辑分支的漏测问题。
本发明的一个实施例中,上述接口获得模块601,具体用于:
确定上述更新代码所属的第一代码单元;
获得由第一代码单元和第二代码单元确定的单元调用链路,其中,上述第二代码单元为:与所确定的第一代码单元存在调用或者被调用关系的代码单元;
遍历上述待测试软件的代码,确定使用上述单元调用链路中的代码单元实现的接口,作为变动接口。
由以上可见,通过的更新代码所属的第一代码单元,来确定与第一代码单元存在调用与被调用关系的第二代码单元,通过上述调用与被调用关系确定得到的调用链路,能够更全面的表明可能被第一代码单元影响的变动接口,使用上述调用链路确定得到的变动接口更加全面。
本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现上述方法实施例中的任一软件测试方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述方法实施例中的任一软件测试方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一软件测试方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种软件测试方法,其特征在于,所述方法包括:
获得待测试软件中的更新代码能够影响到的变动接口;
将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例;
使用各目标测试用例对所述待测试软件进行测试。
2.根据权利要求1所述的方法,其特征在于,在所述将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例之后,还包括:
确定变动接口中不存在目标测试用例的接口,作为新增接口;
获得覆盖所述新增接口的新增测试用例;
使用所述新增测试用例对所述待测试软件进行测试。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测,并确定所述更新代码中的未覆盖测试代码段;
获得所述未覆盖测试代码段能够影响到的接口,作为新的变动接口;
根据所述新的变动接口,获得能够覆盖上述新的变动接口的完善测试用例;
使用所述完善测试用例对所述待测试软件进行测试,返回所述在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测的步骤,直至所述更新代码中不存在未覆盖测试的代码段。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获得为所述待测试软件更新所述更新代码的更新需求;
检测对所述待测试软件进行测试使用的测试用例的测试功能是否覆盖所述更新需求;
若为否,针对所述更新需求中未被覆盖的需求,获得补充测试用例;
使用所述补充测试用例对所述待测试软件进行测试。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述获得待测试软件中的更新代码能够影响到的变动接口,包括:
确定所述更新代码所属的第一代码单元;
获得由第一代码单元和第二代码单元确定的单元调用链路,其中,所述第二代码单元为:与所确定的第一代码单元存在调用或者被调用关系的代码单元;
遍历所述待测试软件的代码,确定使用所述单元调用链路中的代码单元实现的接口,作为变动接口。
6.一种软件测试装置,其特征在于,所述装置包括:
接口获得模块,用于获得待测试软件中的更新代码能够影响到的变动接口;
测试用例确定模块,用于将各个变动接口与已有测试用例所覆盖的接口进行比对,确定覆盖至少一个变动接口的测试用例,作为目标测试用例;
第一软件测试模块,用于使用各目标测试用例对所述待测试软件进行测试。
7.根据权利要求6所述装置,其特征在于,所述装置还包括:
接口确定模块,用于确定变动接口中不存在目标测试用例的接口,作为新增接口;
新增测试用例获得模块,用于获得覆盖所述新增接口的新增测试用例;
第二软件测试模块,用于使用所述新增测试用例对所述待测试软件进行测试。
8.根据权利要求6所述装置,其特征在于,所述装置还包括:
代码覆盖检测模块,用于在对所述待测试软件进行测试的过程中,对所述更新代码进行代码覆盖检测,并确定所述更新代码中的未覆盖测试代码段;
新的变动接口获得模块,用于获得所述未覆盖测试代码段能够影响到的接口,作为新的变动接口;
完善测试用例获得模块,用于根据所述新的变动接口,获得能够覆盖上述新的变动接口的完善测试用例;
第三软件测试模块,用于使用所述完善测试用例对所述待测试软件进行测试,触发所述代码覆盖检测模块,直至所述更新代码中不存在未覆盖测试的代码段。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211089860.8A CN115292197A (zh) | 2022-09-07 | 2022-09-07 | 一种软件测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211089860.8A CN115292197A (zh) | 2022-09-07 | 2022-09-07 | 一种软件测试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115292197A true CN115292197A (zh) | 2022-11-04 |
Family
ID=83834354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211089860.8A Pending CN115292197A (zh) | 2022-09-07 | 2022-09-07 | 一种软件测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115292197A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594918A (zh) * | 2023-07-18 | 2023-08-15 | 中邮消费金融有限公司 | 一种测试用例变更影响分析方法、装置、设备及存储介质 |
CN117112396A (zh) * | 2023-07-11 | 2023-11-24 | 海光信息技术(苏州)有限公司 | 覆盖率收集方法、组件、系统及相关设备 |
-
2022
- 2022-09-07 CN CN202211089860.8A patent/CN115292197A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112396A (zh) * | 2023-07-11 | 2023-11-24 | 海光信息技术(苏州)有限公司 | 覆盖率收集方法、组件、系统及相关设备 |
CN117112396B (zh) * | 2023-07-11 | 2024-08-16 | 海光信息技术(苏州)有限公司 | 覆盖率收集方法、组件、系统及相关设备 |
CN116594918A (zh) * | 2023-07-18 | 2023-08-15 | 中邮消费金融有限公司 | 一种测试用例变更影响分析方法、装置、设备及存储介质 |
CN116594918B (zh) * | 2023-07-18 | 2024-01-26 | 中邮消费金融有限公司 | 一种测试用例变更影响分析方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115292197A (zh) | 一种软件测试方法、装置、电子设备及存储介质 | |
CN109062794B (zh) | 一种软件测评结果的确定方法、装置及电子设备 | |
US20210073107A1 (en) | Testing source code changes | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN112199300B (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
CN108769070A (zh) | 一种越权漏洞检测方法及装置 | |
CN115033894B (zh) | 一种基于知识图谱的软件组件供应链安全检测方法及装置 | |
US10823782B2 (en) | Ensuring completeness of interface signal checking in functional verification | |
KR20180129623A (ko) | 연관된 다중 파일 정적 분석 장치 | |
CN112783760A (zh) | 测试用例的处理方法、装置和存储介质 | |
CN111352997A (zh) | 一种测试环境校验方法及系统 | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
CN111290961A (zh) | 接口测试的管理方法、装置及终端设备 | |
CN111382077A (zh) | 应用程序崩溃原因定位方法、装置、电子设备及存储介质 | |
CN109086198A (zh) | 数据库的测试方法、装置及存储介质 | |
CN112650673A (zh) | 事务跟踪系统中测试用例的创建方法、装置及电子设备 | |
CN117034284A (zh) | 开源漏洞对应修复补丁的追溯方法及相关装置 | |
CN111045724A (zh) | 调用链信息的查询方法、装置和可读存储介质 | |
CN111124545A (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN116737535A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN113126998B (zh) | 一种增量源码获取方法、装置、电子设备及存储介质 | |
CN117009972A (zh) | 漏洞检测方法、装置、计算机设备和存储介质 | |
US9824175B1 (en) | Method and system of evaluation of validity of a refinement rule for a hardware emulation | |
CN111258899A (zh) | 用例生成方法、装置、电子设备和计算机可读存储介质 | |
CN110781182A (zh) | 校验逻辑的自动编码方法、装置以及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |