数据收集方法、装置、设备及存储介质与流程

文档序号:16998672发布日期:2019-03-02 01:34阅读:117来源:国知局
数据收集方法、装置、设备及存储介质与流程

本发明涉及大数据领域,尤其涉及一种数据收集方法、装置、设备及存储介质。



背景技术:

性能测试是通过自动化等手段模拟大量请求验证系统在各种业务场景下是否满足性能指标的过程。性能测试过程中需要统计平均响应时间、qps(每秒查询率)、异常数等性能指标,但是因为异步调用的特性,统计真实的接口执行时间在通用性能测试场景的情况下是无法完成的。

现有技术中,异步接口性能测试数据收集通常需要软件开发人员通过更改源代码,在源代码的开始和结尾增加打印日志或者写入数据库的方式从而获取执行时长和异常情况,在测试结束后再删除的方式进行收集统计,但此种操作方式带来了重新编译部署,手功分析日志或数据库记录的开销,以及增删过程中误操作引入缺陷的风险。另外,收集到的测试数据是日志或数据库中的零散数据,很难形成直观的性能趋势以及无法和其它性能指标一起分析汇总得到总体性能状况。

可见,现有的异步接口性能测试数据收集方式并不满足测试数据收集需求。所以如何提供一种无需更改任何源代码,且能够有效减少缺陷发生风险的数据收集方案,成为目前亟待解决的技术问题。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种数据收集方法、装置、设备及存储介质。

依据本发明实施例的一个方面,提供一种数据收集方法,包括:

在被测服务的接口的开始和结束位置进行插桩;

在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

将所述执行数据存入数据库。

可选地,所述执行数据包括:接口执行时间,和/或,接口运行异常情况。

可选地,收集所述接口执行时间的方式包括:

分别利用所述接口的开始位置和结束位置的插桩锚点抓取对应接口的开始和结束执行时间戳;

判断所述接口是否异步调用了其他接口,若是,则在抓取的接口结束执行时间戳和异步调用的各接口的结束执行时间戳中选择最大值,作为收集到的所述接口的结束执行时间戳;否则,以抓取的接口结束执行时间戳,作为收集到的所述接口的结束执行时间戳;

根据所述接口的开始执行时间戳和收集到的结束执行时间戳,得到所述接口的执行时间。

可选地,收集所述接口的运行异常情况的方式包括:

判断所述接口是否异步调用了其他接口;

若异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳和异步调用的各接口的结束执行时间戳中存在时间戳为空的情况时,判断出接口运行异常;

若未异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳为空时,判断出接口运行异常。

可选地,所述在被测服务的接口的开始和结束位置进行插桩,包括:

将代码修改组件配置到所述被测服务中,并利用配置的代码修改组件在所述被测服务的接口的开始和结束位置进行插桩。

依据本发明实施例的另一个方面,提供一种数据收集装置,包括:

插桩模块,用于在被测服务的接口的开始和结束位置进行插桩;

数据收集模块,用于在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

数据存储模块,用于将所述执行数据存入数据库。

可选地,所述执行数据包括:接口执行时间,和/或,接口运行异常情况。

可选地,所述数据收集模块,具体用于分别利用所述接口的开始位置和结束位置的插桩锚点抓取对应接口的开始和结束执行时间戳;判断所述接口是否异步调用了其他接口,若是,则在抓取的接口结束执行时间戳和异步调用的各接口的结束执行时间戳中选择最大值,作为收集到的所述接口的结束执行时间戳;否则,以抓取的接口结束执行时间戳,作为收集到的所述接口的结束执行时间戳;根据所述接口的开始执行时间戳和收集到的结束执行时间戳,得到所述接口的执行时间。

可选地,所述数据收集模块,具体用于判断所述接口是否异步调用了其他接口;若异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳和异步调用的各接口的结束执行时间戳中存在时间戳为空的情况时,判断出接口运行异常;若未异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳为空时,判断出接口运行异常。

可选地,所述插桩模块,具体用于将代码修改组件配置到所述被测服务中,并利用配置的代码修改组件在所述被测服务的接口的开始和结束位置进行插桩。

依据本发明实施例的第三个方面,提供一种计算设备,所述计算设备包括:存储器、处理器及通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;

所述处理器用于执行存储器中存储的数据收集程序,以实现如下方法步骤:

在被测服务的接口的开始和结束位置进行插桩;

在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

将所述执行数据存入数据库。

依据本发明实施例的第四个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现如下方法步骤:

在被测服务的接口的开始和结束位置进行插桩;

在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

将所述执行数据存入数据库。

本发明实施例有益效果如下:

本发明实施例所述方案,只需要在被测服务的接口的开始和结束位置进行插桩,利用插桩锚点即可进行数据收集。该收集方案,无需更改任何源代码,极大的减少工作量以及缺陷发生风险。

上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明第一实施例提供的一种数据收集方法的流程图;

图2为本发明第二实施例提供的一种数据收集方法的流程图;

图3为本发明第三实施例提供的一种数据收集方法的流程图;

图4为本发明第四实施例提供的一种数据收集方法的流程示意图;

图5为本发明第五实施例提供的一种数据收集装置的结构框图;

图6为本发明第六实施例提供的一种计算设备的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本发明第一实施例中,提供一种数据收集方法,可以但不限于应用在异步接口性能测试数据的收集场景,如图1所示,本实施例所述的数据收集方法包括如下步骤:

步骤s101,在被测服务的接口的开始和结束位置进行插桩;

本发明实施例中,需要进行插桩的接口可以是被测服务的所有接口,也可以是根据需求选定的部分接口,任何一种接口形式,都在本发明实施例的保护范围之内。

在本发明的一个可选实施例中,通过代码修改组件实现在接口中插桩。具体的,本步骤的实施过程为:

将代码修改组件配置到所述被测服务中,并利用配置的代码修改组件在所述被测服务的接口的开始和结束位置进行插桩。

在一个示例性实施例中,所述代码修改组件为javaagent,javaagent在接口中进行java插桩。

步骤s102,在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

该步骤示出了在性能测试阶段,进行性能数据的收集。本实施例中,所述的插桩锚点是指可以进行数据收集的插桩点。

本发明实施例中,接口的执行数据可以根据需求灵活配置,在一个示例性实施例中,所述执行数据包括:接口执行时间,和/或,接口运行异常情况。

步骤s103,将所述执行数据存入数据库。

在本发明的一个可选实施例中,为了提高数据存储效率,在收到执行数据后:

首先,将执行数据发送先到消息队列中间件;

其次,由数据存储方读取消息队列中间件中的数据,以把测试中的执行数据存入数据库。

具体的,本发明实施例中,可以利用数据库中存储的执行数据进行汇总统计,可以但不限于得到测试的平均响应时间,qps,异常数等测试性能指标。

综上可知,本发明实施例所述方法在被测服务的接口的开始和结束位置进行插桩,利用插桩锚点即可进行数据收集。该收集方案,无需更改任何源代码,极大的减少工作量以及缺陷发生风险。

在本发明第二实施例中,提供一种数据收集方法,可以但不限于应用在异步接口性能测试数据的收集场景。本实施例较第一实施例,将着重阐述一种执行数据的收集方式。与第一实施例相同的部分可参见第一实施例,本实施例不再赘述。

如图2所示,本实施例所述的数据收集方法包括如下步骤:

步骤s201,在被测服务的接口的开始和结束位置进行插桩;

步骤s202,在测试所述被测服务时,利用插桩锚点,收集所述接口的接口执行时间;

本发明实施例中,收集所述接口执行时间的方式包括:

分别利用所述接口的开始位置和结束位置的插桩锚点抓取对应接口的开始和结束时间戳;

判断所述接口是否异步调用了其他接口,若是,则在抓取的接口结束时间戳和异步调用的各接口的结束时间戳中选择最大值,作为收集到的所述接口的结束时间戳;否则,以抓取的接口结束时间戳,作为收集到的所述接口的结束时间戳;

根据所述接口的开始时间戳和收集到的结束时间戳,得到所述接口的执行时间。

本实施例中,考虑到当一个接口异步调用其他接口时,此时抓取的该接口的结束时间戳并不是实际的结束时间戳,所以,本实施例中,针对每个接口,需要判断该接口是否异步调用了其他接口,并在该接口和其他异步调用的接口中选择最后执行完毕的接口的结束时间戳作为该接口的结束时间戳。

例如,接口1异步调用了接口2和接口3,则接口1的最终结束时间戳为:max(接口1的结束时间戳,接口2的结束时间戳,接口3的结束时间戳)。

另外,还需要强调的是,接口2、接口3的结束时间戳为接口2、接口3的最终结束时间戳。也就是说,若接口2还异步调用了其他接口,则接口2的结束时间戳也要结合它异步调用的接口的时间戳来确定。

步骤s203,将接口执行时间存入数据库。

综上可知,本发明实施例所述方法在被测服务的接口的开始和结束位置进行插桩,利用插桩锚点可以对接口的执行时间进行收集。该收集方案,无需更改任何源代码,极大的减少工作量以及缺陷发生风险。

在本发明第三实施例中,提供一种数据收集方法,可以但不限于应用在异步接口性能测试数据的收集场景。本实施例较第一实施例,将着重阐述另一种执行数据的收集方式。与第一实施例相同的部分可参见第一实施例,本实施例不再赘述。需要说明的是,本实施例给出的执行数据收集过程可以与第二实施例所述执行数据收集过程同时执行,也可以根据需求选择其中一种数据执行收集过程。

如图3所示,本实施例所述的数据收集方法包括如下步骤:

步骤s301,在被测服务的接口的开始和结束位置进行插桩;

步骤s302,在测试所述被测服务时,利用插桩锚点,收集所述接口的运行异常情况;

本发明实施例中,收集所述接口的运行异常情况的方式包括:

判断所述接口是否异步调用了其他接口;

若异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳和异步调用的各接口的结束执行时间戳中存在时间戳为空的情况时,判断出接口运行异常;

若未异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳为空时,判断出接口运行异常。

也就是说,在测试过程中,若检测到接口或者其异步调用的接口的结束时间戳未采集到,说明接口执行异常,需要进行异常记录。

步骤s303,将接口的运行异常情况存入数据库。

综上可知,本发明实施例所述方法在被测服务的接口的开始和结束位置进行插桩,利用插桩锚点可以对接口的异常情况进行收集。该收集方案,无需更改任何源代码,极大的减少工作量以及缺陷发生风险。

在本发明第四实施例中,提供一种数据收集方法,本实施例将给出一个具体应用实例,对本发明的实施过程进行详细阐述。需要说明的是,本实施例公开的大量技术细节用于解释本发明,并不用于唯一限定本发明。

结合图4所示的流程示意图,本实施例所述数据收集方法包括如下步骤:

步骤1,利用javaagent和java插桩技术,通过参数配置在目标服务启动javaagent代理,同时在目标服务的接口的开始和结束位置进行插桩,本实施例中,目标服务的接口包括接口a和接口b,所以,在接口a和接口b的开始和结束位置进行插桩,得到接口a的开始位置插桩锚点a1和结束位置插桩锚点a2;得到接口b的开始位置插桩锚点b1和结束位置插桩锚点b2。

本实施例中,参数配置是指对javaagent代理进行配置,例如,配置所要收集的信息、在哪个类的哪个方法上进行插桩等等。

步骤2,使用常规性能测试工具模拟大量请求调用目标服务的接口。

步骤3,通过插桩锚点抓取目标接口开始和结束时间戳。本实施例中,接口a异步调用了接口b,则接口a的开始时间=插桩锚点a1抓取的时间戳,结束时间=max(插桩锚点a2抓取的时间戳,插桩锚点b2抓取的时间戳)。同时抓取接口运行异常情况,本实施例中,确定接口运行异常的方式为插桩锚点a2或插桩锚点b2抓取的时间戳为空,则判定接口a运行异常。

步骤4,javaagent把执行时间戳信息和异常信息发送到消息队列中间件。

步骤5,数据存储与统计服务消费消息队列中间件的数据,把测试中的所有时间戳和异常信息存入数据库。

步骤6,数据存储与统计服务根据测试过程中所有执行时长以及异常情况,进行统计汇总计算,最终得到平均响应时间,qps,异常数等指标,与其它性能指标一起通过界面从各种维度展示给用户。

在一个示例性实施例中,汇总统计平均响应时间的方式为:平均响应时间=所有请求响应时间的总和(毫秒)/完成请求的数量。

在一个示例性实施例中,汇总统计qps的方式为:qps=完成请求的数量/完成所有请求所花费的时长(秒)

例如:10个请求,每个响应时间是500毫秒,全部请求完成的时长是2秒,平均响应时间=500毫秒,qps=5request/second。

综上所述,利用本实施例所述的方法,无需更改任何源代码,减少工作量以及缺陷发生风险。并且,无需人工分析,简单配置,全自动汇总和分析。再者,综合性能指标报表展示,从各维度展示性能情况。

在本发明第五实施例中,提供一种数据收集装置,如图5所示,本实施例所述数据收集装置包括:

插桩模块510,用于在被测服务的接口的开始和结束位置进行插桩;

数据收集模块520,用于在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

数据存储模块530,用于将所述执行数据存入数据库。

在本发明的一个可选实施例中,插桩模块510通过代码修改组件实现在接口中插桩。具体的,插桩模块510将代码修改组件配置到所述被测服务中,并利用配置的代码修改组件在所述被测服务的接口的开始和结束位置进行插桩。

在本发明的一个可选实施例中,数据收集模块520收集的执行数据包括:接口执行时间,和/或,接口运行异常情况。

具体的,本实施例中,数据收集模块520,分别利用所述接口的开始位置和结束位置的插桩锚点抓取对应接口的开始和结束执行时间戳;判断所述接口是否异步调用了其他接口,若是,则在抓取的接口结束执行时间戳和异步调用的各接口的结束执行时间戳中选择最大值,作为收集到的所述接口的结束执行时间戳;否则,以抓取的接口结束执行时间戳,作为收集到的所述接口的结束执行时间戳;根据所述接口的开始执行时间戳和收集到的结束执行时间戳,得到所述接口的执行时间。

具体的,本实施例中,数据收集模块520,判断所述接口是否异步调用了其他接口;若异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳和异步调用的各接口的结束执行时间戳中存在时间戳为空的情况时,判断出接口运行异常;若未异步调用了其他接口,则在所述接口的结束位置的插桩锚点抓取的时间戳为空时,判断出接口运行异常。

在本发明的一个可选实施例中,可以利用数据库中存储的执行数据进行汇总统计,可以但不限于得到测试的平均响应时间,qps,异常数等测试性能指标。

本实施例中各功能模块的具体实施细节可以参见第一至第四方法实施例,本实施例不再赘述。

综上可知,本发明实施例所述装置在被测服务的接口的开始和结束位置进行插桩,利用插桩锚点即可进行数据收集。该收集方案,无需更改任何源代码,极大的减少工作量以及缺陷发生风险。

在本发明第六实施例中,提供一种计算设备,如图6所示,所述计算设备包括:存储器610、处理器620及通信总线630;所述通信总线630用于实现处理器620和存储器610之间的连接通信;

具体的,本发明实施例中,处理器620可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器610用于存储所述处理器620的可执行指令;

存储器610,用于存储程序代码,并将该程序代码传输给处理器620。存储器610可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器610也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器610还可以包括上述种类的存储器的组合。

具体的,本发明实施例中,处理器620用于执行存储器610中存储的应用程序中的数据收集程序,以实现如下方法步骤:

步骤1,在被测服务的接口的开始和结束位置进行插桩;

步骤2,在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

步骤3,将所述执行数据存入数据库。

本实施例中各步骤的实施过程可参见第一至第四实施例,本实施例不再赘述。

在本发明第七实施例中,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现如下方法步骤:

步骤1,在被测服务的接口的开始和结束位置进行插桩;

步骤2,在测试所述被测服务时,利用插桩锚点,收集所述接口的执行数据;

步骤3,将所述执行数据存入数据库。

本实施例中各步骤的实施过程可参见第一至第四实施例,本实施例不再赘述。

其中,计算机存储介质可以是ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域已知的任何其他形式的存储介质。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1