掌桥专利:专业的专利平台
掌桥专利
首页

基于全链路标记的测试用例生成方法、系统、设备和介质

文献发布时间:2023-06-19 10:24:22


基于全链路标记的测试用例生成方法、系统、设备和介质

技术领域

本发明实施例涉及测试技术领域,尤其涉及一种基于全链路标记的测试用例生成方法、系统、设备和介质。

背景技术

在软件测试工作中,测试用例由测试输入数据、执行条件和与之对应的输出结果组成。测试用例的设计非常重要,是测试执行的正确性以及有效性的基础。如何有效地设计测试用例,一直是测试工作人员关注的问题。但是,目前的测试框架存在测试用例覆盖率低、存在多个测试用例对应同一执行路径的现象,不能快速有效的精简测试用例;其次,不同执行路径的测试用例难以自动补充。

发明内容

有鉴于此,本发明实施例提供了一种基于全链路标记的测试用例生成方法、系统、计算机设备及计算机可读存储介质,用于解决不同执行路径的测试用例难以自动补充的问题。

本发明实施例是通过下述技术方案来解决上述技术问题:

一种基于全链路标记的测试用例生成方法,包括:

获取用例库层中目标测试对象的第一测试用例,所述第一测试用例为所述用例库层中所述目标测试对象的任一测试用例;

将所述第一测试用例对应的请求路径记录为第一全链路请求路径;

接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径;

当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例。

进一步地,所述将所述第一测试用例对应的请求路径记录为第一全链路请求路径包括:

从所述用例库层中获取所述第一测试用例的第一参数;

根据所述第一参数生成用于所述测试用例对应的第一全链路请求;

执行所述第一全链路请求对应的测试任务,获取所述第一全链路请求对应的路径。

进一步地,所述执行所述第一全链路请求对应的测试任务,获取所述第一全链路请求对应的路径包括:

在执行所述第一全链路请求对应的测试任务时,以第一预设标识标记第一全链路请求对应的代码,所述第一预设标识为唯一标识;

收集被所述第一预设标识标记的代码,作为所述第一全链路请求路径。

进一步地,所述接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径包括:

接收并执行所述测试请求对应的测试任务;

在执行所述测试请求对应的测试任务时,以第二预设标识标记所述测试请求对应的代码,所述第二预设标识为唯一标识;

收集被所述第二预设标识标记的代码,作为第二全链路请求路径。

进一步地,所述当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例包括:

根据所述第一全链路请求对应的路径,生成第一请求折线路径;以及根据所述第二全链路请求对应的路径,生成第二请求折线路径;

当所述第一请求折线路径和所述第二请求折线路径不同时,则确定所述第二全链路请求路径与所述第一全链路请求路径不相同;

当所述第二全链路请求路径与所述第一全链路请求路径不同时,获取所述测试请求的第二参数;

根据所述第二参数生成所述第二全链路请求对应的第二测试用例。

进一步地,所述当所述第一请求折线路径和所述第二请求折线路径不同时,则确定所述第二全链路请求路径与所述第一全链路请求路径不相同包括:

使用预设的折线路径识别程序对第一请求折线路径和第二请求折线路径进行对比分析,得到折线路径相似值;

当所述折线路径相似值超过预设相似阈值时,则确定所述第二请求对应的路径与所述第一请求对应的路径相同。

进一步地,所述当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例后,所述方法还包括:

将所述第二测试用例写入所述用例库层中。

为了实现上述目的,本发明实施例还提供一种基于全链路标记的测试用例生成系统,包括:

测试用例获取模块,用于获取用例库层中目标测试对象的第一测试用例,所述第一测试用例为所述用例库层中所述目标测试对象的任一测试用例;

请求路径记录模块,用于将所述第一测试用例对应的请求路径记录为第一全链路请求路径;

所述请求路径记录模块,还用于接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径;

测试用例生成模块,还用于当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例。

为了实现上述目的,本发明实施例还提供一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述基于全链路标记的测试用例生成方法的步骤。

为了实现上述目的,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的基于全链路标记的测试用例生成方法的步骤。

本发明实施例提供的基于全链路标记的测试用例生成方法、系统、计算机设备及计算机可读存储介质,获取用例库层中目标测试对象的第一测试用例,所述第一测试用例为所述用例库层中所述目标测试对象的任一测试用例;将所述第一测试用例对应的请求路径记录为第一全链路请求路径;接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径;当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例。可做到自动收集没有被测试用例覆盖的场景,自动补充不同执行路径的测试用例。

以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。

附图说明

图1为本发明实施例一之基于全链路标记的测试用例生成方法的步骤流程图;

图2为本发明实施例一之将所述第一测试用例对应的请求路径记录为第一全链路请求路径方法的步骤流程图;

图3为本发明实施例一之执行所述第一全链路请求对应的测试任务,获取所述第一全链路请求对应的路径方法的步骤流程图;

图4为本发明实施例一接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径方法的步骤流程图;

图5为本发明实施例一之当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例方法的步骤流程图;

图6为本发明实施例一之确定第一请求折线路径和所述第二请求折线路径是否相同的方法的步骤流程图;

图7为本发明实施例二之基于全链路标记的测试用例生成系统的程序模块示意图;

图8为本发明实施例三之计算机设备的硬件结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

实施例一

请参阅图1,示出了本发明实施例之基于全链路标记的测试用例生成方法的步骤流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备为执行主体进行示例性描述,具体如下:

如图1所示,所述基于全链路标记的测试用例生成方法可以包括步骤S100~步骤S400,其中:

步骤S100,获取用例库层中目标测试对象的第一测试用例,所述第一测试用例为所述用例库层中所述目标测试对象的任一测试用例。

在本实施例中,所述用例库层中保存有多个测试对象的多个测试用例,其中,每个测试对象都对应有多个测试用例,每个测试用例的覆盖范围都不相同。第一测试用例是指已经存储在用例库层中的目标测试对象的测试用例。

步骤S200,将所述第一测试用例对应的请求路径记录为第一全链路请求路径。

具体的,通过解析测试用例,生成测试用例的第一全链路请求,通过执行第一全链路请求对应的测试任务,获取第一全链路请求路径。

在一具体实施例中,如图2所示,步骤S200还可以进一步包括:

步骤S201,从所述用例库层中获取所述第一测试用例的第一参数。

在一些实施例中,用例库层中以文本形式存储有测试用例的第一参数,第一参数用于生成第一全链路请求,其中,第一参数包括第一测试用例对应请求的请求参数,例如url等相关参数。

步骤S202,根据所述第一参数生成用于所述测试用例对应的第一全链路请求。

具体的,全链路是指一个完整的数据流转经过的链路。例如,网上购物时,从买家下单到最终收货,一次完整交易的数据流要经过很多系统,例如ERP系统、仓库系统、配送系统、末端系统等。这些系统之间通过调用串成一条条链路,交易数据在链路上进行流转。一次完整的数据流转过程经过的链路就是全链路。全链路请求是指能够发起完整的数据流转的请求。

步骤S203,执行所述第一全链路请求对应的测试任务,获取所述第一全链路请求对应的路径。

具体的,请求对应的路径是指在执行该请求时覆盖的代码,第一全链路请求对应的路径是指在执行第一全链路请求时覆盖的代码。

在示例性的实施例中,如图3所示,步骤S203还可以进一步包括:

步骤S2031,在执行所述第一全链路请求对应的测试任务时,以第一预设标识标记第一全链路请求对应的代码,所述第一预设标识为唯一标识。

例如,在执行到第一全链路请求A对应的测试任务时,,使用第一预设标识“A”标记在执行所述第一全链路请求A时,所述第一全链路请求A覆盖的代码。对于请求路径,假设一共有5行代码,执行路径可以是执行了第一行代码,第二行代码,第三行代码,第五行代码等。例如,当执行第一全链路请求A对应的A测试任务时,执行了第一行代码,第三行代码,第五行代码,则使用第一预设标识“A”标记第一行代码,第三行代码和第五行代码。执行第一全链路请求B对应的B测试任务时,执行了第一行代码,第二行代码和第四行代码,则使用第一预设标识“B”标记第一行代码,第二行代码和第四行代码。

步骤S2032,收集被所述第一预设标识标记的代码,作为所述第一全链路请求路径。

例如,对于第一全链路请求A,获取被标记第一预设标识“A”的执行路径,即第一全链路请求A对应的路径为第一行代码,第三行代码,第五行代码,第一全链路请求B对应的路径为第一行代码,第二行代码和第四行代码。

步骤S300,接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径。

在示例性的实施例中,如图4所示,步骤S300还可以进一步包括:

步骤S301,接收并执行所述测试请求对应的测试任务。

步骤S302,在执行所述测试请求对应的测试任务时,以第二预设标识标记所述测试请求对应的代码,所述第二预设标识为唯一标识。

具体的,在接收到测试请求C的情况下,使用第二预设标识“C”标记在执行所述测试请求C对应的测试任务时,所述第二全链路请求C对应的路径。同样,对于请求路径,一共有5行代码,请求路径是执行了第一行代码,第二行代码,第三行代码,第五行代码等。例如,当执行测试请求C时,执行了第一行代码,第三行代码,第五行代码,则使用第一预设标识“C”标记第一行代码,第三行代码和第五行代码。执行测试请求D时,执行了第二行代码,第三行代码和第四行代码,则使用第一预设标识“D”标记第一行代码,第二行代码和第四行代码。

步骤S303,收集被所述第二预设标识标记的代码,作为第二全链路请求路径。

具体的,对于测试请求C对应的路径为第一行代码,第三行代码,第五行代码,测试请求D对应的路径为第一行代码,第二行代码和第四行代码。

步骤S400,当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例。

在示例性的实施例中,如图5所示,步骤S400还可以进一步包括:

步骤S401,根据所述第一全链路请求对应的路径,生成第一请求折线路径;以及根据所述第二全链路请求对应的路径,生成第二请求折线路径。

具体的,折线路径是指根据请求对应的路径生成的虚拟折线图,例如,根据第一全链路子请求A生成虚拟折线图A,根据第二全链路请求C生成虚拟折线图C。

步骤S402,当所述第一请求折线路径和所述第二请求折线路径不同时,则确定所述第二全链路请求路径与所述第一全链路请求路径不相同。

在示例性的实施例中,如图6所示,步骤S402还可以进一步包括:

步骤S4021,使用预设的折线路径识别程序对第一请求折线路径和第二请求折线路径进行对比分析,得到折线路径相似值。

步骤S4022,当所述折线路径相似值超过预设相似阈值时,则确定所述第二请求对应的路径与所述第一请求对应的路径相同。

具体的,使用预设的折线路径识别程序对第一请求折线路径和第二请求折线路径进行对比分析,得到折线路径相似值,当相似值超过预设相似阈值时,则确定所述第二请求对应的路径与所述第一请求对应的路径相同,反之则不相同,在示例性的实施例中预设相似阈值为90%。如果存在测试请求对应的路径与第一全链路对应的路径相同,则表示测试请求已经被第一全链路请求覆盖,即测试请求与第一全链路请求覆盖率相同,覆盖率是是度量测试完整性的一个手段,是测试有效性的一个度量。覆盖率通过已执行代码表示,当执行请求时已执行的代码相同,对应的折线路径也相同,覆盖率就相同,由于全链路是指一次完整的数据流转过程经过的链路,而数据流转的过程越长,代码被执行的就越多,因此,全链路请求能够尽可能提高覆盖率,通过设置测试用例生成第一全链路请求,且当测试请求与第一全链路请求覆盖率不相同时再生成测试用例,能够保证生成测试用例的测试完整性。

此外,由于用例库层中保存有多条全链路的测试用例,对应存在有多条第一全链路请求,当计算折线路径相似值时,需要将测试请求的折线路径与用例库层中的所有测试用例对应的第一全链路请求对应折线路径进行相似值计算。例如,用例库层中有测试用例A和测试用例B,对应有第一全链路请求A和第一全链路请求B,,测试请求C需要与第一全链路请求A的折线路径进行相似值计算,也要与第一全链路请求B的折线路径进行相似值计算,同理,测试请求D也需要与第一全链路请求A和第一全链路请求B的折线路径进行相似值计算。

步骤S403,当所述第二全链路请求路径与所述第一全链路请求路径不同时,获取所述测试请求的第二参数。

步骤S404,根据所述第二参数生成所述第二全链路请求对应的第二测试用例。

具体的,当所述第二全链路请求路径与所述第一全链路请求路径不同时,获取测试请求的第二参数,第二参数包括请求参数和返回参数,并根据请求参数和返回参数生第二测试用例。并根据测试请求的请求参数和返回参数,生成第二测试用例。

在一些实施例中,所述当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例后,所述方法还包括:

将所述第二测试用例写入所述用例库层中。

例如,当测试请求D与第一全链路请求A和第一全链路请求B对应的路径均不相同时,则将测试请求D的生成的第二测试用例写入用例库层中。

在另一实施方式中,如果存在第二全链路请求路径与第一全链路路径相同,则表示测试请求已经被第一全链路请求覆盖,即测试请求已经被用例库层中第一测测试用例覆盖,则将该测试请求与该第一全链路测试请求对应测第一全链路请求合并归类。

本实施是为了根据对目标对象对应的测试请求,生成区别用例库层中第一测试用例的第二测试用例。因此,需要获取目标测试对象的第一测试用例,并将执行第一测试用例的覆盖范围与执行测试请求对比,当执行第一测试用例的覆盖范围与执行测试请求时的覆盖范围不相同时,根据测试请求生成第二测试用例。

本发明实施例获取用例库层中目标测试对象的第一测试用例,所述第一测试用例为所述用例库层中所述目标测试对象的任一测试用例;将所述第一测试用例对应的请求路径记录为第一全链路请求路径;接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径;当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例。通过将相同相似的执行路径的测试用例进行自动筛选归类,避免重复用例,能够快速有效的精简测试用例;全链路标记结合覆盖率,可做到自动收集没有被测试用例覆盖的场景,自动补充不同执行路径的测试用例。

实施例二

请继续参阅图7,示出了本发明基于全链路标记的测试用例生成系统的程序模块示意图。在本实施例中,基于全链路标记的测试用例生成系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述基于全链路标记的测试用例生成方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述基于全链路标记的测试用例生成系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:

测试用例获取模块200,用于获取用例库层中目标测试对象的第一测试用例,所述第一测试用例为所述用例库层中所述目标测试对象的任一测试用例;

请求路径记录模块202,用于将所述第一测试用例对应的请求路径记录为第一全链路请求路径;

进一步地,请求路径记录模块202还用于:

从所述用例库层中获取所述第一测试用例的第一参数;

根据所述第一参数生成用于所述测试用例对应的第一全链路请求;

执行所述第一全链路请求对应的测试任务,获取所述第一全链路请求对应的路径。

进一步地,请求路径记录模块202还用于:

在执行所述第一全链路请求对应的测试任务时,以第一预设标识标记第一全链路请求对应的代码,所述第一预设标识为唯一标识;

收集被所述第一预设标识标记的代码,作为所述第一全链路请求路径。

所述请求路径记录模块202,还用于接收对所述目标测试对象的测试请求,获取所述测试请求对应的请求路径记录为第二全链路请求路径;

进一步地,请求路径记录模块202还用于:

接收并执行所述测试请求对应的测试任务;

在执行所述测试请求对应的测试任务时,以第二预设标识标记所述测试请求对应的代码,所述第二预设标识为唯一标识;

收集被所述第二预设标识标记的代码,作为第二全链路请求路径。

测试用例生成模块204,还用于当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例。

进一步地,测试用例生成模块204还用于:

根据所述第一全链路请求对应的路径,生成第一请求折线路径;以及根据所述第二全链路请求对应的路径,生成第二请求折线路径;

当所述第一请求折线路径和所述第二请求折线路径不同时,则确定所述第二全链路请求路径与所述第一全链路请求路径不相同;

当所述第二全链路请求路径与所述第一全链路请求路径不同时,获取所述测试请求的第二参数;

根据所述第二参数生成所述第二全链路请求对应的第二测试用例。

进一步地,测试用例生成模块204还用于:

使用预设的折线路径识别程序对第一请求折线路径和第二请求折线路径进行对比分析,得到折线路径相似值;

当所述折线路径相似值超过预设相似阈值时,则确定所述第二请求对应的路径与所述第一请求对应的路径相同。

进一步地,测试用例生成模块204还用于:

当所述第一全链路请求路径与所述第二全链路请求路径不同时,根据所述测试请求生成第二测试用例后,将所述第二测试用例写入所述用例库层中。

实施例三

参阅图8,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图8所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及基于全链路标记的测试用例生成系统20。其中:

本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如上述实施例的基于全链路标记的测试用例生成系统20的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行基于全链路标记的测试用例生成系统20,以实现上述实施例的基于全链路标记的测试用例生成方法。

所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述计算机设备2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述计算机设备2与外部终端相连,在所述计算机设备2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。

需要指出的是,图8仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。

在本实施例中,存储于存储器21中的所述基于全链路标记的测试用例生成系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。

例如,图7示出了所述实现基于全链路标记的测试用例生成系统20实施例二的程序模块示意图,该实施例中,所述基于全链路标记的测试用例生成系统20可以被划分为测试用例获取模块200、请求路径记录模块202和测试用例生成模块204。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述基于全链路标记的测试用例生成系统20在所述计算机设备2中的执行过程。所述程序模块200-204的具体功能在实施例二中已有详细描述,在此不再赘述。

实施例四

本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储基于全链路标记的测试用例生成系统20,被处理器执行时实现上述实施例的基于全链路标记的测试用例生成方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 基于全链路标记的测试用例生成方法、系统、设备和介质
  • 一种测试用例生成方法、系统、存储介质及计算机设备
技术分类

06120112533462