CN101876934A - 一种用于对输入数据进行采样的方法和系统 - Google Patents
一种用于对输入数据进行采样的方法和系统 Download PDFInfo
- Publication number
- CN101876934A CN101876934A CN200910136950.6A CN200910136950A CN101876934A CN 101876934 A CN101876934 A CN 101876934A CN 200910136950 A CN200910136950 A CN 200910136950A CN 101876934 A CN101876934 A CN 101876934A
- Authority
- CN
- China
- Prior art keywords
- input data
- execution route
- sampling
- data
- route
- 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
- 238000005070 sampling Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000008569 process Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000012360 testing method Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000008676 import Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
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/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种用于对输入数据进行采样的方法和系统。该方法缓存输入数据;记录被缓存的输入数据在在线操作模块中的执行路径;判断被缓存的输入数据是否经过期望执行路径,并且响应于被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。通过本发明提供的方法和系统,可以基于执行路径对输入数据进行采样,自动形成用于诸如调试的数据集。因此提高了工作效率,增加了用于调试的数据集的有效性。另外,得到的数据集可以提供给离线运行的应用,以便进行调试,因此可以实现在不停止在线应用的情况下,对操作模块进行调试。
Description
技术领域
本发明涉及应用测试领域,更具体地涉及一种用于对输入数据进行采样的方法和系统。
背景技术
流处理是一种需要对海量数据进行实时处理的高性能计算模式,其具有实时性、输入数据量大等特点。采用流处理,可以一边接收来自数据源的输入数据,一边对已接收的数据进行处理,并且可以同时输出那些已经处理过的数据。借助于流处理技术,可以获得提高吞吐率、缩短响应时间以及减小系统的存储开销等方面的优势。
在现有技术中,流处理已经具有较为广泛的应用。例如,电子商业服务中的算法交易、射频识别(Radio Frequency Identification,RFID)事件处理应用、欺诈检测应用、处理监控应用、电信系统中基于位置的服务应用等,都是涉及到流处理的流应用。
与一般的应用不同,流应用通常是一种持续地、长期运行的应用。因此在流应用中出现错误且该错误仅仅影响到流应用的一部分时,通常期望在不停止整个流应用的情况下,对流应用中的算子(即,在流处理中用于对数据进行分析和处理的操作模块)进行调试。
然而,根据现有技术,操作模块在调试模式中运行时的速度比在在线运行模式中运行时的速度低得多。因此,难以在不影响流应用的情况下执行对特定算子的调试。
另外,在现有技术中,在进行测试时,主要依靠人工分析和经验来设计测试用例。对于经验不足的人员来讲,这并不容易。换句话说,测试用例的有效性很大程度上依赖于人工分析的能力和经验的水平。
对于除流应用之外的具有大量输入数据的其他应用,同样存在与上述类似的问题。
发明内容
有鉴于此,本发明提供了一种用于对输入数据进行采样的方法和系统,以便至少部分解决上面提到的问题。
根据本发明的一个方面,提供了一种用于对输入数据进行采样的方法。该方法可以包括:缓存输入数据;记录被缓存的输入数据在在线操作模块中的执行路径;判断被缓存的输入数据是否经过期望执行路径,并且响应于该被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。
根据本发明的另一方面,提供了一种用于对输入数据进行采样的系统,包括:缓存装置,用于缓存输入数据;记录装置,用于记录被缓存的输入数据在在线操作模块中的执行路径;以及采样装置,用于判断各被缓存的输入数据是否经过期望执行路径,并且响应于该被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。
通过本发明的方法和系统,可以基于执行路径对输入数据进行采样,进而自动形成例如可以用作测试集的数据集。因此,使得测试集的形成不再依赖于人工分析能力和经验水平,进而提高了工作效率,增加了测试集的有效性。此外,由于采样得到的测试集中的输入数据都是实际应用中的输入数据,因此更加符合实际应用的情况。另外,得到的测试集可以提供给该操作模块的离线版本以便进行调试,因此可以实现在不停止在线应用的情况下,对操作模块进行调试。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,在本发明的附图中,相同的标号表示相同或相似的部件。在附图中,
图1示出了根据本发明一个实施方式的用于对输入数据进行采样的方法的流程图;
图2示出了根据本发明的一个实施方式用于记录执行路径的方法的示意图;
图3示出了根据本发明的另一实施方式用于记录执行路径的方法的示意图;
图4示出了根据本发明的一个实施方式的用于对输入数据进行采样的系统的方框图;
图5示出了根据本发明的另一实施方式的用于对输入数据进行采样的系统的方框图;以及
图6示意性地示出了可以实现根据本发明的实施方式的计算设备的结构方框图。
具体实施方式
下面,将参考附图详细地描述本发明提供的用于对输入数据进行采样的方法和系统。
首先,将参考图1来描述根据本发明的用于对输入数据进行采样的方法。图1示出了根据本发明一个实施方式的用于对输入数据进行采样的方法的流程图。
如图1所示,在步骤101,针对在线运行的应用中的操作模块,记录输入数据的执行路径。
执行路径是输入数据在操作模块中被处理期间所经过的路径。在各操作模块中,通常存在各种分支点,诸如判断语、多分支语句、函数调用等,因此不同的输入数据在这些分支点可能会经过不同的分支。每个输入数据所经过的这些分支在整体上构成了输入数据的执行路径。
对输入数据的执行路径的记录可以通过若干方式来实现。下面将以示例性的方式描述几种实施方式。
在根据本发明的一个实施方式中,可以跟踪并记录输入数据在操作模块程序中的各个分支点的取值,以便确定在各个分支点是否跳转。然后,由发生跳转的分支点的集合来表示输入数据的执行路径。所述分支点可以是与判断语、多分支语句、函数调用等相关的点。通过这种方式,就可以记录该输入数据在程序中的执行路径。
图2示出了根据该实施方式的用于记录执行路径的方法的示意图。如图2所示,在图2中,示出了三个分支点,即点1、点2和点3。标记为“是”的路径表示在相应的分支点处发生跳转的路径,标记为“否”的路径表示在相应的分支点处没有发生跳转的路径。
从图2可以看出,其中包括从左到右四条执行路径L1、L2、L3和L4。如果输入数据经过执行路径L1,则由于输入数据在点1和点2处均发生跳转,因此其执行路径可以用包括分支点1和2的集合(1,2)来表示;如果输入数据经过执行路径L2,则由于输入数据在点1处发生跳转而在点2处没有发生跳转,因此其执行路径可以用包括分支点1的集合(1)来表示;如果输入数据经过执行路径L3,则由于输入数据在点1处没有跳转而在点3处发生了跳转,因此其执行路径可以用包括分支点3的集合(3)来表示;而如果输入数据经过了执行路径L4,则由于输入数据在任何点处均未跳转,因此,其执行路径可以由不包括任何分支点的空集合(null)来表示。
需要说明的是,这种记录执行路径分支的方式较为精确,但占用的存储空间很大,并且所需的记录时间也较多。
在根据本发明的另一优选的实施方式中,可以根据应用需求来调整记录执行路径的粒度。在各操作模块中,通常存在大量的分支,这些分支中有一些相对于整个执行路径而言重要性较低,诸如层次较深的分支、区分度较低的分支等,这样的分支通常是可以忽略的。因此,可以只对操作模块程序中的特定分支点的取值情况进行记录,而不考虑对其他重要性较低的分支点。这种简化的记录方式可以节约存储空间,降低记录时间。
在根据本发明的一个实施方式中,记录执行路径的粒度可以根据存储设备的大小、期望的记录时间、经过执行路径的数据量其中至少一个来调整。例如,可以在开始记录之前或者在记录过程中,根据存储设备的大小或者期望的记录时间中的任一个对记录的粒度进行手动调整;存储设备大,则可以使用较细的粒度,存储设备小可以使用较粗的粒度;期望记录时间较短,可以使用较粗粒度,如果可以接受较长记录时间,则可以使用较细粒度。
此外,还可以例如在记录过程中,根据经过执行路径的输入数据量对记录执行路径的粒度进行动态调整。在一个实施例中,首先以较粗的粒度记录执行路径,在例如在发现当前正在记录的执行路径经过的数据量较大时,进一步针对该执行路径以较细的粒度进行记录,从而区分该执行路径内部的各子路径。而进一步,可以在发现正在记录的一些执行路径经过的数据量较小时,可以以较粗的粒度来进行记录这些执行路径。在根据本发明的又一实施方式中,可以针对特定的执行路径来调整记录执行路径的粒度,例如对于被认为较为可疑的一条或者多条执行路径可以设置较细的粒度,而对于被认为出现错误可能性很小的执行路径,则可以设置为较大的粒度。
除了上文中描述的利用分支点记录执行路径的方式外,还可以通过其他方式来实现对输入数据的执行路径的记录。在根据本发明的又一实施方式中,可以通过插桩法来实现对输入数据的执行路径的记录。插桩技术在软件测试领域是公知的,它是一种通过在源代码中加入记录信息的语句来获得程序在运行时的信息的技术。利用插桩技术,可以在操作模块程序中插入大量标杆,这些标杆可以插入在分支点之间的路径上,而并非必须插在分支点处。通过合理地设置插入在程序中标杆,就可以通过标杆的集合来标识每条路径。在程序执行过程中,通过记录下输入数据所经过的标杆,即可获知该输入数据的执行路径。
图3示出了根据本发明的该实施方式采用插桩法来记录执行路径的方法的示意图。图3与图2所示类似,包括从左到右四条执行路径L1、L2、L3和L4。如图3所示,如果输入数据经过执行路径L1,则由于输入数据经过了标杆1,因此其执行路径可以用包括标杆1的集合(1)来表示;类似地,如果输入数据经过执行路径L2,则其执行路径可以用包括标杆2的集合(2)来表示;如果输入数据经过执行路径L3,则其执行路径可以用包括标杆3的集合(3)来表示;如果输入数据经过了执行路径L4,其执行路径可以用包括标杆4的集合(4)来表示。
本领域技术人员应该理解,在图3示出的示意图中,每条路径可以通过一个标杆来唯一地标识。然而在实际应用中,路径可能非常复杂,通常需要使用包含大量标杆点的集合来表示。因此,可以适当地插入标杆,以使得能够有效地标识各条路径,同时所使用的标杆尽可能少,从而减少存储空间。
在以上实施方式中,对执行路径的记录主要通过软件来实现。需要说明的是,也可以在硬件级别上实现该记录。
在根据本发明的一个实施方式中,可以通过处理器内部的流水线来记录输入数据执行的路径。诸如,对于国际商业机器公司(International Business Corporation,IBM)的Power体系结构而言,流水线是处理器内部执行指令的主要部件。流水线可以包括多个流水级,其中最后一级通常被称作提交(commit)阶段。所有指令都经过该提交阶段,输入数据是否跳转在该提交阶段是可以获知的。因此,可以修改流水线中的提交阶段,以便在发现每条指令时,记录该指令的地址以及是否发生跳转等信息,从而记录输入数据的执行路径。
在采用硬件方式进行记录的情况下,可以增加硬件缓存,以便存储所记录的信息。在诸如硬件缓存满时或者即将满时,可以产生中断。响应于该中断,可以将该硬件缓存中的信息保存到存储器中的适当位置,并清空该硬件缓存以便进行随后的记录。另外,也可以利用计算机系统结构中的常用组件布隆过滤器(bloom filter)来存储所记录的信息。布隆过滤器是一种简单的省空间的随机化数据结构,尽管在精度方面具有一定的不足,但是其可以存储大量信息,因此可以用来存储所记录的信息。
根据本发明,通常需要针对应用中的特定操作模块,即整个应用的一部分,来记录输入数据的执行路径。因此,需要采取措施来实现对记录的控制。在采用软件方式进行记录的情况下,可以通过确定分支点、标杆是否在特定操作模块内,来确定是否执行记录。而在采用硬件方式实现记录的情况下,可以设置控制开关以便控制记录的开始和记录的结束。例如,可以设置控制寄存器,通过在到达需记录的指令时以及在离开需要记录的指令时,设置控制寄存器的值,来实现对记录的控制。
需要说明的是,也可以通过现有技术中已知的其他方式来实现对输入数据的执行路径的记录。
下面返回图1,描述根据本发明的用于对输入数据进行采样的方法。
如图1所示,在步骤102,根据输入数据的执行路径,对输入数据进行采样,以形成包含采样的输入数据的数据集。
根据本发明的一个实施方式,设置有缓存装置,用于存储特定数量的输入数据。该特定数量需要设计为至少能够确保在得到输入数据的执行路径时,该输入数据尚保存在缓存装置中,以便可以根据该执行路径确定是否该输入数据进行采样。优选地,该缓存装置可以采用先进先出的存储方式。
因此,在步骤101中通过记录得到输入数据的执行路径后,就可以根据执行路径来确定是否对仍保存在该缓存装置中的输入数据进行采样。如果需要对该输入数据进行采样,则可以将该输入数据从缓冲区中复制或者提取到用于存储采集的数据的存储区。如果不需要进行采样,则可以忽略该输入数据,或者可以从缓存装置中删除该输入数据以便为其它输入数据提供更多的空间。
在根据本发明的一个实施方式中,可以采样输入数据,以使得所采样的输入数据具有不同执行路径。优选地,所采样的输入数据所具有的执行路径能够尽可能地涵盖需要调试或者测试的特定操作模块的所有执行路径。
在根据本发明的另一实施方式中,可以对输入数据进行采样,以便所采样的输入数据仅涉及一条或多条指定的执行路径,从而得到与指定的执行路径相关的输入数据。例如,在确定问题可能出现在操作模块的一条或者几条路径中且需要针对这些路径进行集中调试或测试时,将会出现这种情况。可以提供适当的用户接口,以便用户指定这些路径。
对输入数据进行采样的策略可以包括很多种。接下来,将对以示例性的方式介绍其中的几种。
在根据本发明的一个实施方式中,可以以较高的采样权重,对执行路径出现频率较低的输入数据进行采样。在操作模块的所有执行路径中,有些执行路径会有大量输入数据通过,因此其出现的频率较高;而有些执行路径所通过的数据较少,因此其出现的频率会较低。对于出现频率较高的执行路径,要采样的与该执行路径相关的输入数据是比较容易的,而对于出现频率较低的执行路径,与其相关的输入数据数量也较少。因此,可以对于执行路径出现频率较高的输入数据,可以以较高的采样权重进行采样,以便得到与该执行路径相关的尽可能多的采样数据。例如,可以以较高的采样率对执行路径出现频率较低的输入数据进行采样,而以较低的采样率对执行路径出现频率较高的输入数据进行采样。
出于说明的目的,下面将通过实例对该实施方式进行描述。例如,对于涉及图2所示的执行路径L1、L2、L3和L4的1000个输入数据,经过执行路径L1的为800个数据,经过执行路径2的为150个数据,经过执行路径3的为30个数据,经过执行路径4的为20个数据。由此,对于这1000个数据而言,执行路径出现的频率分别为800、150、30、20。因此,可以以采样率1对经过执行路径4的输入数据进行采用,即全部采集;以采样率2/3对经过执行路径3的输入数据进行采用;以采样率2/5对经过执行路径2的输入数据进行采样;以采样率1/40对经过执行路径1的输入数据进行采样。这样就可以分别得到与每条执行路径相关的20个输入数据。
需要说明的是,上述实例只是出于说明的目的,本发明并不仅限于此。
在根据本发明的又一实施方式中,可以以较高的采样优先级,对执行路径相同的输入数据中较新的输入数据进行采样。例如,对于具有相同执行路径的数据,可以采用先进先出的方式存储采样得到的数据,当有新的采样数据时,则放弃目前存储的最早的采样数据。从而使得数据集中的数据都是较新的数据。
在本发明的一个实施方式中,可以将得到的数据集用作用于调试的测试集,以便提供给离线运行的应用,以用于调试或者测试目的。
在上面给出的实施方式中,所述应用优选地为流应用。对于流应用,每个操作模块的输入通常是流,其包含有结构相同的无穷无尽的流数据对象。因此,对这样的流输入数据中的每个进行调试也是不现实的。另外,在流应用中的操作模块,即算子,通常是无状态的,这意味着对每个流数据对象的处理与其他流数据对象并无关联。因此,根据本发明的实施方式,只采样其中的一部分来自动形成用于测试的数据集也是非常有利的。
本领域技术人员应该理解,该应用也可以是其他具有大量输入数据的、与流应用类似的应用。
在优选的实施方式中,还可以进一步根据记录的输入数据的执行路径来计算该输入数据的执行路径特征值,以便由执行路径特征值来唯一地标识输入数据的执行路径,从而根据该执行路径特征值来采样输入数据。
在该优选的实施方式中,集合S是需记录的分支点p1,p2,...,pn的集合,其中n为分支点的数目。对于每个流数据对象SDOk,其执行路径Pk为点pk1,pk2,...,pkm的集合,即Pk={pk1,pk2,...,pkm},其中pk1,pk2,...,pkm是分支点p1,p2,...,pn中流数据对象SDOk发生跳转的分支点。然后,可以基于下式、通过适当的哈希函数来计算执行路径的执行路径特征值CVEP。
CVEP(k)=H(pk1)∨H(pk2)∨...∨H(pkm)
其中,哈希函数H(x)是用于将点映射为一个比特向量的映射,“∨”表示或运算。
接下来,将继续参考图2和图3示出的记录执行路径的方法来描述如何根据记录的执行路径来计算执行路径特征值的实例。
在采用图2所示的记录方法的情况下,执行路径L1、L2、L3和L4分别由集合(1,2)、集合(1)、集合(3)以及空集合(null)表示。
在该实例中,采用哈希函数H(x)=1<<x-1,即,将1左移x-1位。
如果输入数据1经过执行路径L1,由于其通过分支点的集合(1,2)来表示,则输入数据1的执行路径特征值CVEP可以用下式来计算:
CVEP(1)=H(1)∨H(2)=(01)∨(10)=11
即,将对集合中各个节点进行散列后得到的值执行逻辑或运算。
类似地,如果输入数据2和3分别经过执行路径L2和L3,则输入数据2和3的执行路径特征值CVEP如下:
CVEP(2)=H(1)=1
CVEP(3)=H(3)=100
如果输入数据4经过执行路径L4,由于执行路径L4由空的分支点集合来表示,因此不需进行哈希,因此输入数据4的CVEP值为0,即:
CVEP(4)=0
通过这样的方式,就可以计算出各条执行路径的CVEP值。因此,就可以通过CVEP值来表示执行路径,从而基于执行路径来采样输入数据。
另外,如图3所示,在采用插桩法来记录执行路径的情况下,四条路径L1、L2、L3和L4的分别由标杆的集合(1),(2)、(3)和(4)来表示。因此,同样可以采用上述的哈希函数来计算执行路径的CVEP值。得到的输入数据1、2、3和4的CVEP值如下:
CVPE(1)=1
CVEP(2)=10
CVPE(3)=100
CVEP(4)=1000
在实际应用中,执行路径可能比图3所示的复杂得多。因此,可以适当地插入标杆,来减少存储空间并且降低计算时间和计算复杂度。
然而,需要说明的是,上面给出的哈希函数只是用于说明的目的,本发明并不局限于此,而是可以采用任何其他形式的哈希函数,只要能够唯一地标识出每条执行路径。
需要说明的是,计算CVEP值并非是必不可少的。在本发明的一个实施方式中,由该输入数据发生跳转的分支点的有序序列来表示执行路径,例如,图2中的执行路径L1由序列“1,2”来表示,执行路径L2由序列“1”来表示;对于执行路径L3,由序列“3”来表示;而对于执行路径L4,由为空的序列来表示。这样,通过比较上述的有序序列,同样可以实现基于执行路径对输入数据的采样。
在另一个优选的实施例中,可以计算CVEP权重,基于该CVEP权重对输入数据进行采样,以实现上述以较高的采样权重对执行路径出现频率较低的输入数据进行采样的实施方式。下面描述如何计算CVEP值以及根据CVEP值来对输入数据进行采样。
假设有三个跳转点,分别称作点1,点2和点3。已经记录的500个输入数据中,只在点1和点3发生跳转的数据有490,只在点2和点3跳转的数据有5个,并且在点1、点2和点3跳转的数据有5个。因此,可以得到在点1发生跳转的数据总量为495,在点2发生跳转的数据总量为10个,在点3发生跳转的数据总量为500个。
另外,根据上述算法,采用用哈希函数H(x)=1<<x-1,对于在点1和点3发生跳转的490个数据,其执行路径的CVEP为H(1)∨H(3)=(001)∨(100)=101;类似地,对于在点2和点3发生跳转的5个数据,其执行路径是110,以及对于在点1、点2和点3发生跳转的5个数据,其执行路径为111。
接着可以根据各个执行路径的数据量以及各点处发生跳转的数据数量计算CVEP权重。
对于每条执行路径,其CVEP权重为该条执行路径所经过的数据量除以构成该执行路径的各点处发生跳转的数据量的总和。例如对于CVEP值为“101”的执行路径,CVEP权重为:490/(495+500)=490/995;类似地,对于CVEP值为“110”的执行路径,CVEP权重为:5/(10+500)=5/510,以及对于CVEP值为“111”的执行路径CVEP权重值为:5/(495+10+500)=5/(1005)。
然后根据CVEP权重对输入数据进行采样,CVEP权重越大,则对于相应的执行路径以较低的采样权重进行采样,而CVEP权重越小则以较高的采样权重对其进行采样,以便得到更多的输入数据。
表1示出了对应的CVEP、CVEP权重以及采样的数据的表格。
CVEP | CVEP权重 | 采集的数据 |
101 | (490,995) | s500,s499,s498,s497,s496, |
110 | (5,510) | s495,s334,s256,s162,s78 |
111 | (5,1005) | s490,s295,s273,s124,s12 |
从该图可以看出,对于CVEP权重较低的执行路径,即CVEP为“110”和“111”的执行路径,记录了所有出现的输入数据,而时于CVEP权重较高的执行路径,即CVEP为“101”的执行路径,仅仅记录所有的490个输入数据中最后出现的输入数据5个输入。
需要说明的是,该CVEP权重更为精细地反映了执行路径出现的频率,可以进一步对执行路径出现的次数相同的执行路径进行细分。
通过本发明提供的用于对输入数据进行采样的方法,可以基于执行路径对输入数据进行采样,进而自动形成例如可以用作测试集的数据集。因此,使得测试集的形成不再依赖于人工分析能力和经验水平,进而提高了工作效率,增加了测试集的有效性。此外,由于采样得到的测试集中的输入数据都是实际应用中的输入数据,因此更加符合实际应用的情况。另外,得到的测试集可以用于离线运行的应用以便进行调试,因此可以实现在不停止在线应用的情况下,对操作模块进行调试。
接下来,将参考图4和图5来描述根据本发明的用于对输入数据进行采样的系统的实例。
图4示出了根据本发明的一个实施方式用于对输入数据进行采样的系统400。如图4所示,系统400可以包括:记录装置401,配置用于针对在线运行的应用中的操作模块,记录输入数据的执行路径;以及采样装置402,配置用于根据输入数据的执行路径,对输入数据进行采样,以形成包含采样的输入数据的数据集。图4中省略了前述的缓存装置。
在根据本发明的一个实施方式中,所述数据集可以包含具有不同执行路径的输入数据。
在根据本发明的另一实施方式中,所述数据集可以包含具有一条或多条指定的执行路径的输入数据。
在根据本发明的又一实施方式中,所述采样装置可以进一步配置用于:以较高的采样权重,对执行路径出现频率较低的输入数据进行采样;和/或以较高的采样优先级,对执行路径相同的输入数据中较新的输入数据进行采样。
在根据本发明的再一实施方式中,所述数据集可以被提供给离线运行的应用,以便利用所述数据集对该应用进行调试。
在根据本发明的又一实施方式中,所述应用可以是流应用。
另外,图5还示出了根据本发明的另一实施方式用于对输入数据进行采样的系统500。图5所示,系统500包括:记录装置501,对应于图4中的记录装置401,配置用于针对在线运行的应用中的操作模块,记录输入数据的执行路径;以及采样装置502,对应于图4中的采样装置402,配置用于根据输入数据的执行路径,对输入数据进行采样,以形成包含采样的输入数据的数据集。与图4所述的系统400不同的是,图5中的系统500可以进一步包括计算装置503,配置用于根据输入数据的执行路径,计算每个输入数据的执行路径特征值,其中,所述执行路径由唯一标识该执行路径的执行路径特征值来表示。图5中省略了前述的缓存装置。
关于上述实施方式中的记录装置401、501、采样装置402、502以及计算装置503的具体操作,可以参考上面结合1至图3对于本发明的方法的各个步骤的描述。
通过本发明提供的系统,可以基于执行路径对输入数据进行采样,以自动形成可以用于诸如调试的数据集。因此,相对于现有技术而言,提高了工作效率,增加了测试集的有效性,并且得到的测试集也更加符合实际应用的情况。另外,得到的测试集可以提供给离线运行的应用以便进行调试,因此可以实现在不停止在线应用的情况下,对操作模块进行调试。
下面,将参考图6来描述可以实现本发明的计算机设备。图6示意性示出了可以实现根据本发明的实施方式的计算设备的结构方框图。
图6中所示的计算机系统包括CPU(中央处理单元)601、RAM(随机存取存储器)602、ROM(只读存储器)603、系统总线604、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示器控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。在这些部件中,与系统总线604相连的有CPU 601、RAM 602、ROM 603、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608和显示器控制器609。硬盘610与硬盘控制器605相连,键盘611与键盘控制器606相连,串行外部设备612与串行接口控制器607相连,并行外部设备613与并行接口控制器608相连,以及显示器614与显示器控制器609相连。
图6所述的结构方框图仅仅为了示例的目的而示出的,并非是对本发明的限制。在一些情况下,可以根据需要添加或者减少其中的一些设备。
此外,本发明的实施方式可以以软件、硬件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。
虽然已经参考目前考虑到的实施方式描述了本发明,但是应该理解本发明不限于所公开的实施方式。相反,本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。以下权利要求的范围符合最广泛解释,以便包含所有这样的修改及等同结构和功能。
Claims (20)
1.一种用于对输入数据进行采样的方法,包括:
缓存输入数据;
记录被缓存的输入数据在在线操作模块中的执行路径;
判断被缓存的输入数据是否经过期望执行路径,并且响应于被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。
2.根据权利要求1所述的方法,进一步包括:
将具有较低出现频率的执行路径作为所述期望执行路径。
3.根据权利要求1或2所述的方法,进一步包括:
以较高的采样权重采样经过具有较低出现频率的期望执行路径的输入数据,以较低的采样权重采样经过具有较高出现频率的期望执行路径的输入数据。
4.根据权利要求1所述的方法,进一步包括:
以较高的采样优先级,对经过相同期望执行路径的输入数据中较新的输入数据进行采样。
5.根据权利要求1所述的方法,其中所述记录被缓存的输入数据在在线操作模块中的执行路径的步骤包括:
计算该输入数据在在线操作模块中的执行路径的执行路径特征值,其中所述执行路径特征值唯一标识该执行路径。
6.根据权利要求1所述的方法,其中,所述数据集被提供给该在线操作模块的离线版本,以便利用所述数据集对该操作模块进行调试。
7.根据权利要求1所述的方法,其中,所述在线操作模块是流应用的操作模块。
8.根据权利要求1所述的方法,进一步包括:调整记录输入数据的执行路径的粒度。
9.根据权利要求8所述的方法,其中,所述调整记录输入数据的执行路径的粒度的步骤包括:针对特定的执行路径来调整记录输入数据的执行路径的粒度。
10.根据权利要求9所述的方法,其中,所述针对特定的执行路径来调整记录输入数据的执行路径的粒度的步骤包括:
根据经过执行路径的输入数据量对记录该执行路径的粒度进行动态调整。
11.一种用于对输入数据进行采样的系统,包括:
缓存装置,用于缓存输入数据;
记录装置,用于记录被缓存的输入数据在在线操作模块中的执行路径;以及
采样装置,用于判断被缓存的输入数据是否经过期望执行路径,并且响应于被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。
12.根据权利要求11所述的系统,进一步包括:
用于将具有较低出现频率的执行路径作为所述期望执行路径的装置。
13.根据权利要求1或2所述的系统,进一步包括:
用于以较高的采样权重采样经过具有较低出现频率的执行路径的输入数据,以较低的采样权重采样经过具有较低出现频率的执行路径的输入数据的装置。
14.根据权利要求11所述的系统,其中,进一步包括:
用于以较高的采样优先级,对经过相同期望执行路径的输入数据中较新的输入数据进行采样的装置。
15.根据权利要求11所述的系统,所述记录装置包括:
计算装置,用于计算该输入数据在在线操作模块中的执行路径的执行路径特征值,其中所述执行路径特征值唯一标识该执行路径。
16.根据权利要求11所述的系统,其中,所述数据集被提供给该在线操作模块的离线版本,以便利用所述数据集对该操作模块进行调试。
17.根据权利要求11所述的系统,其中,所述在线操作模块是流应用的操作模块。
18.根据权利要求17所述的系统,进一步包括:用于调整记录输入数据的执行路径的粒度的装置。
19.根据权利要求18所述的系统,其中,所述用于调整记录输入数据的执行路径的粒度的装置包括针对特定的执行路径来调整记录输入数据的执行路径的粒度的装置。
20.根据权利要求19所述的系统,其中,所述针对特定的执行路径来调整记录输入数据的执行路径的粒度的装置包括根据经过执行路径的输入数据量对记录该执行路径的粒度进行动态调整的装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910136950.6A CN101876934B (zh) | 2009-04-30 | 2009-04-30 | 一种用于对输入数据进行采样的方法和系统 |
US12/767,862 US8132051B2 (en) | 2009-04-30 | 2010-04-27 | Method and system for sampling input data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910136950.6A CN101876934B (zh) | 2009-04-30 | 2009-04-30 | 一种用于对输入数据进行采样的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101876934A true CN101876934A (zh) | 2010-11-03 |
CN101876934B CN101876934B (zh) | 2013-08-21 |
Family
ID=43019493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910136950.6A Active CN101876934B (zh) | 2009-04-30 | 2009-04-30 | 一种用于对输入数据进行采样的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8132051B2 (zh) |
CN (1) | CN101876934B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880543A (zh) * | 2011-04-18 | 2013-01-16 | 埃森哲环球服务有限公司 | 用于集成测试平台的测试数据供应链管理器 |
CN105607989A (zh) * | 2014-11-18 | 2016-05-25 | 阿里巴巴集团控股有限公司 | 一种软件测试数据抽样方法及系统 |
CN108781280A (zh) * | 2017-12-25 | 2018-11-09 | 深圳市大疆创新科技有限公司 | 一种测试方法、装置及终端 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9141519B2 (en) * | 2010-10-05 | 2015-09-22 | Infinera Corporation | Accurate identification of software tests based on changes to computer software code |
US8776029B2 (en) | 2011-03-23 | 2014-07-08 | Zerodee, Inc. | System and method of software execution path identification |
US20130104105A1 (en) * | 2011-04-18 | 2013-04-25 | Julian M. Brown | Test data supply chain manager for an integrated testing platform |
US9557966B2 (en) | 2011-10-12 | 2017-01-31 | International Business Machines Corporation | Generating a predictive data structure |
US9575870B2 (en) | 2015-07-23 | 2017-02-21 | International Business Machines Corporation | Streaming breakpoint for data tuples that stay in an operator graph too long |
US9619365B2 (en) | 2015-08-17 | 2017-04-11 | International Business Machines Corporation | Streaming breakpoint for data tuples based on resource usage |
US10467204B2 (en) * | 2016-02-18 | 2019-11-05 | International Business Machines Corporation | Data sampling in a storage system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386839B1 (en) * | 2002-11-06 | 2008-06-10 | Valery Golender | System and method for troubleshooting software configuration problems using application tracing |
US7457872B2 (en) * | 2003-10-15 | 2008-11-25 | Microsoft Corporation | On-line service/application monitoring and reporting system |
US7457923B1 (en) * | 2005-05-11 | 2008-11-25 | Sun Microsystems, Inc. | Method and structure for correlation-based prefetching |
GB2443507A (en) | 2006-10-24 | 2008-05-07 | Advanced Risc Mach Ltd | Debugging parallel programs |
US7660884B2 (en) * | 2006-11-10 | 2010-02-09 | International Business Machines Corporation | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system |
US8341612B2 (en) * | 2007-05-16 | 2012-12-25 | International Business Machines Corporation | Method and apparatus for run-time statistics dependent program execution using source-coding |
JP2009259089A (ja) * | 2008-04-18 | 2009-11-05 | Nec Corp | プログラム実行経路追跡装置、プログラム実行経路追跡方法、及びプログラム |
GB2466078B (en) * | 2008-12-15 | 2013-11-13 | Advanced Risc Mach Ltd | Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus |
-
2009
- 2009-04-30 CN CN200910136950.6A patent/CN101876934B/zh active Active
-
2010
- 2010-04-27 US US12/767,862 patent/US8132051B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880543A (zh) * | 2011-04-18 | 2013-01-16 | 埃森哲环球服务有限公司 | 用于集成测试平台的测试数据供应链管理器 |
CN105607989A (zh) * | 2014-11-18 | 2016-05-25 | 阿里巴巴集团控股有限公司 | 一种软件测试数据抽样方法及系统 |
CN108781280A (zh) * | 2017-12-25 | 2018-11-09 | 深圳市大疆创新科技有限公司 | 一种测试方法、装置及终端 |
CN108781280B (zh) * | 2017-12-25 | 2020-08-04 | 深圳市大疆创新科技有限公司 | 一种测试方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
US20100281310A1 (en) | 2010-11-04 |
US8132051B2 (en) | 2012-03-06 |
CN101876934B (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101876934B (zh) | 一种用于对输入数据进行采样的方法和系统 | |
US7844422B2 (en) | Method and system for changing a description for a state transition function of a state machine engine | |
CN109313567A (zh) | 虚拟化精确的基于事件的采样 | |
CN112862111B (zh) | 一种加速分布式机器学习梯度汇聚的方法和装置 | |
CN108205433A (zh) | 用来加速稀疏矩阵乘密集向量以及稀疏向量乘密集向量乘法的存储器到存储器指令 | |
CN104156197A (zh) | 微处理器以及微处理器操作方法 | |
CN112834249B (zh) | 转向参数检测方法、装置、设备及存储介质 | |
CN105955709A (zh) | 基于机器学习的预取能效优化自适应装置及方法 | |
CN101630291A (zh) | 虚拟存储系统和方法 | |
CN106547587A (zh) | 用于生成目标程序的配置文件的装置和方法 | |
CN104714997A (zh) | 提取装置、数据处理系统和提取方法 | |
CN105117369B (zh) | 一种基于异构平台的多种并行错误检测系统 | |
CN105159828B (zh) | 源代码级的上下文敏感性检测方法 | |
CN112506588A (zh) | 保险业务的数据处理方法、装置、电子设备及存储介质 | |
CN103176914B (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
CN110058958A (zh) | 用于管理数据备份的方法、设备和计算机程序产品 | |
CN113553482A (zh) | 停留点识别和出行链构建系统、算法、设备及存储介质 | |
CN108665235A (zh) | 资源处理节点的运行方法、终端设备及介质 | |
CN107229575A (zh) | 缓存性能的评估方法及装置 | |
CN110175206A (zh) | 用于多数据库分离的智能分析业务方法、系统及介质 | |
CN103488564A (zh) | 一种分布式实时测试系统多路测试数据压缩与归并方法 | |
CN104009884B (zh) | 网络业务流分组数与流长度并行测量装置 | |
CN111290305B (zh) | 多套惯导系统多路数字量采集与处理防冲突方法及系统 | |
US10896116B1 (en) | Detecting performance regressions in software for controlling autonomous vehicles | |
CN105387844A (zh) | 路面状况测定系统以及路面状况测定方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |