CN115297041B - 一种流量回放的数据验证方法及装置 - Google Patents
一种流量回放的数据验证方法及装置 Download PDFInfo
- Publication number
- CN115297041B CN115297041B CN202210904004.7A CN202210904004A CN115297041B CN 115297041 B CN115297041 B CN 115297041B CN 202210904004 A CN202210904004 A CN 202210904004A CN 115297041 B CN115297041 B CN 115297041B
- Authority
- CN
- China
- Prior art keywords
- field
- playback
- difference
- recording
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 238000013524 data verification Methods 0.000 title claims abstract description 38
- 238000012360 testing method Methods 0.000 claims abstract description 143
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 92
- 230000006870 function Effects 0.000 claims description 300
- 238000006243 chemical reaction Methods 0.000 claims description 49
- 238000012544 monitoring process Methods 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 22
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000012795 verification Methods 0.000 claims description 12
- 239000003795 chemical substances by application Substances 0.000 description 13
- 238000004590 computer program Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 239000000243 solution Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000002347 injection Methods 0.000 description 4
- 239000007924 injection Substances 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Finance (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种流量回放的数据验证方法及装置,包括:针对流量录制数据中任一上游请求报文,基于测试系统进行流量回放获取回放结果,将回放结果中的回放返回报文和流量录制数据中的录制返回报文进行比对,确定差异字段;差异字段为回放字段,与录制返回报文中的录制字段的字段名相同字段值不同;若确定所述差异字段不存在于可忽略差异字段记录中,则计算差异字段的回放字段值与录制字段值的相似度;若相似度大于设定阈值,则确定差异字段为可忽略差异字段,将可忽略差异字段更新到可忽略差异字段记录中。上述方法可以自动梳理出可忽略差异字段,自动维护可忽略差异字段的相关信息,提高测试效率、以及测试结果的实时性和准确性。
Description
技术领域
本申请实施例涉及金融科技(Fintech)领域,尤其涉及一种流量回放的数据验证方法及装置。
背景技术
近年来,随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出更高的要求。如,目前金融行业的业务一般通过线上的应用系统处理,解放大量的人工,提高了处理效率、实时性、安全性和准确性。而在使用应用系统进行业务处理时,由于应用系统的处理方法固定,当业务结构发生变形或应用场景等发生变更时,就需要对应用系统做适应性改写或变更参数等操作,进一步保证处理效率、实时性、安全性和准确性。相应的,需要对更新后的应用系统进行测试。
其中,一般通过流量回放的方式对更新后的应用系统进行测试。具体的,通过流量录制的方式录制更新前的应用系统接收上游请求报文,以及该更新前的应用系统对上游请求报文进行处理获取的结果返回报文的流量。通过更新后的应用系统将该上游请求报文进行流量回放,即,通过更新后的应用系统对该上游请求报文进行处理获取回放结果返回报文的流量。将该结果返回报文和回放结果返回报文对比,若存在差异字段,则认为更新后的应用系统测试失败。但实际中,往往一些字段是可以被忽略的,不应该被视为差异字段的,也可以认为是可忽略的差异字段。如,结果返回报文和回放结果返回报文中的时间戳字段存在差异是可以被忽略的。
因此,现有技术中一般通过设置可忽略差异字段表,将可忽略差异字段存储在该可忽略差异字段表中,在流量回放时,遍历可忽略差异字段表,若差异字段存在于该表中,则该差异字段可以忽略,更新后的被测试系统测试成功。若差异字段不存在于该表中,则该差异字段不可以忽略,则测试失败。该方式虽然可以解决如何确定可以可忽略差异字段的问题。但是,测试系统的测试用例多个接口组成,每个接口下游返回报文中平均包含可忽略差异字段2-3个,每个应用系统的测试用例有几百上千,甚至上万,那么也需要在可忽略差异字段表中配置上千、上万个记录。且同一个字段在不同的测试用例可能分别被认为是可以忽略的差异字段和不可忽略的差异字段。又且若应用系统发生变更涉及到可以被可忽略差异字段变更,导致该可以被可忽略差异字段需要在可忽略差异字段表中重新维护。这三种主要情况就已经导致可忽略差异字段表人工维护的巨大压力。
因此,现在亟需一种流量回放的数据验证方法,可以自动梳理出可忽略差异字段,自动维护可忽略差异字段的相关信息,提高应用系统的测试效率、以及测试结果的实时性和准确性。
发明内容
本申请实施例提供一种流量回放的数据验证方法,可以自动梳理出可忽略差异字段,自动维护可忽略差异字段的相关信息,提高应用系统的测试效率、以及测试结果的实时性和准确性。
第一方面,本申请实施例提供一种流量回放的数据验证方法,所述方法适用于流量回放系统,包括:
针对流量录制数据中任一上游请求报文,所述流量回放系统基于测试系统进行流量回放获取回放结果,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段;所述流量录制数据是通过对应用系统处理上游请求报文进行流量录制得到的,所述测试系统是所述应用系统更新后得到的;所述差异字段为所述回放返回报文中的回放字段,与所述录制返回报文中的录制字段的字段名相同字段值不同;
所述流量回放系统若确定所述差异字段不存在于可忽略差异字段记录中,则计算所述差异字段的回放字段值与所述差异字段的录制字段值的相似度,所述可忽略差异字段记录中包含的可忽略差异字段为对所述测试系统正常运行无影响的字段;
若所述相似度大于设定阈值,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
上述方法中,将回放返回报文和录制返回报文对比获取的差异的回放字段-差异字段与可忽略差异字段记录对比,若存在于可忽略差异字段记录,则该差异字段为可忽略差异字段,不对测试系统的正常运行有影响,测试成功。否则,继续对差异字段值与其对应的录制字段值计算相似度,若相似度大于设定阈值,则该差异字段为可忽略差异字段,不对测试系统的正常运行有影响,测试成功,将可忽略差异字段更新至可忽略差异字段记录。否则,测试失败,差异字段不可忽略。如此,相比于现有技术中,仅仅通过可忽略差异字段记录进行数据验证,和通过人工维护可忽略差异字段记录来说,本申请可以通过可忽略差异字段记录和差异字段的相似度计算方法进行数据验证,可以自动梳理出可忽略差异字段,自动维护可忽略差异字段记录,提高应用系统的测试效率、以及测试结果的实时性和准确性。
可选的,计算差异字段的回放字段值与所述差异字段的录制字段值的相似度之前,还包括:所述流量回放系统确定所述差异字段的函数调用链的调用链标识不存在于差异函数记录中,所述差异函数记录中包含的调用链标识为对所述测试系统正常运行无影响的可忽略差异字段的函数调用链的调用链标识,所述回放结果中包含任一回放字段的函数调用链;若所述相似度大于设定阈值,则确定所述回放字段为可忽略差异字段之后,还包括:将所述调用链标识更新到所述差异函数记录中。
上述方法中,将回放返回报文和录制返回报文对比获取的差异字段与可忽略差异字段记录对比,获取的差异字段的函数调用链的调用链标识和差异函数记录进行比对,若存在于可忽略差异字段记录和/或差异函数记录,则该差异字段为可忽略差异字段,不对测试系统的正常运行有影响,测试成功。否则,继续对差异字段值与其对应的录制字段值(差异字段也可以表达为回放字段,回放字段是回放返回报文中的字段)计算相似度,若相似度大于设定阈值,则该差异字段为可忽略差异字段,不对测试系统的正常运行有影响,测试成功,将可忽略差异字段更新至可忽略差异字段记录,将可忽略差异字段的函数调用链的调用链标识更新至差异函数记录。否则,测试失败,差异字段不可忽略。相比于现有技术中,仅仅通过可忽略差异字段记录进行数据验证,和通过人工维护可忽略差异字段记录来说,本申请可以通过可忽略差异字段记录和差异函数记录进行数据验证,且可以自动梳理出可忽略差异字段,自动维护可忽略差异字段的可忽略差异字段记录和差异函数记录,提高应用系统的测试效率、以及测试结果的实时性和准确性。
可选的,还包括:若确定所述差异字段不存在于可忽略差异字段记录中,且确定所述差异字段的函数调用链的调用链标识存在于差异函数记录中,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
上述方法中,一般来说,存在一种情况为:一个函数调用链对应多个可忽略差异字段的情况。则若可忽略差异字段记录中不包含差异字段时,可以通过差异字段的函数调用链进一步确定该差异字段是否属于可忽略差异字段。如此,可以不仅仅通过差异字段本身确定其是否属于可忽略差异字段,还可以根据其函数调用链进行判断,提高数据验证的准确性。
可选的,确定所述差异字段不存在于可忽略差异字段记录中,且所述差异字段的函数调用链的调用链标识存在于差异函数记录中,包括:获取所述回放返回报文中的用例标识,确定所述用例标识在所述可忽略差异字段记录中对应的各可忽略差异字段名中不存在所述差异字段的差异字段名;根据所述差异字段的函数调用链的类名和方法名确定调用链标识,确定所述差异函数记录中不存在所述调用链标识。
上述方法中,根据回放返回报文中的用例标识和回放字段名-差异字段名确定差异字段是否存在于可忽略差异字段记录中。一般来说,可忽略差异字段记录中的用例标识的数量远小于可忽略差异字段名,则若使用遍历的方式在可忽略差异字段记录中查找差异字段名,可以先通过回放返回报文中的用例标识限定该用例标识对应的各可忽略差异字段名,从各可忽略差异字段名中进一步查找差异字段名,可以加快处理速度。另外,存在一种情况,同一个字段名在不同的用例中可能是可忽略差异字段或不可忽略差异字段。因此,基于用例标识查找差异字段名可以保证查找的准确性。通过函数调用链的类名和方法名得到调用链标识,基于该调用链标识确定差异字段的函数调用链是否存在与差异函数表中。如此,调用链标识的对比工作小于函数调用链的对比工作,加快数据验证速度。
可选的,任一回放字段的函数调用链通过如下方式得到,包括:
针对所述测试系统获取的监控实例的函数调用链集合,获取所述测试系统的类文件,查找所述类文件中与接口返回类相关的赋值函数;所述接口返回类是根据具有用例标识的上游请求报文得到的,所述监控实例是根据所述接口返回类确定的;
针对所述接口返回类中的回放字段,若所述函数调用链集合中任一函数调用链包含所述赋值函数或所述赋值函数对应的变量,确定所述函数调用链为所述赋值函数对应的回放字段的函数调用链;
从所述函数调用链中确定所述回放字段的关键赋值函数;根据所述关键赋值函数对应的类名和方法名,得到所述函数调用链的调用链标识。
上述方法中,测试系统在接收上游请求报文时,则会对应获取上游请求报文的接口返回类。接口返回类可以确定对应的监控实例,在接口返回类确定的监控实例获取函数调用链集合时,往往得到的函数调用链集合中的函数调用链有些是与赋值函数相关的,有些是不与赋值函数相关的,而与赋值函数相关的函数调用链才能表达回放返回报文中回放字段的函数执行轨迹。因此,需要将与赋值函数不相关(函数调用链中既没有赋值函数,也没有赋值函数的变量)的函数调用链剔除。如此,剩余的函数调用链分别有着各自对应的回放字段。在后续判断差异字段-回放字段的函数调用链的调用链标识是否存在于差异函数记录中时,可以保证调用链标识的准确性,保证数据验证的准确性。
可选的,还包括:在所述测试系统中设置有对上游请求报文的处理和回放进行录制的第一功能,以及针对具有用例标识的上游请求报文,设置有监控赋值函数对应的函数调用链的第二功能,所述赋值函数与接口返回类对应,所述接口返回类是根据具有用例标识的上游请求报文得到的。
上述方法中,可以设置监控的代理,该代理可以形成第一功能和第二功能,该代理注入在应用系统中时,可以使用第一功能对上游请求报文的处理进行录制。该代理注入在测试系统中时,可以使用第一功能对上游请求报文的回放进行录制,且使用第二功能对赋值函数对应的函数调用链进行监控。如此,可以获取回放返回报文的回放字段的函数调用链,以提高数据验证的准确性。
可选的,所述回放字段包括回放字段名和回放字段值,所述录制字段包括录制字段名和录制字段值,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段,包括:
将所述回放返回报文中的各回放字段名与所述录制返回报文中的各录制字段名比对;
若所述各回放字段名与所述各录制字段名一一对应相同,且存在任一对字段名相同的回放字段值和录制字段值存在差异,则确定存在差异的字段为差异字段。
上述方法中,将回放字段名和录制字段名相同且分别对应的回放字段值和录制字段值存在差异的,进行数据验证。若回放字段名和录制字段名不同,则直接认定为测试失败。
可选的,计算所述回放字段与所述录制字段的相似度,包括:
确定所述回放字段值和所述录制字段值的长度相同,则将所述回放字段值和所述录制字段值转化为设定类型,所述设定类型包含字符串类型、数字类型和日期类型中的至少一种;
若所述回放字段值和所述录制字段值均转化成功或转化失败,则根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量;
计算所述回放向量与所述录制向量的相似度。
上述方法中,回放字段值和录制字段值的长度不同,可以直接确定,测试系统的测试失败。否则,通过转化将回放字段值和录制字段值转化为设定类型,以确定回放字段值和录制字段值的属性是否相同,判断回放字段值和录制字段值是否属于相似度较高的字段值,若是,则可以直接基于该回放字段更新可忽略差异字段记录和差异函数记录。若属性方面不能确定回放字段值和录制字段值是否相似度较高,则进一步计算相似度。如此,若回放字段值和录制字段值的相似度较高,仅仅通过属性即可判断,则无需进行较为复杂的相似度计算,节省计算资源。
可选的,根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量,包括:
根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定中间回放向量和中间录制向量;
分别将所述中间回放向量和所述中间录制向量除以预设向量得到回放向量和录制向量,所述预设向量是根据历史录制字段的字符种类和每种字符的数量确定的。
上述方法中,通过预设向量得到回放向量和录制向量,放大回放向量和录制向量的对于历史录制字段的字符种类和每种字符的数量的特征,提高相似度计算的准确性。
可选的,所述相似度计算公式如下:
其中,所述S为所述相似度,所述xi为所述回放向量,所述yi为所述录制向量,所述L为相似否决因子,在所述回放字段值和所述录制字段值的长度不同,或所述回放字段值和所述录制字段值转化为设定类型时,任一个转换成功,另一个转化失败,所述L为0。
上述方法中,通过相似否决因子、回放向量和录制向量可以准确确定回放向量和录制向量的相似度,提高数据验证的准确性。
第二方面,一种流量回放的数据验证装置,该装置包括:所述装置适用于流量回放系统,包括:
对比模块,用于针对流量录制数据中任一上游请求报文,所述流量回放系统基于测试系统进行流量回放获取回放结果,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段;所述流量录制数据是通过对应用系统处理上游请求报文进行流量录制得到的,所述测试系统是所述应用系统更新后得到的;所述差异字段为字段名相同字段值不同的字段;
验证模块,用于若确定所述差异字段不存在于可忽略差异字段记录中,则计算所述差异字段的回放字段值与所述差异字段的录制字段值的相似度,所述可忽略差异字段记录中包含的可忽略差异字段为对所述测试系统正常运行无影响的字段;
所述验证模块还用于,若所述相似度大于设定阈值,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
第三方面,本申请实施例还提供一种计算机设备,包括:存储器,用于存储程序;处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本申请实施例还提供一种计算机可读非易失性存储介质,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
本申请的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种流量回放系统的系统架构示意图;
图2为本申请实施例提供的一种流量回放的数据验证方法的流程示意图;
图3为本申请实施例提供的一种流量回放的数据验证方法的流程示意图;
图4为本申请实施例提供的一种流量回放的数据验证装置示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
一般来说,应用系统在实际应用中,会因为业务变更或引入更新的功能等做不断地更新,应用系统更新后的系统这里可以称之为测试系统。针对测试系统需要测试该测试系统运行的可靠性、稳定性和准确性等。流量回放测试方法是一种将生产环境流量存储记录并进行还原回放的测试方法,通过将捕获得到的生产环境流量还原回放到测试环境,可以在测试系统的测试环境中假若再现生产场景,达到考察测试系统在生产环境中的功能和性能的目的。而现有技术的流量回放测试方法在测试过程中,根据生产环境流量与测试环境回放得到差异字段,通过遍历可忽略差异字段记录中是否存在该差异字段的方式来判断该差异字段是否可以忽略,以确定测试系统是否测试成功。该种方式对可忽略差异字段记录的维护需要大量的人工成本,且实时性和准确性差。
基于此,本申请实施例提供了一种流量回放系统的系统架构,如图1所示,包括:
应用系统101:应用系统101中注入有代理程序,该代理程序可以对应用系统101的流量进行录制。在一种示例中,代理程序在应用系统101接收上游请求报文时,将该上游请求报文录制,在应用系统101对该上游请求报文进行处理获取录制返回报文时,同样将录制返回报文录制存储。
测试系统102:测试系统102为应用系统101更新后的系统,测试系统102中注入有代理程序,该代理程序可以对测试系统102的回放进行录制。该代理程序包括第一功能和第二功能,第一功能可以用于录制上游请求报文(包括用例标识的上游请求报文和不包括用例标识的上游请求报文)和对应的回放返回报文。第二功能可以在测试系统102接收具有用例标识的上游请求报文,确定该具有用例标识的上游请求报文的接口返回类时,根据接口返回类启动对应的监控实例,监控实例对赋值函数的函数执行轨迹进行监控和记录得到函数调用链。赋值函数用于对上游请求报文进行处理,以对回放返回报文中的各回放字段进行赋值。也就是说,第二功能对回放返回报文中的各回放字段的赋值函数的函数执行轨迹进行监控和记录,得到回放字段对应的函数调用链。
需要说明的是,应用系统101中的代理程序和测试系统102中的代理程序可以是相同的代理程序,也可以是不同的代理程序。也就是说,应用系统101中的代理程序也可以包括上述第一功能和第二功能。这里对应用系统101和测试系统102中的代理程序具体不做限制。
流量回放系统103:流量回放系统103从应用系统101中获取的上游请求报文,在该上游请求报文中插入用例标识,得到具有用例标识的上游请求报文,将该具有用例标识的上游请求报文发送至测试系统102,以启动测试系统102进行流量回放。流量回放系统103在测试系统102回放后获取回放结果,该回放结果中包含回放返回报文和回放返回报文中各回放字段对应的函数调用链,将回放返回报文和从应用系统101中获取的录制返回报文进行比对,确定回放返回报文相对该录制返回报文的差异字段-回放字段。根据该差异字段和该差异字段对应的函数调用链进行数据验证,数据验证的情况至少包括以下六种情况:
第一种:
流量回放系统103获取回放返回报文中的用例标识,在可忽略差异字段记录中确定该用例标识对应的各可忽略差异字段名,再将差异字段的差异字段名与该各可忽略的差异字段名进行比对;若差异字段与各可忽略的差异字段名中的任一可忽略的差异字段名相同,则认为该差异字段属于可忽略差异字段。确定测试系统102测试成功。
第二种:
流量回放系统103获取回放返回报文中的用例标识,在可忽略差异字段记录中确定该用例标识对应的各可忽略差异字段名,再将差异字段的差异字段名与该各可忽略的差异字段名进行比对;若差异字段与各可忽略的差异字段名中的任一可忽略的差异字段名均不同,则获取该差异字段的函数调用链的调用链标识,将该调用链标识与差异函数记录中的调用链标识进行比对;若差异字段的调用链标识存在于该差异函数记录中,则认为该差异字段属于可忽略差异字段。确定测试系统102测试成功。并将该差异字段更新到可忽略差异字段记录中对应的用例标识下。
第三种:
流量回放系统103获取回放返回报文中的用例标识,在可忽略差异字段记录中确定该用例标识对应的各可忽略差异字段名,再将差异字段的差异字段名与该各可忽略的差异字段名进行比对;若差异字段与各可忽略的差异字段名中的任一可忽略的差异字段名均不同,则获取该差异字段的函数调用链的调用链标识,将该调用链标识与差异函数记录中的调用链标识进行比对;若差异字段的调用链标识不存在于该差异函数记录中,则确定差异字段的回放字段值,以及该差异字段对应的录制字段的录制字段值。判断该回放字段值和该录制字段值的长度是否相等,若长度不等,则该差异字段不属于可忽略差异字段。确定测试系统102测试失败。
第四种:
流量回放系统103获取回放返回报文中的用例标识,在可忽略差异字段记录中确定该用例标识对应的各可忽略差异字段名,再将差异字段的差异字段名与该各可忽略的差异字段名进行比对;若差异字段与各可忽略的差异字段名中的任一可忽略的差异字段名均不同,则获取该差异字段的函数调用链的调用链标识,将该调用链标识与差异函数记录中的调用链标识进行比对;若差异字段的调用链标识不存在于该差异函数记录中,则确定差异字段的回放字段值,以及该差异字段对应的录制字段的录制字段值。判断该回放字段值和该录制字段值的长度是否相等,若长度相等,将该回放字段值和该录制字段值转换为设定类型,若转换结果为一个转换成功,一个转换失败,则该差异字段不属于可忽略差异字段。确定测试系统102测试失败。
第五种:
流量回放系统103获取回放返回报文中的用例标识,在可忽略差异字段记录中确定该用例标识对应的各可忽略差异字段名,再将差异字段的差异字段名与该各可忽略的差异字段名进行比对;若差异字段与各可忽略的差异字段名中的任一可忽略的差异字段名均不同,则获取该差异字段的函数调用链的调用链标识,将该调用链标识与差异函数记录中的调用链标识进行比对;若差异字段的调用链标识不存在于该差异函数记录中,则确定差异字段的回放字段值,以及该差异字段对应的录制字段的录制字段值。判断该回放字段值和该录制字段值的长度是否相等,若长度相等,将该回放字段值和该录制字段值转换为设定类型,若转换结果为均转换成功,或均转换失败,则分别获取回放字段值和录制字段值的回放向量和录制向量,基于该回放向量和该录制向量计算回放字段值和录制字段值的相似度,若相似度不大于设定阈值,则该差异字段不属于可忽略差异字段。确定测试系统102测试失败。
第六种:在第五种情况中,若相似度大于设定阈值,则该差异字段属于可忽略差异字段。将该差异字段更新到可忽略差异字段记录中对应的用例标识下,并将该差异字段的函数调用链的调用链标识更新至差异函数记录中。
需要说明的是,上述六种情况只是为了便于理解本申请的方案而描述的,并不对本申请方案的实施做限制。如,在一种示例中,基于上述第六种情况,
得到第七种情况:将该回放字段值和该录制字段值转换为字符串类型,若转换结果为一个转换成功,一个转换失败,则该差异字段不属于可忽略差异字段。确定测试系统102测试失败。
基于该第七种情况,得到第八种和第九种情况:将该回放字段值和该录制字段值转换为字符串类型,若转换结果为均转换成功,或均转换失败。则计算回放字段值和录制字段值的相似度,该相似度大于设定阈值的情况或不大于设定阈值的情况。
基于该第八种和第九种情况,得到第十种、第十一种和第十二种情况:将该回放字段值和该录制字段值转换为字符串类型,若转换结果为均转换成功,或均转换失败后。将该回放字段值和该录制字段值转换为数字类型,若转换结果为一个转换成功,一个转换失败,则该差异字段不属于可忽略差异字段。确定测试系统102测试失败的情况。以及若转换结果为均转换成功,或均转换失败。则计算回放字段值和录制字段值的相似度,该相似度大于设定阈值的情况或不大于设定阈值的情况。也即,基于相同的思想,可以对本申请的方案做适应性的变形,这种变形的方案也在本申请的保护范围内。
另外,流量回放系统103在获取测试系统102的回放结果时,还可以对函数调用链集合进行筛选,将函数调用链集合中的与回放字段不对应的函数调用链剔除。流量回放系统103的这部分工作是为了防止,测试系统102的代理程序基于第二功能获取函数调用链时,第二功能所监控到的赋值函数的函数执行轨迹掺杂有与该赋值函数无关的函数执行轨迹的情况。如此,保证数据验证过程中的函数调用链均分别对应各自的回放字段,进一步,保证数据验证的简洁性和结果的可靠性、准确性。
又有,流量回放系统103在将用例标识插入到上游请求报文时,可以在上游请求报文的扩展字段中插入用例标识,扩展字段还可以在报文头中。该用例标识的作用是,代理程序可以基于上游请求报文中是否包含用例标识来确认当前流程是生产中的流程还是回放中的流程,进一步确认是否开启第二功能记录赋值函数的函数执行轨迹。其中,用例标识的结构可以是:指定前缀(CRI)+当前时间戳(13位时间)+随机数(至少2位或至少3位随机数)。如此,可以针对相同用例-前缀(CRI)在同一时间发生多个流量回放流程时,用例回放id值可以唯一,不重复。
基于上述系统架构,本申请实施例提供了一种流量回放的数据验证方法流程,该方法流程适用于流量回放系统,如图2所示,包括:
步骤201、针对流量录制数据中任一上游请求报文,所述流量回放系统基于测试系统进行流量回放获取回放结果,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段;所述流量录制数据是通过对应用系统处理上游请求报文进行流量录制得到的,所述测试系统是所述应用系统更新后得到的;所述差异字段为所述回放返回报文中的回放字段,与所述录制返回报文中的录制字段的字段名相同字段值不同;
此处,上游请求报文可以是上游系统发送至应用系统的请求报文,该上游请求报文可以是上游系统的摸一个接口发送的。上游请求报文结构可以包括:报文头、报文体。报文体中可以包括接口ID、环境信息等相关信息。上游请求报文结构还可以包括:报文头、扩展字段、报文体,报文体中还可以包括接口ID、环境信息、时间戳、场景信息、该接口ID、流水号、系统ID等相关信息。这里对上游请求报文的具体结构以及该上游请求报文中包含的具体信息不做限制,可以对应不同的需求设置。如,若上游请求报文是查询余额的请求报文,报文体中还可以包含用户名、用户账号、用户存款类型等相关信息。若上游请求报文是储蓄业务的请求报文,报文体中除了包含用户名、用户账号、用户存款类型等相关信息,还可以包括存款数额、存款币种等等。
相应的,对应该上游请求报文的回放返回报文和录制返回报文,则是测试系统和应用系统分别基于该上游请求报文确定的。针对该上游请求报文返回的处理结果的相关报文,回放返回报文和/或录制返回报文的结构可以为:报文头、报文体。报文体中可以包括时间戳、流水号、系统ID等相关信息。回放返回报文和/或录制返回报文的结构还可以为:报文头、扩展字段、报文体。报文体中可以包括时间戳、流水号、系统ID、场景信息、环境信息、接口ID等相关信息。其中,回放返回报文的报文头中相对于录制返回报文的报文头中多用例标识信息。这里对回放返回报文和录制返回报文的具体结构以及该回放返回报文和录制返回报文中包含的具体信息不做限制,可以对应不同的需求设置。基于上述对上游请求报文的示例,若上游请求报文是查询余额的请求报文,则回放返回报文和/或录制返回报文中可以包括余额字段。若上游请求报文是储蓄业务的请求报文,则回放返回报文和/或录制返回报文中可以包括存储金额字段和存储后余额字段。上述对上游请求报文、回放返回报文和录制返回报文的描述只是为了更清晰的阐述本方案,并不对本方案的上游请求报文、回放返回报文和录制返回报文做限制。如,上游请求报文可以是访问网页请求报文、回放返回字段和/或录制返回字段可以对应是访问网页响应报文。
此处,流量回放系统可以通过回放返回报文中的流水号确定流水号相同的录制返回报文,以进行对比。
步骤202、所述流量回放系统若确定所述差异字段不存在于可忽略差异字段记录中,则计算所述差异字段的回放字段值与所述差异字段的录制字段值的相似度,所述可忽略差异字段记录中包含的可忽略差异字段为对所述测试系统正常运行无影响的字段;
此处,可忽略差异字段记录可以是包括各可忽略差异字段的记录,可以是包括各用例标识分别对应的各可忽略差异字段的记录,还可以是各系统标识对应的各用例标识,各用例标识又分别对应的各可忽略差异字段的记录。这里对可忽略差异字段记录的具体形式不做限制,可以根据需求设置。
可忽略差异字段为对测试系统正常运行无影响的字段。如,上游请求报文对应的录制返回报文中的时间戳,与上游请求报文对应的回放返回报文中的时间戳存在差异是可以被忽略掉的。可忽略差异字段还可以是相关参数等。该参数在录制返回报文与回放返回报文中存在差异。
步骤203、若所述相似度大于设定阈值,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
上述方法中,将回放返回报文和录制返回报文对比获取的差异的回放字段-差异字段与可忽略差异字段记录对比,若存在于可忽略差异字段记录,则该差异字段为可忽略差异字段,不对测试系统的正常运行有影响,测试成功。否则,继续对差异字段值与其对应的录制字段值计算相似度,若相似度大于设定阈值,则该差异字段为可忽略差异字段,不对测试系统的正常运行有影响,测试成功,将可忽略差异字段更新至可忽略差异字段记录。否则,测试失败,差异字段不可忽略。如此,相比于现有技术中,仅仅通过可忽略差异字段记录进行数据验证,和通过人工维护可忽略差异字段记录来说,本申请可以通过可忽略差异字段记录和差异字段的相似度计算方法进行数据验证,可以自动梳理出可忽略差异字段,自动维护可忽略差异字段记录,提高应用系统的测试效率、以及测试结果的实时性和准确性。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,在上述步骤203之前,即,计算差异字段的回放字段值与所述差异字段的录制字段值的相似度之前,还包括:
所述流量回放系统确定所述差异字段的函数调用链的调用链标识不存在于差异函数记录中,所述差异函数记录中包含的调用链标识为对所述测试系统正常运行无影响的可忽略差异字段的函数调用链的调用链标识,所述回放结果中包含任一回放字段的函数调用链;若所述相似度大于设定阈值,则确定所述回放字段为可忽略差异字段之后,还包括:将所述调用链标识更新到所述差异函数记录中。
在一种示例中,差异函数记录中可以包含调用链标识,该调用链标识是针对可忽略差异字段的函数调用链的差异函数(关键赋值函数)的方法名,以及函数调用链对应的类名确定的。这里的差异函数记录只是一种示例,用于清晰阐述本方案,并不对本方案的具体实施做限制。如,差异函数记录中还可以记录调用链标识的关键赋值函数的参数信息。又如,差异函数记录中的调用链标识可以作为差异函数记录中的主键,该主键对应关键赋值函数的参数信息和其它相关信息等。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,针对上述步骤202,还可以存在一种流量回放的数据验证方法,还包括:若确定所述差异字段不存在于可忽略差异字段记录中,且确定所述差异字段的函数调用链的调用链标识存在于差异函数记录中,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。也就是说,该种情况属于,一个函数调用链对应多个可忽略差异字段的情况,则通过该方法,可以自动维护一个函数调用链对应的多个可忽略差异字段。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,针对上述还可以存在一种流量回放的数据验证方法,确定所述差异字段不存在于可忽略差异字段记录中,且所述差异字段的函数调用链的调用链标识存在于差异函数记录中,包括:获取所述回放返回报文中的用例标识,确定所述用例标识在所述可忽略差异字段记录中对应的各可忽略差异字段名中不存在所述差异字段的差异字段名;根据所述差异字段的函数调用链的类名和方法名确定调用链标识,确定所述差异函数记录中不存在所述调用链标识。也就是说,确定差异字段是否是可忽略差异字段时,可以基于回放返回报文中的用例标识和差异字段名查找可忽略差异字段记录。确定差异字段的函数调用链是否是可忽略差异字段的函数调用链时,可以基于调用链标识查找差异函数记录。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,具体的,在上述步骤203之前的,确定差异字段的函数调用链的调用链标识是否存在于差异函数记录的流程中,还包括:该流程中的任一回放字段的函数调用链通过如下方式得到,包括:
针对所述测试系统获取的监控实例的函数调用链集合,获取所述测试系统的类文件,查找所述类文件中与接口返回类相关的赋值函数;所述接口返回类是根据具有用例标识的上游请求报文得到的,所述监控实例是根据所述接口返回类确定的;针对所述接口返回类中的回放字段,若所述函数调用链集合中任一函数调用链包含所述赋值函数或所述赋值函数对应的变量,确定所述函数调用链为所述赋值函数对应的回放字段的函数调用链;从所述函数调用链中确定所述回放字段的关键赋值函数;根据所述关键赋值函数对应的类名和方法名,得到所述函数调用链的调用链标识。
在一种示例中,测试系统根据具有用例标识的上游请求报文得到接口返回类,根据所述接口返回类确定监控实例,包括:赋值函数为set函数,如果上游请求报文中包含用例标识,确定上游请求报文对应的接口返回类,根据接口返回类名查找到该类信息,包括所有类成员变量和函数,遍历接口返回类所有函数。如果接口返回类所有函数中确定存在函数是set函数,则在set函数执行前代码注入-对应代理程序的第二功能。监控实例化当前线程中的堆栈轨迹元素-函数执行轨迹。遍历所有轨迹元素,实例化一个函数调用链,将轨迹元素的string类名、string方法名(关键赋值函数的方法名)、string字段名和int行号信息写入该函数调用链中。得到函数调用链集合。
则流量回放系统获取回放结果后,或在测试系统回放过程中可以调用代码托管平台,连接到代码托管平台gitlab或github,根据测试系统,调用代码托管平台接口查找类文件(测试系统源文件)。读取返回的类文件并加载到缓存中,遍历函数调用链集合,针对该函数调用链集合中的任一函数调用链,确定该函数调用链对应的行号。根据该行号查找查询缓存中类文件对应行数位置的代码,对该行数位置的代码进行识别。如果对应行代码包含当前监控的set函数(比如字段为bizNo,则set函数为setBizNo),或对应行代码不包含当前监控的set函数,识别包含该set函数临时变量的赋值,则保留该函数调用链。否则,将既不包含set函数,又不包含该set函数临时变量的赋值的函数调用链剔除。其中,可以通过新建一个map对象,采用key-value方式来存储回放字段与匹配的函数调用链(包含set函数,或包含该set函数临时变量的赋值的函数调用链),即,最终map对象中的各函数调用链都分别对应回放返回报文中的回放字段。
基于上述各方法流程,本申请实施例还提供了一种代理程序,还包括:在所述测试系统中设置有对上游请求报文的处理和回放进行录制的第一功能,以及针对具有用例标识的上游请求报文,设置有监控赋值函数对应的函数调用链的第二功能,所述赋值函数与接口返回类对应,所述接口返回类是根据具有用例标识的上游请求报文得到的。
在一种示例中,在测试系统中注入上述具有第一功能和第二功能的代理程序。具体的,遍历测试系统所有代码,查找统一接口处理类。该类一般由企业统一规定,企业内所有系统必须继承或实现该类进行接口定义。如果识别到统一接口处理类,则对该类中的handler函数(统一接口处理类对应的函数的一种)进行执行前代理程序的代码注入。注入后,则该代理程序在测试系统或应用系统启动时,可以一同启动,开启了录制和回放功能。
对应第二功能的一种具体实施方式的一种示例为,上游请求报文进入到测试系统后,包括:测试系统接收上游请求报文,第一功能的第一功能模块将该上游请求报文对应的接口返回类的接口返回类名发送至第二功能的第二功能模块,可以认为是第二功能模块接收第一功能模块的调用请求,第二功能模块根据接口返回类名查询该第二功能模块下是否存在该接口返回类名的监控实例。如果存在,说明该接口返回类对应的第二功能模块已经开启第二功能,测试系统继续执行。如果不存在该接口返回类对应的监控实例,则执行创建该类的监控实例,设置监控实例名为接口返回类名,对监控实例下所有set函数前进行代码注入,以监控实例化当前线程中的堆栈轨迹元素-函数执行轨迹,遍历所有轨迹元素,实例化一个函数调用链,将轨迹元素的类名,方法名,字段名和行号信息写入该函数调用链中。如此,实现第二功能-监控赋值函数的函数执行轨迹。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,具体的,在上述步骤203中,所述回放字段包括回放字段名和回放字段值,所述录制字段包括录制字段名和录制字段值,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段,包括:将所述回放返回报文中的各回放字段名与所述录制返回报文中的各录制字段名比对;若所述各回放字段名与所述各录制字段名一一对应相同,且存在任一对字段名相同的回放字段值和录制字段值存在差异,则确定存在差异的字段为差异字段。
在一种示例中,应用系统在接收到上游请求报文后,会将上游请求报文转换成设定格式的对象,该设定格式的对象为该应用系统内部各功能组件可以识别的。如,设定格式的对象可以是Message对象。将上游请求报文和录制返回报文进行入库时,可以将Message对象形式的该上游请求报文和录制返回报文转换为表结构。如,
将从Message对象中解析出的接口id,环境,场景,系统id,流水号等信息。基于对应的报文body信息匹配数据库录制流量表record_flow中api,env,scenario,sys_id,bizno,request字段,插入到该表中。record_flow表结构如下表1所示:
字段名 | 注释 | 数据类型 |
id | 录制自增id | bigint(20) |
ip | 录制ip地址 | varchar(64) |
sys_id | 系统id | varchar(6) |
env | 录制环境 | varchar(6) |
bizno | 录制流水号 | varchar(32) |
api | 录制接口名 | varchar(32) |
scenario | 录制场景 | varchar(10) |
request | 录制请求 | longtext |
response | 录制返回 | longtext |
header | 录制请求头 | longtext |
status | 录制状态 | varchar(2) |
create_at | 录制创建时间 | bigint(20) |
表1
同理的,测试系统在接收到上游请求报文后,会将上游请求报文转换成设定格式的对象,该设定格式的对象为该应用系统内部各功能组件可以识别的。如,设定格式的对象可以是Message对象。将上游请求报文和回放返回报文进行入库时,可以将Message对象形式的该上游请求报文和回放返回报文转换为表结构。如,将从Message对象中解析出的接口id,环境,场景,系统id,流水号等信息。基于对应的报文body信息,用例执行id匹配数据库回放流量表replay_flow中api,env,scenario,sys_id,bizno,request,run_case_id字段,插入到该表中,表结构如下表2所示:
表2
如此,存入数据库中的录制返回报文和回放返回报文均是表结构,则可以在对比的时候直接根据对应的字段进行对比,而不需要将报文一层层解析以获取字段进行对比,提高对比速度,进一步提高数据验证效率。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,具体的,在上述步骤203中,计算所述回放字段与所述录制字段的相似度,包括:确定所述回放字段值和所述录制字段值的长度相同,则将所述回放字段值和所述录制字段值转化为设定类型,所述设定类型包含字符串类型、数字类型和日期类型中的至少一种;若所述回放字段值和所述录制字段值均转化成功或转化失败,则根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量;计算所述回放向量与所述录制向量的相似度。
也就是说,回放字段值和录制字段值的长度不同,测试系统的测试失败。回放字段值和录制字段值的长度相同,进一步将该回放字段值和录制字段值转换成设定类型,若回放字段值和录制字段值的转换结果为一个转换成功一个转换失败,测试系统的测试失败。若均转换失败或转换成功,则可以初步认定回放字段值和录制字段值的类型属性相同,进一步计算相似度。如此,无需针对所有差异字段对应的回放字段值和录制字段值均计算相似度,筛除掉一部分长度不同、类型属性不同的回放字段值和录制字段值,可以降低计算量,节约计算资源,保证流量回放系统的性能。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,针对流程步骤,根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量,包括:根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定中间回放向量和中间录制向量;分别将所述中间回放向量和所述中间录制向量除以预设向量得到回放向量和录制向量,所述预设向量是根据历史录制字段的字符种类和每种字符的数量确定的。
在一种示例中,回放字段值字符出现次数统计,若回放字段值为6cfe07d91c,则中间回放向量为【6=1,c=2,f=1,e=1,0=1,7=1,d=1,9=1,1=1】-(1,2,1,1,1,1,1,1,1)。录制字段值为b9d64bd3f2,则中间录制向量为【b=2,9=1,d=2,6=1,4=1,3=1,f=1,2=1】-(2,1,2,1,1,1,1,1)。预设向量:【6=1/2,c=1,f=1/2,e=1/2,0=1/2,7=1/2,d=1/2,9=1/2,1=1/2,d=1,b=1,6=1/2,4=1/2,3=1/2,2=1/2】。则回放向量为(2,4,2,2,2,2,2,2,2)、录制向量为(4,2,4,2,2,2,2,2)。
基于上述方法流程,本申请实施例又提供了一种流量回放的数据验证方法,
针对流程步骤,分别将所述中间回放向量和所述中间录制向量除以预设向量得到回放向量和录制向量之后,计算回放向量和录制向量相似度,所述相似度计算公式如下:
其中,所述S为所述相似度,所述xi为所述回放向量,所述yi为所述录制向量,所述L为相似否决因子,在所述回放字段值和所述录制字段值的长度不同,或所述回放字段值和所述录制字段值转化为设定类型时,任一个转换成功,另一个转化失败,所述L为0。
在一种实施例中,如果回放字段值字符串长度不等于录制字段值字符串长度,则相似否决因子等于0--S=0,测试失败。
如果回放字段值字符串长度等于录制字段值字符串长度,进行字符串类型判断。
转换成字符串类型,录制字段值和回放字段值仅有其中一个不能转换成功,则相似否决因子等于0--S=0,测试失败。
转换成数字类型,录制字段值和回放字段值进行int,double类型转换,仅有其中一个不能转换成功,则相似否决因子等于0--S=0,测试失败。
转换成日期,录制字段值和回放字段值进行date类型转换,仅有其中一个不能转换成功,则相似否决因子等于--S=0,测试失败。
如果相似否决因子L等于1时,则根据上述相似度计算公式计算回放向量和录制向量相似度。其中,计算公式中引入“相似否决因子”,判断录制字段值和回放字段值的字符串长度和类型,尝试进行类型转换,转换类型有数值、字符、日期。部分可以转换和部分不能转换即触发相似否决,设置相似度计算结果为0。增加了相似否决因子,提高了相似度计算速度。
基于上述方法流程和系统架构,本申请实施例还提供了一种…方法流程,如图3所示,包括:
步骤301、在生产环境的应用系统中注入代理程序,录制该应用系统接收的上游请求报文和处理该上游请求报文生成的录制返回报文。
步骤302、流量回放系统获取该上游请求报文和录制返回报文。
步骤303、在测试环境的测试系统中注入代理程序。
步骤304、流量回放系统在该上游请求报文中插入用例标识得到回放请求报文,并将该回放请求报文发送至测试系统。
此处,回放请求报文即是具有用例标识的上游请求报文。
步骤305、测试系统中的代理程序确定接收的回放请求报文中包含用例标识,则开启函数调用链监控功能-第二功能,录制该测试系统接收的回访请求报文、处理该回放请求报文生成的回放返回报文,以及记录处理该回放请求报文过程中的函数调用链得到第一函数调用链集合。
步骤306、流量回放系统获取回放请求报文、回放返回报文和第一函数调用链集合。
步骤307、流量回放系统获取测试系统的类文件,针对第一函数调用链集合中的任一函数调用链,确定该函数调用链的行号,若类文件中与行号相同的行号的代码中不包含赋值函数,且类文件中该行号的代码中包含的变量不为该赋值函数中的变量,则将该函数调用链从第一函数调用链集合中剔除,循环执行此筛选流程,直至对第一函数调用链集合完成筛选,得到第二函数调用链集合,第二函数调用链集合中的各函数调用链分别有对应的回放字段。
步骤308、流量回放系统将录制返回报文和回放返回报文对比,确定录制返回报文和回放返回报文对比中是否包含差异字段,若是,则执行步骤309,若否,则执行步骤317。
步骤309、获取回放返回报文中的用例标识,根据该用例标识从可忽略差异字段映射表中确定该用例标识对应的各可忽略差异字段名。
步骤310、流量回放系统判断在该用例标识对应的各可忽略差异字段名中是否包含差异字段中回放字段的回放字段名,若否,则执行步骤311,若是,则执行步骤317。
步骤311、流量回放系统确定差异字段中回放字段的函数调用链,根据该函数调用链的类名和方法名生成调用链标识。
步骤312、流量回放系统判断该调用链标识是否存在于差异函数记录中,若否,则执行步骤313,若是,则执行步骤320。
步骤313、判断差异字段的录制字段值和回放字段值的长度是否相同,若是,则执行步骤314,若否,则执行步骤318。
步骤314、将录制字段值和回放字段值转换为设定类型,若是均成转换功或均转换失败,则执行步骤315,若否,则执行步骤318。
步骤315、确定录制字段值的录制向量、回放字段值的回放向量,计算录制向量和回放向量的相似度。
步骤316、相似度是否大于设定阈值,若是,则执行步骤319,若否,则执行步骤318。
步骤317、测试系统的测试成功。
步骤318、测试系统的测试失败。
步骤319、确定该回放字段为可忽略差异字段,将该可忽略差异字段更新到可忽略差异字段记录中,将对应的调用链标识更新到差异函数记录中。
步骤320、确定该回放字段为可忽略差异字段,将该可忽略差异字段更新到可忽略差异字段记录中。
需要说明的是,上述方法流程中的执行步骤并不唯一。如,步骤303可以在步骤301、步骤302前后执行。步骤317和步骤318只需要执行任一个即可。步骤319和步骤320只需要执行任一个即可。上述步骤314、将录制字段值和回放字段值转换为设定类型中的设定类型可以有多个,多个不同的设定类型可以按照一定的顺序转换,也可以作为并列转换。如,回放字段值和录制字段值对应在前的设定类型均转换成功或均转换失败之后,继续判断在后的设定类型是否可以均转换成功或军转换失败,若在后的设定类型可以均转换成功或军转换失败,则计算相似度;若是在前的设定类型若一个转换成功一个转换失败则认为测试失败。又如,回放字段值和录制字段值对应转换多个不同的设定类型需要均转换成功或均转换失败之后计算相似度,若对应转换多个不同的设定类型中存在一个设定类型,回放字段值和录制字段值若一个转换成功一个转换失败则认为测试失败。即,上述流程只为了清晰阐述本申请方案,并不对本申请方案做限制。
基于相同的构思,本申请实施例提供了一种流量回放的数据验证装置,所述装置适用于流量回放系统,如图4所示,包括:
对比模块401,用于针对流量录制数据中任一上游请求报文,所述流量回放系统基于测试系统进行流量回放获取回放结果,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段;所述流量录制数据是通过对应用系统处理上游请求报文进行流量录制得到的,所述测试系统是所述应用系统更新后得到的;所述差异字段为字段名相同字段值不同的字段;
验证模块402,用于若确定所述差异字段不存在于可忽略差异字段记录中,则计算所述差异字段的回放字段值与所述差异字段的录制字段值的相似度,所述可忽略差异字段记录中包含的可忽略差异字段为对所述测试系统正常运行无影响的字段;
所述验证模块402还用于,若所述相似度大于设定阈值,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
可选的,所述验证模块402还用于,确定所述差异字段的函数调用链的调用链标识不存在于差异函数记录中,所述差异函数记录中包含的调用链标识为对所述测试系统正常运行无影响的可忽略差异字段的函数调用链的调用链标识,所述回放结果中包含任一回放字段的函数调用链;若所述相似度大于设定阈值,则确定所述回放字段为可忽略差异字段之后,还包括:将所述调用链标识更新到所述差异函数记录中。
可选的,所述验证模块402还用于,若确定所述差异字段不存在于可忽略差异字段记录中,且确定所述差异字段的函数调用链的调用链标识存在于差异函数记录中,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
可选的,所述验证模块402还用于,获取所述回放返回报文中的用例标识,确定所述用例标识在所述可忽略差异字段记录中对应的各可忽略差异字段名中不存在所述差异字段的差异字段名;根据所述差异字段的函数调用链的类名和方法名确定调用链标识,确定所述差异函数记录中不存在所述调用链标识。
可选的,所述验证模块402具体用于,针对所述测试系统获取的监控实例的函数调用链集合,获取所述测试系统的类文件,查找所述类文件中与接口返回类相关的赋值函数;所述接口返回类是根据具有用例标识的上游请求报文得到的,所述监控实例是根据所述接口返回类确定的;
针对所述接口返回类中的回放字段,若所述函数调用链集合中任一函数调用链包含所述赋值函数或所述赋值函数对应的变量,确定所述函数调用链为所述赋值函数对应的回放字段的函数调用链;
从所述函数调用链中确定所述回放字段的关键赋值函数;根据所述关键赋值函数对应的类名和方法名,得到所述函数调用链的调用链标识。
可选的,所述对比模块401还用于,在所述测试系统中设置有对上游请求报文的处理和回放进行录制的第一功能,以及针对具有用例标识的上游请求报文,设置有监控赋值函数对应的函数调用链的第二功能,所述赋值函数与接口返回类对应,所述接口返回类是根据具有用例标识的上游请求报文得到的。
可选的,所述对比模块401具体用于,将所述回放返回报文中的各回放字段名与所述录制返回报文中的各录制字段名比对;若所述各回放字段名与所述各录制字段名一一对应相同,且存在任一对字段名相同的回放字段值和录制字段值存在差异,则确定存在差异的字段为差异字段。
可选的,所述验证模块402具体用于,确定所述回放字段值和所述录制字段值的长度相同,则将所述回放字段值和所述录制字段值转化为设定类型,所述设定类型包含字符串类型、数字类型和日期类型中的至少一种;若所述回放字段值和所述录制字段值均转化成功或转化失败,则根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量;计算所述回放向量与所述录制向量的相似度。
可选的,所述验证模块402具体用于,根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定中间回放向量和中间录制向量;分别将所述中间回放向量和所述中间录制向量除以预设向量得到回放向量和录制向量,所述预设向量是根据历史录制字段的字符种类和每种字符的数量确定的。
可选的,所述相似度计算公式如下:
其中,所述S为所述相似度,所述xi为所述回放向量,所述yi为所述录制向量,所述L为相似否决因子,在所述回放字段值和所述录制字段值的长度不同,或所述回放字段值和所述录制字段值转化为设定类型时,任一个转换成功,另一个转化失败,所述L为0。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种流量回放的数据验证方法,其特征在于,所述方法适用于流量回放系统,包括:
针对流量录制数据中任一上游请求报文,所述流量回放系统基于测试系统进行流量回放获取回放结果,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段;所述流量录制数据是通过对应用系统处理上游请求报文进行流量录制得到的,所述测试系统是所述应用系统更新后得到的;所述差异字段为所述回放返回报文中的回放字段,与所述录制返回报文中的录制字段的字段名相同字段值不同;
所述流量回放系统若确定所述差异字段不存在于可忽略差异字段记录中,且确定所述差异字段的函数调用链的调用链标识不存在于差异函数记录中,所述差异函数记录中包含的调用链标识为对所述测试系统正常运行无影响的可忽略差异字段的函数调用链的调用链标识,所述回放结果中包含任一回放字段的函数调用链;则计算所述差异字段的回放字段值与所述差异字段的录制字段值的相似度,所述可忽略差异字段记录中包含的可忽略差异字段为对所述测试系统正常运行无影响的字段;
若所述相似度大于设定阈值,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中,将所述差异字段的调用链标识更新到所述差异函数记录中。
2.如权利要求1中所述的方法,其特征在于,还包括:
若确定所述差异字段不存在于可忽略差异字段记录中,且确定所述差异字段的函数调用链的调用链标识存在于差异函数记录中,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中。
3.如权利要求2中所述的方法,其特征在于,确定所述差异字段不存在于可忽略差异字段记录中,且所述差异字段的函数调用链的调用链标识存在于差异函数记录中,包括:
获取所述回放返回报文中的用例标识,确定所述用例标识在所述可忽略差异字段记录中对应的各可忽略差异字段名中不存在所述差异字段的差异字段名;
根据所述差异字段的函数调用链的类名和方法名确定调用链标识,确定所述差异函数记录中存在所述调用链标识。
4.如权利要求1中所述的方法,其特征在于,任一回放字段的函数调用链通过如下方式得到,包括:
针对所述测试系统获取的监控实例的函数调用链集合,获取所述测试系统的类文件,查找所述类文件中与接口返回类相关的赋值函数;所述接口返回类是根据具有用例标识的上游请求报文得到的,所述监控实例是根据所述接口返回类确定的;
针对所述接口返回类中的回放字段,若所述函数调用链集合中任一函数调用链包含所述赋值函数或所述赋值函数对应的变量,确定所述函数调用链为所述赋值函数对应的回放字段的函数调用链;
从所述函数调用链中确定所述回放字段的关键赋值函数;根据所述关键赋值函数对应的类名和方法名,得到所述函数调用链的调用链标识。
5.如权利要求1中所述的方法,其特征在于,还包括:
在所述测试系统中设置有对上游请求报文的处理和回放进行录制的第一功能,以及针对具有用例标识的上游请求报文,设置有监控赋值函数对应的函数调用链的第二功能,所述赋值函数与接口返回类对应,所述接口返回类是根据具有用例标识的上游请求报文得到的。
6.如权利要求1中所述的方法,其特征在于,所述回放字段包括回放字段名和回放字段值,所述录制字段包括录制字段名和录制字段值,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段,包括:
将所述回放返回报文中的各回放字段名与所述录制返回报文中的各录制字段名比对;
若所述各回放字段名与所述各录制字段名一一对应相同,且存在任一对字段名相同的回放字段值和录制字段值存在差异,则确定存在差异的字段为差异字段。
7.如权利要求1至6任一项中所述的方法,其特征在于,计算所述回放字段与所述录制字段的相似度,包括:
确定所述回放字段值和所述录制字段值的长度相同,则将所述回放字段值和所述录制字段值转化为设定类型,所述设定类型包含字符串类型、数字类型和日期类型中的至少一种;
若所述回放字段值和所述录制字段值均转化成功或转化失败,则根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量;
计算所述回放向量与所述录制向量的相似度。
8.如权利要求7中所述的方法,其特征在于,根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定回放向量和录制向量,包括:
根据所述回放字段值和所述录制字段值的字符种类和每种字符的数量确定中间回放向量和中间录制向量;
分别将所述中间回放向量和所述中间录制向量除以预设向量得到回放向量和录制向量,所述预设向量是根据历史录制字段的字符种类和每种字符的数量确定的。
9.如权利要求7中任一所述的方法,其特征在于,所述相似度计算公式如下:
其中,所述S为所述相似度,所述xi为所述回放向量,所述yi为所述录制向量,所述L为相似否决因子,在所述回放字段值和所述录制字段值的长度不同,或所述回放字段值和所述录制字段值转化为设定类型时,任一个转换成功,另一个转化失败,所述L为0。
10.一种流量回放的数据验证装置,其特征在于,所述装置适用于流量回放系统,包括:
对比模块,用于针对流量录制数据中任一上游请求报文,所述流量回放系统基于测试系统进行流量回放获取回放结果,将所述回放结果中的回放返回报文和所述流量录制数据中的录制返回报文进行比对,确定差异字段;所述流量录制数据是通过对应用系统处理上游请求报文进行流量录制得到的,所述测试系统是所述应用系统更新后得到的;所述差异字段为字段名相同字段值不同的字段;
验证模块,用于若确定所述差异字段不存在于可忽略差异字段记录中,且确定所述差异字段的函数调用链的调用链标识不存在于差异函数记录中,所述差异函数记录中包含的调用链标识为对所述测试系统正常运行无影响的可忽略差异字段的函数调用链的调用链标识,所述回放结果中包含任一回放字段的函数调用链;则计算所述差异字段的回放字段值与所述差异字段的录制字段值的相似度,所述可忽略差异字段记录中包含的可忽略差异字段为对所述测试系统正常运行无影响的字段;
所述验证模块还用于,若所述相似度大于设定阈值,则确定所述差异字段为可忽略差异字段,将所述可忽略差异字段更新到所述可忽略差异字段记录中,将所述差异字段的调用链标识更新到所述差异函数记录中。
11.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至9任一项所述的方法。
12.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210904004.7A CN115297041B (zh) | 2022-07-29 | 2022-07-29 | 一种流量回放的数据验证方法及装置 |
PCT/CN2022/130548 WO2024021362A1 (zh) | 2022-07-29 | 2022-11-08 | 一种流量回放的数据验证方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210904004.7A CN115297041B (zh) | 2022-07-29 | 2022-07-29 | 一种流量回放的数据验证方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115297041A CN115297041A (zh) | 2022-11-04 |
CN115297041B true CN115297041B (zh) | 2024-01-02 |
Family
ID=83825711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210904004.7A Active CN115297041B (zh) | 2022-07-29 | 2022-07-29 | 一种流量回放的数据验证方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115297041B (zh) |
WO (1) | WO2024021362A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115297041B (zh) * | 2022-07-29 | 2024-01-02 | 深圳前海微众银行股份有限公司 | 一种流量回放的数据验证方法及装置 |
CN115865488A (zh) * | 2022-11-30 | 2023-03-28 | 中国人民财产保险股份有限公司 | 基于脱敏日志的流量回放测试方法、装置、设备及介质 |
CN116974948B (zh) * | 2023-09-22 | 2024-01-09 | 腾讯科技(深圳)有限公司 | 业务系统测试方法、系统、设备和介质 |
CN117579507B (zh) * | 2024-01-17 | 2024-05-28 | 云筑信息科技(成都)有限公司 | 一种自动化提取录制流量的方法 |
CN118337669A (zh) * | 2024-06-12 | 2024-07-12 | 深圳依时货拉拉科技有限公司 | 流量仿真系统及方法、计算机可读存储介质及计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758062A (en) * | 1996-04-30 | 1998-05-26 | Oracle Corporation | Method and apparatus for regression testing of application logic |
CN111371818A (zh) * | 2018-12-25 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 一种数据请求的验证方法、装置及设备 |
CN112100070A (zh) * | 2020-09-15 | 2020-12-18 | 北京三快在线科技有限公司 | 版本缺陷的检测方法、装置、服务器及存储介质 |
US11010287B1 (en) * | 2019-07-01 | 2021-05-18 | Intuit Inc. | Field property extraction and field value validation using a validated dataset |
CN114328268A (zh) * | 2022-01-14 | 2022-04-12 | 中国平安人寿保险股份有限公司 | 基于流量回放的软件测试方法、装置、设备及介质 |
CN114338846A (zh) * | 2020-09-30 | 2022-04-12 | 腾讯科技(深圳)有限公司 | 一种报文测试的方法及装置 |
CN114579423A (zh) * | 2020-11-30 | 2022-06-03 | 行吟信息科技(上海)有限公司 | 一种流量回放质量分析方法及装置 |
CN114676062A (zh) * | 2022-04-06 | 2022-06-28 | 北京百度网讯科技有限公司 | 用于接口的差异数据测试方法及装置、电子设备和介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11288112B1 (en) * | 2019-09-30 | 2022-03-29 | Amazon Technologies, Inc. | Enforcing data loss thresholds for performing updates to mirrored data sets |
CN113761311A (zh) * | 2021-01-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 信息检索方法、装置、服务器和可读存储介质 |
CN113590497A (zh) * | 2021-09-27 | 2021-11-02 | 腾讯科技(深圳)有限公司 | 业务服务的测试方法、装置、电子设备及存储介质 |
CN115297041B (zh) * | 2022-07-29 | 2024-01-02 | 深圳前海微众银行股份有限公司 | 一种流量回放的数据验证方法及装置 |
-
2022
- 2022-07-29 CN CN202210904004.7A patent/CN115297041B/zh active Active
- 2022-11-08 WO PCT/CN2022/130548 patent/WO2024021362A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758062A (en) * | 1996-04-30 | 1998-05-26 | Oracle Corporation | Method and apparatus for regression testing of application logic |
CN111371818A (zh) * | 2018-12-25 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 一种数据请求的验证方法、装置及设备 |
US11010287B1 (en) * | 2019-07-01 | 2021-05-18 | Intuit Inc. | Field property extraction and field value validation using a validated dataset |
CN112100070A (zh) * | 2020-09-15 | 2020-12-18 | 北京三快在线科技有限公司 | 版本缺陷的检测方法、装置、服务器及存储介质 |
CN114338846A (zh) * | 2020-09-30 | 2022-04-12 | 腾讯科技(深圳)有限公司 | 一种报文测试的方法及装置 |
CN114579423A (zh) * | 2020-11-30 | 2022-06-03 | 行吟信息科技(上海)有限公司 | 一种流量回放质量分析方法及装置 |
CN114328268A (zh) * | 2022-01-14 | 2022-04-12 | 中国平安人寿保险股份有限公司 | 基于流量回放的软件测试方法、装置、设备及介质 |
CN114676062A (zh) * | 2022-04-06 | 2022-06-28 | 北京百度网讯科技有限公司 | 用于接口的差异数据测试方法及装置、电子设备和介质 |
Non-Patent Citations (2)
Title |
---|
Android应用录制与回放工具设计;闫凯;孙军梅;刘雪娇;朱敏;;计算机系统应用(第09期);全文 * |
基于AOP的系统级测试解耦方案在系统回归测试中的应用;高文辉;;电子技术与软件工程(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115297041A (zh) | 2022-11-04 |
WO2024021362A1 (zh) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115297041B (zh) | 一种流量回放的数据验证方法及装置 | |
US7441234B2 (en) | Correlating trace events | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN110088744B (zh) | 一种数据库维护方法及其系统 | |
CN110222042B (zh) | 用于确定已核对业务数据的方法、装置、设备及系统架构 | |
US7913233B2 (en) | Performance analyzer | |
CN112363937B (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
CN110287192A (zh) | 搜索应用数据处理方法、装置、计算机设备和存储介质 | |
CN111221721B (zh) | 一种单元测试案例自动化录制和执行方法及装置 | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN112363936B (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
CN110941632A (zh) | 一种数据库审计方法、装置及设备 | |
CN113971031A (zh) | 软件包依赖关系检查方法及装置 | |
CN111143463B (zh) | 一种基于主题模型的银行数据仓库的构建方法及装置 | |
CN113032254B (zh) | 测试覆盖情况的评估方法和装置 | |
CN115829412A (zh) | 一种基于业务过程的指标数据量化处理方法、系统及介质 | |
CN111984311B (zh) | 一种基于运行日志的软件结构复现的方法 | |
CN113791980A (zh) | 测试用例的转化分析方法、装置、设备及存储介质 | |
CN111352824A (zh) | 测试方法、装置及计算机设备 | |
US20230195609A1 (en) | Automatic generation of summary report for validation tests of computing systems | |
CN113965489B (zh) | 链路超时检测方法、装置、计算机设备和存储介质 | |
CN115629950B (zh) | 一种性能测试异步请求处理时间点的提取方法 | |
CN110489125B (zh) | 文件管理方法和计算机存储介质 | |
CN115794574A (zh) | 多种平台参数比对的方法、系统、终端设备及存储介质 | |
CN115757151A (zh) | 金融领域业务系统的测试方法、装置及服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |