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

测试用例的处理方法、装置和存储介质

文献发布时间:2023-06-19 10:57:17


测试用例的处理方法、装置和存储介质

技术领域

本申请涉及计算机技术,尤其涉及一种测试用例的处理方法、装置和存储介质。

背景技术

随着计算机技术的发展,越来越多的技术(大数据、分布式、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对服务请求技术提出了更高的要求。目前,在金融科技领域,为了保证程序或者应用的准确性,通常需要采用测试用例对程序或者应用进行自动化测试。

现有技术中,由于程序或者应用的功能在不断变化,为了保证测试的准确性,就需要对测试用例进行编辑或者修改,当多个用户对同一个测试用例进行编辑时,后保存的测试用例会覆盖之前保存的测试用例,导致用户无法查看之前保存版本中对测试用例所作的修改,而且后保存的测试用例直接将前面保存的测试用例覆盖,会影响最终保存的测试用例的准确性。

发明内容

为解决现有技术中存在的问题,本发明提供一种测试用例的处理方法、装置和存储介质,不仅可以使用户能够查看之前保存版本中对测试用例所作的修改,而且可以提高最终保存的测试用例的准确性。

第一方面,本申请实施例提供一种测试用例的处理方法,应用于服务器,所述方法包括:

若检测到基础测试用例处于未加锁状态,则获取待保存测试用例和数据库中已保存的最新测试用例,所述待保存测试用例和所述最新测试用例为分别对所述基础测试用例进行修改后得到的;

确定所述待保存测试用例与所述最新测试用例的至少一个差异数据,以及与所述差异数据对应的差异类型,所述差异类型包括增加类型、删除类型和修改类型中的至少一种;

向第一终端设备发送第一消息,所述第一消息中包括所述差异数据和所述差异类型;

接收所述第一终端设备发送的第二消息,所述第二消息中包括目标差异数据和与所述目标差异数据对应的目标差异类型,所述目标差异数据为所述至少一个差异数据中的数据;

根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例。

可选的,所述获取待保存测试用例和数据库中已保存的最新测试用例,包括:

接收所述第一终端设备发送的第三消息,所述第三消息中包括所述待保存测试用例以及所述待保存测试用例的版本标识;

根据所述第三消息,获取所述最新测试用例的版本标识;

若所述待保存测试用例的版本标识与所述最新测试用例的版本标识不同,则从所述数据库中获取所述最新测试用例。

可选的,所述确定所述待保存测试用例与所述最新测试用例的至少一个差异数据,以及与所述差异数据对应的差异类型,包括:

将所述待保存测试用例与所述最新测试用例进行比对,确定所述待保存测试用例与所述最新测试用例的最长公共子序列;

分别将所述待保存测试用例和所述最新测试用例与所述最长公共子序列进行比对,将所述待保存测试用例与所述最长公共子序列之间不同的数据,以及所述最新测试用例与所述最长公共子序列之间不同的数据,确定为所述至少一个差异数据;

根据所述至少一个差异数据与所述最长公共子序列,确定与所述差异数据对应的差异类型。

可选的,所述根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例,包括:

若确定出与所述目标差异类型对应的所述目标差异数据为所述最新测试用例中的数据,则将所述最新测试用例确定为所述目标测试用例;或者,

若确定出与所述目标差异类型对应的所述目标差异数据为所述待保存测试用例中的数据,则在所述最新测试用例中,对所述目标差异数据进行与所述目标差异类型对应的操作,以生成所述目标测试用例;或者,

若确定出所述目标差异数据中的第一数据为所述最新测试用例中的数据,且第二数据为所述待保存测试用例中的数据,则在所述最新测试用例中保持所述第一数据以及与所述第一数据对应的差异类型不变,且在所述最新测试用例中,对所述第二数据进行与所述第二数据的差异类型对应的操作,以生成所述目标测试用例。

可选的,所述方法还包括:

若检测到所述第一终端设备对应的基础测试用例处于加锁状态,则向除所述第一终端设备之外的第二终端设备发送锁定消息,所述锁定消息中包括所述基础测试用例的版本标识,所述锁定消息用于指示所述第二终端设备将所述第二终端设备对应的所述基础测试用例设置为锁定状态。

可选的,所述方法还包括:

在满足预设条件时,向所述第二终端设备发送解锁消息,所述解锁消息中包括处于锁定状态的基础测试用例的版本标识,所述解锁消息用于指示生成第一数值,并指示所述第二终端设备在判断出所述第一数值与预先存储的第二数值相同时将所述处于锁定状态的基础测试用例解锁;所述预设条件包括所述处于锁定状态的基础测试用例的锁定时长超过预设时长,和/或,接收到所述第一终端设备发送的第五消息,所述第五消息用于表示对所述处于锁定状态的基础测试用例进行保存。

第二方面,本申请实施例提供一种测试用例的处理方法,应用于终端设备,所述方法包括:

接收服务器发送的第一消息,所述第一消息中包括至少一个差异数据和每个差异数据对应的差异类型,所述差异数据为待保存测试用例与最新测试用例之间的差异数据,所述待保存测试用例和所述最新测试用例为对基础测试用例进行修改后得到的;

确定目标差异数据和与所述目标差异数据对应的目标差异类型,所述目标差异数据为所述至少一个差异数据中的数据;

向所述服务器发送所述第二消息,所述第二消息中包括所述目标差异数据和所述目标差异类型,所述第二消息用于指示所述服务器根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例。

可选的,所述确定目标差异数据和与所述目标差异数据对应的目标差异类型,包括:

显示所述差异数据和所述差异类型;

接收用户触发的第一操作指令,所述第一操作指令中包括所述目标差异数据和所述目标差异类型。

可选的,所述方法还包括:

接收用户触发的第二操作指令,所述第二操作指令用于对所述待保存测试用例进行保存;

根据所述第二操作指令,向所述服务器发送第三消息,所述第三消息中包括所述待保存测试用例以及所述待保存测试用例的版本标识,所述第三消息用于指示所述服务器获取所述最新测试用例的版本标识,并在所述待保存测试用例的版本标识与所述最新测试用例的版本标识不同时,从所述数据库中获取所述最新测试用例。

可选的,所述方法还包括:

接收所述用户触发的第三操作指令,所述第三操作指令中包括待锁定的基础测试用例的版本标识;

根据所述第三操作指令,向所述服务器发送第四消息,所述第四消息中包括待锁定的基础测试用例的版本标识,所述第四消息用于指示所述服务器向除所述终端设备之外的第二终端设备发送锁定消息,所述锁定消息中包括所述待锁定的基础测试用例的版本标识,所述锁定消息用于指示所述第二终端设备将将所述第二终端设备对应的所述待锁定的基础测试用例设置为锁定状态。

可选的,所述方法还包括:

接收所述用户触发的第四操作指令,所述第四操作指令用于指示对处于锁定状态的基础测试用例进行保存;

根据所述第四操作指令,向所述服务器发送第五消息,所述第五消息用于指示所述服务器向所述第二终端设备发送解锁消息,所述解锁消息中包括处于锁定状态的基础测试用例的版本标识,所述解锁消息用于指示生成第一数值,并指示所述第二终端设备在判断出所述第一数值与预先存储的第二数值相同时将所述处于锁定状态的基础测试用例解锁。

第三方面,本申请实施例提供一种测试用例的处理装置,包括:

处理模块,用于在检测到基础测试用例处于未加锁状态时,获取待保存测试用例和数据库中已保存的最新测试用例,所述待保存测试用例和所述最新测试用例为分别对基础测试用例进行修改后得到的;

所述处理模块,还用于确定所述待保存测试用例与所述最新测试用例的至少一个差异数据,以及与所述差异数据对应的差异类型,所述差异类型包括增加类型、删除类型和修改类型中的至少一种;

发送模块,用于向第一终端设备发送第一消息,所述第一消息中包括所述差异数据和所述差异类型;

接收模块,用于接收所述第一终端设备发送的第二消息,所述第二消息中包括目标差异数据和与所述目标差异数据对应的目标差异类型,所述目标差异数据为所述至少一个差异数据中的数据;

所述处理模块,还用于根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例。

可选的,所述处理模块,具体用于:

接收所述第一终端设备发送的第三消息,所述第三消息中包括所述待保存测试用例以及所述待保存测试用例的版本标识;

根据所述第三消息,获取所述最新测试用例的版本标识;

若所述待保存测试用例的版本标识与所述最新测试用例的版本标识不同,则从所述数据库中获取所述最新测试用例。

可选的,所述处理模块,具体用于:

将所述待保存测试用例与所述最新测试用例进行比对,确定所述待保存测试用例与所述最新测试用例的最长公共子序列;

分别将所述待保存测试用例和所述最新测试用例与所述最长公共子序列进行比对,将所述待保存测试用例与所述最长公共子序列之间不同的数据,以及所述最新测试用例与所述最长公共子序列之间不同的数据,确定为所述至少一个差异数据;

根据所述至少一个差异数据与所述最长公共子序列,确定与所述差异数据对应的差异类型。

可选的,所述处理模块,具体用于:

若确定出与所述目标差异类型对应的所述目标差异数据为所述最新测试用例中的数据,则将所述最新测试用例确定为所述目标测试用例;或者,

若确定出与所述目标差异类型对应的所述目标差异数据为所述待保存测试用例中的数据,则在所述最新测试用例中,对所述目标差异数据进行与所述目标差异类型对应的操作,以生成所述目标测试用例;或者,

若确定出所述目标差异数据中的第一数据为所述最新测试用例中的数据,且第二数据为所述待保存测试用例中的数据,则在所述最新测试用例中保持所述第一数据以及与所述第一数据对应的差异类型不变,且在所述最新测试用例中,对所述第二数据进行与所述第二数据的差异类型对应的操作,以生成所述目标测试用例。

可选的,

所述发送模块,还用于在检测到所述第一终端设备对应的基础测试用例处于加锁状态时,向除所述第一终端设备之外的第二终端设备发送锁定消息,所述锁定消息中包括所述基础测试用例的版本标识,所述锁定消息用于指示所述第二终端设备将所述第二终端设备对应的所述基础测试用例设置为锁定状态。

可选的,所述发送模块,还用于在满足预设条件时,向所述第二终端设备发送解锁消息,所述解锁消息中包括处于锁定状态的基础测试用例的版本标识,所述解锁消息用于指示生成第一数值,并指示所述第二终端设备在判断出所述第一数值与预先存储的第二数值相同时将所述处于锁定状态的基础测试用例解锁;所述预设条件包括所述处于锁定状态的基础测试用例的锁定时长超过预设时长,和/或,接收到所述第一终端设备发送的第五消息,所述第五消息用于表示对所述处于锁定状态的基础测试用例进行保存。

第四方面,本申请实施例提供一种测试用例的处理装置,包括:

接收模块,用于接收服务器发送的第一消息,所述第一消息中包括至少一个差异数据和每个差异数据对应的差异类型,所述差异数据为待保存测试用例与最新测试用例之间的差异数据,所述待保存测试用例和所述最新测试用例为对基础测试用例进行修改后得到的;

处理模块,用于确定目标差异数据和与所述目标差异数据对应的目标差异类型,所述目标差异数据为所述至少一个差异数据中的数据;

发送模块,用于向所述服务器发送所述第二消息,所述第二消息中包括所述目标差异数据和所述目标差异类型,所述第二消息用于指示所述服务器根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例。

可选的,所述装置还包括:显示模块;

所述显示模块,用于显示所述差异数据和所述差异类型;

所述接收模块,还用于接收用户触发的第一操作指令,所述第一操作指令中包括所述目标差异数据和所述目标差异类型。

可选的,所述接收模块,还用于接收用户触发的第二操作指令,所述第二操作指令用于对所述待保存测试用例进行保存;

所述发送模块,还用于根据所述第二操作指令,向所述服务器发送第三消息,所述第三消息中包括所述待保存测试用例以及所述待保存测试用例的版本标识,所述第三消息用于指示所述服务器获取所述最新测试用例的版本标识,并在所述待保存测试用例的版本标识与所述最新测试用例的版本标识不同时,从所述数据库中获取所述最新测试用例。

可选的,所述接收模块,还用于接收所述用户触发的第三操作指令,所述第三操作指令中包括待锁定的基础测试用例的版本标识;

所述发送模块,还用于根据所述第三操作指令,向所述服务器发送第四消息,所述第四消息中包括待锁定的基础测试用例的版本标识,所述第四消息用于指示所述服务器向除所述终端设备之外的第二终端设备发送锁定消息,所述锁定消息中包括所述待锁定的基础测试用例的版本标识,所述锁定消息用于指示所述第二终端设备将将所述第二终端设备对应的所述待锁定的基础测试用例设置为锁定状态。

可选的,所述接收模块,还用于接收所述用户触发的第四操作指令,所述第四操作指令用于指示对处于锁定状态的基础测试用例进行保存;

所述发送模块,还用于根据所述第四操作指令,向所述服务器发送第五消息,所述第五消息用于指示所述服务器向所述第二终端设备发送解锁消息,所述解锁消息中包括处于锁定状态的基础测试用例的版本标识,所述解锁消息用于指示生成第一数值,并指示所述第二终端设备在判断出所述第一数值与预先存储的第二数值相同时将所述处于锁定状态的基础测试用例解锁。

第五方面,本申请实施例提供一种服务器,包括:收发器;处理器;存储器;以及计算机程序;

其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。

第六方面,本申请实施例提供一种终端设备,包括:收发器;显示器;处理器;存储器;以及计算机程序;

其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第二方面所述的方法的指令。

第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行如第一方面所述的方法或使得终端设备执行如第二方面所述的方法。

第八方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面或第二方面所述的方法。

本申请实施例提供的测试用例的处理方法、装置和存储介质,在检测到基础测试用例处于未加锁状态时,通过获取待保存测试用例和数据库中已保存的最新测试用例,并确定待保存测试用例与最新测试用例的至少一个差异数据,以及与差异数据对应的差异类型,然后向第一终端设备发送第一消息,该第一消息中包括差异数据和差异类型,通过接收第一终端设备发送的第二消息,该第二消息中包括目标差异数据和与目标差异数据对应的目标差异类型,并根据目标差异数据、目标差异类型和最新测试用例,生成目标测试用例。由于服务器在保存待保存测试用例时,通过确定待保存测试用例与最新测试用例的至少一个差异数据,并根据终端设备确定出的目标差异数据以及对应的目标差异类型,生成目标测试用例,从而避免了现有技术中直接采用后保存的测试用例覆盖之前保存的测试用例的现象,而且实现了选择性的对差异数据进行保存,从而可以提高目标测试用例的准确性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的测试用例的处理方法的系统架构图;

图2为本申请实施例提供的一种测试用例的处理方法的信令图;

图3为第二操作指令的触发示意图;

图4为差异数据的显示示意图;

图5为本申请实施例提供的一种测试用例的处理方法的另一信令图;

图6为触发第三操作指令的示意图;

图7为本申请实施例提供的一种测试用例的处理方法的另一信令图;

图8为本申请实施例提供的测试用例的处理装置的一示意图;

图9为本申请实施例提供的测试用例的处理装置的一示意图;

图10为本申请实施例提供的一种服务器实施例的结构示意图;

图11为本申请实施例提供的一种终端设备实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了帮助本领域技术人员更好地理解本申请的技术方案,下面将对本申请技术方案涉及的相关内容进行介绍。

(1)自动化测试,是指根据系统的使用场景,自动去模拟执行界面真实的操作,测试功能是否正确。

(2)测试用例(Test Case)指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果和测试脚本等。

(3)Redis,是基于内存实现的高性能的key-value数据存储的数据库。

本申请实施例提供的测试用例的处理方法可以应用于采用测试用例对程序或者应用进行自动化测试的场景中,或者应用于多个用户对同一个测试用例进行编辑或者修改时,如何对测试用例如进行有效管理的场景中。

在上述场景中,可以允许多个测试人员对测试用例进行修改或者编辑,也即多人可以同时编辑同一个测试用例。在现有技术中,当多个用户对同一个测试用例进行编辑时,通常是按照编辑完成的时间顺序,对测试用例进行保存,这样,后保存的测试用例会覆盖之前保存的测试用例。例如,若用户 A和用户B分别通过不同的终端设备对同一个测试用例进行编辑,若用户A 先编辑完成,则可以将编辑完成的测试用例进行保存。在用户B完成编辑后,服务器在接收到用户B通过终端设备发送的保存指令时,会采用用户B编辑完成的测试用例直接覆盖用户A编辑完成的测试用例,这样,用户将无法查看用户A编辑完成的测试用例。另外,由于用户B编辑完成的测试用例会直接覆盖用户A编辑完成的测试用例,若用户B编辑的测试用例准确性不高,则会直接影响最终保存的测试用例的准确性。

本申请实施例中考虑到上述问题,提出一种测试用例的处理方法,在该方法中,在多人同时对同一个测试用例进行编辑或者修改,并在修改完成后进行保存时,若之前已经有保存的测试用例,也即出现了数据冲突时,可以将多人修改的内容均进行保存,例如可以将多人修改的内容保存在同一个版本的测试用例中,以便用户进行查看,这样既可避免后保存的测试用例直接覆盖在先保存的测试用例的情况。另外,多个测试人员对同一个测试用例进行修改时,可能会存在大部分修改内容相同的现象,为了节省存储空间,可以将多人修改的内容进行比较,若存在差异数据,也即修改不同的内容时,可以从差异数据中确定出目标差异数据,具体的,可以通过界面进行显示,测试人员根据该差异数据,可以确定需要保留的部分。这样,一方面,不会根据保存时间的先后顺序,将后保存的测试用例直接覆盖之前保存的测试用例,而且用户还可以查看之前保存的测试用例。另一方面,用户可以根据差异数据,选择需要保留的部分,由此可以提高最终保存的测试用例的准确性。

在描述本申请的测试用例的处理方法的方案之前,先根据图1来了解下本申请的系统架构。

图1为本申请实施例提供的测试用例的处理方法的系统架构图。如图1 所示,该系统包括:第一终端设备101、第二终端设备102、103和104、以及服务器105。其中,用户A可以通过第一终端设备101对测试用例进行编辑或者修改,用户B、C和D可以分别通过第二终端设备102、103和104对测试用例进行编辑或者修改,用户通过终端设备编辑或者修改后的测试用例,可以保存在服务器105的数据库中,其中,该数据库可以为Redis数据库,也可以为SQL数据库,当然,还可以为其他类型的数据库,只要能存储测试用例即可。另外,服务器105可以为一台服务器,可以为多台服务器组成的分布式服务器集群。

以对系统进行测试的场景为例,用户A可以通过终端设备101采用测试用例1.1对系统进行测试,并在测试过程中可以对测试用例1.1进行修改,同样的,用户B、用户C和用户D可以分别通过终端设备102、103和104采用测试用例1.1对系统进行测试,并在测试过程中可以对测试用例1.1进行修改。也即,多个用户可以同时对同一个测试用例进行修改,且用户可以通过各自对应的终端设备,将修改之后的测试用例发送到服务器105,以对每个用户修改后的测试用例进行保存。另外,为了使用户能够查看到其他用户对测试用例所作的修改,服务器105在确定出已经有至少两个用户对测试用例进行保存时,会比较这些测试用例之间的差异,并将差异数据发送给终端设备,以进行显示,这样,用户将可以根据该差异数据,确定自己想要保存的测试用例,从而生成目标测试用例以进行保存。该目标测试用例用于对系统进行测试。

应该理解,在图1所示的系统架构中,用户、第一终端设备101、第二终端设备102、103和104以及服务器105的数目仅仅是示例性的,更多或更少的数量都属于本申请的保护范畴。并且,在上述示例运行场景中,所述用户可以使用各种设备访问网络,例如个人计算机、服务器、平板、手机、掌上电脑(Personal Digital Assistant,PDA)、笔记本或其它任何具有联网功能的计算设备。而服务器105则可以利用具有更强大处理能力和更高安全性的一个服务器或服务器组来实现。上述网络可以包括各种类型的有线和无线网络,例如但不局限于:互联网、局域网、无线保真(Wireless Fidelity,WIFI)、无线局域网(WirelessLocal Area Networks,WLAN)、蜂窝通信网络(通用分组无线服务技术(General PacketRadio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、2G/3G/4G/5G蜂窝网络)、卫星通信网络等等。

在了解了本申请的系统架构后,结合图2对本申请的测试用例的处理方法的方案进行详细说明。

图2为本申请实施例提供的一种测试用例的处理方法的信令图,如图2 所示,本申请实施例提供的测试用例的处理方法包括如下步骤:

步骤201:若检测到基础测试用例处于未加锁状态,则服务器获取待保存测试用例和数据库中已保存的最新测试用例。

其中,待保存测试用例和最新测试用例为分别对基础测试用例进行修改后得到的。

在本步骤中,服务器可以通过webSocket监控出基础测试用例是否处于加锁状态。

待保存测试用例和最新测试用例为不同的用户对同一个基础测试用例进行修改后得到的。其中,最新测试用例的修改完成时间早于待保存测试用例的修改完成时间,因此,最新测试用例为修改完已经在数据库中进行保存的测试用例,待保存测试用例为当前需要保存的测试用例。

应理解,在服务器检测到基础测试用例处于未加锁状态,且在出现数据冲突,也即已经有用户对测试用例进行了修改并保存时,服务器才会获取待保存测试用例和数据库中已保存的最新测试用例。因此,在一种可能的实现方式中,第一终端设备在接收到用户触发的用于对待保存测试用例进行保存的第二操作指令后,会向服务器发送第三消息,该第三消息中包括待保存测试用例以及待保存测试用例的版本标识,服务器根据该第三消息,获取最新测试用例的版本标识,若待保存测试用例的版本标识与最新测试用例的版本标识不同,则从数据库中获取最新测试用例。

具体的,图3为第二操作指令的触发示意图,如图3所示,用户通过终端设备对基础测试用例进行修改之后,可以通过触发操作界面上的“保存”控件,以对修改后的测试用例进行保存,该修改后的测试用例即为待保存测试用例。终端设备接收到用户触发的第二操作指令,会将待保存测试用例以及待保存测试用例的版本标识携带在第三消息中发送给服务器,服务器会根据该第三消息,获取数据库中已经保存的最新测试用例的版本标识。

其中,待保存测试用例和最新测试用例均是对同一个版本的基础测试用例进行修改后得到的,服务器在对修改后的测试用例进行保存时,若确定出待保存的测试用例的版本标识与数据库中已存储的最新测试用例的版本标识相同,则说明之前没有用户进行保存,此时,不存在数据冲突,则服务器将根据最新测试用例的版本标识修改待保存的测试用例的版本标识,并存储待保存的测试用例。

若服务器确定出待保存的测试用例的版本标识与数据库中已存储的最新测试用例的版本标识不同,则说明之前已经有用户保存了修改后的测试用例,此时,存在数据冲突,则服务器将会从数据库中获取最新测试用例。

举例来说,用户A和用户B分别通过不同的终端设备对版本标识为1.1 的基础测试用例进行修改,当用户A修改完成之后,会通过终端设备向服务器发送保存消息,该保存消息中包括用户A修改完成的测试用例以及版本标识1.1,服务器将获取在数据库中存储的最新测试用例的版本标识,若该最新测试用例的版本标识也为1.1,则说明之前没有其他用户对该测试用例进行修改并保存,则服务器将自动自增版本号作为当前测试用例的版本标识,例如修改为1.2,此时,用户A修改后的测试用例即为数据库中保存的最新测试用例,且该最新测试用例的版本标识为1.2。

当用户B修改完成之后,会通过对应的终端设备向服务器发送保存消息,该保存消息中包括用户B修改完成的测试用例以及版本标识1.1,服务器将获取在数据库中存储的最新测试用例的版本标识,此时获取的最新测试用例的版本标识为1.2,该版本标识与待保存测试用例的版本标识不同,则说明之前有其他用户对该测试用例进行了保存,则服务器将获取版本标识为1.2的最新测试用例,并将用户B修改完成需要进行保存的测试用例确定为待保存测试用例。

需要进行说明的是,服务器在对测试用例的版本标识进行更新时,通常会先判断是否是第一个版本,如果是第一个版本,则会为该测试用例设置当前版本标识,通常默认该测试用例的版本标识为1.1,并将设置的版本标识保存到数据库Version表中,而且会向终端设备返回该版本标识。另外,在创建测试用例的内容后,测试用例的所有信息会转换成Xml的形式作为内容存储,其中版本标识(version ID)字段会设置为返回的版本标识Id,保存到数据库 Case Content表中。

进一步的,如果不是第一个版本,则查询当前数据库中已保存的最新测试用例的版本标识,并自动自增版本号作为当前的版本标识,其中,自动自增版本号的逻辑如下:如果是小修改,则将最后一位数字自增,比如:由1.1 新增到1.2,如果是大修改,则第一个数字自增,最后一个数字重新设置为1,比如:由1.3新增2.1。其中,上述版本号的确定,可以是由服务器根据用户修改的内容多少来确定,也可以是由用户通过终端设备向服务器发送携带有版本号的修改消息,服务器根据该修改消息中的版本号来确定的。

在本实施例中,由于服务器在确定出待保存测试用例的版本标识与最新测试用例的版本标识不同时,则从数据库中获取最新测试用例,以确定待保存测试用例与最新测试用例之间的差异数据,由此可以避免直接采用待保存测试用例覆盖最新测试用例的现象。

步骤202:服务器确定待保存测试用例与最新测试用例的至少一个差异数据,以及与差异数据对应的差异类型,该差异类型包括增加类型、删除类型和修改类型中的至少一种。

在本步骤中,服务器在确定出待保存测试用例不是第一个版本的测试用例,且待保存测试用例的版本标识与最新测试用例的版本标识不同时,将比较获取到的待保存测试用例与最新测试用例之间的至少一个差异数据以及与每个差异数据相对应的差异类型。其中,差异数据也可以理解为待保存测试用例与最新测试用例之间不同的数据。

在一种可能的实现方式中,可以将待保存测试用例与最新测试用例进行比对,确定待保存测试用例与最新测试用例的最长公共子序列,分别将待保存测试用例和最新测试用例与最长公共子序列进行比对,将待保存测试用例与最长公共子序列之间不同的数据,以及最新测试用例与最长公共子序列之间不同的数据,确定为至少一个差异数据,然后根据至少一个差异数据与最长公共子序列,确定与差异数据对应的差异类型。

具体的,本申请实施例中,可以通过Myers差分算法,确定待保存测试用例与最新测试用例的至少一个差异数据,以及与每个差异数据对应的差异类型。

其中,Myers差分算法,是一种文本差异比对的算法,通过比对新、旧两个数据集的差异,生成旧数据到新数据的最小变动。主要是解决最长公共子序列(Longest CommonSubsequence,LCS)的问题。

具体的,服务器首先将待保存测试用例和最新测试用例按每一行内容拆分成字符串,从而得到两个数据集,分别是源数据集original和修订数据集 revised。然后使用Google DiffUtils框架工具类中实现的Myers差分算法处理上述数据集,即输入源数据集original和修订数据集revised,经过算法运算后,可以获取到两个数据集中每行字符串的LCS,从而可以获取到每行差异信息Delta列表。每行差异信息Delta列表中包括了每行源数据集original比较的不同的字符串集合original diff和每行修订数据集revised比较的不同的字符串集合revised diff和每行开始的位置position,然后再根据比较的差异字符串信息得出操作类型,也即差异类型。

其中,Google DiffUtils框架工具类是Google提供的一个Myers差分算法实现工具类。通过比对两个数据集,返回差异信息Deltas对象列表。Deltas 对象包括了源数据和比较数据的每行字符内容和字符的position,和比较得出的操作类型,例如新增、修改和删除等。

举例来说,若待保存测试用例为“abcdefg”,最新测试用例为“defghjk”,通过将待保存测试用例与最新测试用例进行比对,确定出待保存测试用例与最新测试用例的最长公共子序列LCS为“defg”,然后将LCS与待保存测试用例“abcdefg”相比,差异数据为“abc”,且差异类型为删除类型,将LCS 与最新测试用例“defghjk”相比,差异数据为“hjk”,且差异类型为增加类型。

进一步的,可以预先在服务器中新建insertList增加类型、deleteList删除类型和changeList修改类型的列表,其分别用于保存分类的信息。在获取到差异数据之后,可以循环遍历每个差异数据以及对应的差异类型,将每个差异数据分别存储到对应的列表中,以供用户后续进行查看,从而可以方便用户操作,提高用户体验。

在本实施例中,由于Myers差分算法在对大量数据进行处理时具有较高的性能,因此,服务器通过Myers差分算法确定出待保存测试用例与最新测试用例之间的至少一个差异数据,以及与差异数据对应的差异类型,不仅可以提高差异数据和差异类型确定的效率,而且可以提高准确性。

步骤203:服务器向第一终端设备发送第一消息,该第一消息中包括差异数据和差异类型。

在本步骤中,服务器在确定出待保存测试用例与最新测试用例的至少一个差异数据以及与每个差异数据对应的差异类型后,为了使用户能通过终端设备直观的浏览其他用户对基础测试用例所作的修改,以及其他用户和该用户所修改内容之间的差异数据以及差异类型,服务器可以将确定出的差异数据以及对应的差异类型携带在第一消息中发送给第一终端设备。

示例性的,为了使不同差异类型的差异数据,以不同形式显示在第一终端设备上,服务器需要根据差异类型对差异数据进行处理。例如可以以不同的颜色显示不同类型的差异数据,如删除类型的差异数据,可以显示为红色,增加类型的差异数据,可以显示为绿色,修改类型的差异数据,可以显示为蓝色等。应理解,对于待保存测试用例和最新测试用例之间的相同数据,可以正常显示。

如果以绿色显示增加类型的差异数据时,服务器可以通过如下方式对差异数据进行处理:

INSERT_TAG_BEGIN="

style='background:rgba(0,191,165,0.16);display:inline-block'>";

INSERT_TAG_END="";

如果以红色显示删除类型的差异数据时,服务器可以通过如下方式对差异数据进行处理:

DELETE_TAG_BEGIN="

style='background:rgba(226,59,59,0.16);display:inline-block'>";

DELETE_TAG_END=""

另外,如果是删除类型,可以选择dalta中original diff的字符列表,并在每个字符前后加上DELETE_TAG_BEGIN和DELET_TAG_END。

如果是增加类型,可以选择dalta中revised diff的字符列表,并在每个字符前后加上INSERT_TAG_BEGIN和INSERT_TAG_END。

如果是修改类型,可以选择dalta里面original diff和revised diff字符列表,并分别处理两者的删除和新增的内容标记。

服务器将所有处理完成的字符列表通过position字段按顺序拼接生成新的内容,以发送给第一终端设备。

示例性的,第一终端设备在接收到第一消息后,会对第一消息中的差异数据进行解析处理,并根据差异类型的不同,采用不同的方式显示差异数据。

例如,图4为差异数据的显示示意图,假设待保存测试用例为“abcdefg”,最新测试用例为“defghjk”,且确定出待保存测试用例与LCS相比,差异数据为“abc”,且差异类型为删除类型,最新测试用例与LCS相比,差异数据为“hjk”,且差异类型为增加类型。如图4所示,第一终端设备会将差异数据进行拼接显示,如删除类型的差异数据,可以以斜线为背景进行显示,增加类型的差异数据,可以以横线为背景进行显示,同样的,修改类型的差异数据,可以以其他背景进行显示,只要能和删除类型和增加类型的数据进行区分即可。当然,还可以以其他方式区分不同的差异数据以及差异类型,例如,可以根据差异类型,采用不同的颜色进行显示,如删除类型的差异数据,可以显示为红色,增加类型的差异数据,可以显示为绿色,修改类型的差异数据,可以显示为蓝色等。应理解,对于待保存测试用例和最新测试用例之间的相同数据,可以正常显示。

步骤204:第一终端设备确定目标差异数据和与目标差异数据对应的目标差异类型,该目标差异数据为至少一个差异数据中的数据。

在本步骤中,第一终端设备在接收到差异数据之后,可以向用户显示该差异数据和对应的差异类型,用户根据自己的需求,选择想要保留的数据,因此,会通过显示界面触发第一操作指令,该第一操作指令中包括用户从至少一个差异数据中选择的目标差异数据,以及与该目标差异数据所对应的目标差异类型。

例如,继续参照图4所示,用户想要将差异数据“hjk”保留在最终的测试用例中,则可以将差异数据“hjk”确定为目标差异数据,且该目标差异数据的差异类型为增加类型。用户通过点击“hjk”,以触发第一操作指令。当然,用户还可以通过长按或者其他操作方式,触发该第一操作指令。

另外,第一终端设备在接收到差异数据和差异类型之后,还可以是通过预设的规则,从差异数据中确定出目标差异数据以及与该目标差异数据对应的目标差异类型。例如,将所有差异类型为增加类型的差异数据,确定为目标差异类型等等。

步骤205:第一终端设备向服务器发送第二消息,该第二消息中包括目标差异数据和与目标差异数据对应的目标差异类型。

在本步骤中,第一终端设备在确定出目标差异数据和对应的目标差异类型后,会向服务器发送第二消息。

示例性的,第一终端设备在接收到用户触发的第一操作指令之后,将用户选择的目标差异数据和目标差异数据对应的目标差异类型携带在第二消息中发送给服务器。其中,目标差异数据可以包括部分差异数据,也可以包括全部的差异数据。

示例性的,第一终端设备也可以将根据预设规则确定出的目标差异数据和目标差异数据对应的目标差异类型携带在第二消息中发送给服务器。

步骤206:服务器根据目标差异数据、目标差异类型和最新测试用例,生成目标测试用例。

在本步骤中,服务器根据接收到的目标差异数据,该目标差异数据对应的目标差异类型以及数据库中已保存的最新测试用例,生成目标测试用例,并将该目标测试用例进行保存。由于测试人员可以根据自己的需求从至少一个差异数据中选择目标差异数据进行保存,而不是采用后保存的测试用例覆盖在先保存的测试用例,因此,可以提高目标测试用例的准确性。

在一种可能的实现方式中,服务器在生成目标测试用例时,若确定出与目标差异类型对应的目标差异数据为最新测试用例中的数据,则将最新测试用例确定为目标测试用例。

具体的,若目标差异数据为最新测试用例中对基础测试用例进行修改后得到的数据,此时,说明用户想要保存的差异数据,全部是最新测试用例中的数据,因此,可以将最新测试用例确定为目标测试用例。

示例性的,若确定出与目标差异类型对应的目标差异数据为待保存测试用例中的数据,则在最新测试用例中,对目标差异数据进行与目标差异类型对应的操作,以生成目标测试用例。

具体的,若目标差异数据为待保存测试用例中对基础测试用例进行修改后得到的数据,此时,说明用户想要保存的差异数据,全部是待保存测试用例中的数据,此时,可以在最新测试用例中,对目标差异数据进行与目标差异类型对应的操作。例如,若目标差异类型为增加类型,则可以在最新测试用例中新增该目标差异数据,若目标差异类型为删除类型,则可以在最新测试用例中删除该目标差异数据,若目标差异类型为修改类型,则可以在最新测试用例中对该目标差异数据进行修改。

示例性的,若确定出目标差异数据中的第一数据为最新测试用例中的数据,且第二数据为待保存测试用例中的数据,则在最新测试用例中保持第一数据以及与第一数据对应的差异类型不变,且在最新测试用例中,对第二数据进行与第二数据的差异类型对应的操作,以生成目标测试用例。

具体的,若第一终端设备确定出的目标差异数据中包括多个数据,其中一部分第一数据为最新测试用例中的数据,则服务器将保持这部分差异数据不变,也即在最新测试用例中继续保留这部分第一数据。另外一部分第二数据为待保存测试用例中的数据,则服务器将会根据第二数据对应的差异类型,在最新测试用例中对第二数据进行对应的操作,如增加、删除或修改,从而生成目标测试用例。

在本实施例中,服务器可以根据第一终端设备确定出的目标差异数据、该目标差异数据对应的目标差异类型以及最新测试用例,生成目标测试用例,由此可以提高目标测试用例的准确性。另外,若目标差异数据中的第一数据为最新测试用例中的数据,且第二数据为待保存测试用例中的数据时,生成的目标测试用例中包括有用户自己修改的数据,也包括有其他用户所修改的数据,从而避免了后保存的测试用例直接覆盖之前保存的测试用例的现象。

本申请实施例提供的测试用例的处理方法,在检测到基础测试用例处于未加锁状态时,通过获取待保存测试用例和数据库中已保存的最新测试用例,并确定待保存测试用例与最新测试用例的至少一个差异数据,以及与差异数据对应的差异类型,然后向第一终端设备发送第一消息,该第一消息中包括差异数据和差异类型通过接收第一终端设备发送的第二消息,该第二消息中包括目标差异数据和与目标差异数据对应的目标差异类型,并根据目标差异数据、目标差异类型和最新测试用例,生成目标测试用例。由于服务器在保存待保存测试用例时,通过确定待保存测试用例与最新测试用例的至少一个差异数据,并根据第一终端设备从至少一个差异数据中确定出的目标差异数据以及对应的目标差异类型,生成目标测试用例,从而避免了现有技术中直接采用后保存的测试用例覆盖之前保存的测试用例的现象,而且可以选择性的对差异数据进行保存,从而可以提高目标测试用例的准确性。

图5为本申请实施例提供的一种测试用例的处理方法的另一信令图,图5 所示实施例在图2所示实施例的基础上,进一步对多人同时对同一测试用例进行编辑时,如何解决编辑冲突的过程,进行详细说明。如图5所示,本申请实施例提供的测试用例的处理方法包括如下步骤:

步骤501:第一终端设备接收用户触发的第三操作指令,该第三操作指令中包括待锁定的基础测试用例的版本标识。

具体的,当用户对基础测试用例进行编辑时,第一终端设备会将当前编辑的基础测试用例的版本标识ID curVersionId以及该基础测试用例的数据发送给服务器,以存储到数据库redis中。若用户不想让其他用户同时对该基础测试用例进行编辑时,其可以选择对该基础测试用例进行加锁。图6为触发第三操作指令的示意图,如图6所示,用户正在对测试用例“aabbccdd”进行编辑,其可以根据自己的需求,选择对该测试用例加锁,如可以通过点击“锁定”控件,以触发第三操作指令,该第三操作指令中包括待锁定的基础测试用例的版本标识,如测试用例“aabbccdd”的版本标识curVersionId。

其中,若用户选择了锁定基础测试用例,则表示当前只能该用户对这一基础测试用例进行编辑,而其他用户只可读不可写,而且在其他用户对应的终端设备的测试用例编辑页面中,将显示该基础测试用例已由用户锁定或者上锁等。

步骤502:第一终端设备根据第三操作指令,向服务器发送第四消息,该第四消息中包括待锁定的基础测试用例的版本标识。

在本步骤中,第一终端设备在接收到用户触发的第三操作指令之后,会将待锁定的基础测试用例的版本标识携带在第四消息中发送给服务器。

步骤503:服务器根据第四消息,在检测到第一终端设备对应的基础测试用例处于加锁状态时,向除第一终端设备之外的第二终端设备发送锁定消息,该锁定消息中包括待锁定的基础测试用例的版本标识,锁定消息用于指示第二终端设备将第二终端设备对应的待锁定的基础测试用例设置为锁定状态。

在本步骤中,服务器根据接收到的第四消息,若确定出基础测试用例处于锁定状态,则说明用户此时不想让其他用户编辑该基础测试用例,因此,会将待锁定的基础测试用例的版本标识携带在锁定消息中发送给第二终端设备,这样,第二终端设备会将待锁定的基础测试用例设置为锁定状态。测试人员将无法通过第二终端设备对已经锁定的基础测试用例进行编辑,而只能查看该锁定的基础测试用例。

在本实施例中,用户可以根据自己的需求,将待锁定的基础测试用例进行锁定,这样,其他用户将无法编辑该待锁定的基础测试用例,由此可以避免测试用例出现数据冲突的现象。

进一步的,在满足预设条件时,服务器会向第二终端设备发送解锁消息,该解锁消息中包括处于锁定状态的基础测试用例的版本标识,该解锁消息用于指示生成第一数值,并指示第二终端设备在判断出第一数值与预先存储的第二数值相同时将处于锁定状态的基础测试用例解锁;该预设条件包括处于锁定状态的基础测试用例的锁定时长超过预设时长,和/或,接收到第一终端设备发送的第五消息,该第五消息用于表示对处于锁定状态的基础测试用例进行保存。

具体的,服务器可以是在通过webSocket监控出处于加锁状态的基础测试用例的锁定时长超过预设时长时,将会向第二终端设备发送解锁消息,这样,第二终端设备会根据该解锁消息,对处于锁定状态的基础测试用例解锁,由此可以防止该测试用例一直被一个用户所编辑的现象,从而可以提高用户的体验。

另外,若用户对处于锁定状态的基础测试用例编辑完成后,可以触发第四操作指令,以对该编辑完成的基础测试用例进行保存。第一终端设备在接收到用户触发的第四操作指令后,会向服务器发送第五消息,服务器根据接收到的第五消息,向第二终端设备发送解锁消息,这样,第二终端设备会根据该解锁消息,对处于锁定状态的测试用例解锁,由此可以使其他用户可以继续对该测试用例进行编辑,提高了用户的体验。

另外,上述预设条件也可以是服务器通过webSocket监控出处于锁定状态的测试用例的锁定时长超过预设时长,以及接收到第一终端设备发送的第五消息时,向第二终端设备发送解锁消息。

进一步的,该预设条件还可以包括服务器通过webSocket监控出第一终端设备退出了对处于锁定状态的测试用例进行编辑的界面。

下面,对服务器实现分布式锁以及解锁的方式进行说明,其中,分布式锁是指当在分布式的系统下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻修改数据的进程数。

具体的,服务器可以基于redis实现分布式锁,示例性的,可以基于如下 redis命令来实现:SET key value[EX seconds][PX milliseconds][NX|XX],其中, EX seconds表示过期时间,单位为秒,PX milliseconds表示过期时间,单位为毫秒,NX为仅当key不存在时设置值,XX为仅当key存在时设置值。

其实现思想为:获取锁的时候,把待锁定测试用例的版本标识Id加上“_LOCK”拼接作为key,锁的value值是随机生成的唯一识别码(Universally Unique Identifier,UUID),通过该value值可以在释放锁的时候判断该锁是否是自己的。另外,通过设置参数NX,并为锁添加一个超时时间expire Time Units,如果监控出锁定状态超时,则自动释放锁,也即长时间没有操作或者编辑锁定后的测试用例时,将自动释放锁。

第二终端设备在释放锁时,会随机生成第一数值value值,在判断出该第一数值与预先存储的第二数值相同时,可以确定出该锁时自己的,从而执行释放锁的操作。本申请中在释放锁时,并不是直接用删除key这种方式,因为直接删除key的方式,会导致所有的第二终端设备都会解锁,从而导致某些不需要解锁的测试用例被解锁,造成用户体验不好。

示例性的,图6为对待锁定测试用例进行加锁和解锁的示意图,如图6 所示,若该系统中包括分布式服务器集群,也即包括多个服务器A、B和C,该分布式服务器集群中的redis组件可以缓存测试用例的版本信息以及测试用例的内容。服务器集群会根据待锁定测试用例的版本标识和用户标识(ID),从服务器集群中确定一台服务器与第一终端设备建立webSocket连接,例如可以确定服务器B与第一终端设备建立webSocket连接。服务器B可以根据 onOpen存储建立连接的webSocket,并根据测试用例的版本信息获取redis中的测试用例的内容,并发送给第一终端设备。另外,还可以根据onClose移除建立的webSocket连接,并存储测试用例的版本信息的解锁信息,并存储到redis,同时会向第二终端设备发送解锁消息。服务器B还可以根据 onMessage监听第一终端设备发送的信息,并对redis中的测试用例上锁或者解锁,例如监听第一终端设备当前是否退出对测试用例的编辑,或者是否触发了对测试用例的保存消息,或者监听用户通过第一终端设备对该测试用例的编辑时间是否超时等等。

对于第一终端设备来说,其在和服务器建立webSocket连接时,首先需要对该webSocket进行初始化。示例性的,可以通过如下方式实现webSocket 初始化:webSocket=new webSocket(SocketUrl+“/webSocket/”+contentId+“/” +username)。初始化完成之后,会通过webSocket.onMessage监听服务器发送的待锁定的基础测试用例的状态信息,并根据该待锁定的基础测试用例的状态信息显示是否需要上锁。另外,还可以通过webSocket.send(待锁定测试用例的状态信息)发送待锁定的基础测试用例的状态信息给服务器,以通知服务器该待锁定的基础测试用例需要上锁,或者可以通过webSocket.send(处于锁定状态的测试用例的状态信息)发送处于锁定状态的基础测试用例的状态信息给服务器,以通知服务器该处于锁定状态的基础测试用例需要解锁。进一步的,第一终端设备还可以通过webSocket.onclose来监听服务器的状态,以处理服务器中断后的断线重连操作。

在本申请实施例中,服务器在检测到第一终端设备对应的基础测试用例处于加锁状态时,可以控制将第二终端设备上的基础测试用例进行锁定,从而可以避免多个用户同时对同一基础测试用例进行编辑时,造成数据冲突的现象。进一步的,在确定出满足预设条件时,服务器会向第二终端设备发送解锁消息,以将处于锁定状态的基础测试用例解锁,从而可以保证其他用户也可以继续对该基础测试用例进行编辑,提高了用户的体验。

进一步的,在上述各实施例的基础上,还可以将每个用户修改的测试用例版本均进行保存,这样,用户可以根据版本标识查询出所有用户修改的历史版本测试用例的数据。示例性的,若用户选择回滚查看之前的某个版本的测试用例时,服务器将会复制该历史版本的测试用例的数据,并生成新的测试用例,从而创建测试用例内容,并保存为新的版本标识。

在本实施例中,不仅可以根据差异数据生成目标测试用例,而且可以将所有用户所修改的测试用例均进行保存,这样用户可以方便的查看任意历史版本的测试用例,由此可以提高用户的体验。

图7为本申请实施例提供的一种测试用例的处理方法的另一信令图,如图7所示,该方法包括:

步骤701:第一终端设备接收用户触发的第五操作指令,该第五操作指令用于指示是否需要对测试用例进行锁定。

其中,用户可以通过第一终端设备对测试用例进行编辑,若用户根据自己需求,需要对该待锁定测试用例进行单人编辑时,可以向第一终端设备发送第五操作指令,该第五操作指令用于指示需要对测试用例进行锁定,且该第五操作指令中包括待锁定测试用例的版本标识,其中,该第五操作指令的触发方式与实现原理与前述实施例中的第三操作指令类似,此处不再赘述。

若第五操作指令用于指示不需要对测试用例进行锁定,则说明该测试用例允许多人同时进行编辑。

其中,若需要对测试用例进行锁定,则执行步骤702,否则,执行步骤 705。

步骤702:第一终端设备向服务器发送第四消息,该第四消息中包括待锁定测试用例的版本标识。

步骤703:服务器根据第四消息,向除第一终端设备之外的第二终端设备发送锁定消息,该锁定消息中包括待锁定测试用例的版本标识,锁定消息用于指示第二终端设备将待锁定测试用例设置为锁定状态。

步骤704:服务器监听是否满足预设条件,在监听到满足预设条件时,向第二终端设备发送解锁消息,该解锁消息中包括处于锁定状态的测试用例的版本标识,解锁消息用于指示第二终端设备将处于锁定状态的测试用例解锁。

其中,预设条件包括如下至少一个:处于锁定状态的测试用例的锁定时长超过预设时长、接收到第一终端设备发送的第五消息和监听到第一终端设备退出对处于锁定状态的测试用例的编辑界面。

如果监听到第一终端设备不满足预设条件时,将等待用户通过第一终端设备继续对该测试用例进行编辑,直至满足预设条件时,将对该处于锁定状态的测试用例解锁。

另外,用户通过第一终端设备对编辑完成的测试用例进行保存时,第一终端设备会将编辑完成的测试用例发送给服务器,服务器将为该测试用例创建新版本,并保存该测试用例。

步骤705:第一终端设备向服务器发送第三消息,该第三消息中包括待保存测试用例以及待保存测试用例的版本标识。

其中,若同一个测试用例允许多人同时编辑时,当有用户编辑完成并进行保存时,会通过第一终端设备向服务器发送第三消息。

步骤706:服务器根据第三消息,获取最新测试用例的版本标识。

步骤707:若服务器确定出待保存测试用例的版本标识与最新测试用例的版本标识不同,则从数据库中获取最新测试用例。

其中,若待保存测试用例的版本标识与最新测试用例的版本标识不同,则说明之前已经有用户对该测试用例进行了编辑并保存,也即存在数据冲突,此时,就需要从数据库中获取最新测试用例。

步骤708:服务器确定待保存测试用例与最新测试用例的至少一个差异数据,以及与差异数据对应的差异类型。

其中,差异类型包括增加类型、删除类型和修改类型中的至少一种。

步骤709:服务器向第一终端设备发送第一消息,该第一消息中包括差异数据和所述差异类型。

步骤710:第一终端设备显示差异数据和差异类型。

步骤711:第一终端设备接收用户触发的第一操作指令,该第一操作指令中包括目标差异数据和与目标差异数据对应的目标差异类型,目标差异数据为至少一个差异数据中的数据。

步骤712:第一终端设备根据第一操作指令,向服务器发送第二消息,第二消息中包括目标差异数据和目标差异类型。

步骤713:服务器根据目标差异数据、目标差异类型和最新测试用例,生成目标测试用例。

其中,服务器生成目标测试用例之后,会为该目标测试用例创建新的版本标识,并进行保存。

本申请实施例提供的测试用例的处理方法,一方面,由于服务器在保存待保存测试用例时,通过确定待保存测试用例与最新测试用例的至少一个差异数据,并根据用户从至少一个差异数据中选择的目标差异数据以及对应的目标差异类型,生成目标测试用例,从而避免了现有技术中直接采用后保存的测试用例覆盖之前保存的测试用例的现象,而且用户会根据自己的需求选择性的对差异数据进行保存,从而可以提高目标测试用例的准确性。另一方面,服务器可以根据用户发送的需求信息,为测试用例加锁,这样可以避免多人同时对同一个测试用例进行编辑时,造成的数据冲突。

图8为本申请实施例提供的测试用例的处理装置的一示意图,如图8所示,该测试用例的处理装置80包括:

处理模块801,用于获取待保存测试用例和数据库中已保存的最新测试用例,所述待保存测试用例和所述最新测试用例为分别对基础测试用例进行修改后得到的;

所述处理模块801,还用于确定所述待保存测试用例与所述最新测试用例的至少一个差异数据,以及与所述差异数据对应的差异类型,所述差异类型包括增加类型、删除类型和修改类型中的至少一种;

发送模块802,用于向第一终端设备发送第一消息,所述第一消息中包括所述差异数据和所述差异类型,所述第一消息用于指示所述第一终端设备显示所述差异数据和所述差异类型;

接收模块803,用于接收所述第一终端设备发送的第二消息,所述第二消息中包括目标差异数据和与所述目标差异数据对应的目标差异类型,所述目标差异数据为所述至少一个差异数据中的数据;

所述处理模块801,还用于根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例。

可选的,所述处理模块801,具体用于:

接收所述第一终端设备发送的第三消息,所述第三消息中包括所述待保存测试用例以及所述待保存测试用例的版本标识;

根据所述第三消息,获取所述最新测试用例的版本标识;

若所述待保存测试用例的版本标识与所述最新测试用例的版本标识不同,则从所述数据库中获取所述最新测试用例。

可选的,所述处理模块801,具体用于:

通过Myers差分算法,确定所述待保存测试用例与所述最新测试用例的至少一个差异数据,以及与所述差异数据对应的差异类型。

可选的,所述处理模块801,具体用于:

若确定出与所述目标差异类型对应的所述目标差异数据为所述最新测试用例中的数据,则将所述最新测试用例确定为所述目标测试用例;或者,

若确定出与所述目标差异类型对应的所述目标差异数据为所述待保存测试用例中的数据,则在所述最新测试用例中,对所述目标差异数据进行与所述目标差异类型对应的操作,以生成所述目标测试用例;或者,

若确定出所述目标差异数据中的第一数据为所述最新测试用例中的数据,且第二数据为所述待保存测试用例中的数据,则在所述最新测试用例中保持所述第一数据以及与所述第一数据对应的差异类型不变,且在所述最新测试用例中,对所述第二数据进行与所述第二数据的差异类型对应的操作,以生成所述目标测试用例。

可选的,所述接收模块803,还用于接收所述第一终端设备发送的第四消息,所述第四消息中包括待锁定测试用例的版本标识;

所述发送模块802,还用于根据所述第四消息,向除所述第一终端设备之外的第二终端设备发送锁定消息,所述锁定消息中包括所述待锁定测试用例的版本标识,所述锁定消息用于指示所述第二终端设备将所述待锁定测试用例设置为锁定状态。

可选的,所述发送模块802,还用于在满足预设条件时,向所述第二终端设备发送解锁消息,所述解锁消息中包括处于锁定状态的测试用例的版本标识,所述解锁消息用于指示所述第二终端设备将所述处于锁定状态的测试用例解锁;所述预设条件包括所述处于锁定状态的测试用例的锁定时长超过预设时长,和/或,接收到所述第一终端设备发送的第五消息,所述第五消息用于表示对所述处于锁定状态的测试用例进行保存。

本申请实施例提供的测试用例的处理装置80,可以执行上述任一实施例中的测试用例的处理方法的技术方案,其实现原理以及有益效果与测试用例的处理方法的实现原理及有益效果类似,可参见测试用例的处理方法的实现原理及有益效果,此处不再进行赘述。

图9为本申请实施例提供的测试用例的处理装置的一示意图,如图9所示,该测试用例的处理装置90包括:

接收模块901,用于接收服务器发送的第一消息,所述第一消息中包括至少一个差异数据和每个差异数据对应的差异类型,所述差异数据为待保存测试用例与最新测试用例之间的差异数据,所述待保存测试用例和所述最新测试用例为对基础测试用例进行修改后得到的;

显示模块902,用于显示所述差异数据和所述差异类型;

所述接收模块901,还用于接收用户触发的第一操作指令,所述第一操作指令中包括目标差异数据和与所述目标差异数据对应的目标差异类型,所述目标差异数据为所述至少一个差异数据中的数据;

发送模块903,用于根据所述第一操作指令,向所述服务器发送所述第二消息,所述第二消息中包括所述目标差异数据和所述目标差异类型,所述第二消息用于指示所述服务器根据所述目标差异数据、所述目标差异类型和所述最新测试用例,生成目标测试用例。

可选的,所述接收模块901,还用于接收用户触发的第二操作指令,所述第二操作指令用于对所述待保存测试用例进行保存;

所述发送模块903,还用于根据所述第二操作指令,向所述服务器发送第三消息,所述第三消息中包括所述待保存测试用例以及所述待保存测试用例的版本标识,所述第三消息用于指示所述服务器获取所述最新测试用例的版本标识,并在所述待保存测试用例的版本标识与所述最新测试用例的版本标识不同时,从所述数据库中获取所述最新测试用例。

可选的,所述接收模块901,还用于接收所述用户触发的第三操作指令,所述第三操作指令中包括待锁定测试用例的版本标识;

所述发送模块903,还用于根据所述第三操作指令,向所述服务器发送第四消息,所述第四消息中包括待锁定测试用例的版本标识,所述第四消息用于指示所述服务器向除所述终端设备之外的第二终端设备发送锁定消息,所述锁定消息中包括所述待锁定测试用例的版本标识,所述锁定消息用于指示所述第二终端设备将所述待锁定测试用例设置为锁定状态。

可选的,所述接收模块901,还用于接收所述用户触发的第四操作指令,所述第四操作指令用于指示对处于锁定状态的测试用例进行保存;

所述发送模块903,还用于根据所述第四操作指令,向所述服务器发送第五消息,所述第五消息用于指示所述服务器向所述第二终端设备发送解锁消息,所述解锁消息中包括处于锁定状态的测试用例的版本标识,所述解锁消息用于指示所述第二终端设备将所述处于锁定状态的测试用例解锁。

本申请实施例提供的测试用例的处理装置90,可以执行上述任一实施例中的测试用例的处理方法的技术方案,其实现原理以及有益效果与测试用例的处理方法的实现原理及有益效果类似,可参见测试用例的处理方法的实现原理及有益效果,此处不再进行赘述。

需要说明的是,应理解以上设备的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,确定模块可以为单独设立的处理元件,也可以集成在上述设备的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述设备的存储器中,由上述设备的某一个处理元件调用并执行以上处理模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。

例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit, ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统 (system-on-a-chip,SOC)的形式实现。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等) 方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质 (例如固态硬盘solid state disk(SSD))等。

图10为本申请实施例提供的一种服务器实施例的结构示意图。如图10 所示,该服务器可以包括:处理器1001、存储器1002、通信接口1003和系统总线1004,所述存储器1002和所述通信接口1003通过所述系统总线1004 与所述处理器1001连接并完成相互间的通信,所述存储器1002用于存储计算机执行指令,所述通信接口1003用于和其他设备进行通信,所述处理器 1001执行所述计算机程序时实现如上述实施例所示的测试用例的处理方法的技术方案。

在该图10中,上述的处理器1001可以是通用处理器,包括中央处理器 CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器 DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

存储器1002可能包含随机存取存储器(random access memory,RAM),也可能包括只读存储器(read-only memory,RAM),还可能包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

通信接口1003用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。

系统总线1004可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

图11为本申请实施例提供的一种终端设备实施例的结构示意图。如图 11所示,该终端设备可以包括:处理器1101、存储器1102、通信接口1103 和系统总线1104,所述存储器1102和所述通信接口1103通过所述系统总线 1104与所述处理器1101连接并完成相互间的通信,所述存储器1102用于存储计算机执行指令,所述通信接口1103用于和其他设备进行通信,所述处理器1101执行所述计算机程序时实现如上述实施例所示的测试用例的处理方法的技术方案。

在该图11中,上述的处理器1101可以是通用处理器,包括中央处理器 CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器 DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

存储器1102可能包含随机存取存储器(random access memory,RAM),也可能包括只读存储器(read-only memory,RAM),还可能包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

通信接口1103用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。

系统总线1104可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如上述实施例所示的测试用例的处理方法的技术方案。

可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行上述实施例所示的测试用例的处理方法的技术方案。

本申请实施例还提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,至少一个处理器可以从所述计算机可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序时可实现上述实施例所示的测试用例的处理方法的技术方案。

本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

相关技术
  • 测试用例的处理方法、装置及计算机可读存储介质
  • 测试用例的处理方法、装置、计算机设备及存储介质
技术分类

06120112740819