本发明涉及计算机
技术领域:
,特别是涉及一种测试用例处理方法和装置。
背景技术:
:测试用例(TestCase)是为测试程序而设计的一组测试输入、执行条件和预期的结果的数据。测试用例可以设计一个场景,使被测程序在这种场景下运行,以测试程序是否能否满足设计需求。目前,需要为被测程序设计足够数量的测试用例,通常全量执行测试用例以保证对被测程序进行充分的测试。在被测程序开发初期,测试用例总量较少,执行全量的测试用例也容易管理。然而,随着被测程序的开发进展,在每个开发阶段会产生新的测试用例,测试用例的数量显著增加,全量执行测试用例需要消耗大量的时间成本和人力成本,测试效率低。技术实现要素:基于此,有必要针对目前每次测试需要执行全量测试用例导致测试成本低的问题,提供一种测试用例处理方法和装置。一种测试用例处理方法,包括:获取测试用例标识集合和被测函数标识集合;对于所述测试用例标识集合中的每个测试用例标识,确定针对所述被测函数标识集合的测试覆盖关系;将所述测试用例标识集合中的测试用例标识,按照相应的所述测试覆盖关系之间的相似度进行聚类,获得多于一个的测试用例标识子集;根据所述测试用例标识子集,从所述测试用例标识集合中筛选出部分测试用例标识。一种测试用例处理装置,包括:获取模块,用于获取测试用例标识集合和被测函数标识集合;测试覆盖关系确定模块,用于对于所述测试用例标识集合中的每个测试用例标识,确定针对所述被测函数标识集合的测试覆盖关系;聚类模块,用于将所述测试用例标识集合中的测试用例标识,按照相应的所述测试覆盖关系之间的相似度进行聚类,获得多于一个的测试用例标识子集;测试用例筛选模块,用于根据所述测试用例标识子集,从所述测试用例标识集合中筛选出部分测试用例标识。上述测试用例处理方法和装置,获取测试用例标识集合和被测函数标识集合后,确定每个测试用例标识相对于被测函数标识集合的测试覆盖关系,该测试覆盖关系反映了该测试用例标识表示的测试用例,对于被测函数标识集合所表示的被测函数的覆盖情况。利用测试覆盖关系之间的相似度进行聚类,得到若干测试用例标识子集。根据所述测试用例标识子集筛选出部分测试用例标识,以对测试用例标识集合进行精简。利用精简后得到的测试用例标识所对应的测试用例对被测程序进行测试,不仅可以保证测试覆盖率,还能提高测试效率。附图说明图1为一个实施例中测试用例处理方法的应用环境图;图2为一个实施例中用于执行测试用例处理方法的电子设备的内部结构示意图;图3为一个实施例中测试用例处理方法的流程示意图;图4为一个实施例中对于测试用例标识集合中的每个测试用例标识,确定针对被测函数标识集合的测试覆盖关系的步骤的流程示意图;图5为一个实施例中对于测试用例标识集合中的每个测试用例标识,分别判断与被测函数标识集合中的每个被测函数标识是否存在测试对应关系的步骤的流程示意图;图6为一个实施例中将测试用例标识集合中的测试用例标识,按照相应的测试覆盖关系之间的相似度进行聚类,获得多于一个的测试用例标识子集的步骤的流程示意图;图7为一个实施例中将数值化对象按照数值化对象之间的相似度进行聚类,获得多于一个的数值化对象聚类簇的步骤的流程示意图;图8为一个实施例中轮次将每个数值化对象聚类簇按照数值化对象之间的相似度划分为两个候选聚类簇,得到每个候选聚类簇的聚类中心的步骤的流程示意图;图9为一个具体应用场景中测试用例处理方法的流程示意图;图10为一个实施例中测试用例处理装置的结构框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图1为一个实施例中测试用例处理方法的应用环境图。参照图1,该测试用例处理方法可应用于服务器110。服务器110具体可获取测试用例标识集合和被测函数标识集合;对于测试用例标识集合中的每个测试用例标识,确定针对被测函数标识集合的测试覆盖关系;将测试用例标识集合中的测试用例标识,按照相应的测试覆盖关系之间的相似度进行聚类,获得多于一个的测试用例标识子集;根据测试用例标识子集,从测试用例标识集合中筛选出部分测试用例标识。服务器110可将筛选出的部分测试用例标识推荐至终端120,或者可以将筛选出的部分测试用例标识所对应的测试用例推荐至终端120。通过网络连接的服务器110和终端120可构成一种测试用例推荐系统。可以理解的是,测试用例处理方法可应用于一种独立的电子设备,该电子设备可在筛选出部分测试用例标识后,根据该部分测试用例标识所对应的测试用例直接对被测程序进行测试。图2为一个实施例中电子设备的结构框图。该电子设备可以是服务器110,该电子设备用于实现一种测试用例处理方法。参照图2,该电子设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该电子设备的非易失性存储介质存储有操作系统、数据库和测试用例处理装置。数据库中存储有测试用例标识集合和被测函数标识集合,还可以存储有测试对应关系集合。测试用例处理装置用于实现一种测试用例处理方法。该电子设备的处理器用于提供计算和控制能力,支撑整个电子设备的运行。该电子设备的内存储器为非易失性存储介质中的测试用例处理装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种测试用例处理方法。该服务器的网络接口用于连接网络进行通信。电子设备可以是独立的设备或者是多个电子设备组成的设备集群来实现。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。图3为一个实施例中测试用例处理方法的流程示意图。本实施例主要以该方法应用于上述图1中的服务器来举例说明。参照图3,该测试用例处理方法包括如下步骤:S302,获取测试用例标识集合和被测函数标识集合。其中,测试用例标识集合是测试用例标识构成的集合,测试用例标识用于唯一标识相应的测试用例。被测函数标识集合是被测函数标识构成的集合,被测函数标识用于唯一标识相应的被测函数。被测函数是被测程序的函数,通过调用被测函数可以实现对被测程序的测试。被测函数标识集合可以是全量被测函数标识构成的集合,也可以是从全量被测函数标识中筛选出的部分被测函数标识构成的集合。全量被测函数标识,是指被测程序所有被测函数各自的标识。测试用例标识集合可以是全量测试用例标识构成的集合。S304,对于测试用例标识集合中的每个测试用例标识,确定针对被测函数标识集合的测试覆盖关系。其中,测试用例标识相对于被测函数标识集合的测试覆盖关系,表示该测试用例标识所标识的测试用例,相对于该被测函数标识集合所表示的该被测函数集合的测试覆盖情况。测试覆盖关系可以反映相应的测试用例所能够覆盖的被测函数。比如,假设某测试用例涉及被测函数集合中的测试用例A和B,不涉及测试用例C,表达的就是该测试用例相对于该被测函数集合的测试覆盖关系,也就是相应的测试用例标识相对于被测函数标识集合的测试覆盖关系。S306,将测试用例标识集合中的测试用例标识,按照相应的测试覆盖关系之间的相似度进行聚类,获得多于一个的测试用例标识子集。其中,测试覆盖关系之间的相似度,表示的是相应的测试用例对被测函数集合的测试覆盖情况的相似程度。相似度与测试覆盖关系之间的相似程度正相关,也就是相似度越高,表示相应的测试覆盖关系更加相似。测试覆盖关系之间的相似度可以用覆盖的被测函数标识的交集大小表示。比如测试覆盖关系X表示覆盖被测函数A、B和C,测试覆盖关系Y表示覆盖被测函数A、B和D,测试覆盖关系Z表示覆盖被测函数D、E和F。那么测试覆盖关系X与Y由于存在交集{A,B},相似度最高;测试覆盖关系Y和Z存在交集{D},相似度次之;测试覆盖关系X和Z没有交集,相似度最小。测试用例标识子集是对测试用例标识集合中的测试用例标识进行聚类后得到的聚类结果。聚类后测试用例标识集合中的测试用例标识,被划分为不同的子集,每个子集表示一个测试用例标识子集。每个测试用例标识子集包括一个或多于一个的测试用例标识。具体地,服务器可计算两两测试覆盖关系之间的相似度,然后将相似度较高的测试覆盖关系对应的测试用例标识聚类为相同的聚类簇,得到多于一个的测试用例标识子集。聚类时可采用层次聚类算法、神经网络聚类算法或者FCM(FuzzyC-means,一种基于目标函数的模糊聚类算法)算法等。S308,根据测试用例标识子集,从测试用例标识集合中筛选出部分测试用例标识。其中,部分测试用例标识,是指从测试用例标识集合中筛选出的局部的测试用例标识。部分测试用例标识中测试用例标识的数量,小于测试用例标识集合中测试用例标识的数量。通过筛选出部分测试用例标识,可以实现测试用例精简。具体地,服务器可将测试用例标识子集发送至终端,由终端显示测试用例标识子集,并获取针对显示的测试用例标识子集的选择指令,根据选择指令选择部分测试用例标识。进一步地,服务器可以将筛选出的部分测试用例标识存储在本地。服务器也可以将筛选出的部分测试用例标识发送至终端,实现向终端推荐精简的测试用例。上述测试用例处理方法,获取测试用例标识集合和被测函数标识集合后,确定每个测试用例标识相对于被测函数标识集合的测试覆盖关系,该测试覆盖关系反映了该测试用例标识表示的测试用例,对于被测函数标识集合所表示的被测函数的覆盖情况。利用测试覆盖关系之间的相似度进行聚类,得到若干测试用例标识子集。根据测试用例标识子集筛选出部分测试用例标识,以对测试用例标识集合进行精简。利用精简后得到的测试用例标识所对应的测试用例对被测程序进行测试,不仅可以保证测试覆盖率,还能提高测试效率。如图4所示,在一个实施例中,步骤S304包括如下步骤:S402,对于测试用例标识集合中的每个测试用例标识,分别判断与被测函数标识集合中的每个被测函数标识是否存在测试对应关系。其中,测试用例标识与被测函数标识之间存在测试对应关系,表示该测试用例标识所对应的测试用例能够实现对该被测函数的测试。该被测函数可以存在于该测试用例中。测试用例标识与被测函数标识之间不存在测试对应关系,则表示该测试用例标识所对应的测试用例不能够实现对该被测函数的测试。具体地,服务器可遍历测试用例标识集合中的每个测试用例标识,遍历至某测试用例标识时,对应于遍历至的该测试用例标识,再遍历被测函数标识集合中的每个被测函数标识,从而判断遍历至的测试用例标识和遍历至的被测函数标识是否存在测试对应关系。进一步地,服务器在判断一个测试用例标识和一个被测函数标识是否存在测试对应关系时,具体可判断该测试用例标识所标识的测试用例中是否存在对该被测函数标识的调用;若存在则可以判定存在测试对应关系;若不存在则可判定不存在测试对应关系。在一个实施例中,服务器也可以对于测试用例标识集合中的每个测试用例标识,分别在预设的测试对应关系集合中,查询与被测函数标识集合中的每个被测函数标识是否存在测试对应关系。S404,根据是否存在测试对应关系的判断结果,确定与测试用例标识集合中的每个测试用例标识相应的针对被测函数标识集合的测试覆盖关系。具体地,服务器在判断出每个测试用例标识与每个被测函数标识是否存在测试对应关系后,可以将对应相同测试用例标识的是否存在测试对应关系的判断结果整合,得到对应该相同测试用例标识的、且针对被测函数标识集合的测试覆盖关系。本实施例中,可准确地衡量测试覆盖关系,根据该测试覆盖关系可以准确地从测试用例标识集合中筛选出部分测试用例标识,提高了测试用例精简的准确性和效率。如图5所示,在一个实施例中,步骤S402具体包括如下步骤:S502,获取测试用例标识和被测函数标识之间的根据历史测试记录确定的测试对应关系集合。其中,历史测试记录,是执行本实施例的测试用例处理方法之前,对被测程序进行测试时保留的相关记录。历史测试记录至少直接或间接记录了测试用例标识和被测函数标识之间的测试对应关系。具体地,服务器可预先收集历史测试记录,从而从历史测试记录中提取测试用例标识和被测函数标识之间的测试对应关系,构成测试对应关系集合。该测试对应关系集合包括了若干测试对应关系。每个测试对应关系可用存在测试对应关系的测试用例标识和被测函数标识之间的映射关系表示。S504,对于测试用例标识集合中的每个测试用例标识,分别在测试对应关系集合中,查询与被测函数标识集合中的每个被测函数标识是否存在测试对应关系。具体地,服务器可遍历测试用例标识集合中的每个测试用例标识,遍历至某测试用例标识时,对应于遍历至的该测试用例标识,再遍历被测函数标识集合中的每个被测函数标识,从而判断遍历至的测试用例标识和遍历至的被测函数标识的测试对应关系是否存在于测试对应关系集合中。若存在,则可判定遍历至的测试用例标识和遍历至的被测函数标识存在测试对应关系。若不存在,则可判定该遍历至的测试用例标识和遍历至的被测函数标识不存在对应关系。本实施例中,根据历史测试记录确可以确定测试对应关系集合,从而可以据此高效地查询测试用例标识和被测函数标识之间的测试对应关系,从而进一步提高精简测试用例的效率。在一个实施例中,步骤S308包括:从每个测试用例标识子集中选择至少一个测试用例标识,获得测试用例标识集合中的部分测试用例标识。具体地,服务器可遍历每个测试用例标识子集,若遍历至的测试用例标识子集中的测试用例标识为一个,则选择该一个测试用例标识;若遍历至的测试用例标识子集中的测试用例标识为多个,则选择一个或多于一个的测试用例标识。遍历完毕后,将每个遍历至的测试用例标识子集中筛选出的测试用例标识,构成测试用例标识集合中的部分测试用例标识。其中,一个或多于一个的测试用例标识,可以是与相应的测试用例标识子集的聚类中心最近的一个或多个测试用例标识。一个或多个测试用例标识的数量可以是预设的,也可以是根据测试覆盖率动态确定的。测试覆盖率,表示与筛选出的部分测试用例标识存在测试对应关系的测试用例标识,占测试用例标识集合的比例。本实施例中,从每个测试用例标识子集中选择至少一个测试用例标识,获得测试用例标识集合中的部分测试用例标识,可以尽可能保证足够大的测试覆盖率,并实现测试用例精简,提高测试效率。在一个实施例中,步骤S308包括:对于包括多于一个的测试用例标识的测试用例标识子集,从指定数量为1起,从每个测试用例标识子集中挑选指定数量的测试用例标识,与仅包括一个测试用例标识的测试用例标识子集构成部分测试用例标识,计算测试覆盖率。若测试覆盖率达到预设值则停止,若测试覆盖率未达到预设值则将指定数量自增1后,继续从每个测试用例标识子集中挑选指定数量的测试用例标识,与仅包括一个测试用例标识的测试用例标识子集构成部分测试用例标识,计算测试覆盖率,直至测试覆盖率达到预设值时停止。如图6所示,在一个实施例中,步骤S306包括以下步骤:S602,获取表示每个测试用例标识所对应的测试覆盖关系的数值化对象。其中,数值化对象,是将测试覆盖关系数值化后的数据。对于每个测试用例标识,存在与之一一对应的数值化对象,表示与该测试用例标识一一对应的测试覆盖关系。数值化对象具体可以是坐标点、向量或者二值化序列。坐标点和向量中各个维度的取值可以是两种值中的一种。在一个实施例中,步骤S602包括:获取分别表示每个测试覆盖关系的坐标点,坐标点的维度的数量等于被测函数标识集合中被测函数标识的数量,且每个维度在相应的被测函数标识与坐标点对应的测试用例标识之间存在或者不存在测试对应关系时分别取不同的数值。举例说明,假设每个测试用例标识所对应的测试覆盖关系如下表一:case\funcfunc1func2func3func4…funcMcase11001…1case20011…1case31101…1case41000…0case51101…0…………………caseN0011…1上表一中,case1~caseN均为测试用例标识,构成包括N个测试用例标识的测试用例标识集合,N为大于1的正整数。func1~funcM均为被测函数标识,构成包括M个被测函数标识的被测函数标识集合。上述表一的行列交叉处的数值,表示相应的测试用例标识与相应的被测函数标识之间是否存在测试对应关系,用两种数值分别表示存在和不存在测试对应关系。比如当数值为1时可表示存在测试对应关系,当数值为0时表示不存在测试对应关系。对应于case1,可按照指定的被测函数标识排序,将相应的是否存在对应关系的判断结果数值化,构成坐标点(1,0,0,1,…,1),或构成向量[1001…1],或构成二值化序列1001…1。其中,坐标点的总数量为N,每个坐标点的维度数量为M,每个维度取1和0中的一种,表示相应的测试用例标识和相应的被测函数标识是否存在测试对应关系。S604,将数值化对象按照数值化对象之间的相似度进行聚类,获得多于一个的数值化对象聚类簇。具体地,当数值化对象为坐标点时,数值化对象之间的相似度可采用坐标点之间的欧式距离表示,相应的数值化对象聚类簇为坐标点聚类簇。当数值化对象为向量时,数值化对象之间的相似度可采用向量之间的余弦相似度,相应的数值化对象聚类簇为向量聚类簇。当数值化对象为二值化序列时,数值化对象之间的相似度可采用汉明距离,相应的数值化对象聚类簇为二值化序列聚类簇。S606,根据数值化对象聚类簇获得相应的测试用例标识子集。具体地,在确定数值化对象聚类簇后,可根据数值化对象与测试用例标识之间的一一对应关系,将数值化对象聚类簇转化为测试用例标识子集。进一步地,服务器可获取每个数值化对象聚类簇中的数值化对象所对应的测试用例标识,构成与每个数值化对象聚类簇相应的测试用例标识子集。本实施例中,将测试覆盖关系数值化后进行聚类,可高效地对数值化对象进行聚类,从而高效地得到测试用例标识子集,提高精简测试用例的效率。如图7所示,在一个实施例中,步骤S604具体包括如下步骤:S702,将数值化对象按照数值化对象之间的相似度划分为两个数值化对象聚类簇,得到每个数值化对象聚类簇的聚类中心。具体地,服务器可将所有的数值化对象作为一个数值化对象聚类簇,求取该数值化对象聚类簇的聚类中心。服务器将该数值化对象聚类簇划分为两个数值化对象聚类簇,并得到划分出的两个数值化对象聚类簇各自的聚类中心。具体地,服务器可将所有的坐标点构成一个坐标点聚类簇,求取坐标点聚类簇中所有坐标点的均值得到作为聚类中心的中心坐标点。服务器进而将该一个坐标点聚类簇划分为两个坐标点聚类簇,并计算划分出的每个坐标点聚类簇的中心坐标点作为相应的聚类中心。S704,当数值化对象聚类簇的总数少于预设数量时,轮次将每个数值化对象聚类簇按照数值化对象之间的相似度划分为两个候选聚类簇,得到每个候选聚类簇的聚类中心。具体地,服务器可获取当前数值化对象聚类簇的总数k,与预设数量K比较。当k<K时,轮次对当前每个数值化对象聚类簇进行一分为二的划分,每次划分所针对的数值化对象聚类簇都划分出两个候选聚类簇。其中,预设数量可取测试用例标识集合中测试用例标识总数的10%~50%.S706,根据候选聚类簇和相应的聚类中心,和未划分的数值化对象聚类簇及相应的聚类中心,计算方差和。具体地,服务器可将候选聚类簇和当次未划分的数值化对象聚类簇作为当前所有的数值化对象聚类簇,根据每个数值化对象聚类簇和相应的聚类中心计算相应的方差,将每个计算出的方差求和得到方差和。举例说明,假设当前有k个坐标点聚类簇,分别对每个坐标点聚类簇进行一分为二的划分,则的到2个候选聚类簇,加上当次未划分的k-1个坐标点聚类簇,构成k+1个聚类簇和相应的聚类中心。计算该k+1个聚类簇的方差和。S708,将对应最小方差和的候选聚类簇作为本次划分出的数值化对象聚类簇。具体地,服务器可从计算出的方差和中,找出最小的方差和,从而将与该最小的方差和对应的候选聚类簇作为本次划分出的数值化对象聚类簇。其它划分方式则丢弃。执行步骤S708后,继续判断数值化对象聚类簇的总数是否少于预设数量。S710,当数值化对象聚类簇的总数等于预设数量时,输出当前所有的数值化对象聚类簇。具体地,服务器可获取当前数值化对象聚类簇的总数k,与预设数量K比较。当k=K时,直接输出当前所有的数值化对象聚类簇。本实施例中,根据数值化对象之间的相似度,从少到多逐步划分出预设数量的数值化对象聚类簇,可以保证相同数值化对象聚类簇内的数值化对象足够相似,不同数值化对象聚类簇之间的数值化对象足够差异化,从而在精简测试用例时可以尽可能保证测试覆盖率。如图8所示,在一个实施例中,轮次将每个数值化对象聚类簇按照数值化对象之间的相似度划分为两个候选聚类簇,得到每个候选聚类簇的聚类中心具体的步骤,包括如下步骤:S802,轮次在每个数值化对象聚类簇中,随机选择两个数值化对象作为需划分出的两个候选聚类簇各自的聚类中心。具体地,服务器轮次执行步骤S802至步骤S808或S810。服务器在当次划分所针对的数值化对象聚类簇中,随机选择两个数值化对象,该两个数值化对象假设为两个候选聚类簇各自的聚类中心。S804,将当次的数值化对象聚类簇中的数值化对象,归类到相似度最高的聚类中心所属的候选聚类簇。具体地,作为聚类中心的两个数值化对象,自然属于相应的候选聚类簇。对于数值化对象聚类簇中除去两个聚类中心的其它数值化对象,则分别计算与两个聚类中心之间的相似度,从而将这些数值化对象均归类到与之相似度最高的聚类中心所属的候选聚类簇。S806,计算归类后每个候选聚类簇的聚类中心。S808,当计算出的聚类中心与当次归类所用的相应聚类中心不一致时,重新执行步骤S804。S810,当计算出的聚类中心与当次归类所用的相应聚类中心一致时,输出当前划分出的候选聚类簇。具体地,计算出归类后两个候选聚类簇各自的聚类中心后,将计算出的聚类中心分别与当次归类所用的两个聚类中心中相对应的聚类中心比较。如果经比较不一致,说明当前划分出的候选聚类簇不是最优的,需要基于计算出的聚类中心重新划分候选聚类簇。如果经比较一致,则说明当前划分出的候选聚类簇是最优的,可以直接输出。本实施例中,在从数值化对象聚类簇中划分候选聚类簇时,采用上述步骤S802至步骤S808或S810,可以找到最优的划分方式划分出相应的候选聚类簇,保证相同数值化对象聚类簇内的数值化对象足够相似,从而能够有效地实现测试用例的精简。下面用一个具体的应用场景来说明上述测试用例处理方法的原理。参照图9,已知测试用例标识集合,输入被测函数标识集合以及测试对应关系集合,启动测试用例聚类推荐。根据测试对应关系集合初始化,查询测试用例标识集合中的每个测试用例标识与被测函数标识集合中的每个被测函数标识是否存在测试对应关系,得到相应的测试覆盖关系;用两种数值(1或0)来表示该测试覆盖关系,将该测试覆盖关系转化为坐标点。从k=1个坐标点聚类簇起,通过聚类运算选择最合适的坐标点聚类簇拆分,k自增1,直至k<K时停止聚类,输出聚类得到的坐标点聚类簇,从而得到相应的测试用例标识子集并推荐。图10为一个实施例中测试用例处理装置1000的结构框图。参照图10,测试用例处理装置1000包括:获取模块1001、测试覆盖关系确定模块1002、聚类模块1003和测试用例筛选模块1004。获取模块1001,用于获取测试用例标识集合和被测函数标识集合。测试覆盖关系确定模块1002,用于对于测试用例标识集合中的每个测试用例标识,确定针对被测函数标识集合的测试覆盖关系。聚类模块1003,用于将测试用例标识集合中的测试用例标识,按照相应的测试覆盖关系之间的相似度进行聚类,获得多于一个的测试用例标识子集。测试用例筛选模块1004,用于根据测试用例标识子集,从测试用例标识集合中筛选出部分测试用例标识。上述测试用例处理装置1000,获取测试用例标识集合和被测函数标识集合后,确定每个测试用例标识相对于被测函数标识集合的测试覆盖关系,该测试覆盖关系反映了该测试用例标识表示的测试用例,对于被测函数标识集合所表示的被测函数的覆盖情况。利用测试覆盖关系之间的相似度进行聚类,得到若干测试用例标识子集。根据测试用例标识子集筛选出部分测试用例标识,以对测试用例标识集合进行精简。利用精简后得到的测试用例标识所对应的测试用例对被测程序进行测试,不仅可以保证测试覆盖率,还能提高测试效率。在一个实施例中,测试覆盖关系确定模块1002还用于对于测试用例标识集合中的每个测试用例标识,分别判断与被测函数标识集合中的每个被测函数标识是否存在测试对应关系;根据与测试用例标识集合中的每个测试用例标识相应的是否存在测试对应关系的判断结果,确定与每个测试用例标识相应的针对被测函数标识集合的测试覆盖关系。本实施例中,可准确地衡量测试覆盖关系,根据该测试覆盖关系可以准确地从测试用例标识集合中筛选出部分测试用例标识,提高了测试用例精简的准确性和效率。在一个实施例中,测试覆盖关系确定模块1002还用于获取测试用例标识和被测函数标识之间的根据历史测试记录确定的测试对应关系集合;对于测试用例标识集合中的每个测试用例标识,分别在测试对应关系集合中,查询与被测函数标识集合中的每个被测函数标识是否存在测试对应关系。本实施例中,根据历史测试记录确可以确定测试对应关系集合,从而可以据此高效地查询测试用例标识和被测函数标识之间的测试对应关系,从而进一步提高精简测试用例的效率。在一个实施例中,测试用例筛选模块1004还用于从每个测试用例标识子集中选择至少一个测试用例标识,获得测试用例标识集合中的部分测试用例标识。本实施例中,从每个测试用例标识子集中选择至少一个测试用例标识,获得测试用例标识集合中的部分测试用例标识,可以尽可能保证足够大的测试覆盖率,并实现测试用例精简,提高测试效率。在一个实施例中,聚类模块1003还用于获取表示每个测试用例标识所对应的测试覆盖关系的数值化对象;将数值化对象按照数值化对象之间的相似度进行聚类,获得多于一个的数值化对象聚类簇;根据数值化对象聚类簇获得相应的测试用例标识子集。本实施例中,将测试覆盖关系数值化后进行聚类,可高效地对数值化对象进行聚类,从而高效地得到测试用例标识子集,提高精简测试用例的效率。在一个实施例中,数值化对象为坐标点,数值化对象之间的相似度为坐标点之间的欧式距离,数值化对象聚类簇为坐标点聚类簇。在一个实施例中,测试覆盖关系,表示相应的测试用例标识与被测函数标识集合中的每个被测函数标识是否存在测试对应关系。聚类模块1003还用于获取分别表示每个测试覆盖关系的坐标点,坐标点的维度的数量等于被测函数标识集合中被测函数标识的数量,且每个维度在相应的被测函数标识与坐标点对应的测试用例标识之间存在或者不存在测试对应关系时分别取不同的数值。在一个实施例中,聚类模块1003还用于将数值化对象按照数值化对象之间的相似度划分为两个数值化对象聚类簇,得到每个数值化对象聚类簇的聚类中心;当数值化对象聚类簇的总数少于预设数量时,轮次将每个数值化对象聚类簇按照数值化对象之间的相似度划分为两个候选聚类簇,得到每个候选聚类簇的聚类中心;根据候选聚类簇和相应的聚类中心,和未划分的数值化对象聚类簇及相应的聚类中心,计算方差和;将对应最小方差和的候选聚类簇作为本次划分出的数值化对象聚类簇;当数值化对象聚类簇的总数等于预设数量时,输出当前所有的数值化对象聚类簇。本实施例中,根据数值化对象之间的相似度,从少到多逐步划分出预设数量的数值化对象聚类簇,可以保证相同数值化对象聚类簇内的数值化对象足够相似,不同数值化对象聚类簇之间的数值化对象足够差异化,从而在精简测试用例时可以尽可能保证测试覆盖率。在一个实施例中,聚类模块1003还用于轮次在每个数值化对象聚类簇中,随机选择两个数值化对象作为需划分出的两个候选聚类簇各自的聚类中心;将当次的数值化对象聚类簇中的数值化对象,归类到相似度最高的聚类中心所属的候选聚类簇;计算归类后每个候选聚类簇的聚类中心;当计算出的聚类中心与当次归类所用的相应聚类中心不一致时,重新执行将当次的数值化对象聚类簇中的数值化对象,归类到相似度最高的聚类中心所属的候选聚类簇;当计算出的聚类中心与当次归类所用的相应聚类中心一致时,输出当前划分出的候选聚类簇。本实施例中,可以找到最优的划分方式划分出相应的候选聚类簇,保证相同数值化对象聚类簇内的数值化对象足够相似,从而能够有效地实现测试用例的精简。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)等非易失性存储介质,或随机存储记忆体(RandomAccessMemory,RAM)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页1 2 3