技术领域
[0001] 本发明的实施例涉及数据处理领域,更具体地,涉及评估数据差异性的方法和系统。
相关背景技术
[0002] 随着计算机网络的技术的迅猛发展,如果一款计算机软件的业务量实现增长,则有可能存在亿万级别的潜在或实际的用户。为了满足用户日益增长的需求,此类软件系统面临频率较高的更新换代,即,计算机网络公司会在很短的时间内开发出新版本的软件来替换旧版本的软件。
[0003] 将一个请求输入软件系统,会产生响应数据。同一个请求在输入新版本和旧版本的软件系统的响应数据可能会存在较大的差异,并且可能只在特定的用户场景才出现这种差异。此时的新版本软件可能会给整个业务功能带来负面影响。
[0004] 例如,由于用户对出行质量的需求越来越强烈,目前打车软件能够积累亿万级别的用户。为了满足用户日益增长的需求,打车系统面向用户、面向内部系统的应用程序编程接口(API接口)中携带的信息量也越来越多,而且随着打车业务系统的频繁升级,业务升级后往往会带来API接口返回结果的差异性。
[0005] 这种差异性通常仅通过验证针对单条请求的接口的返回结果的方式来进行评估,并未进行大批量的定性和定量差异性评估。其缺点主要在于:1)数据量大,短时间之内人工评估难以完成;2)仅对返回结果进行精确比对,一个返回结果不同即评估为不匹配,误判率较高;以及3)不能定量的分析某两个结构化数据的相似程度,以及发生差异的确切位置。
[0006] 这些问题极大影响了数据差异性评估的准确性和效率。亟需一种有效地对升级版本的软件系统进行定性、定量数据差异性评估的方法。
具体实施方式
[0031] 下文将对本发明的具体实施例进行更为详细的描述。应理解,虽然下文中描述的实施例大都针对打车软件,但本发明的实施例还适用于其他软件的数据差异性评估,尤其是存在大量用户(客户端)的软件系统。
[0032] 图1示出了根据本发明实施例的评估数据差异性的方法的流程图。如图1所示,在步骤S101,将多个数据导入第一软件环境和第二软件环境,以分别生成第一树形结构和第二树形结构。在步骤S103,根据预定的差异性评估策略,评估第一树形结构和第二树形结构的差异性。
[0033] 具体地,图2示出了根据本发明实施例的评估打车软件系统数据差异性的方法的流程图。如图2所示,在步骤S201,从应用程序编程接口(API接口)中随机抽取请求的历史数据,生成10万条待评估的请求数据,这里所称的请求数据可以视为用于测试升级软件环境的样本。
[0034] 之后,进行到步骤S203,分别将该10万条带评估的请求数据导入原软件环境(即,旧软件环境)和升级软件环境(即,新软件环境)。当请求数据量较大时,可以使用多个计算节点进行数据导入,此时,每台计算节点上可安装有原软件环境和升级软件环境中的至少一个。
[0035] 进而,在步骤S205,通过一个或多个计算节点分别生成对应于原软件环境的第一树形结构和对应于升级软件环境的第二树形结构。其中,大多数作为响应的数据的格式(如json、xml、proto buffer、thrift等数据格式)均可以用一种基于键(key)-值(value)对的集合以及值的有序列表的方式(即,树形结构)表示,具体的表示方式如下:
[0036] 对象(Object):一种无序的“键、值”的集合;
[0037] 数组(Array):值的有序集合;
[0038] 基本值(Value):value的取值可以是数字、字符串等,即值。
[0039] 在生成树形结构之后,在步骤S207,评估第一树形结构和第二树形结构的差异性。
[0040] 在一个实施例中,第一软件环境和第二软件环境均是应用程序编程接口(API)环境。更具体地,测试所针对的软件环境可以是Window API或Linux API,当然,也可以是除API接口之外的其他软件环境。
[0041] 由于树形结构中存在如上几类响应数据格式,故可以对这几类响应数据格式进行分类处理。具体实施例如下所述。
[0042] 图3示出了根据本发明实施例的在第一树形结构和第二树形结构的数据为对象时评估数据差异性的方法的流程图,其中对象包括键和与键相对应的值。对于键相同的第一树形结构的节点以及第二树形结构的节点,在步骤S303,将与第一树形结构的节点对应的值和与第二树形结构的节点对应的值相比较,将值不同的第一树形结构的节点和第二树形结构的节点识别为具有差异性;或者,在步骤S305,将键不同的第一树形结构的节点以及第二树形结构的节点识别为具有差异性。
[0043] 具体地,针对评估打车软件系统数据差异性的示例,如图3所示,首先,在步骤S301,遍历第一树形结构的所有节点和第二树形结构的所有节点,之后,判定是否存在相同的键。对于键相同的第一树形结构的节点以及第二树形结构的节点,在步骤S303,将与第一树形结构的节点对应的值和与第二树形结构的节点对应的值相比较,将值不同的第一树形结构的节点和第二树形结构的节点识别为具有差异性。而对于键相同的第一树形结构的节点以及第二树形结构的节点,在步骤S305,由于此时已经检测出差异部分,故可以直接将其识别为具有差异性。由于对象是树形结构中普遍存在的数据类型,故此处不进行例举。又由于对象是树形结构中最难进行差异性评估的部分且普遍存在,故有时为了节约计算资源并节省时间,可以仅评估树形结构中数据为对象的数据差异性,而不考虑其他类型的数据。
[0044] 图4示出了根据本发明实施例的在第一树形结构和第二树形结构的数据为数组时评估数据差异性的方法的流程图,其中数组包括子序列。如图4所示,首先,在步骤S401,使用最长公共子序列算法对第一树形结构的数据和第二树形结构的数据相比较。对于非公共子序列,在步骤S403,将子序列不同的第一树形结构的节点以及第二树形结构的节点识别为具有差异性。
[0045] 例如,当升级版本对“朝阳北路”中的路段从原版本的3个细化为4个时,可采用此类数据结构的比较方式进行比较,例如,如果原版本的第3个路段一分为二,成为升级版本的第3和第4个路段,则由于第1、2路段相同,故仅识别剩余路段为具有差异性。
[0046] 此外,在第一树形结构和第二树形结构的数据为基本值时(未示出),也可以评估数据差异性。由于基本值仅包括值,故可以按照传统方式对两个树形结构中的值进行比较,将值不同的第一树形结构的节点以及第二树形结构的节点识别为具有差异性。
[0047] 例如,当升级版本对“打车起步价”的参数从原版本的“8(元)”修改为“10(元)”时,或者更实际地,当升级版本对“燃油附加费”的参数从原版本的“3(元)”修改为“0(元)”时,均可采用此类数据结构的比较方式进行比较,识别为具有差异性。然而,诸如燃油附加费的这种差异性是必要的,故可以采取下文中描述的方式无视这种差异性。
[0048] 当然,可选地,为了更为全面的对整个升级软件环境的全部响应数据进行差异性评估,可以在一个架构上同时对对象、基本值、数组进行分类处理。
[0049] 此外,图5示出了根据本发明实施例的评估软件环境的流程图。如图5所示,在步骤S501,根据预定的差异性评估策略,计算第一树形结构和第二树形结构的差异性;以及在步骤S503,在差异性小于预定阈值时,将升级软件环境评估为可用。
[0050] 具体地,如图5所示,在步骤S501,可以通过设计评分、分配权重等方式,基于上述“具有差异性”的结论计算升级软件环境相对于原软件环境的差异性评分。例如,将无效的或预期内的差异(诸如上述附加费参数从3元变为0元的差异)设为零分或分配的权重为零等。在步骤S503,在该差异性评分小于预定阈值时,将升级软件环境评估为可用。例如,预定阈值为15%,如果差异性评分小于(也可以包含等于的情况)15%,如12%,则将升级软件环境评估为可用,即可准备上线。如果差异性评分高于15%,则将升级软件环境评估为不可用,故仍需对升级软件环境进行改进。
[0051] 此外,图6示出了根据本发明实施例的评估数据差异性的系统的示意性框图。如图6所示,该评估数据差异性的系统600,包括:数据导入装置601,用于将多个数据导入第一软件环境和第二软件环境,以分别生成第一树形结构和第二树形结构;以及差异性评估装置603,用于根据预定的差异性评估策略,评估第一树形结构和第二树形结构的差异性。
[0052] 具体地,图7示出了根据本发明实施例的评估打车软件系统数据差异性的系统的示意性框图。如图7所示,该系统700可包括:数据导入装置601,用于将多个待评估的请求数据导入原软件环境(即,旧软件环境)和升级软件环境(即,新软件环境),以分别生成对应于原软件环境的第一树形结构和对应于升级软件环境的第二树形结构。此外,系统700还可包括差异性评估装置703,其与数据导入装置601通信连接,用于根据预定的差异性评估策略,评估第一树形结构和第二树形结构的差异性。
[0053] 在一个实施例中,差异性评估装置703还可以包括对象比较单元731,对象比较单元731用于:在第一树形结构和第二树形结构的数据为对象时(对象包括键和与键相对应的值),对于键相同的第一树形结构的节点以及第二树形结构的节点,将与第一树形结构的节点对应的值和与第二树形结构的节点对应的值相比较,将值不同的第一树形结构的节点和第二树形结构的节点识别为具有差异性;将键不同的第一树形结构的节点以及第二树形结构的节点识别为具有差异性。
[0054] 在另一个实施例中,差异性评估装置703还可以包括基本值比较单元733,基本值比较单元733用于:在第一树形结构和第二树形结构的数据为基本值时,其中基本值仅包括值,将值不同的第一树形结构的节点以及第二树形结构的节点识别为具有差异性。
[0055] 在再一个实施例中,差异性评估装置703还可以包括数组比较单元735,数组比较单元735用于:在第一树形结构和第二树形结构的数据为数组时,其中数组包括子序列,使用最长公共子序列算法对第一树形结构的数据和第二树形结构的数据相比较,将子序列不同的第一树形结构的节点以及第二树形结构的节点识别为具有差异性。
[0056] 在再一个实施例中,差异性评估装置703还可以包括:差异性计算单元(未示出),用于根据预定的差异性评估策略,计算第一树形结构和第二树形结构的差异性;以及评估单元737,用于在差异性小于预定阈值时,将升级软件环境评估为可用。
[0057] 本发明的上述多个实施例至少能够准确分析某个给定的API请求返回结果与其旧版本API请求返回结果的相似度的问题,解决了诸如10万个请求的大批量API请求分析的效率问题,降低了对业务软件系统进行升级时出现误判的概率,能够定量、高效地对数据进行差异性评估。
[0058] 虽然本说明书阐述了本发明的一些实施例,但根据各种修改和改进,所附权利要求覆盖不同于所描述的实施例的本发明的其他实施例。对于本领域技术人员来说,其他应用和结构是显而易见的。