CN114860562A - 一种检测流式处理应用的方法及装置 - Google Patents
一种检测流式处理应用的方法及装置 Download PDFInfo
- Publication number
- CN114860562A CN114860562A CN202110072358.5A CN202110072358A CN114860562A CN 114860562 A CN114860562 A CN 114860562A CN 202110072358 A CN202110072358 A CN 202110072358A CN 114860562 A CN114860562 A CN 114860562A
- Authority
- CN
- China
- Prior art keywords
- application
- result data
- data
- time
- window
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种检测流式处理应用的方法及装置,该方法包括在第一触发时刻从第一存储区获取第一结果数据,在第二触发时刻从第二存储区获取第二结果数据,将第一结果数据与第二结果数据进行比对,若确定第一结果数据与第二结果数据一致,则确认第二应用对第一应用的更新符合功能一致的要求。由于该方法可以直接通过比对第一应用和第二应用输出的结果数据来实现对应用的功能的检测,而无需为第一应用和第二应用都单独设计一系列测试用例进行测试,如此可以提高应用检测的灵活性、通用性,从而可以满足不同应用场景的需求,进而可以解决现有技术中针对每个流式处理程序需要单独设计一系列测试用例,导致该测试方式的通用性较差的问题。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种检测流式处理应用的方法及装置。
背景技术
流式处理的数据是一种不断到达的无界数据,因此需要流式处理程序24小时不停机运行进行处理,但是流式处理程序会在程序和平台升级、改造或架构调整等修改方式下短暂停止。基于此,虽然这些修改方式未对流式处理程序的业务功能进行直接修改,但是在对流式处理程序进行修改后仍需对流式处理程序的业务功能进行重新测试,以便确保此次修改不对流式处理程序的业务功能产生影响。
现阶段,通常是根据每个流式处理程序的具体业务功能制定一系列测试用例专门针对该流式处理程序进行功能测试,且对每个不同的流式处理程序均需根据其实现的具体业务功能制定不同的测试用例。然而,这种测试方式由于需要针对每个流式处理程序单独设计一系列测试用例进行测试,导致这种测试方式的通用性较差、应用场景具有局限性,无法满足不同应用场景的需求。
综上,目前亟需一种检测流式处理应用的方法,用以解决现有技术中针对每个流式处理程序需要单独设计一系列测试用例,导致该测试方式的通用性较差的问题。
发明内容
本发明实施例提供了一种检测流式处理应用的方法及装置,用以解决现有技术中针对每个流式处理程序需要单独设计一系列测试用例,导致该测试方式的通用性较差的问题。
第一方面,本发明实施例提供了一种检测流式处理应用的方法,包括:
在第一触发时刻从第一存储区获取第一结果数据;所述第一结果数据是第一应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;所述第一结果数据携带有与对应业务数据相同的生成时间;所述第一触发时刻是根据所述第一应用的业务处理能力确定的;
在第二触发时刻从第二存储区获取第二结果数据;所述第二结果数据是第二应用对生成时间属于所述设定窗口时段内的业务数据进行处理后的数据;所述第二结果数据携带有与对应业务数据相同的生成时间;所述第二触发时刻是根据所述第二应用的业务处理能力确定的;所述第二应用是针对所述第一应用进行更新后的应用;
将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
上述技术方案中,在第一触发时刻从第一存储区获取第一结果数据,并在第二触发时刻从第二存储区获取第二结果数据。再将第一结果数据与第二结果数据进行比对,若确定第一结果数据与第二结果数据一致,则确认第二应用对第一应用的更新符合功能一致的要求。其中,第一结果数据、第二结果数据是第一应用、第二应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;第一结果数据、第二结果数据均携带有与对应业务数据相同的生成时间;第一触发时刻、第二触发时刻是根据第一应用、第二应用的业务处理能力确定的;第二应用是针对第一应用进行更新后的应用。由于该方法可以直接通过比对第一应用和第二应用输出的结果数据来实现对应用的功能的检测,而无需为第一应用和第二应用都单独设计一系列测试用例进行测试,如此可以提高应用检测的灵活性、通用性,从而可以满足不同应用场景的需求,进而可以解决现有技术中针对每个流式处理程序需要单独设计一系列测试用例,导致该测试方式的通用性较差的问题。
可选地,设定窗口时段是通过如下方式确定的,包括:
设置用于获取结果数据所需的窗口截止时间;
根据所述窗口截止时间和窗口长度确定用于获取结果数据所需的设定窗口时段;所述窗口长度是基于所述第一应用和所述第二应用所具备的业务处理能力确定的。
上述技术方案中,通过基于窗口截止时间和窗口长度确定用于获取结果数据所需的设定窗口时段,可以使得在触发时刻到达时,能够及时准确地从存储区中获取对应窗口时段的结果数据,即从无界的流式结果数据中获取对应窗口时段的有界结果数据,以便后续可以实现利用有界结果数据的一致性代表无界结果数据的一致性。
可选地,所述窗口长度是基于所述第一应用和所述第二应用所具备的业务处理能力确定的,包括:
根据所述第一应用的第一业务处理能力确定第一延迟时间;
根据所述第二应用的第二业务处理能力确定第二延迟时间;
根据所述第一延迟时间、所述第二延迟时间、所述第一业务处理能力以及所述第二业务处理能力,确定出所述窗口长度。
上述技术方案中,通过基于第一延迟时间、第二延迟时间、第一业务处理能力以及第二业务处理能力,确定窗口长度,如此可以使得窗口时段的选择更为合理、准确。
可选地,所述窗口长度满足下述形式:
其中,lt为所述窗口长度,tps1为第一业务处理能力、tps2为第二业务处理能力,dt1为所述第一延迟时间、dt2为所述第二延迟时间。
可选地,所述第一触发时刻和所述第二触发时刻满足下述形式:
其中,wt1为所述第一触发时刻、wt2为所述第二触发时刻,et为设定窗口时段的截止时间,dt1为第一延迟时间、dt2为第二延迟时间。
上述技术方案中,通过利用上述等式和不等式规则选择出合理的窗口时段,可以使得用于参与比对的结果数据较为合理,从而有助于避免比对的结果数据的数据量太少而影响比对的准确性判断。
可选地,在第一触发时刻从第一存储区获取第一结果数据之前,还包括:
将各业务数据分别同时输入到所述第一应用和所述第二应用;
将所述第一应用处理后的第一结果数据存储在所述第一存储区中;将所述第二应用处理后的第二结果数据存储在所述第二存储区中。
上述技术方案中,通过将相同的各业务数据分别同时输入到第一应用和第二应用进行处理,如此可以确保处理时间的一致性,并可以确保基于触发时刻获取结果数据的及时性、准确性,从而可以避免由于处理时间差异导致出现比对偏差的问题。
可选地,将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求,包括:
基于键值存储方式,将所述第一结果数据以及所述第二结果数据中的每个数据作为键;
针对所述第一结果数据以及所述第二结果数据中的每个数据,将所述数据在所述第一结果数据中出现的次数作为所述数据对应键的第一值,将所述数据在所述第二结果数据中出现的次数作为所述数据对应键的第二值;
若任一健所对应的第一值与所述第二值均相同,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
上述技术方案中,通过基于键值存储方式将第一结果数据与第二结果数据进行比对,如此可以确保比对的准确性,并可以提高比对的效率,同时可以避免出现将第一结果数据与第二结果数据进行一一比对导致比对的效率降低的问题。
第二方面,本发明实施例还提供了一种检测流式处理应用的装置,包括:
获取单元,用于在第一触发时刻从第一存储区获取第一结果数据;所述第一结果数据是第一应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;所述第一结果数据携带有与对应业务数据相同的生成时间;所述第一触发时刻是根据所述第一应用的业务处理能力确定的;在第二触发时刻从第二存储区获取第二结果数据;所述第二结果数据是第二应用对生成时间属于所述设定窗口时段内的业务数据进行处理后的数据;所述第二结果数据携带有与对应业务数据相同的生成时间;所述第二触发时刻是根据所述第二应用的业务处理能力确定的;所述第二应用是针对所述第一应用进行更新后的应用;
处理单元,用于将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
可选地,所述获取单元具体用于:
设置用于获取结果数据所需的窗口截止时间;
根据所述窗口截止时间和窗口长度确定用于获取结果数据所需的设定窗口时段;所述窗口长度是基于所述第一应用和所述第二应用所具备的业务处理能力确定的。
可选地,所述获取单元具体用于:
根据所述第一应用的第一业务处理能力确定第一延迟时间;
根据所述第二应用的第二业务处理能力确定第二延迟时间;
根据所述第一延迟时间、所述第二延迟时间、所述第一业务处理能力以及所述第二业务处理能力,确定出所述窗口长度。
可选地,所述获取单元具体用于:
所述窗口长度满足下述形式:
其中,lt为所述窗口长度,tps1为第一业务处理能力、tps2为第二业务处理能力,dt1为所述第一延迟时间、dt2为所述第二延迟时间。
可选地,所述获取单元具体用于:
所述第一触发时刻和所述第二触发时刻满足下述形式:
其中,wt1为所述第一触发时刻、wt2为所述第二触发时刻,et为设定窗口时段的截止时间,dt1为第一延迟时间、dt2为第二延迟时间。
可选地,所述获取单元还用于:
在第一触发时刻从第一存储区获取第一结果数据之前,将各业务数据分别同时输入到所述第一应用和所述第二应用;
将所述第一应用处理后的第一结果数据存储在所述第一存储区中;将所述第二应用处理后的第二结果数据存储在所述第二存储区中。
可选地,所述处理单元具体用于:
基于键值存储方式,将所述第一结果数据以及所述第二结果数据中的每个数据作为键;
针对所述第一结果数据以及所述第二结果数据中的每个数据,将所述数据在所述第一结果数据中出现的次数作为所述数据对应键的第一值,将所述数据在所述第二结果数据中出现的次数作为所述数据对应键的第二值;
若任一健所对应的第一值与所述第二值均相同,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
第三方面,本发明实施例提供一种计算设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面任意所述的检测流式处理应用的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任意所述的检测流式处理应用的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流式处理系统的结构示意图;
图2为本发明实施例提供的一种检测流式处理应用的方法的流程示意图;
图3为本发明实施例提供的一种检测流式处理应用的装置的结构示意图;
图4为本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面首先对本发明实施例中涉及的部分用语进行解释说明,以便于本领域技术人员进行理解。
(1)事件时间:事件发生的时间,即数据生成的时间。
(2)机器时间:程序处理数据时的机器时间。
(3)水位线:时刻T,当T到达时不存在事件时间t<T的数据,即时刻T到达时,事件时间t<T的数据均已被程序处理完毕。
如上介绍了本发明实施例中涉及的部分用语,下面对本发明实施例涉及的技术特征进行介绍。
下面对本发明实施例的设计思路进行简要介绍:
流式处理的数据是不断到达的无界数据,因此流式处理程序往往24小时不停机运行,只有在程序和平台升级、改造、架构调整等情况下才会短暂停止。其中,流式处理程序可能在下述情况下进行了修改但并未改变其所实现的业务功能。
1、为提升程序性能或修复现有bug,对程序本身进行升级、优化、改造。
2、程序所依赖底层架构进行架构调整、版本升级。如流式处理程序基于Flink、Spark-Streaming等技术进行开发,而Flink、Spark-Streaming等部署模式或版本进行改造或升级。
上述情况下的调整和修改虽然未对流式处理程序的功能进行直接修改,但在修改后仍需对流式处理程序的功能进行重新测试,以保证上述修改不对流式处理程序的功能产生影响。此时可以进行修改前后功能一致性对比测试,若比对上述修改前后的功能一致,则说明一切正常,否则上述修改引起了流式处理程序的功能在修改后发生变化的问题。比如,可以直接对修改后的程序、平台直接设计一系列测试用例进行功能测试。即,根据每个流式处理程序的具体业务功能制定一系列测试用例专门针对该程序进行功能测试,然而,这种测试方式由于需要针对每个流式处理程序单独设计一系列测试用例进行测试,导致这种测试方式的通用性较差、应用场景具有局限性,无法满足不同应用场景的需求。
鉴于此,本发明实施例提出了一种检测流式处理应用的方法及装置。在本发明实施例中,在第一触发时刻从第一存储区获取第一结果数据,并在第二触发时刻从第二存储区获取第二结果数据。再将第一结果数据与第二结果数据进行比对,若确定第一结果数据与第二结果数据一致,则确认第二应用对第一应用的更新符合功能一致的要求。其中,第一结果数据、第二结果数据是第一应用、第二应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;第一结果数据、第二结果数据均携带有与对应业务数据相同的生成时间;第一触发时刻、第二触发时刻是根据第一应用、第二应用的业务处理能力确定的;第二应用是针对第一应用进行更新后的应用。由于该方法可以直接通过比对第一应用和第二应用输出的结果数据来实现对应用的功能的检测,而无需为第一应用和第二应用都单独设计一系列测试用例进行测试,如此可以提高应用检测的灵活性、通用性,从而可以满足不同应用场景的需求,进而可以解决现有技术中针对每个流式处理程序需要单独设计一系列测试用例,导致该测试方式的通用性较差的问题。
为了便于理解本发明实施例,首先以图1中示出的系统结构为例说明适用于本发明实施例的流式处理系统的结构。如图1所示,该流式处理系统的结构可以包括流式数据源x、更改前流式处理程序、更改后流式处理程序和比较器。
其中,在对更改前后流式处理程序的功能进行比对时,为了体现出功能比对的及时性、准确性,首先将相同的流式数据源x分别同时输入到更改前流式处理程序、更改后流式处理程序进行处理,得到结果y1和结果y2。需要说明的是,由于该结果y1和结果y2均为流式数据,因此需要基于使用流式处理中的窗口技术获取无界的结果y1和结果y2中该窗口时段内的有界结果数据。其中,有界结果数据集可以理解为可包含重复元素的集合,该有界结果数据的一致性能够代表结果y1与结果y2的一致性。然后,基于合理的窗口选择规则,确定出合理的窗口时段,再基于该窗口时段分别从结果y1和结果y2中选取出与该窗口时段对应的数据1和数据2,将数据1和数据2输入到比较器中进行比对处理。若数据1和数据2一致,则确定流式处理程序在更改前后功能未发生变化,即说明基于对程序进行升级、优化、改造以及底层架构调整等未对流式处理程序的功能产生影响。若数据1和数据2不一致,则确定流式处理程序在更改前后功能发生变化,即说明基于对程序进行升级、优化、改造以及底层架构调整等对流式处理程序的功能产生影响。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2示例性的示出了本发明实施例提供的一种检测流式处理应用的方法的流程,该流程可以由检测流式处理应用的装置执行。
如图2所示,该流程具体包括:
步骤201,在第一触发时刻从第一存储区获取第一结果数据。
步骤202,在第二触发时刻从第二存储区获取第二结果数据。
步骤203,将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
上述步骤201和步骤202中,在第一触发时刻从第一存储区获取第一结果数据之前,首先将将各业务数据分别同时输入到第一应用和第二应用进行处理。再将第一应用处理后的第一结果数据存储在第一存储区中,并将第二应用处理后的第二结果数据存储在第二存储区中。基于此,通过将相同的各业务数据分别同时输入到第一应用和第二应用进行处理,如此可以确保处理时间的一致性,并可以确保基于触发时刻获取结果数据的及时性、准确性,从而可以避免由于处理时间差异导致出现比对偏差的问题。然后,在第一触发时刻从第一存储区获取第一结果数据,并在第二触发时刻从第二存储区获取第二结果数据。即,在第一触发时刻到达时,可以从第一存储区获取该窗口时段内的第一结果数据;在第二触发时刻到达时,可以从第二存储区获取该窗口时段内的第二结果数据。其中,第一结果数据是第一应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;第一结果数据携带有与对应业务数据相同的生成时间;第一触发时刻是根据第一应用的业务处理能力确定的。第二结果数据是第二应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;第二结果数据携带有与对应业务数据相同的生成时间;第二触发时刻是根据第二应用的业务处理能力确定的;第二应用是针对第一应用进行更新后的应用。
具体地,第一触发时刻和第二触发时刻可以满足下述形式:
其中,wt1为第一触发时刻、wt2为第二触发时刻,et为设定窗口时段的截止时间,dt1为第一延迟时间、dt2为第二延迟时间。
进一步地,可以通过下述方式确定出设定窗口时段:设置用于获取结果数据所需的窗口截止时间,根据窗口截止时间和窗口长度确定用于获取结果数据所需的设定窗口时段。需要说明的是,也可以通过下述方式确定出设定窗口时段:设置用于获取结果数据所需的窗口开始时间,根据窗口开始时间和窗口长度确定用于获取结果数据所需的设定窗口时段。如此,通过基于窗口截止时间(或窗口开始时间)和窗口长度确定用于获取结果数据所需的设定窗口时段,可以使得在触发时刻到达时,能够及时准确地从存储区中获取对应窗口时段的结果数据,即从无界的流式结果数据中获取对应窗口时段的有界结果数据,以便后续可以实现利用有界结果数据的一致性代表无界结果数据的一致性。其中,窗口长度是基于第一应用和第二应用所具备的业务处理能力确定的;窗口截止时间或窗口开始时间可以根据实际应用场景或根据技术人员的经验或根据技术人员所做的实验结果等进行设置,本发明实施例对此并不作限定。
此外,基于第一应用和第二应用所具备的业务处理能力确定窗口长度。具体过程为:根据第一应用的第一业务处理能力确定第一延迟时间,并根据第二应用的第二业务处理能力确定第二延迟时间。再根据第一延迟时间、第二延迟时间、第一业务处理能力以及第二业务处理能力,确定出窗口长度。如此可以使得窗口时段的选择更为合理、准确,从而可以使得用于参与比对的结果数据较为合理,并有助于避免比对的结果数据的数据量太少而影响比对的准确性判断。其中,该窗口长度可以满足下述形式:
其中,lt为窗口长度,tps1为第一业务处理能力、tps2为第二业务处理能力,dt1为第一延迟时间、dt2为第二延迟时间。
上述步骤203中,将第一结果数据与第二结果数据进行比对,若确定第一结果数据与第二结果数据一致,则确认第二应用对第一应用的更新符合功能一致的要求。具体地,基于键值存储方式,将第一结果数据以及第二结果数据中的每个数据作为键。再针对第一结果数据以及第二结果数据中的每个数据,将该数据在第一结果数据中出现的次数作为数据对应键的第一值,将该数据在第二结果数据中出现的次数作为数据对应键的第二值。若任一健所对应的第一值与第二值均相同,则确认第二应用对第一应用的更新符合功能一致的要求。若任一健所对应的第一值与第二值在比对时出现不相同,则确认第二应用对第一应用的更新不符合功能一致的要求。基于此,通过基于键值存储方式将第一结果数据与第二结果数据进行比对,可以确保比对的准确性,并可以提高比对的效率,同时可以避免出现将第一结果数据与第二结果数据进行一一比对导致比对的效率降低的问题。
需要说明的是,在将数据在第二结果数据中出现的次数作为数据对应键的第二值后,可以计算数据对应键的第一值与数据对应键的第二值的差值,该差值作为第三值。若各键对应的第三值均为零,则说明第二应用对第一应用的更新符合功能一致的要求。若各键对应的第三值出现不为零的情形,则说明第二应用对第一应用的更新不符合功能一致的要求。
为实现更改前后流式处理程序的功能比对,可通过比对更改前后流式处理程序的输出结果实现,若更改前后的输出结果一致,则功能一致,否则不一致。由于流式处理程序所处理的数据是不断到达的无界数据,因此需要在输出的无界结果数据中选取出合理的有界结果数据进行比对,以便及时准确地判断更改后的流式处理程序与更改前的流式处理程序是否满足功能一致性要求。
有鉴于此,下面对本发明实施例中检测流式处理应用的实施过程进行具体描述。
Step1:设置合理窗口时段,获取流式处理程序更改前后在该窗口时段内的有界结果数据。
流式处理窗口中窗口的设计参数主要包括“窗口长度”和“触发窗口计算的时刻(水位线)”两个。而这两个参数均与流式处理程序本身设计的可接受延迟有关。其中,窗口长度还与流式处理程序生成结果数据的tps(Transactions Per Second,也就是事务数/秒)有关。
示例性地,以设置用于获取结果数据所需的窗口截止时间为例,对本发明实施例确定水位线以及窗口长度进行描述。假设窗口截止时间为et,该窗口截止时间可以人为设置。该流式处理程序更改前后的tps分别为tps1和tps2。设置流式处理程序更改前后处理业务数据所产生的延迟时间分别为dt1和dt2。其中,tps1、tps2、dt1、dt2均为已知量。根据窗口截止时间和延迟时间计算用于获取结果数据所需的触发时刻(水位线)。该计算方式具体为:
其中,wt1为流式处理程序更改前的水位线、wt2为流式处理程序更改后的水位线,et为设定窗口时段的截止时间,dt1为流式处理程序更改前的延迟时间、dt2为流式处理程序更改后的延迟时间。
如此设计即可确保流式处理程序更改前后处理业务数据得到的结果y1和结果y2中所有事件时间属于窗口(et-lt)~et的数据全部流入到该窗口中。当然,为了确保事件时间属于窗口(et-lt)~et的数据全部流入到该窗口中,一般选择:
通过上述条件即可确定出流式处理程序更改前的水位线wt1和流式处理程序更改后的水位线wt2。
窗口长度lt的选择需要遵循落入该窗口的数据量适中且窗口长度远大于流式处理程序处理业务数据所产生的延迟时间。因此,落入窗口中的数据一般选择10万~1000万,太小则无法使用此有界数据的一致性代表无界数据的一致性,太大则会降低比较器的运行效率。具体地,窗口长度lt的选取满足下述条件(即满足下述条件即可满足后续数据比对时对于数据的需求):
通过上述条件即可确定出窗口长度lt。在确定出窗口长度lt后,即可基于窗口截止时间为et和窗口长度lt,确定用于获取结果数据所需的窗口时段。
在确定好窗口时段、水位线wt1和水位线wt2后,将相同的流式数据源x分别同时输入到更改前流式处理程序、更改后流式处理程序进行处理,得到结果y1和结果y2。然后,可以在水位线wt1时,从结果y1中获取该窗口时段内的有界结果数据y1 ′,在水位线wt2时,从结果y2中获取该窗口时段内的有界结果数据y2 ′。
Step2:比对有界结果数据y1 ′与有界结果数据y2 ′的一致性。
通过Step1中关于窗口长度lt的选择,可知流式处理程序更改前后在该窗口时段内的的数据量在10万至1000万之间,若直接进行一一比对,则会使得比对的效率非常低下。因此,可以选择key-value存储辅助进行数据比对,有助于大大地提高比对的效率。目前大多数计算机编程语言(如Java、C/C++、Python、Scala等)均内置Map数据结构用于存储key-value数据。由于编程语言自带的Map数据结构将数据存储于程序内存中,因此其适用于数据量较小的情况,而对于数据量较大的情况,可以使用Redis数据库等技术进行存储。需要说明的是,在不考虑比对效率的情况下,本发明实施例也可以采用一一比对的方式进行直接比对。或者,在本发明实施例设置的数据量相对较小的情况下,可以采用一一比对的方式进行直接比对,本发明实施例对此并不作限定。
示例性地,本发明实施例以选择key-value存储为例,对本发明实施例的数据比对进行描述。假设流式处理程序更改前后所对应的窗口分别为“窗口1”和“窗口2”。在进行数据比对时,以窗口1和窗口2所包括的有界结果数据中每一条数据为key。而value的设计则分为3列。即,第一列为该条数据在窗口1中出现次数的累加值,每出现一次累加值进行“+1”更新;第二列为该条数据在窗口2中出现次数的累加值,每出现一次累加值进行“+1”更新;第三列为第一列和第二列的差值,每更新一次累加值该列也会同时进行更新。
将窗口1和窗口2中的数据同时依照上述方式插入key-value存储中,直至所有数据全部都插入并计算完成。如果value中第三列的值全为0,则可以确定窗口1和窗口2中的数据一致,如此可以及时准确地判断更改后的流式处理程序与更改前的流式处理程序满足功能一致性要求(即更改后的流式处理程序的功能未发生变化);如果value中第三列的值不全为0,则可以确定窗口1和窗口2中的数据不一致,如此可以及时准确地判断更改后的流式处理程序与更改前的流式处理程序不满足功能一致性要求(即更改后的流式处理程序的功能发生变化)。
或者,在进行数据比对时,以窗口1和窗口2所包括的有界结果数据中每一条数据为key。而value的设计则分为2列。即,第一列为该条数据在窗口1中出现次数的累加值,每出现一次累加值进行“+1”更新;第二列为该条数据在窗口2中出现次数的累加值,每出现一次累加值进行“+1”更新。将窗口1和窗口2中的数据同时依照上述方式插入key-value存储中,直至所有数据全部都插入并计算完成。如果value中第一列的值与对应的第二列中的值相等,则确定窗口1和窗口2中的数据一致。如果value中第一列的值与对应的第二列中的值出现不相等的情况,则可以确定窗口1和窗口2中的数据不一致。
上述实施例表明,在第一触发时刻从第一存储区获取第一结果数据,并在第二触发时刻从第二存储区获取第二结果数据。再将第一结果数据与第二结果数据进行比对,若确定第一结果数据与第二结果数据一致,则确认第二应用对第一应用的更新符合功能一致的要求。其中,第一结果数据、第二结果数据是第一应用、第二应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;第一结果数据、第二结果数据均携带有与对应业务数据相同的生成时间;第一触发时刻、第二触发时刻是根据第一应用、第二应用的业务处理能力确定的;第二应用是针对第一应用进行更新后的应用。由于该方法可以直接通过比对第一应用和第二应用输出的结果数据来实现对应用的功能的检测,而无需为第一应用和第二应用都单独设计一系列测试用例进行测试,如此可以提高应用检测的灵活性、通用性,从而可以满足不同应用场景的需求,进而可以解决现有技术中针对每个流式处理程序需要单独设计一系列测试用例,导致该测试方式的通用性较差的问题。
基于相同的技术构思,图3示例性的示出了本发明实施例提供的一种检测流式处理应用的装置,该装置可以执行检测流式处理应用的方法的流程。
如图3所示,该装置包括:
获取单元301,用于在第一触发时刻从第一存储区获取第一结果数据;所述第一结果数据是第一应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;所述第一结果数据携带有与对应业务数据相同的生成时间;所述第一触发时刻是根据所述第一应用的业务处理能力确定的;在第二触发时刻从第二存储区获取第二结果数据;所述第二结果数据是第二应用对生成时间属于所述设定窗口时段内的业务数据进行处理后的数据;所述第二结果数据携带有与对应业务数据相同的生成时间;所述第二触发时刻是根据所述第二应用的业务处理能力确定的;所述第二应用是针对所述第一应用进行更新后的应用;
处理单元302,用于将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
可选地,所述获取单元301具体用于:
设置用于获取结果数据所需的窗口截止时间;
根据所述窗口截止时间和窗口长度确定用于获取结果数据所需的设定窗口时段;所述窗口长度是基于所述第一应用和所述第二应用所具备的业务处理能力确定的。
可选地,所述获取单元301具体用于:
根据所述第一应用的第一业务处理能力确定第一延迟时间;
根据所述第二应用的第二业务处理能力确定第二延迟时间;
根据所述第一延迟时间、所述第二延迟时间、所述第一业务处理能力以及所述第二业务处理能力,确定出所述窗口长度。
可选地,所述获取单元301具体用于:
所述窗口长度满足下述形式:
其中,lt为所述窗口长度,tps1为第一业务处理能力、tps2为第二业务处理能力,dt1为所述第一延迟时间、dt2为所述第二延迟时间。
可选地,所述获取单元301具体用于:
所述第一触发时刻和所述第二触发时刻满足下述形式:
其中,wt1为所述第一触发时刻、wt2为所述第二触发时刻,et为设定窗口时段的截止时间,dt1为第一延迟时间、dt2为第二延迟时间。
可选地,所述获取单元301还用于:
在第一触发时刻从第一存储区获取第一结果数据之前,将各业务数据分别同时输入到所述第一应用和所述第二应用;
将所述第一应用处理后的第一结果数据存储在所述第一存储区中;将所述第二应用处理后的第二结果数据存储在所述第二存储区中。
可选地,所述处理单元302具体用于:
基于键值存储方式,将所述第一结果数据以及所述第二结果数据中的每个数据作为键;
针对所述第一结果数据以及所述第二结果数据中的每个数据,将所述数据在所述第一结果数据中出现的次数作为所述数据对应键的第一值,将所述数据在所述第二结果数据中出现的次数作为所述数据对应键的第二值;
若任一健所对应的第一值与所述第二值均相同,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
基于相同的技术构思,本发明实施例还提供了一种计算设备,如图4所示,包括至少一个处理器401,以及与至少一个处理器连接的存储器402,本发明实施例中不限定处理器401与存储器402之间的具体连接介质,图4中处理器401和存储器402之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器402存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,可以执行前述的检测流式处理应用的方法中所包括的步骤。
其中,处理器401是计算设备的控制中心,可以利用各种接口和线路连接计算设备的各个部分,通过运行或执行存储在存储器402内的指令以及调用存储在存储器402内的数据,从而实现数据处理。可选的,处理器401可包括一个或多个处理单元,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。在一些实施例中,处理器401和存储器402可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器401可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合检测流式处理应用的实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器402可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器402是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本发明实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述检测流式处理应用的方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种检测流式处理应用的方法,其特征在于,包括:
在第一触发时刻从第一存储区获取第一结果数据;所述第一结果数据是第一应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;所述第一结果数据携带有与对应业务数据相同的生成时间;所述第一触发时刻是根据所述第一应用的业务处理能力确定的;
在第二触发时刻从第二存储区获取第二结果数据;所述第二结果数据是第二应用对生成时间属于所述设定窗口时段内的业务数据进行处理后的数据;所述第二结果数据携带有与对应业务数据相同的生成时间;所述第二触发时刻是根据所述第二应用的业务处理能力确定的;所述第二应用是针对所述第一应用进行更新后的应用;
将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
2.如权利要求1所述的方法,其特征在于,设定窗口时段是通过如下方式确定的,包括:
设置用于获取结果数据所需的窗口截止时间;
根据所述窗口截止时间和窗口长度确定用于获取结果数据所需的设定窗口时段;所述窗口长度是基于所述第一应用和所述第二应用所具备的业务处理能力确定的。
3.如权利要求2所述的方法,其特征在于,所述窗口长度是基于所述第一应用和所述第二应用所具备的业务处理能力确定的,包括:
根据所述第一应用的第一业务处理能力确定第一延迟时间;
根据所述第二应用的第二业务处理能力确定第二延迟时间;
根据所述第一延迟时间、所述第二延迟时间、所述第一业务处理能力以及所述第二业务处理能力,确定出所述窗口长度。
6.如权利要求1所述的方法,其特征在于,在第一触发时刻从第一存储区获取第一结果数据之前,还包括:
将各业务数据分别同时输入到所述第一应用和所述第二应用;
将所述第一应用处理后的第一结果数据存储在所述第一存储区中;将所述第二应用处理后的第二结果数据存储在所述第二存储区中。
7.如权利要求1至6任一项所述的方法,其特征在于,将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求,包括:
基于键值存储方式,将所述第一结果数据以及所述第二结果数据中的每个数据作为键;
针对所述第一结果数据以及所述第二结果数据中的每个数据,将所述数据在所述第一结果数据中出现的次数作为所述数据对应键的第一值,将所述数据在所述第二结果数据中出现的次数作为所述数据对应键的第二值;
若任一健所对应的第一值与所述第二值均相同,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
8.一种检测流式处理应用的装置,其特征在于,包括:
获取单元,用于在第一触发时刻从第一存储区获取第一结果数据;所述第一结果数据是第一应用对生成时间属于设定窗口时段内的业务数据进行处理后的数据;所述第一结果数据携带有与对应业务数据相同的生成时间;所述第一触发时刻是根据所述第一应用的业务处理能力确定的;在第二触发时刻从第二存储区获取第二结果数据;所述第二结果数据是第二应用对生成时间属于所述设定窗口时段内的业务数据进行处理后的数据;所述第二结果数据携带有与对应业务数据相同的生成时间;所述第二触发时刻是根据所述第二应用的业务处理能力确定的;所述第二应用是针对所述第一应用进行更新后的应用;
处理单元,用于将所述第一结果数据与所述第二结果数据进行比对,若确定所述第一结果数据与所述第二结果数据一致,则确认所述第二应用对所述第一应用的更新符合功能一致的要求。
9.一种计算设备,其特征在于,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行权利要求1至7任一权利要求所述的方法。
10.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1至7任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110072358.5A CN114860562A (zh) | 2021-01-20 | 2021-01-20 | 一种检测流式处理应用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110072358.5A CN114860562A (zh) | 2021-01-20 | 2021-01-20 | 一种检测流式处理应用的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860562A true CN114860562A (zh) | 2022-08-05 |
Family
ID=82622941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110072358.5A Pending CN114860562A (zh) | 2021-01-20 | 2021-01-20 | 一种检测流式处理应用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860562A (zh) |
-
2021
- 2021-01-20 CN CN202110072358.5A patent/CN114860562A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845936B (zh) | 一种基于海量用户的ab测试方法及系统 | |
CN108304553B (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN107577697B (zh) | 一种数据处理方法、装置及设备 | |
CN108388509B (zh) | 一种软件测试方法、计算机可读存储介质及终端设备 | |
US10684942B2 (en) | Selective application testing | |
CN107247665B (zh) | 一种c接口函数的测试方法及系统 | |
CN103309693A (zh) | 复杂可编程逻辑器件更新方法及系统 | |
CN110599341A (zh) | 交易调用方法及系统 | |
US7991985B2 (en) | System and method for implementing and utilizing a zero overhead loop | |
CN110134598B (zh) | 一种批量处理方法、装置及系统 | |
CN112035341A (zh) | 一种自动化测试方法及装置 | |
CN114490856A (zh) | 基于iouring技术的数据库wal落盘方法及系统 | |
CN113342671B (zh) | 对运算模块进行验证的方法、装置、电子设备和介质 | |
CN107391539B (zh) | 事务处理方法、服务器和存储介质 | |
CN106933727B (zh) | 处理器中断机制的验证方法及验证装置 | |
CN112015490A (zh) | 可编程器件实现与测试精简指令集方法、设备及介质 | |
CN110765008B (zh) | 一种数据处理方法及装置 | |
CN114860562A (zh) | 一种检测流式处理应用的方法及装置 | |
CN113127331A (zh) | 一种基于故障注入的测试方法、装置及计算机设备 | |
CN109144806B (zh) | 一种寄存器传输级电路的功能验证方法及装置 | |
US10496524B2 (en) | Separating test coverage in software processes using shared memory | |
CN115658482A (zh) | 数据库测试方法及装置、电子设备及计算机可读存储介质 | |
CN113342676A (zh) | 一种软件测试的评估方法、装置、计算设备及存储介质 | |
US20190095315A1 (en) | Code coverage thresholds for code segments based on usage frequency and change frequency | |
CN111352825B (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 |