CN115037663A - 一种应用系统更新测试方法及装置 - Google Patents
一种应用系统更新测试方法及装置 Download PDFInfo
- Publication number
- CN115037663A CN115037663A CN202210589357.2A CN202210589357A CN115037663A CN 115037663 A CN115037663 A CN 115037663A CN 202210589357 A CN202210589357 A CN 202210589357A CN 115037663 A CN115037663 A CN 115037663A
- Authority
- CN
- China
- Prior art keywords
- playback
- transaction
- group
- code branch
- flow
- 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.)
- Granted
Links
Images
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
-
- 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/04—Processing captured monitoring data, e.g. for logfile generation
-
- 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/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种应用系统更新测试方法及装置,方法适用于流量回放系统,包括:针对流量录制数据中任一交易的上游请求报文,进行流量回放;将回放结果中的流量回放数据和流量录制数据进行比对,若存在差异,则确定交易为差异交易;对各差异交易的代码分支路径进行聚类,得到至少一个聚类分组;代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在测试系统中所经历的代码分支;若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则相同的代码分支标识对应的代码分支为异常代码分支。上述方法中,用于准确定位应用系统的测试系统中引起错误的代码分支。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用系统更新测试方法及装置。
背景技术
近年来,随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出更高的要求。如,金融行业的业务基本通过线上的应用系统进行处理。为了保证应用系统的功能更加完善,应用系统一直处于不断修改中,而为了测试修改后的应用系统是否能够正确运行,一般需要应用流量回放测试技术。
目前,流量回放测试技术,是指对应用系统线上环境下的用户端发送的请求流量执行流量录制操作,得到测试请求,再根据测试请求对测试系统(将线上应用系统对应的离线应用系统的代码修改后得到的系统)进行测试,得到测试结果。流量回放测试技术再进行回归测试,具体地:可以将流量回放的测试结果与线上环境下的真实请求结果进行比对,根据比对得到的差异字段确认测试系统是否引入错误。该种方式虽然可以确定测试系统引入错误的问题,但是很难准确定位测试系统中引起错误的代码分支。
因此,现在亟需一种应用系统更新测试方法及装置,用于准确定位应用系统的测试系统中引起错误的代码分支。
发明内容
本申请实施例提供一种应用系统更新测试方法及装置,用于准确定位应用系统的测试系统中引起错误的代码分支。
第一方面,本申请实施例提供一种应用系统更新测试方法,所述方法适用于流量回放系统,该方法包括:
针对流量录制数据中任一交易的上游请求报文,所述流量回放系统进行流量回放,获取回放结果;将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;所述流量回放系统中包括运行有针对所述应用系统更新后得到的测试系统的回放服务器;所述流量录制数据是通过对所述应用系统处理各交易进行流量录制得到的;
所述流量回放系统对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组;所述代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在所述测试系统中所经历的至少一个代码分支;
所述流量回放系统若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
上述方法中,针对各交易中的任一笔交易,基于测试系统对该交易的生产接收报文进行回放,获取包含流量回放数据的回放结果。如此,可以根据流量录制数据和流量回放数据的比对结果确定差异交易,此时,差异交易可能是由测试系统的代码漏洞引起的。由于代码分支路径由有序代码分支标识形成,用于表征该上游请求报文在回放过程中经历的测试系统中的至少一个代码分支,则进一步,为了确认测试系统的代码漏洞,根据该预设时间段内的各差异交易的代码分支路径,对各差异交易进行聚类,得到至少一个聚类分组,若确定聚类分组中各代码分支路径存在相同的代码分支标识,则该代码分支标识对应的代码分支大概率是引起错误的异常代码分支,即,存在漏洞的代码分支。如此,相比于现有技术中仅能确定测试系统引入的错误,而不能获取错误原因(造成错误的代码漏洞),本申请可以准确快速的定位代码漏洞,提高运维效率。
可选的,所述流量回放系统为分布式系统;所述流量回放系统进行流量回放之前,还包括:将所述流量录制数据中的各交易按照用户标识进行分组,得到用户交易组,所述用户交易组内的各交易具有相同的用户标识且是按照交易时间顺序依次排序的;将各用户交易组分发至所述回放服务器中。
上述方法中,通过将按照用户标识进行分组得到用户交易组,并使得回放服务器按照用户交易组中各交易的交易时间顺序回放。如此,保证交易执行顺序,进一步保证回放处理获取的测试数据的准确性。防止交易顺序颠倒,导致的测试数据错误,如,借款数额查询请求的请求结果与借款请求的请求成功结果需要按照顺序回放,才能获取准确的测试数据。
可选的,将各用户交易组分发至回放服务器中,包括:计算每个用户交易组的第一总耗时,所述第一总耗时为用户交易组中各交易的交易耗时的和,所述交易耗时为所述应用系统处理对应交易时的耗时;根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,其中,任意两台回放服务器在进行流量回放时的耗时之差小于设定阈值。
上述方法中,根据各用户交易组的第一总耗时,将各用户交易组分配到第一预设数量的回放服务器中,令任意两台回放服务器在进行流量回放时的耗时之差小于设定阈值,使得最终得到的各回放服务器对应的回放总耗时相近。如此,保证每个回放服务器回放处理时间基本相等,加快回放流程。
可选的,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,包括:根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,且得到的各回放组的第二总耗时的标准差最小,所述第二总耗时为回放组中各用户交易组的第一总耗时的和;将所述第二预设数量的回放组平均分发至所述第一预设数量的回放服务器;任一回放服务器中有预设数量的线程,所述预设数量等于所述第二预设数量与所述第一预设数量的比值。
上述方法中,将用户标识相同的交易分在一个用户交易组中,以用户交易组为单位,根据各用户交易组的第一总耗时将各用户交易组分到第二预设数量的回放组中,且令得到的各回放组的第二总耗时的标准差最小。由于回放服务器针对回放组中的每个用户交易组中各交易按照交易时间顺序回放。如此,在保证交易时序的前提下,将第二预设数量的第二总耗时的标准差最小的各回放组平均分发至第一预设数量的回放服务器,且回放服务器中有预设数量的线程处理回放组,提高回放速度。
可选的,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,包括:从所述各用户交易组中搜索第一用户交易组,若所述第一用户交易组的第一总耗时大于等于所述各用户交易组的平均总耗时,将所述第一用户交易组分到一个回放组中;若所述第一用户交易组的第一总耗时不大于所述平均总耗时,将所述第一用户交易组分到一个回放组中,并搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,将所述第二用户交易组分到所述回放组中,所述第一耗时标准差为所述第一用户交易组的第一总耗时与所述平均总耗时的标准差;循环执行上述步骤,直到得到所述第二预设数量的回放组。
上述方法中,通过上述根据耗时标准差分配用户交易组到回放组,令得到的各回放组的第二总耗时的标准差最小,提高回放效率。
可选的,从所述各用户交易组中搜索第一用户交易组之前,还包括:根据所述各用户交易组的第一总耗时构造平衡二叉树;搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,包括:通过所述平衡二叉树,搜索与所述第一耗时标准差的差值最小的第一总耗时的第二用户交易组。
上述方法中,根据各用户交易组的第一总耗时构造平衡二叉树。因为平衡二叉树可以节约搜索用户交易组的时间。如此,在将该平衡二叉树中各用户交易组分配到所述第一预设数量的回放组中时,可以快速搜索的需要分配到回放组的用户交易组,加快获取回放组的速度。
可选的,所述流量回放系统对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组,包括:从各差异交易的代码分支路径中随机选取K个聚类执行点,分别将所述各差异交易的代码分支路径聚类到所述K个聚类执行点,得到K个中间聚类分组;重新计算每个中间聚类分组的质心,以所述质心为新的聚类执行点,分别将所述各差异交易的代码分支路径聚类到K个新的聚类执行点,得到K个中间聚类分组;重复上述聚类步骤,直至收敛,得到K个聚类分组。
上述方法中,通过重复获取新的聚类执行点,将各差异交易聚类到新的聚类执行点得到中间聚类分组,再计算中间聚类分组的质心直至收敛,提高代码分支坐标分类的准确度,进一步提高异常代码分支定位的准确度。
可选的,将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易,包括:将所述回放结果中的流量回放数据和所述流量录制数据进行比对,和/或将所述回放结果中的第二数据库变更数据和第一数据库变更数据进行比对,若存在差异,则确定所述交易为差异交易;所述第一数据库变更数据是对所述应用系统处理各交易时产生的数据库数据进行克隆得到的。
上述方法中,生产数据中包含两类数据,一类可以认为是报文类数据-流量录制数据。在一种示例中,流量录制数据可以包括:应用系统接收的上游系统发送的上游请求报文、应用系统根据该上游请求报文生成的下游请求报文、应用系统接收的下游系统返回的请求响应报文、应用系统基于该请求响应报文生成的发送至上游系统的请求响应报文。另一类可以认为是从交易处理过程中提取的交易关键数据-第一数据库变更数据。例如:处理借款交易产生的新增一笔借款,该笔借款会写入一条借据表数据TM_LOAN、还款计划表数据TM_SCHEDULE等。对应的,回放结果中也对应的可以包含两类数据,一类可以认为是报文类数据-流量回放数据。在一种示例中,流量回放数据可以包括:上述上游请求报文、测试系统根据该上游请求报文进行回放获得的下游请求报文、测试系统对应的模拟工具模拟得到的下游系统对该测试系统的请求响应报文、测试系统根据该请求响应报文进行回放获得的假设用于发送至上游系统的请求响应报文。另一类可以认为是回放过程中提取的交易关键数据-第二数据库变更数据。例如:处理借款交易产生的新增一笔借款,该笔借款会写入一条借据表数据TM_LOAN、还款计划表数据TM_SCHEDULE等。如此,将全量数据进行对比,可以获取更隐蔽的代码漏洞,提高测试效率。
第二方面,本申请实施例提供一种应用系统更新测试装置,所述方法适用于流量回放系统,该装置包括:
回放模块,用于针对流量录制数据中任一交易的上游请求报文,进行流量回放,获取回放结果;将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;所述流量回放系统中包括运行有针对所述应用系统更新后得到的测试系统的回放服务器;所述流量录制数据是通过对所述应用系统处理各交易进行流量录制得到的;
聚类模块,用于对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组;所述代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在所述测试系统中所经历的至少一个代码分支;
所述聚类模块还用于,若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
第三方面,本申请实施例还提供一种计算机设备,包括:存储器,用于存储程序;处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本申请实施例还提供一种计算机可读非易失性存储介质,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
本申请的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用系统更新测试的架构示意图;
图2为本申请实施例提供的一种应用系统更新测试方法的流程示意图;
图3为本申请实施例提供的一种平衡二叉树的示意图;
图4为本申请实施例提供的一种代码分支路径的代码分支坐标的示意图;
图5为本申请实施例提供的一种应用系统更新测试的架构示意图;
图6为本申请实施例提供的一种应用系统更新测试方法的流程示意图;
图7为本申请实施例提供的一种应用系统更新测试装置示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在一种示例性的场景中,上述应用系统为贷款核心系统,贷款核心系统的回放测试覆盖率要求高,而贷款场景数据形态多且复杂,很难在测试环境(与应用系统在线上环境下运行相应对的,测试系统在线下环境运行)充分模拟。线上环境拥有场景丰富、数据真实、覆盖全面的条件,将线上环境的交易处理的请求相关数据获取下来,在测试环境中模拟用户请求可以解决大规模应用系统重构或复杂业务带来的应用系统的代码改动时回放测试困难的问题。
现有技术中,流量回放工具如jvm-sandbox-reporter使用jvm-sandbox沙箱技术,通过Java agent或者attach方式挂载到Java应用上,在不侵入代码的情况下支持纯读接口和幂等写接口的直接回放;GoReplay基于Go语言实现的监听网络接口流量来录制流量,支持在线和离线方式回放流量。基于这些工具进行流量回放包括:流量录制:将线上环境中应用系统的流量录制和外调结果(贷款核心系统对下游的调用结果)存储下来。基于流量录制数据进行流量回放,其中,在回放中需要对下游系统的调用通过记录的外调结果进行模拟,以实现完成的回放流程。得到回放结果后,将生产环境(应用系统在线上环境下运行)对应的流量录制报文与回放得到的报文进行差异对比,由开发人员查看差异排查问题。上述方式虽然可以在一定程度上确定测试系统引入错误的问题,但是一般只能针对少量维度进行比对,而少量维度的差异字段进行分析,是难以准确的定位异常原因的。若要全量回放比对,比对以及后续分析工作量巨大。
如,针对一个字段来说,在贷款场景下,虽然两笔交易表现为同一个字段返回值不同,却是2个不同的代码漏洞导致的。例如:可用余额字段=授信额度-已用额度,已用额度在逾期场景和非逾期场景下代码分支不同,所以虽然都表现可用余额字段不一致,但是在逾期分支和非逾期分支下可能存在不同的代码漏洞导致可用余额字段不一致。另一方面两笔交易虽然表现为不同字段返回不一致,也可能是同一个代码漏洞产生的。例如:第一笔交易是否逾期字段不同,第二笔交易结清金额不同,虽然不一致的字段不同,但是可能都是逾期还款的还款分配逻辑的代码漏洞导致的。由此,开发人员需要基于报文差异进行大量的分析和排查工作进行异常定位,且很难准确定位测试系统中引起错误的代码分支。
另外,在贷款场景下的借还款子场景中都是非幂等写的接口,而非幂等接口严格要求请求数据的时序,并且查询接口也会受到借还款接口调用的时序影响。如,用户先借款再查询可用额度顺序如果颠倒返回金额就会不一致。现有技术中解决方式为给回放的交易记录时间,按时序串行回放,但是面对海量交易时,回放耗时太多。
因此,基于上述问题,本申请实施例提供的一种应用系统更新测试的系统架构,如图1所示,适用于流量回放系统,流量回放系统中包括运行有针对应用系统更新后得到的测试系统的回放服务器,包括:
回放模块101,用于对上述应用系统处理各交易进行流量录制,获取预设时间段内应用系统的流量录制数据,流量录制数据中包括应用系统接收的各交易的上游请求报文。针对流量录制数据中任一交易的上游请求报文,回放模块101基于回放服务器中的测试系统进行流量回放,获取回放结果。
对比模块102,用于将该回放结果中的流量回放数据和流量录制数据进行比对,若存在差异,则确定该交易为差异交易。
聚类模块103,用于对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组。其中,代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在上述测试系统中所经历的至少一个代码分支。
异常结果确定模块104,用于若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
如此,通过上述系统架构进行应用系统更新测试,可以准确测试系统中大概率存在异常的代码分支,提高运维效率,缩短运维周期。
基于此,本申请实施例提供了一种应用系统更新测试方法的流程,该方法流程适用于流量回放系统,如图2所示,包括:
步骤201、针对流量录制数据中任一交易的上游请求报文,所述流量回放系统进行流量回放,获取回放结果;
此处,流量录制数据可以是通过流量监听工具录制该应用系统处理交易产生的数据。其中,流量监听工具可以为GoReplay基于Go语言实现的,可以通过监听网络接口流量来录制流量,或Java流量监控工具等,这里对流量监听工具的具体设置不做限制。
流量录制数据可以为报文类数据,可以包括一下报文中的一个或多个:上游请求报文:针对一笔交易,上游系统发送至该应用系统的上游请求报文、下游请求报文:针对该笔交易,应用系统基于该上游请求报文处理得到的对下游系统的下游请求报文、下游请求响应报文:针对该笔交易的下游系统对该应用系统的请求响应报文、上游请求响应报文:针对该笔交易的应用系统对上游系统的请求响应报文等等,这里只是一种示例,并不对流量录制数据中包含的数据做限制。
步骤202、将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;所述流量回放系统中包括运行有针对所述应用系统更新后得到的测试系统的回放服务器;所述流量录制数据是通过对所述应用系统处理各交易进行流量录制得到的;
此处,流量回放数据可以为报文类数据,可以包括一下报文中的一个或多个:上述流量录制数据中的上游请求报文、测试系统根据该上游请求报文进行回放获得的下游请求报文、测试系统对应的模拟工具模拟得到的下游系统对该测试系统的下游请求响应报文、测试系统根据该下游请求响应报文进行回放获得的假设用于发送至上游系统的上游请求响应报文。
步骤203、所述流量回放系统对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组;所述代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在所述测试系统中所经历的至少一个代码分支;
此处,代码分支路径可以通过坐标方式表示。如,一个借款交易可能会经历测试系统中的贷款状态代码分支:有欠款1、无欠款2、有欠款未到期1、有欠款已到期2、有欠款已逾期3、有欠款未到期-允许借款数额等级一级1、有欠款未到期-允许借款数额等级二级2、有欠款未到期-允许借款数额等级三级3、无欠款-允许借款数额等级一级1、无欠款-允许借款数额等级二级2、无欠款允-许借款数额等级三级3等。
基于上述示例,若用户发起的借款交易在贷款状态代码分支中经历的代码分支为有欠款-有欠款未到期-有欠款允许借款数额等级一级,代码分支路径通过坐标方式表示为(1,1,1)。若用户发起的借款交易在贷款状态代码分支中经历的代码分支为无欠款-无欠款允许借款数额等级一级,代码分支路径通过坐标方式表示为(2,1)。这里只是一种对代码分支路径表示方式的一种说明示例,并不对代码分支路径的表示方式做限制。
基于上述示例,代码分支路径通过代码分支标识形成坐标,可以根据聚类方法进行聚类,如,k-means聚类算法、层次聚类算法等,这里的聚类算法的具体应用不做限制。
步骤204、所述流量回放系统若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
基于上述示例的,代码分支路径的坐标有(1,4,3,2)、(1,3,5,2)、(1,5,4,2)、(1,6,6,2)、(1,5,6,2),相同的代码分支标识对应的代码分支为(*,*,*,2),则在该代码分支路径中执行顺序在第4位的代码分支标识2对应的代码分支为异常代码分支。
上述方法中,针对各交易中的任一笔交易,基于测试系统对该交易的生产接收报文进行回放,获取包含流量回放数据的回放结果。如此,可以根据流量录制数据和流量回放数据的比对结果确定差异交易,此时,差异交易可能是由测试系统的代码漏洞引起的。由于代码分支路径由有序代码分支标识形成,用于表征该上游请求报文在回放过程中经历的测试系统中的至少一个代码分支,则进一步,为了确认测试系统的代码漏洞,根据该预设时间段内的各差异交易的代码分支路径,对各差异交易进行聚类,得到至少一个聚类分组,若确定聚类分组中各代码分支路径存在相同的代码分支标识,则该代码分支标识对应的代码分支大概率是引起错误的异常代码分支,即,存在漏洞的代码分支。如此,相比于现有技术中仅能确定测试系统引入的错误,而不能获取错误原因(造成错误的代码漏洞),本申请可以准确快速的定位代码漏洞,提高运维效率。
在一种基于上述应用系统更新测试方法流程的实施例中,所述流量回放系统为分布式系统,在该方法流程的步骤201之前,还包括:
将所述流量录制数据中的各交易按照用户标识进行分组,得到用户交易组,所述用户交易组内的各交易具有相同的用户标识且是按照交易时间顺序依次排序的;将各用户交易组分发至所述回放服务器中。也就是说,将各交易按照用户标识分组,并使得每个用户交易组中的交易按照交易时间排序。如此,在流量回放系统的分布式系统下,保证在回放流程中,针对每个用户的交易的回放都是按照顺序执行的。相比于现有技术中所有交易按照交易时间串行执行浪费时间来说,可以节约回放耗时,提高测试效率。
在一种基于上述应用系统更新测试方法流程的实施例中,将各用户交易组分发至回放服务器中,包括:
计算每个用户交易组的第一总耗时,所述第一总耗时为用户交易组中各交易的交易耗时的和,所述交易耗时为所述应用系统处理对应交易时的耗时;
根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,其中,任意两台回放服务器在进行流量回放时的耗时之差小于设定阈值。也就是说,可以根据流量录制数据计算出每个用户交易组的各交易的交易耗时的和得到第一总耗时,进一步,根据用户交易组的第一总耗时,将各用户交易组分配至第一预设数量的回放服务器中,使得任意两台回放服务器在对该回放服务器中各用户交易组中的交易进行流量回放的耗时之差小于设定阈值。如此,进一步降低分布式系统中的各回放服务器回放流程的耗时,提高测试效率。
在一种基于上述应用系统更新测试方法流程的实施例中,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,包括:根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,且得到的各回放组的第二总耗时的标准差最小,所述第二总耗时为回放组中各用户交易组的第一总耗时的和;将所述第二预设数量的回放组平均分发至所述第一预设数量的回放服务器;任一回放服务器中有预设数量的线程,所述预设数量等于所述第二预设数量与所述第一预设数量的比值。也就是说,在获得各用户交易组后,还可以进一步将各用户交易组,以每个用户交易组为单位,进行再次分组得到回放组,且使得各回放组的第二总耗时的标准差最小。如此,进一步缩小各回放服务器回放流程执行耗时的差距,进一步提高测试效率。另外,每个回放服务器中包含预设数量的线程,预设数量的线程均分回放组,又进一步提高测试效率。
在一种基于上述应用系统更新测试方法流程的实施例中,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,包括:
从所述各用户交易组中搜索第一用户交易组,若所述第一用户交易组的第一总耗时大于等于所述各用户交易组的平均总耗时,将所述第一用户交易组分到一个回放组中;
若所述第一用户交易组的第一总耗时不大于所述平均总耗时,将所述第一用户交易组分到一个回放组中,并搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,将所述第二用户交易组分到所述回放组中,所述第一耗时标准差为所述第一用户交易组的第一总耗时与所述平均总耗时的标准差;
循环执行上述步骤,直到得到所述第二预设数量的回放组。也就是说,在将用户交易组分到回放组的过程中,若第一用户交易组的第一总耗时大于等于平均总耗时,则将该第一用户交易组放在单独的回放组中。若第一用户交易组不大于平均总耗时,则可以将该第一用户交易组分到回放组后,计算第一用户交易组的第一总耗时与平均总耗时的标准差得到第一耗时标准差,搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,将该第二用户交易组分到回放组中,此时,该回放组中包含第一用户交易组和第二用户交易组。按照这种方式得到的各回放组的第二总耗时的标准差最小。
其中,在一种可能的设计中,上述分组方法可以通过如下公式计算得到,包括:
其中,所述Cti+1为回放组中第i+1个用户交易组的第一总耗时,所述Cti为所述回放组中第i个用户交易组的第一总耗时,所述t为所述回放组的当前耗时标准差,所述当前耗时标准差为所述回放组中当前各用户交易组的第一总耗时与所述平均总耗时的标准差,所述dp(t)表征在所述当前耗时标准差下选择所述第i+1个用户交易组得到的所述回放组的第二总耗时。
另外,上述回放组的最小标准差计算公式如下,包括:
其中,所述σ为各回放组的第二总耗时的最小标准差,所述N为所述第一预设数量,所述M为所述第二预设数量与所述第一预设数量的比值,表征回放服务器中的线程数,μ为平均总耗时,所述j表示第j个回放组。
在一种基于上述应用系统更新测试方法流程的实施例中,从所述各用户交易组中搜索第一用户交易组之前,还包括:
根据所述各用户交易组的第一总耗时构造平衡二叉树;
搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,包括:
通过所述平衡二叉树,搜索与所述第一耗时标准差的差值最小的第一总耗时的第二用户交易组。也就是说,在将用户交易组分配到回放组中之前,根据各用户交易组构造平衡二叉树,在平衡二叉树中搜索用户交易组进行分配到回放组。
在一种示例中,取该平衡二叉树中用户交易组1,该用户交易组1为平衡二叉树中各用户交易组中第一总耗时最大的用户交易组;
若用户交易组1的第一总耗时大于等于各用户交易组的总耗时的平均总耗时,将用户交易组1分到一个回放组中,并将平衡二叉树中的用户交易组1删除。此时,回放组中的用户交易组包括用户交易组1。
若用户交易组1的第一总耗时不大于平均总耗时,将用户交易组1分到一个回放组中,将平衡二叉树中的用户交易组1删除,并从平衡二叉树中搜索第一总耗时与耗时标准差1相等的用户交易组2,若存在第二用户交易组2,将用户交易组2分到该回放组中,将平衡二叉树中的用户交易组2删除,耗时标准差1为用户交易组1的第一总耗时与平均总耗时的标准差。此时,回放组中的用户交易组包括用户交易组1和用户交易组2。
若不存在用户交易组2,从平衡二叉树中搜索第一总耗时与耗时标准差1最近的用户交易组3和用户交易组4,用户交易组3的第一总耗时大于耗时标准差1,用户交易组4的第一总耗时小于耗时标准差1。
若将用户交易组3分到回放组中,该回放组的耗时标准差为耗时标准差2,耗时标准差2为耗时标准差1与用户交易组3的第一总耗时的标准差。此时,回放组中的用户交易组包括用户交易组1和用户交易组3。
若将用户交易组4分到回放组中,该回放组的耗时标准差为耗时标准差3,耗时标准差3为耗时标准差1与用户交易组4的第一总耗时的标准差。此时,回放组中的用户交易组包括用户交易组1和用户交易组4。
循环执行上述步骤,直到得到的各回放组的第二总耗时的标准差最小;
且循环执行上述步骤,直到得到第二预设数量的回放组。
本申请提供了一种平均总耗时的计算方式,包括:
其中,所述n为用户交易组个数,所述N为所述第一预设数量,所述M为所述第二预设数量与所述第一预设数量的比值,表征回放服务器中的线程数,μ为平均总耗时,所述i表示第i个用户交易组,Cti表示第i个用户交易组的第一总耗时。
基于上述根据各用户交易组构造平衡二叉树,并从平衡二叉树中搜索用户交易组进行判断,将用户交易组分配到回放组的示例,在这里又提供了一种包含具体数据的示例,如下所示:
(1)、假设有10个用户,将每个用户的各交易的交易耗时求和,得到用户交易组的第一总耗时:EcifNo(用户标识项,):0001,第一总耗时为1ms、EcifNo:0002,第一总耗时为5ms、EcifNo:0003,第一总耗时为2ms、EcifNo:0004,第一总耗时为6ms、EcifNo:0005,第一总耗时为9ms、EcifNo:0006,第一总耗时为10ms、EcifNo:0007,第一总耗时为18ms、EcifNo:0008,第一总耗时为19ms、EcifNo:0009,第一总耗时为25ms、EcifNo:0010,第一总耗时为28ms。第一预设数量为3,即,流量回放系统中包含3台回放服务器,每个回放服务器的线程数为1。将该10个用户分为3各回放组。μ=(1ms+2ms+5ms+6ms+9ms+10ms+18ms+19ms+25ms+28ms)/3=41ms。
(2)根据10各用户交易组插入一颗平衡二叉树(AVL)中,得到如图3所示的平衡二叉树。
(3)取AVL中Ct最大的用户,即AVL的最右叶子节点Ct=28ms,EcifNo为0010的用户;
(a)不走此分支,因为28ms不大于41ms,不单独放一回放组;
从根节点搜索发现没有正好为13ms的节点,因为是AVL可以快速搜索得到EcifNo为0007的用户第一总耗时Ct2=18ms,EcifNo为0006的用户的第一耗时Ct2=10ms,使得的Ct2>σ1>Ct3,计算
①如果选择Ct2加入G1,则G1的标准差为σ2,即G1 1={28ms,18ms};
②如果选择Ct3加入G1,则可以令Gt1=Ct1+Ct3=28+10=38ms,σ3=3,递归执行b)步骤,从AVL中搜索σ3。
Ⅱ如果选择EcifNo为0002的用户则,G1 2={28ms,10ms,5ms}
Ⅳ发现EcifNo为0001的第一总耗时1ms,所以G1 3={28ms,10ms,2ms,1ms}
最后选择各回放组的标准差最小的分组方式:
分组过程:
比较:
dp(41)=28+dp(13)
dp(1)=Ct4=1
循环执行步骤(3),根据剩下的用户交易组的第一总耗时:18ms、25ms、6ms、5ms、19ms、9ms,将剩下的用户交易组分为两个回放组。
在一种基于上述应用系统更新测试方法流程的实施例中,执行步骤203,具体包括:从各差异交易的代码分支路径中随机选取K个聚类执行点,分别将所述各差异交易的代码分支路径聚类到所述K个聚类执行点,得到K个中间聚类分组;重新计算每个中间聚类分组的质心,以所述质心为新的聚类执行点,分别将所述各差异交易的代码分支路径聚类到K个新的聚类执行点,得到K个中间聚类分组;重复上述聚类步骤,直至收敛,得到K个聚类分组。也就是说,在本方法中,采用K-means聚类算法进行差异样本的分类,思想为:首先随机选取K个点作为初始聚类执行点,然后计算各差异交易的代码分支路径到聚类执行点的距离,把差异交易的代码分支路径归类到最近的簇中,调整后重新计算新的聚类执行点,直到收敛。
因为在实际应用中,一次回放可能涉及上百万笔差异交易,本申请提出通过分布式架构拆分所有差异交易到聚类执行点的距离的计算任务,最后聚合得出分簇结论,具体工作流程如下:
这里以代码分支标识形成的代码分支坐标进行计算,则基于代码分支坐标的K-means分布式差异交易分类算法:
(1)对比获得各差异交易,如表1所示,其中第一代码分支对应图4(图4为表1中各差异交易的代码分支坐标表示的代码分支路径)的中代码分支坐标的第一象限,第二代码分支对应第二象限,以此类推。这种代码分支标识标记方法可以便于测试者快速根据代码分支坐标找到对应的代码分支路径。例如,代码分支坐标(1,2,1,0)表示这笔交易执行过程中在第一代码分支下走了第一代码分支下的代码分支1,第二代码分支下走了第二代码分支下的代码分支2,第三代码分支下走了第三代码分支下的代码分支1。
表-1差异交易的代码分支路径表
(2)随机选取K个聚类执行点,α1,α2,…,αk,例如:K=3随机选择表1的2、5、10三条差异交易的代码分支坐标为聚类执行点。
(3)将n个差异交易均分给M台聚类服务器,每台聚类服务器聚类n/M个差异交易,将n/M分K组。此处需要说明的是,各聚类服务器中,簇1的聚类执行点是相近的、簇2的聚类执行点是相近的...簇K的聚类执行点是相近的。
(4)设每个差异交易xi具有z个关键代码分支(如,上述表1中的差异交易有四个关键代码分支:第一代码分支、第二代码分支、第三代码分支、第四代码分支),计算差异交易所属分簇,使得差异交易xi与所属聚类执行点的欧几里得聚类最近,计算公式如下:
其中,cj表示与差异交易xi最近分簇。例如,差异交易1与簇1(聚类执行点为差异交易2)的欧几里得距离为差异交易1与簇2(聚类执行点为差异交易5)的欧几里得距离为差异交易1与簇3(聚类点为样例10)的欧几里得距离为得出差异交易1和差异交易2分到簇1。αj为聚类执行点。xi(m)为差异交易xi的代码分支坐标。j为第j个分簇,i是第i个差异交易。
(5)每台聚类服务器将完成后的分簇可以提交至异常结果确定服务器,假设聚类服务器1将分为簇1,聚类服务器2将分到簇1,异常结果确定服务器最终结合所有聚类服务器提交的分簇结论,将n个差异交易分为K簇,得到
(6)聚合分簇完成后,重新计算每一簇的质心(新的聚类执行点),计算公式如下:
其中,R为聚类执行点αj中的差异交易数,i为αj的分簇中的第i个差异交易,j为第j个分簇。
举例,假设差异交易1、2、3为一组,重新计算其质心(聚类执行点)为(1,1,4/3,1/3),以每个簇的质心为新的聚类执行点。
(7)重复3-6两步直到收敛。
经过上述方法分簇后,假设得到差异交易1、差异交易4、差异交易8为一个分簇,可知差异交易1、差异交易4、差异交易8在第一代码分支的代码分支1、第二代码分支的代码分支1、第三代码分支的代码分支1上是相同的,推测第一代码分支的代码分支1、第二代码分支的代码分支1、第三代码分支的代码分支1可能存在漏洞,如此,实现了问题代码的快速定位。
在上述应用系统更新测试方法流程的实施例中,步骤202具体包括:将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;或将所述回放结果中的第二数据库变更数据和第一数据库变更数据进行比对,若存在差异,则确定所述交易为差异交易;所述第一数据库变更数据是对所述应用系统处理各交易时产生的数据库数据进行克隆得到的。也就是说,用于对比的数据包括流量录制数据和流量回访数据,还可以包括生产的第一数据库变更数据和回放过程中产生的第二数据库变更数据。
基于上述各方法流程和上述系统架构,本申请实施例还提供了一种应用系统更新测试的系统架构,适用于流量回放系统,流量回放系统中包括运行有针对应用系统更新后得到的测试系统的回放服务器,如图5所示,包括:流量录制模块、分发模块、结果比对模块、流量回放模块、第一数据库和第二数据库。其中,流量回放模块中包含至少一个回放服务器,结果对比模块中包含至少一个结果对比服务器和聚类服务器,结果对比服务器和聚类服务器可以同一个服务器。另外,为了清楚线下测试环境与线上生产环境的关系,还在该系统架构中示意性的给出了应用系统和应用数据库。
结合图5中的系统架构,本申请实施例还提供了一种应用系统更新测试方法流程,如图6所示,包括:
步骤601、用户触发交易使得上游系统生成上游请求报文,并将该上游请求报文发送至应用系统。
在一种示例中,上游请求报文可以是用户按不同顺序查询个人中心、借款、还款等操作触发的。
步骤602、应用系统根据用户触发交易产生的上游请求报文,对上游请求报文进行处理,根据处理信息新增或修改应用数据库。
此处,针对该上游请求报文的一种简单处理流程中,包括:应用系统根据用户触发交易产生的上游请求报文,对上游请求报文进行处理,根据处理信息新增或修改应用数据库,并生成下游请求报文,将下游请求报文发送至下游系统,接收下游系统返回的下游请求响应报文,根据该下游请求响应报文,生成上游请求响应报文,将该上游请求响应报文发送至上游系统。
在一种示例中,若用户触发的交易为借款交易,上游请求报文可以包括:借款交易服务码serviceId、借款金额1000元、借款期数5期等。新增或修改应用数据库可以包括:写入一条借据表数据TM_LOAN、还款计划表数据TM_SCHEDULE等。下游请求报文可以包括:借款金额、用户银行卡号等。下游请求响应报文可以包括:打款成功或打款失败,打款金额。上游请求响应报文可以包括:借款成功或失败,剩余可借余额9000元等。上游系统可以是审核系统,下游系统可以是支付系统。需要说明的是,上述示例只是为了便于理解应用系统处理交易的场景,并不对本申请中应用系统的流量做限制。
步骤603、流量录制模块在第一数据库存储流量录制数据。
此处,流量录制模块在第一数据库存储流量录制数据可以实时进行的,也可以是按照设定时间或设定周期进行的。
在上述示例中,流量录制数据可以包括:上游请求报文、下游请求报文、下游请求响应报文、上游请求响应报文。另外,流量录制模块还可以针对每笔交易的流量录制数据,将该笔交易的用户标识EcifNo、交易类型ServiceId、交易耗时costTime、交易流水号bizSeqNo等属性信息标记到该交易的流量录制数据中。
步骤604、将预设时间段内的第一数据库变更数据,从应用数据库中克隆到第一数据库。
在一种示例中,可以选定回放起始时间A和终止时间B,将A时点的应用数据库中的数据克隆到第二数据库,将B时点的应用数据库中的数据克隆到第一数据库。如此,第一数据库中包含第二数据库中没有的预设时间段起始时间A至终止时间B之间的应用系统处理各交易时产生的应用数据库数据。后续在进行对比时,第一数据库可以提供该预设时间段的第一数据库变更数据,第二数据库可以提供对应的第二数据库变更数据(回放过程中产生的)。即,第一数据库存储流量录制数据和第一数据库变更数据(应用数据库中克隆的预设时间段的数据)。第二数据库存储流量回放数据和第二数据库变更数据。
又例:第二数据库备份应用数据库中10点的数据,第一数据库备份应用数据库中14点的数据。某用户在10点到14点之间新增了一笔借款数据TM_LOAN,第二数据库经过流量回放在理想情况下也会生成这条TM_LOAN。
步骤605、分发模块读取第一数据库中预设时间段的流量录制数据。根据用户标识将流量录制数据的各交易分为各用户交易组,将各用户交易组分为各回放组。
步骤606、将各回放组平均分配并发送到流量回放模块的各回放服务器。
在一种示例中,回放服务器中的测试系统会根据交易的流量录制数据中的上游请求报文生成下游请求报文,以及新增或修改第二数据库的数据,生成下游请求报文,模拟工具对下游系统对应用系统正常执行流程下的下游请求响应报文进行模拟(例如:某用户的借款交易的上游请求报文触发下游请求报文,请求下游系统-支付系统向该用户打款1000元,但回放中不能实际打款,根据生产上支付系统的返回结果模拟打款成功或失败),测试系统根据该下游请求响应报文生成上游请求报文。
步骤607、将回放结果存储到第二数据库中。
在一种示例中,回放结果中包含流量回放数据和第二数据库变更数据。
流量回放数据中包括交易的代码分支路径、上游请求报文、回放得到的下游请求报文、模拟得到的下游请求响应报文、回放得到的上游请求响应报文。可以将回放得到的下游请求报文、回放得到的上游请求响应报文存储到第二数据库中的REPLAY_INFO表。
步骤608、回放执行完毕后,分发模块读取第二数据库中的回放结果(第二数据库变更数据、流量回放数据)和第一数据库中的第一数据库变更数据和流量录制数据。
步骤609、分发模块将所有待比对交易分发给结果比对模块的机器进行差异比对,确定预设时间段内的差异交易。
在一种示例中,结果比对模块比对一笔交易的第一数据库变更数据和第二数据库变更数据、该笔交易的流量录制数据与流量回放数据。若存在差异,则确定该交易为差异交易。具体的,流量录制数据与流量回放数据比对为:流量录制数据中的下游请求报文与流量回放数据中的下游请求报文比对、流量录制数据中的上游请求响应报文与流量回放数据中的上游请求响应报文文比对。结果比对模块可以将获取的各差异交易的差异数据存储在第二数据库的DIFF_INFO表中。这里需要说明的是,这里的比对流程中对于各交易来说,是互相独立的,不需要保证时序,可以将待比对数据(流量录制数据、流量回放数据、第一数据库变更数据、第二数据库变更数据)均分至结果对比模块中的各结果比对服务器中。还可以每次分配x条的待比对数据至结果比对服务器中,当结果比对服务器处理完成后,从分发模块拉取剩余的x条的待比对数据,直至对比完成。
步骤610、结果比对模块通知分发模块,将各差异交易基于代码分支路径进行聚类,分发模块读取所有差异交易,根据这些差异交易的代码分支路径计算出K个聚类执行点。
步骤611、结果比对模块根据分发模块计算出的K个聚类执行点进行聚类,确定异常代码分支。
需要说明的是上述方法流程步骤并不唯一。如,步骤601和步骤602可以单独执行,步骤604可以在步骤603之前执行,这里对应用系统更新测试方法流程的描述只是一种示例,便于应用系统更新测试方法的理解,并不对应用系统更新测试方法流程的实施做限制。
基于同样的构思,本发明实施例提供一种应用系统更新测试装置,图7为本申请实施例提供的一种应用系统更新测试装置示意图,如图7示,所述装置适用于流量回放系统,包括:
回放模块701,用于针对流量录制数据中任一交易的上游请求报文,进行流量回放,获取回放结果;将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;所述流量回放系统中包括运行有针对所述应用系统更新后得到的测试系统的回放服务器;所述流量录制数据是通过对所述应用系统处理各交易进行流量录制得到的;
聚类模块702,用于对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组;所述代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在所述测试系统中所经历的至少一个代码分支;
所述聚类模块702还用于,若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
可选的,所述流量回放系统为分布式系统;所述回放模块701还用于,将所述流量录制数据中的各交易按照用户标识进行分组,得到用户交易组,所述用户交易组内的各交易具有相同的用户标识且是按照交易时间顺序依次排序的;将各用户交易组分发至所述回放服务器中。
可选的,所述回放模块701具体用于,计算每个用户交易组的第一总耗时,所述第一总耗时为用户交易组中各交易的交易耗时的和,所述交易耗时为所述应用系统处理对应交易时的耗时;根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,其中,任意两台回放服务器在进行流量回放时的耗时之差小于设定阈值。
可选的,所述回放模块701具体用于,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,且得到的各回放组的第二总耗时的标准差最小,所述第二总耗时为回放组中各用户交易组的第一总耗时的和;将所述第二预设数量的回放组平均分发至所述第一预设数量的回放服务器;任一回放服务器中有预设数量的线程,所述预设数量等于所述第二预设数量与所述第一预设数量的比值。
可选的,所述回放模块701具体用于,从所述各用户交易组中搜索第一用户交易组,若所述第一用户交易组的第一总耗时大于等于所述各用户交易组的平均总耗时,将所述第一用户交易组分到一个回放组中;若所述第一用户交易组的第一总耗时不大于所述平均总耗时,将所述第一用户交易组分到一个回放组中,并搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,将所述第二用户交易组分到所述回放组中,所述第一耗时标准差为所述第一用户交易组的第一总耗时与所述平均总耗时的标准差;循环执行上述步骤,直到得到所述第二预设数量的回放组。
可选的,所述回放模块701还用于,根据所述各用户交易组的第一总耗时构造平衡二叉树;搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,包括:通过所述平衡二叉树,搜索与所述第一耗时标准差的差值最小的第一总耗时的第二用户交易组。
可选的,所述回放模块701具体用于,所述流量回放系统对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组,包括:从各差异交易的代码分支路径中随机选取K个聚类执行点,分别将所述各差异交易的代码分支路径聚类到所述K个聚类执行点,得到K个中间聚类分组;重新计算每个中间聚类分组的质心,以所述质心为新的聚类执行点,分别将所述各差异交易的代码分支路径聚类到K个新的聚类执行点,得到K个中间聚类分组;重复上述聚类步骤,直至收敛,得到K个聚类分组。
可选的,所述回放模块701具体用于,将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;或将所述回放结果中的第二数据库变更数据和第一数据库变更数据进行比对,若存在差异,则确定所述交易为差异交易;所述第一数据库变更数据是对所述应用系统处理各交易时产生的数据库数据进行克隆得到的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些更新和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种应用系统更新测试方法,其特征在于,所述方法适用于流量回放系统,包括:
针对流量录制数据中任一交易的上游请求报文,所述流量回放系统进行流量回放,获取回放结果;将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;所述流量回放系统中包括运行有针对所述应用系统更新后得到的测试系统的回放服务器;所述流量录制数据是通过对所述应用系统处理各交易进行流量录制得到的;
所述流量回放系统对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组;所述代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在所述测试系统中所经历的至少一个代码分支;
所述流量回放系统若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
2.如权利要求1中所述的方法,其特征在于,所述流量回放系统为分布式系统;
所述流量回放系统进行流量回放之前,还包括:
将所述流量录制数据中的各交易按照用户标识进行分组,得到用户交易组,所述用户交易组内的各交易具有相同的用户标识且是按照交易时间顺序依次排序的;
将各用户交易组分发至所述回放服务器中。
3.如权利要求2中所述的方法,其特征在于,将各用户交易组分发至回放服务器中,包括:
计算每个用户交易组的第一总耗时,所述第一总耗时为用户交易组中各交易的交易耗时的和,所述交易耗时为所述应用系统处理对应交易时的耗时;
根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,其中,任意两台回放服务器在进行流量回放时的耗时之差小于设定阈值。
4.如权利要求3中所述的方法,其特征在于,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第一预设数量的回放服务器中,包括:
根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,且得到的各回放组的第二总耗时的标准差最小,所述第二总耗时为回放组中各用户交易组的第一总耗时的和;
将所述第二预设数量的回放组平均分发至所述第一预设数量的回放服务器;任一回放服务器中有预设数量的线程,所述预设数量等于所述第二预设数量与所述第一预设数量的比值。
5.如权利要求4中所述的方法,其特征在于,根据各用户交易组的第一总耗时,将所述各用户交易组分配到第二预设数量的回放组,包括:
从所述各用户交易组中搜索第一用户交易组,若所述第一用户交易组的第一总耗时大于等于所述各用户交易组的平均总耗时,将所述第一用户交易组分到一个回放组中;
若所述第一用户交易组的第一总耗时不大于所述平均总耗时,将所述第一用户交易组分到一个回放组中,并搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,将所述第二用户交易组分到所述回放组中,所述第一耗时标准差为所述第一用户交易组的第一总耗时与所述平均总耗时的标准差;
循环执行上述步骤,直到得到所述第二预设数量的回放组。
6.如权利要求4中所述的方法,其特征在于,从所述各用户交易组中搜索第一用户交易组之前,还包括:
根据所述各用户交易组的第一总耗时构造平衡二叉树;
搜索第一总耗时与第一耗时标准差差值最小的第二用户交易组,包括:
通过所述平衡二叉树,搜索与所述第一耗时标准差的差值最小的第一总耗时的第二用户交易组。
7.如权利要求1中所述的方法,其特征在于,所述流量回放系统对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组,包括:
从各差异交易的代码分支路径中随机选取K个聚类执行点,分别将所述各差异交易的代码分支路径聚类到所述K个聚类执行点,得到K个中间聚类分组;
重新计算每个中间聚类分组的质心,以所述质心为新的聚类执行点,分别将所述各差异交易的代码分支路径聚类到K个新的聚类执行点,得到K个中间聚类分组;
重复上述聚类步骤,直至收敛,得到K个聚类分组。
8.如权利要求1-7中任一所述的方法,其特征在于,将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易,包括:
将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;或
将所述回放结果中的第二数据库变更数据和第一数据库变更数据进行比对,若存在差异,则确定所述交易为差异交易;所述第一数据库变更数据是对所述应用系统处理各交易时产生的数据库数据进行克隆得到的。
9.一种应用系统更新测试装置,其特征在于,所述装置适用于流量回放系统,包括:
回放模块,用于针对流量录制数据中任一交易的上游请求报文,进行流量回放,获取回放结果;将所述回放结果中的流量回放数据和所述流量录制数据进行比对,若存在差异,则确定所述交易为差异交易;所述流量回放系统中包括运行有针对所述应用系统更新后得到的测试系统的回放服务器;所述流量录制数据是通过对所述应用系统处理各交易进行流量录制得到的;
聚类模块,用于对各差异交易的回放结果中的代码分支路径进行聚类,得到至少一个聚类分组;所述代码分支路径是由有序的代码分支标识形成的,用于表征上游请求报文在流量回放过程中在所述测试系统中所经历的至少一个代码分支;
所述聚类模块还用于,若确定任一聚类分组中各代码分支路径中存在相同的代码分支标识,则所述相同的代码分支标识对应的代码分支为异常代码分支。
10.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至8任一项所述的方法。
11.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210589357.2A CN115037663B (zh) | 2022-05-26 | 2022-05-26 | 一种应用系统更新测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210589357.2A CN115037663B (zh) | 2022-05-26 | 2022-05-26 | 一种应用系统更新测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115037663A true CN115037663A (zh) | 2022-09-09 |
CN115037663B CN115037663B (zh) | 2023-07-18 |
Family
ID=83120589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210589357.2A Active CN115037663B (zh) | 2022-05-26 | 2022-05-26 | 一种应用系统更新测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115037663B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076184A (zh) * | 2023-10-12 | 2023-11-17 | 湖南长银五八消费金融股份有限公司 | 一种交易系统检测方法、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006135607A2 (en) * | 2005-06-09 | 2006-12-21 | New England Controls, Inc. | Method and system for rapid deployment and development of application and test software and documentation |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
CN102129408A (zh) * | 2011-04-14 | 2011-07-20 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
CN104536879A (zh) * | 2014-11-28 | 2015-04-22 | 南京慕测信息科技有限公司 | 一种基于模糊聚类的多错误定位方法 |
CN112612698A (zh) * | 2020-12-17 | 2021-04-06 | 平安普惠企业管理有限公司 | 应用程序崩溃测试方法及相关产品 |
CN112783789A (zh) * | 2021-02-05 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 一种适配测试方法、设备及计算机可读存储介质 |
CN113448854A (zh) * | 2021-06-30 | 2021-09-28 | 中国建设银行股份有限公司 | 一种回归测试方法和装置 |
CN113760695A (zh) * | 2020-06-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种定位问题代码的方法和装置 |
-
2022
- 2022-05-26 CN CN202210589357.2A patent/CN115037663B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006135607A2 (en) * | 2005-06-09 | 2006-12-21 | New England Controls, Inc. | Method and system for rapid deployment and development of application and test software and documentation |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
CN102129408A (zh) * | 2011-04-14 | 2011-07-20 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
CN104536879A (zh) * | 2014-11-28 | 2015-04-22 | 南京慕测信息科技有限公司 | 一种基于模糊聚类的多错误定位方法 |
CN113760695A (zh) * | 2020-06-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种定位问题代码的方法和装置 |
CN112612698A (zh) * | 2020-12-17 | 2021-04-06 | 平安普惠企业管理有限公司 | 应用程序崩溃测试方法及相关产品 |
CN112783789A (zh) * | 2021-02-05 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 一种适配测试方法、设备及计算机可读存储介质 |
CN113448854A (zh) * | 2021-06-30 | 2021-09-28 | 中国建设银行股份有限公司 | 一种回归测试方法和装置 |
Non-Patent Citations (1)
Title |
---|
林亚平;胡玉鹏;陈治平;: "基于执行剖面过滤的分割测试", 湖南大学学报(自然科学版), no. 01 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076184A (zh) * | 2023-10-12 | 2023-11-17 | 湖南长银五八消费金融股份有限公司 | 一种交易系统检测方法、装置及存储介质 |
CN117076184B (zh) * | 2023-10-12 | 2023-12-22 | 湖南长银五八消费金融股份有限公司 | 一种交易系统检测方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115037663B (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309071B (zh) | 测试代码的生成方法及模块、测试方法及系统 | |
CN109325691B (zh) | 异常行为分析方法、电子设备及计算机程序产品 | |
Appice et al. | A co-training strategy for multiple view clustering in process mining | |
US11640349B2 (en) | Real time application error identification and mitigation | |
US20180004781A1 (en) | Data lineage analysis | |
US7877478B2 (en) | Ghost agents for application domains within a grid environment | |
Verma et al. | Introduction of formal methods in blockchain consensus mechanism and its associated protocols | |
CN105989059A (zh) | 数据记录核对方法及装置 | |
CN110083526A (zh) | 应用程序测试方法、装置、计算机装置及存储介质 | |
Liu | Research of performance test technology for big data applications | |
CN106294128B (zh) | 一种导出报表数据的自动化测试方法及装置 | |
CN111475494A (zh) | 一种海量数据处理方法、系统、终端及存储介质 | |
CN115037663B (zh) | 一种应用系统更新测试方法及装置 | |
CN105468699B (zh) | 去重数据统计方法及设备 | |
US11847120B2 (en) | Performance of SQL execution sequence in production database instance | |
CN108572914B (zh) | 一种生成用于压力测试的日志的方法及装置 | |
CN117573492A (zh) | 一种数据库迁移场景下的应用性能检测方法及装置 | |
CN112613792A (zh) | 数据处理方法、系统、计算机设备和存储介质 | |
CN111754191A (zh) | 基于云平台的自动变更方法及相关设备 | |
US9092579B1 (en) | Rating popularity of clusters of runs of test scenarios based on number of different organizations | |
CN115481026A (zh) | 测试案例的生成方法、装置、计算机设备、存储介质 | |
CN109254961A (zh) | 一种分布式多引擎数据质量管理系统 | |
CN111241143B (zh) | 用于供水的水量和水费的分布式计算方法及系统 | |
CN114297066A (zh) | 一种基于统计学原理的ab测试方法和装置 | |
CN109165238B (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 |