本申请实施例涉及测试技术领域,具体涉及一种测试用例生成方法、装置、系统、离线服务器及存储介质。
背景技术:
业务系统等被测对象上线功能前,需在线上预发环境(如线上试验田)对被测对象需上线的功能进行线上测试,从而在线上测试通过后,被测对象需上线的功能可正式发布,以被用户大规模使用,这里所指的线上预发环境可以认为是指基于真实用户数据的小流量线上环境。
在线上试验田所进行的线上测试主要基于线上预发环境的线上测试数据实现,为进一步利用线上测试数据,本申请的发明人考虑基于线上测试数据,生成线下测试用例,进而在线下测试环境下,能够使用基于线上测试数据生成的线下测试用例,以实现对线上测试数据的进一步利用,因此如何提供基于线上测试数据生成线下测试用例的方案,成为了本领域技术人员亟需解决的问题。
技术实现要素:
有鉴于此,本申请实施例提供一种测试用例生成方法、装置、系统、离线服务器及存储介质,以基于线上测试数据生成线下测试用例。
为实现上述目的,本申请实施例提供如下技术方案:
一种测试用例生成方法,包括:
获取线上测试数据;
从所述线上测试数据中提取所述线上测试数据的用例特征;
将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配;
根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;
至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例。
本申请实施例还提供一种测试用例生成装置,包括:
线上测试数据获取模块,用于获取线上测试数据;
特征提取模块,用于从所述线上测试数据中提取所述线上测试数据的用例特征;
匹配模块,用于将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配;
目标线下测试用例确定模块,用于根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;
调整模块,用于至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例。
本申请实施例还提供一种测试用例生成系统,包括:线上测试服务器,及离线服务器;
所述线上测试服务器,用于对业务系统进行线上测试,在测试结果符合期望结果时,整合得到线上测试数据,将所述线上测试数据传输给所述离线服务器;
所述离线服务器,用于获取所述线上测试服务器传输的线上测试数据;从所述线上测试数据中提取所述线上测试数据的用例特征;将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配;根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例。
本申请实施例还提供一种离线服务器,包括:
至少一个存储器,用于存储一条或多条计算机可执行指令;
至少一个处理器,用于调用所述一条或多条计算机可执行指令,以执行如上述所述的测试用例生成方法。
本申请实施例还提供一种存储介质,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行如上述所述的测试用例生成方法。
本申请实施例提供的测试用例生成方法,可获取线上测试数据,从所述线上测试数据中提取所述线上测试数据的用例特征;从而在确定已生成的线下测试用例的用例特征的基础上,本申请实施例可将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配,根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;进而,至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例,实现基于线上测试数据生成线下测试用例的目的。
本申请实施例通过将线上测试数据与已生成的线下测试用例的用例特征进行匹配,来从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而根据目标线下测试用例对线上测试数据进行数据调整,可使得数据调整后得到的线下测试用例与目标线下测试用例的数据差异较小,可缩小线上测试与线下测试的数据差异,从而使得数据调整后得到的线下测试用例能够适用于线下测试环境。可见,本申请实施例是利用用例特征匹配的方式,从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而利用目标线下测试用例对线上测试数据进行数据调整,来实现基于线上测试数据生成线下测试用例,因此本申请实施例提供的测试用例生成方法对于业务系统的代码侵入较小,在工程实现上可以具有较高的通用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的测试用例生成方法的流程图;
图2为本申请实施例提供的线上测试的过程示例图;
图3为本申请实施例提供的测试用例生成方法的另一流程图;
图4为本申请实施例提供的测试用例生成系统的框图;
图5为本申请实施例提供的基于线上测试数据生成线下测试用例的过程示例图;
图6为本申请实施例提供的测试用例生成装置的框图;
图7为本申请实施例提供的离线服务器的框图。
具体实施方式
线上测试与线下测试的主要区别在于数据的不同,具体的,线上测试是基于线上预发环境的小流量真实用户数据实现,而线下测试的数据往往是构造出的,因此为缩小线上测试与线下测试的数据差异,基于线上测试数据生成线下测试用例的传统方式往往是:先识别出线上测试的真实用户数据,将该真实用户数据回流到线下,形成线下测试用例。该传统方式可基于日志埋点获取线上测试的真实用户数据,具体的,对被测对象(如业务系统)中的数据节点进行埋点,从而在线上测试过程中,将埋点采集的数据记录在日志中,进而通过解析日志,获取到线上测试相关的真实用户数据,该真实用户数据回流到线下,形成基于真实用户数据的线下测试用例。
上述基于线上测试数据生成线下测试用例的方式,需要对被测对象进行埋点,对于被测对象的代码侵入性较高,导致其在工程上的实现通用性较差;基于此,本申请实施例提供改进的测试用例生成方案,以基于线上测试数据生成线下测试用例,并且能够降低被测对象的代码侵入性,提高测试用例生成方案在工程上的实现通用性。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在可选实现中,图1示出了本申请实施例提供的测试用例生成方法的可选流程,该流程可选由离线服务器执行,可选的,该离线服务器可以是离线设置的用于生成线下测试用例的服务器;如图1所示,该流程可以包括:
步骤s100、获取线上测试数据。
可选的,在对被测对象执行线上测试后,如果被测对象的测试结果符合期望结果,则本申请实施例可获取与线上测试相关的线上测试数据。
可选的,图2示例了线上测试的过程,图2所示线上测试过程可以基于线上域(如线上预发环境)实现;具体的,在对业务系统输入测试请求数据执行测试后,业务系统可基于线上预发环境输出测试结果数据,如果测试结果数据与期望结果相符,则可确定本次线上测试通过,从而可整合线上测试相关的数据,得到线上测试数据,该线上测试数据可回流到线下,由离线服务器获取;如果测试结果数据与期望结果不符,则可确定本次线上测试不通过,可在调试后,重新进行线上测试,直至线上测试通过时,整合线上测试相关的数据,得到线上测试数据,该线上测试数据回流到线下,由离线服务器获取。
可见,基于线上预发环境整合得到的线上测试数据可回流到线下域(即线下环境),从而由离线服务器获取到线上测试数据。
在一种可选实现中,所述线上测试数据可以包括:线上测试的测试请求数据,测试结果数据及业务描述数据等。
步骤s110、从所述线上测试数据中提取所述线上测试数据的用例特征。
需要说明的是,通过对测试用例的用例内容进行用例特征的提取,可得到测试用例的用例特征;例如,测试用例具有多维度的用例内容,通过对测试用例多维度的用例内容分别提取用例特征,可得到测试用例在多维度的用例特征,一个维度的用例特征可表示测试用例在该维度的用例内容的特征。
针对步骤s100获取的线上测试数据,本申请实施例可对线上测试数据各维度的数据内容,分别提取用例特征,从而从线上测试数据中提取到线上测试数据的用例特征。
在可选实现中,本申请实施例可预先设置至少一个用例特征类型,一个用例特征类型的用例特征可表示测试用例在一个维度的用例内容对应的用例特征,从而根据预设的至少一个用例特征类型,本申请实施例可从线上测试数据中提取各用例特征类型的用例特征,以实现从线上测试数据中提取线上测试数据的用例特征。
步骤s120、将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配。
本申请实施例可存储已生成的线下测试用例,已生成的线下测试用例的数量可以为多个,在可选实现中,本申请实施例可在线下域的用例库中存储已生成的线下测试用例。
针对任一已生成的线下测试用例,本申请实施例可预先提取已生成的线下测试用例的用例特征,例如,根据预设的至少一个用例特征类型,本申请实施例可预先提取已生成的线下测试用例在各用例特征类型的用例特征。
在得到线上测试数据的用例特征,以及已生成的线下测试用例的用例特征后,本申请实施例可将线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配,实现确定线上测试数据与已生成的线下测试用例的相似度。
在可选实现中,本申请实施例可将线上测试数据与已生成的线下测试用例的相同用例特征类型的用例特征分别进行匹配,从而得到线上测试数据与已生成的线下测试用例在各用例特征类型的用例特征对应的相似度,进而根据所述各用例特征类型的用例特征对应的相似度,可确定线上测试数据与已生成的线下测试用例的相似度,该相似度可作为步骤s120匹配的结果。针对任一已生成的线下测试用例均进行上述如此处理,则本申请实施例可得到线上测试数据与任一已生成的线下测试用例的相似度。
步骤s130、根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例。
基于步骤s120将线上测试数据与任一已生成的线下测试用例的用例特征进行匹配,得到线上测试数据与任一已生成的线下测试用例的匹配的结果后,本申请实施例可基于所述匹配的结果,从已生成的线下测试用例中确定出与线上测试数据相似的目标线下测试用例;例如,基于所述匹配的结果,本申请实施例可从已生成的线下测试用例中确定出与线上测试数据的相似度最高的一个线下测试用例,作为目标线下测试用例,又如,基于所述匹配的结果,本申请实施例可从已生成的线下测试用例中确定与线上测试数据的相似度最大的预设数量的线下测试用例,进而从预设数量的线下测试用例中进一步选择目标线下测试用例。
步骤s140、至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例。
在从已生成的线下测试用例中确定出与线上测试数据相似的目标线下测试用例后,本申请实施例可基于目标线下测试用例对线上测试数据进行数据调整,使得数据调整后得到的线下测试用例,与目标线下测试用例的数据差异较小,实现缩小线上测试与线下测试的数据差异,使得数据调整后得到的线下测试用例能够适用于线下测试场景。
在可选实现中,根据目标线下测试用例对线上测试数据进行数据调整可以是:至少根据所述目标线下测试用例中提取用例特征的用例内容,对线上测试数据中提取用例特征的数据内容进行替换;即,以目标线下测试用例中提取用例特征的用例内容为准,对线上测试数据中提取用例特征的数据内容进行替换。
本申请实施例提供的测试用例生成方法,可获取线上测试数据,从所述线上测试数据中提取所述线上测试数据的用例特征;从而在确定已生成的线下测试用例的用例特征的基础上,本申请实施例可将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配,根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;进而,至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例,实现基于线上测试数据生成线下测试用例的目的。
本申请实施例通过将线上测试数据与已生成的线下测试用例的用例特征进行匹配,来从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而根据目标线下测试用例对线上测试数据进行数据调整,可使得数据调整后得到的线下测试用例与目标线下测试用例的数据差异较小,可缩小线上测试与线下测试的数据差异,从而使得数据调整后得到的线下测试用例能够适用于线下测试环境。可见,本申请实施例是利用用例特征匹配的方式,从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而利用目标线下测试用例对线上测试数据进行数据调整,来实现基于线上测试数据生成线下测试用例,因此本申请实施例提供的测试用例生成方法对于业务系统的代码侵入较小,在工程实现上可以具有较高的通用性。
在进一步的可选实现中,图3示出了本申请实施例提供的测试用例生成方法的另一流程,该流程可由离线服务器执行,如图3所示,该流程可以包括:
步骤s200、获取线上测试数据。
步骤s210、根据预设的至少一个用例特征类型,从所述线上测试数据中提取各用例特征类型的用例特征。
测试用例是测试任务的描述,可以包括用例请求,用例期望,用例标签,用例描述等用例内容;相应的,测试用例的用例特征可以包括用例请求对应的用例请求特征,用例期望对应的用例期望特征,用例标签对应的用例标签特征,用例描述对应的用例描述特征。在此基础上,预设的至少一个用例特征类型可以包括:用例请求特征类型,用例期望特征类型,用例标签特征类型,及用例描述特征类型;其中,所述用例请求特征类型与用例请求特征相对应,所述用例期望特征类型与用例期望特征相对应,所述用例标签特征类型与用例标签特征相对应,所述用例描述特征类型与用例描述特征相对应。也就是说,在一种可选实现中,本申请实施例可预先设置用例请求特征类型,用例期望特征类型,用例标签特征类型,及用例描述特征类型,从而基于预设的该多个用例特征类型,提取线上测试数据在用例请求特征类型对应的用例请求特征,在用例期望特征类型对应的用例期望特征,在用例标签特征类型对应的用例标签特征,及在用例描述特征类型对应的用例描述特征。
需要说明的是,用例请求特征是对测试用例的测试请求进行特征提取后所得到的用例特征,用例期望特征是对测试用例的期望结果或者与期望结果相符的测试结果进行特征提取后所得到的用例特征;针对用例请求特征和用例期望特征,如果测试请求或者期望结果中的数据为json(javascriptobjectnotation,js对象简谱)结构,则测试请求或者期望结果的用例特征可以是参数与value(值)的形式,而如果测试请求或者期望结果中的数据为url(统一资源定位符)形式,则用例特征的形式也可以是url的标准结构;
用例标签特征例如测试用例的优先级标签,业务场景标签等,可由用户可自定义;
用例描述特征是对测试用例的业务关键词进行特征提取后所得到的用例特征;例如,对测试用例的用例描述进行语料分析,进而对分析结果进行tf-idf(termfrequency–inversedocumentfrequency,词频-逆文档频率)处理,确定出用例描述中的业务关键词,对业务关键词进行特征提取,得到用例描述特征。
当然,上述说明的用例特征类型仅是示例的,本申请实施例可根据实际情况预先设置用例特征类型,例如,预先设置用例请求特征类型,用例期望特征类型,用例标签特征类型,及用例描述特征类型中的一个以上的特征类型,而不一定全部使用上述4个用例特征类型。
步骤s220、将所述线上测试数据与所述线下测试用例的相同用例特征类型的用例特征分别进行匹配,以得到所述线上测试数据与所述线下测试用例在各用例特征类型的用例特征对应的相似度。
针对已生成的线下测试用例,本申请实施例可基于预设的用例特征类型,预先提取出线下测试用例在各用例特征类型的用例特征;从而,本申请实施例可将线上测试数据与所述线下测试用例的相同用例特征类型的用例特征分别进行匹配,以得到所述线上测试数据与所述线下测试用例在各用例特征类型的用例特征对应的相似度;
示例的,预设的用例特征类型可以包括:用例请求特征类型,用例期望特征类型,用例标签特征类型,及用例描述特征类型;从而,本申请实施例可提取线上测试数据和线下测试用例分别在用例请求特征类型的用例请求特征、在用例期望特征类型的用例期望特征、在用例标签特征类型的用例标签特征、及在用例描述特征类型的用例描述特征,进而将线上测试数据和线下测试用例的用例请求特征进行匹配,得到线上测试数据和线下测试用例在用例请求特征对应的相似度,将线上测试数据和线下测试用例的用例期望特征进行匹配,得到线上测试数据和线下测试用例在用例期望特征对应的相似度,将线上测试数据和线下测试用例的用例标签特征进行匹配,得到线上测试数据和线下测试用例在用例标签特征对应的相似度,将线上测试数据和线下测试用例的用例描述特征进行匹配,得到线上测试数据和线下测试用例在用例描述特征对应的相似度。
当然,上述预设的用例特征类型仅是示例的,无论本申请实施例使用何种用例特征类型,本申请实施例是将线上测试数据与线下测试用例的相同用例特征类型的用例特征分别进行匹配。
步骤s230、根据所述各用例特征类型的用例特征对应的相似度,确定所述线上测试数据与所述线下测试用例的相似度。
在得到线上测试数据与线下测试用例在各用例特征类型的用例特征对应的相似度后,本申请实施例可基于各用例特征类型的用例特征对应的相似度,确定出线上测试数据与所述线下测试用例的相似度。
在可选实现中,本申请实施例可预设各用例特征的权重,不同的用例特征具有不同的权重,例如对相似度影响较高的用例特征的权重较高,从而本申请实施例可将步骤s220得到的各用例特征对应的相似度,分别与相应用例特征的权重相乘,进而将相乘结果累加,得到线上测试数据与所述线下测试用例的相似度,累加结果的值越大,则线上测试数据与线下测试用例的相似度越高。在可选示例中,假设基于预设的用例特征类型得到用例特征1,用例特征2,…和用例特征n,则本申请实施例可预设用例特征1的权重1,用例特征2的权重2…用例特征n的权重n,从而线上测试数据与一个线下测试用例的相似度可表示为:
用例特征1对应的相似度*权重1+用例特征2对应的相似度*权重2+…用例特征n对应的相似度*权重n。
当然,上述说明的计算线上测试数据与线下测试用例的相似度的方式仅是可选的,本申请实施例也可选用其他方式计算相似度,例如对于任一线下测试用例,直接将线上测试数据与线下测试用例在各用例特征对应的相似度相加,得到线上测试数据与线下测试用例的相似度。
步骤s240、根据所述线上测试数据与所述线下测试用例的相似度,从所述线下测试用例中确定相似度最大的设定数量的线下测试用例。
在计算得到线上测试数据与任一线下测试用例的相似度后,在可选实现中,本申请实施例可按照相似度对线下测试用例进行排序,确定出相似度最大的设定数量的线下测试用例,该设定数量的线下测试用例可用于选择目标线下测试用例,设定数量的具体数值可根据实际情况设定,本申请实施例并不设限。
步骤s250、从所述设定数量的线下测试用例中选择目标线下测试用例。
该设定数量的线下测试用例可推荐给用户,用户可从中选择目标线下测试用例,从而离线服务器可基于用户对设定数量的线下测试用例的选择操作,确定出目标线下测试用例。
可选的,步骤s240至步骤s250可以认为是根据线上测试数据与线下测试用例的相似度,从线下测试用例中确定与所述线上测试数据相似的目标线下测试用例的可选方式,本申请实施例也可选用其他方式来确定目标线下测试用例,例如从线下测试用例中直接选择相似度最大的一个线下测试用例作为目标线下测试用例。
步骤s260、至少根据所述目标线下测试用例中提取用例特征的用例内容,对所述线上测试数据中提取所述用例特征的数据内容进行替换,以得到所述线上测试数据对应的线下测试用例。
在确定出与线上测试数据相似的目标线下测试用例后,本申请实施例可基于目标线下测试用例对线上测试数据进行数据调整,在可选实现中,本申请实施例可以目标线下测试用例中提取用例特征的用例内容为准,对线上测试数据中提取相应用例特征的数据内容进行替换。
本申请实施例基于与线上测试数据相似的目标线下测试用例,对线上测试数据进行数据调整,可缩小线上测试与线下测试的数据差异,使得数据调整后得到的线下测试用例能够适用于线下测试场景,实现基于线上测试数据生成线下测试用例的目的。可选的,为进一步缩小线上测试与线下测试的数据差异,本申请实施例还可对数据调整后的线下测试用例中与用例执行相关的数据进行人为调整,使得最终得到的线下测试用例能够更为符合线下测试的期望。
需要说明的是,在一种可选应用场景中,业务系统等被测对象上线功能前,需要先在线下环境对被测对象需上线的功能进行线下测试,在线下测试通过后,再在线上预发环境对被测对象需上线的功能进行线上测试(相当于在线上环境对业务系统进行小规模的功能实验),从而在线上测试通过后,被测对象需上线的功能可正式发布,以被用户大规模使用;这种测试过程需要先后经历线下测试和线上测试,从而在线下测试和线上测试均通过后,才对被测对象需上线的功能进行正式发布,这无疑存在测试过程较为复杂的问题;因此在算法高频迭代的场景下,对于被测对象需上线的功能进行测试的过程往往是直接在线上预发环境下进行线上测试,然后在线上测试通过后,正式发布被测对象需上线的功能,然而这种方式并没有兼顾线上测试和线下测试的区别,导致测试的全面性较低;
基于此,本申请实施例考虑对线上测试数据进行利用,基于线上测试的线上测试数据生成线下测试用例,在缩小线上测试和线下测试的数据差异的基础上,利用基于线上测试数据生成的线下测试用例,对被测对象需上线的功能进行回归测试,以达到在线上预发环境对被测对象需上线的功能进行测试的相同效果。
在此思路下,为减小基于线上测试数据生成线下测试用例,对业务系统带来的代码侵入性,本申请实施例利用用例特征匹配的方式,从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而利用目标线下测试用例对线上测试数据进行数据调整,来实现基于线上测试数据生成线下测试用例。
在一种可选实现中,线上测试数据可基于线上域得到,并回流到线下域,从而在线下域实现基于线上测试数据生成线下测试用例,进而,在可选应用场景中,本申请实施例可利用基于线上测试数据生成的线下测试用例,对被测对象需上线的功能进行回归测试;可选的,图4示出了测试用例生成系统,如图4所示,该系统可以包括线上测试服务器10,和离线服务器20;其中,线上测试服务器位于线上域,离线服务器位于线下域。
结合图4,图5示出了基于线上测试数据生成线下测试用例的过程示例图,如图5所示,线下域可设置用例库来存储已生成的线下测试用例,以预设的用例特征类型为用例请求特征类型、用例期望特征类型、用例标签特征类型、及用例描述特征类型为例,本申请实施例可定时(如在每日的预设时间)对用例库中的线下测试用例提取用例特征,具体的,本申请实施例可定时从用例库中获取线下测试用例,提取线下测试用例的用例请求特征,用例期望特征,用例标签特征,及用例描述特征。
线下测试用例在各用例特征类型的用例特征可存储入特征池中,特征池可按照不同的用例特征类型划分不同的用例特征集,如图5所示,特征池中可划分出请求特征集,期望特征集,标签特征集和用例描述特征集,从而本申请实施例可将线下测试用例的用例请求特征保存入请求特征集,将线下测试用例的用例期望特征保存入期望特征集,将线下测试用例的用例标签特征保存入标签特征集,将线下测试用例的用例描述特征保存入用例描述特征集;其中,所述请求特征集,所述期望特征集,所述标签特征集及所述用例描述特征集可记录在预设的特征池内。
需要说明的是,各个用例特征集中存储了多个已生成的线下测试用例的用例特征,为区分不同的线下测试用例的用例特征,本申请实施例还可在用例特征集中进一步携带线下测试用例的用例标识(如用例id),例如,请求特征集可存储各线下测试用例的用例请求特征及相应的用例标识,期望特征集可存储各线下测试用例的用例期望特征及相应的用例标识,标签特征集可存储各线下测试用例的用例标签特征及相应的用例标识,用例描述特征集可存储各线下测试用例的用例描述特征及相应的用例标识。
继续结合图5所示,本申请实施例可在线上域进行线上测试;具体的,将用于线上测试的测试请求数据输入线上的业务系统,业务系统基于线上预发环境输出测试结果数据,从而可比对测试结果数据与期望结果是否相符;若不符,则在调试后,重新返回将测试请求数据输入业务系统的步骤,重新进行线上测试;若相符,则可收集线上域进行线上测试的测试请求数据,测试结果数据,业务描述数据等,整合得到线上测试数据。
如图5所示,线上域整合得到的线上测试数据可回流到线下域,在线下域对线上测试数据进行用例特征的提取;具体的,在本申请实施例中,可根据用例请求特征类型,从测试请求数据中提取用例请求特征,根据用例期望特征类型,从测试结果数据中提取用例期望特征,根据用例标签特征类型及用例期望特征类型,分别从业务描述数据中提取用例标签特征和用例描述特征;
在提取线上测试数据在各用例特征类型对应的用例特征,以及在特征池中存储线下测试用例在各用例特征类型对应的用例特征的基础上,本申请实施例可将线上测试数据的用例特征,与特征池内记录的已生成的线下测试用例对应的用例特征进行匹配;如图5所示,本申请实施例可从所述特征池内,获取线下测试用例在各用例特征类型的用例特征,从而将线上测试数据与所述线下测试用例的相同用例特征类型的用例特征分别进行匹配,以得到所述线上测试数据与所述线下测试用例在各用例特征类型的用例特征对应的相似度;在可选具体实现中,本申请实施例可根据最大似然匹配算法(如朴素贝叶斯算法),对所述线上测试数据与所述线下测试用例的用例请求特征,用例期望特征及用例描述特征分别进行匹配,以得到所述线上测试数据与所述线下测试用例的用例请求特征相似度,用例期望特征相似度及用例描述特征相似度;及,将所述线上测试数据的用例标签特征的值与所述线下测试用例的用例标签特征的值进行匹配,得到所述线上测试数据与所述线下测试用例的用例标签特征相似度。
在得到线上测试数据与所述线下测试用例在用例请求特征,用例期望特征、用例标签特征及用例描述特征分别对应的相似度后,对于任一线下测试用例,本申请实施例可将用例请求特征对应的相似度与用例请求特征的权重相乘,将用例期望特征对应的相似度与用例期望特征的权重相乘,将用例标签特征对应的相似度与用例标签特征的权重相乘,将用例描述特征对应的相似度与用例描述特征的权重相乘,从而各相乘结果累加,可得到线上测试数据与线下测试用例的相似度。
如图5所示,基于线上测试数据与各线下测试用例的相似度,本申请实施例可从线下测试用例中推荐相似度最大的预设数量的线下测试用例,从而用户可从推荐的线下测试用例中选择目标线下测试用例。
如图5所示,本申请实施例可基于目标线下测试用例,对线上测试数据进行数据调整,从而得到线上测试数据对应的线下测试用例,实现基于线上测试数据生成线下测试用例。
在可选实现中,本申请实施例可将所述线上测试数据的测试请求数据替换为所述目标线下测试用例的测试请求,将所述线上测试数据的测试结果数据替换为所述目标线下测试用例的期望结果,将所述线上测试数据的业务描述数据替换为所述目标线下测试用例的用例描述,以实现对线上测试数据进行数据调整。
需要说明的是,此处以目标线下测试用例中提取用例特征的特征内容为准,对线上测试数据中提取用例特征的数据内容进行替换,仅是对线上测试数据进行数据调整的可选方式。在另一种可选实现中,对线上测试数据进行数据调整的方案也可以进行自定义,例如:当所述线上测试数据的测试请求数据包括多个键值对时,本申请实施例可保留所述测试请求数据,所述键值对表示创意脚本业务的线上测试实验开关,同时,将所述线上测试数据的测试结果数据替换为所述目标线下测试用例的期望结果,将所述线上测试数据的业务描述数据替换为所述目标线下测试用例的用例描述。需要说明的是,此处示例说明的是一些业务定制化的数据调整方案,测试请求数据为键值对的数据结构,可能代表了创意脚本业务的线上测试实验开关,此时可以保留线上测试数据的测试请求数据,而线上测试数据中其他提取用例特征的数据内容,则以目标线下测试用例为准进行替换。
进一步,基于线上测试数据生成的线下测试用例,本申请实施例可对被测对象需上线的功能进行回归测试。
本申请实施例利用用例特征匹配的方式,从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而利用目标线下测试用例对线上测试数据进行数据调整,实现了基于线上测试数据生成线下测试用例,因此本申请实施例提供的测试用例生成方法对于业务系统的代码侵入较小,可以具有较高的通用性。
下面对本申请实施例提供的测试用例生成装置进行介绍,下文描述的测试用例生成装置可以认为是离线服务器为实现本申请实施例提供的测试用例生成方法,所需设置的功能模块。下文描述的测试用例生成装置的内容,可与上文描述的测试用例生成方法的内容相互对应参照。
在可选实现中,图6示出了本申请实施例提供的测试用例生成装置的框图,如图6所示,该装置可以包括:
线上测试数据获取模块100,用于获取线上测试数据;
特征提取模块110,用于从所述线上测试数据中提取所述线上测试数据的用例特征;
匹配模块120,用于将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配;
目标线下测试用例确定模块130,用于根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;
调整模块140,用于至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例。
可选的,特征提取模块110,用于从所述线上测试数据中提取所述线上测试数据的用例特征包括:
根据预设的至少一个用例特征类型,从所述线上测试数据中提取各用例特征类型的用例特征。
可选的,匹配模块120,用于将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配包括:
将所述线上测试数据与所述线下测试用例的相同用例特征类型的用例特征分别进行匹配,以得到所述线上测试数据与所述线下测试用例在各用例特征类型的用例特征对应的相似度;
根据所述各用例特征类型的用例特征对应的相似度,确定所述线上测试数据与所述线下测试用例的相似度。
可选的,目标线下测试用例确定模块130,用于根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例包括:
根据所述线上测试数据与所述线下测试用例的相似度,从所述线下测试用例中确定相似度最大的预设数量的线下测试用例;
从所述预设数量的线下测试用例中选择目标线下测试用例。
可选的,调整模块140,用于至少根据所述目标线下测试用例对所述线上测试数据进行数据调整包括:
至少根据所述目标线下测试用例中提取用例特征的用例内容,对所述线上测试数据中提取所述用例特征的数据内容进行替换。
在可选实现中,所述至少一个用例特征类型包括:用例请求特征类型,用例期望特征类型,用例标签特征类型,及用例描述特征类型;其中,所述用例请求特征类型与用例请求特征相对应,所述用例期望特征类型与用例期望特征相对应,所述用例标签特征类型与用例标签特征相对应,所述用例描述特征类型与用例描述特征相对应。
可选的,所述线上测试数据可以至少包括:测试请求数据,测试结果数据及业务描述数据;相应的,特征提取模块110,用于根据预设的至少一个用例特征类型,从所述线上测试数据中提取各用例特征类型的用例特征包括:
根据所述用例请求特征类型,从所述测试请求数据中提取用例请求特征;
根据所述用例期望特征类型,从所述测试结果数据中提取用例期望特征;
根据所述用例标签特征类型及所述用例期望特征类型,分别从所述业务描述数据中提取用例标签特征和用例描述特征。
可选的,调整模块140,用于至少根据所述目标线下测试用例中提取用例特征的用例内容,对所述线上测试数据中提取所述用例特征的数据内容进行替换包括:
将所述线上测试数据的测试请求数据替换为所述目标线下测试用例的测试请求;
将所述线上测试数据的测试结果数据替换为所述目标线下测试用例的期望结果;
将所述线上测试数据的业务描述数据替换为所述目标线下测试用例的用例描述。
在另一种可选实现中,调整模块140,用于至少根据所述目标线下测试用例中提取用例特征的用例内容,对所述线上测试数据中提取所述用例特征的数据内容进行替换包括:
当所述线上测试数据的测试请求数据包括多个键值对时,保留所述测试请求数据,所述键值对表示创意脚本业务的线上测试实验开关;
将所述线上测试数据的测试结果数据替换为所述目标线下测试用例的期望结果;
将所述线上测试数据的业务描述数据替换为所述目标线下测试用例的用例描述。
可选的,匹配模块120,用于将所述线上测试数据与所述线下测试用例的相同用例特征类型的用例特征分别进行匹配,以得到所述线上测试数据与所述线下测试用例在各用例特征类型的用例特征对应的相似度包括:
根据最大似然匹配算法,对所述线上测试数据与所述线下测试用例的用例请求特征,用例期望特征及用例描述特征分别进行匹配,得到所述线上测试数据与所述线下测试用例的用例请求特征相似度,用例期望特征相似度及用例描述特征相似度;
将所述线上测试数据的用例标签特征的值与所述线下测试用例的用例标签特征的值进行匹配,得到所述线上测试数据与所述线下测试用例的用例标签特征相似度。
可选的,本申请实施例提供的测试用例生成装置还可以用于:
从用例库中获取已生成的线下测试用例;
提取所述线下测试用例的用例请求特征,用例期望特征,用例标签特征,及用例描述特征;
将所述线下测试用例的用例请求特征保存入请求特征集,将所述线下测试用例的用例期望特征保存入期望特征集,将所述线下测试用例的用例标签特征保存入标签特征集,将所述线下测试用例的用例描述特征保存入用例描述特征集;其中,所述请求特征集,所述期望特征集,所述标签特征集及所述用例描述特征集记录在预设的特征池内。
相应的,在匹配模块120将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配之时,匹配模块120可将线上测试数据的用例特征,与特征池内记录的已生成的线下测试用例的用例特征进行匹配。
本申请实施例利用用例特征匹配的方式,从已生成的线下测试用例中确定与线上测试数据相似的目标线下测试用例,从而利用目标线下测试用例对线上测试数据进行数据调整,实现基于线上测试数据生成线下测试用例,因此本申请实施例提供的测试用例生成方法对于业务系统的代码侵入较小,可以具有较高的通用性。
本申请实施例还提供一种测试用例生成系统,该系统架构可以如图4所示,包括:线上测试服务器,及离线服务器;
线上测试服务器,用于对业务系统进行线上测试,在测试结果符合期望结果时,整合得到线上测试数据,将所述线上测试数据传输给所述离线服务器;
离线服务器,用于获取所述线上测试服务器传输的线上测试数据;从所述线上测试数据中提取所述线上测试数据的用例特征;将所述线上测试数据的用例特征,与已生成的线下测试用例的用例特征进行匹配;根据所述匹配的结果,从所述线下测试用例中确定与所述线上测试数据相似的线下测试用例,作为目标线下测试用例;至少根据所述目标线下测试用例对所述线上测试数据进行数据调整,以得到所述线上测试数据对应的线下测试用例。
本申请实施例还提供一种离线服务器,该离线服务器可设置程序形式的上述测试用例生成装置,以实现本申请实施例提供的测试用例生成方法。在可选实现中,离线服务器的硬件框图可如图7所示,包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;显然,图示的处理器1、通信接口2、存储器3和通信总线4的通信连接示意仅是可选的;
可选的,通信接口2可以为用于进行网络通信的通信模块的接口;
可选的,处理器1可能是cpu(中央处理器),gpu(graphicsprocessingunit,图形处理器),npu(嵌入式神经网络处理器),fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列),tpu(张量处理单元),ai芯片,特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本申请实施例的一个或多个集成电路等。
存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,存储器3存储一条或多条计算机可执行指令,处理器1调用所述一条或多条计算机可执行指令,以执行如本申请实施例提供的测试用例生成方法。
本申请实施例还提供一种存储介质,该存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行如本申请实施例提供的测试用例生成方法。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。