CN110795311B - 一种事件回放的方法及装置 - Google Patents
一种事件回放的方法及装置 Download PDFInfo
- Publication number
- CN110795311B CN110795311B CN201911046841.5A CN201911046841A CN110795311B CN 110795311 B CN110795311 B CN 110795311B CN 201911046841 A CN201911046841 A CN 201911046841A CN 110795311 B CN110795311 B CN 110795311B
- Authority
- CN
- China
- Prior art keywords
- event
- playback
- request
- service
- code
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- 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/3438—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 monitoring of user actions
-
- 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
Abstract
本申请公开了一种事件回放的方法及装置,客户端包括业务代码以及记录代码,可先通过业务代码监测用户行为,再通过业务代码根据该用户行为对应的事件,向目标发送执行请求,之后可通过记录代码拦截该执行请求,并根据拦截的执行请求执行该事件,最终通过记录代码存储该事件的事件内容,使得当需要进行事件回放时,可根据存储的事件的事件内容进行事件回放。本说明书通过存储事件的事件内容进行事件回放的方式,可更准确的重现用户行为和BUG产生的过程。解决了现有技术只能存储action函数的调用情况,导致用户行为回放不全面,难以准确分析用户行为以及难以确定BUG产生的原因的问题。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种事件回放的方法及装置。
背景技术
目前,用户可通过服务提供方提供的客户端执行业务,客户端可以为网页以及小程序(mini program)等。为了给用户提供更好的体验,服务提供方可通过分析用户行为,推送符合用户喜好的信息,或在出现在客户端出现BUG时,通过回放用户行为,排除客户端的BUG。通常服务提供方可通过记录用户行为的方法,重现用户行为,通过分析用户行为确定用户喜好,或者也可重现BUG产生的过程,确定BUG产生的原因以修复BUG。
在现有技术中,服务提供方可通过客户端的接口记录action函数的调用情况,确定用户行为。并且,已经有部分用于编写客户端代码的框架提供了这种接口(即,记录action函数调用情况的接口),但是由于现有框架只提供了记录action函数的调用情况的接口,所以当用户行为触发该客户端调用其他函数时,服务提供方无法通过现有框架确定用户行为。
当对用户行为进行回放以分析用户行为时,根据现有框架记录到的用户行为由于不够全面,导致回放不够全面,分析用户行为确定的用户喜好不准确。而当BUG的产生与调用action函数的用户行为没有关系时,则根据记录到的用户行为进行回放难以重现BUG产生的过程,导致难以确定BUG产生的原因。
发明内容
本说明书实施例提供了一种事件回放的方法及装置,以部分的解决现有技术存在的上述问题。
本说明书实施例采用下述技术方案:
本说明书提供一种事件回放的方法,客户端包括业务代码以及记录代码,包括:
通过所述业务代码监测用户行为;
通过所述业务代码确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求;
通过所述记录代码拦截所述执行请求,根据拦截的执行请求执行所述用户行为对应的事件;
通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,以当需要进行事件回放时,根据存储的事件的事件内容进行事件回放。
可选地,所述事件至少包括:本地事件以及网络请求事件,所述本地事件为所述业务代码向所述客户端本地的目标函数发送调用请求的事件,所述网络请求事件为所述客户端向业务服务端发送业务请求以及接收所述业务服务端返回业务数据的事件。
可选地,根据拦截的执行请求执行所述用户行为对应的事件,具体包括:
当通过所述业务代码根据确定出的本地事件发送所述调用请求时,通过所述记录代码根据拦截到的调用请求,确定所述目标函数;
通过所述记录代码向所述目标函数转发所述调用请求,使所述目标函数根据所述调用请求执行所述本地事件。
可选地,通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,具体包括:
通过所述记录代码,确定拦截所述调用请求时的时间戳;
根据确定出的时间戳以及所述调用请求,确定所述本地事件的事件内容;
存储确定出的所述本地事件的事件内容。
可选地,根据拦截的执行请求执行所述用户行为对应的事件,具体包括:
当通过所述业务代码根据确定出的网络请求事件发送所述业务请求时,通过所述记录代码根据拦截到的业务请求,确定所述业务服务端;
通过所述记录代码向所述业务服务端转发所述业务请求,使所述业务服务端根据所述业务请求返回所述业务数据;
通过所述记录代码接收所述业务服务端根据所述业务请求返回的所述业务数据,并将接收到的业务数据返回所述业务代码。
可选地,通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,具体包括:
通过所述记录代码确定发送所述业务请求时的时间戳,根据确定出的发送所述业务请求时的时间戳以及所述业务请求,确定所述网络请求事件包含的第一子事件的事件内容;
通过所述记录代码确定接收所述业务数据时的时间戳,根据确定出的接收所述业务数据时的时间戳以及所述业务数据,确定所述网络请求事件包含的第二子事件的事件内容;
存储确定出的所述网络请求事件包含的各子事件的事件内容。
可选地,当需要进行事件回放时,根据存储的事件的事件内容进行事件回放,具体包括:
接收回放系统发送的事件获取请求;
根据所述事件获取请求,从存储的各事件内容中确定用于回放的事件内容;
将确定出的事件内容发送至所述回放系统,以使所述回放系统根据接收到的事件内容以及事件内容包含的时间戳,进行事件回放。
本说明书提供一种事件回放的方法,包括:
回放系统向客户端发送事件获取请求;
接收所述客户端根据所述事件获取请求返回的事件内容,其中,接收到的事件内容为根据权利要求1-6任一种方法存储的;
根据接收到的事件内容,进行事件回放。
可选地,回放系统向客户端发送事件获取请求,具体包括:
所述回放系统确定回放时间范围;
将携带所述回放时间范围的所述事件获取请求发送至所述客户端;
接收所述客户端根据所述事件获取请求返回的事件内容,具体包括:
接收所述客户端根据所述事件获取请求返回的事件内容,所述事件内容包含的时间戳落入所述回放时间范围。
可选地,所述回放系统包含业务代码以及回放代码;
根据接收到的事件内容,进行事件回放,具体包括:
若接收到的事件内容为多个,则根据各事件内容包含的时间戳,通过所述业务代码依次执行各事件。
可选地,根据接收到的事件内容,进行事件回放,具体包括:
针对每个事件内容,当该事件内容为本地事件包含的事件内容时,所述回放系统通过所述回放代码,将该事件内容发送至所述业务代码,以使所述业务代码根据接收到的该事件内容向所述目标函数发送所述调用请求,以执行所述本地事件。
可选地,根据接收到的事件内容,进行事件回放,具体包括:
针对每个事件内容,当该事件内容为网络请求事件包含的第一子事件的事件内容时,所述回放系统通过所述回放代码,将该事件内容发送至所述业务代码,以使所述业务代码根据该事件内容,向所述业务服务端发送所述业务请求;
所述回放系统通过所述回放代码,拦截向所述业务服务端发送的所述业务请求。
可选地,根据接收到的事件内容,进行事件回放,具体包括:
针对每个事件内容,当该事件内容为网络请求事件包含的第二子事件的事件内容时,所述回放系统通过所述回放代码根据该事件内容,确定业务数据,并将确定出的业务数据返回所述业务代码。
本说明书提供一种事件回放的装置,包括:
监测模块,监测用户行为;
发送模块,确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求;
执行模块,拦截所述执行请求,根据拦截的执行请求执行所述用户行为对应的事件;
存储及回放模块,根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,以当需要进行事件回放时,根据存储的事件的事件内容进行事件回放。
本说明书提供一种事件回放的装置,包括:
发送模块,发送事件获取请求;
接收模块,接收所述客户端根据所述事件获取请求返回的事件内容,其中,接收到的事件内容为根据权利要求1-6任一种方法存储的;
回放模块,根据接收到的事件内容,进行事件回放。
本说明书提供的一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述事件回放的方法。
本说明书提供的一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述事件回放的方法。
本说明书实施例采用的上述技术方案能够达到以下有益效果:
客户端包括业务代码以及记录代码,在实现事件回放的过程中,可先通过业务代码监测用户行为,并通过业务代码根据监测到的用户行为,确定该用户行为对应的事件,再通过该业务代码向目标发送执行请求,之后可通过记录代码拦截该执行请求,并根据拦截的执行请求执行该事件,最终通过记录代码存储该事件的事件内容,使得当需要进行事件回放时,可根据存储的事件的事件内容进行事件回放。本说明书通过存储的事件内容进行事件回放的方式,可更准确的重现用户行为和BUG产生的过程。解决了现有技术中只能存储action函数的调用情况,导致用户行为回放不全面,难以准确分析用户行为以及难以确定BUG产生的原因的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种事件回放的流程示意图;
图2a为本说明书实施例提供的执行本地事件的过程示意图;
图2b为现有技术中执行本地事件的过程示意图;
图3a为本说明书实施例提供的执行网络请求事件的过程示意图;
图3b为现有技术中执行网络请求事件的过程示意图;
图4为本说明书实施例提供的一种事件回放的流程示意图;
图5为本说明书实施例提供的根据时间戳执行各事件的示意图;
图6为本说明书实施例提供的测试机中客户端的示意图;
图7为本说明书实施例提供的本地事件回放的示意图;
图8a为本说明书实施例提供的网络请求事件的第一子事件回放的示意图;
图8b为本说明书实施例提供的网络请求事件的第二子事件回放的示意图;
图9为本说明书实施例提供的一种事件回放装置的结构示意图;
图10为本说明书实施例提供的一种事件回放装置的结构示意图;
图11为本说明书实施例提供的基于事件回放方法的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有技术中,服务提供方在编写客户端时,可通过编写客户端代码的框架中提供的接口,在客户端中预留获取action函数的调用情况的接口,则在客户端运行时,可通过该接口获取客户端中action函数的调用情况。
例如,在基于flux框架编写的客户端中,可通过flux框架提供的接口确定action函数的调用情况。但是对于不是基于flux框架编写的客户端,或者编写客户端的可编程语言没有提供获取调用情况的接口,则服务提供方无法获取action函数的调用情况。
并且,当用户行为触发的是客户端调用其他函数时,由于编写客户端代码的框架只提供了用于记录action函数调用情况的接口,因此通过该接口无法获取其他函数的调用情况。导致客户端不能全面的记录各函数的调用情况,在回放时难以准确分析用户行为以及重现BUG产生的过程。
而在框架没有提供接口的情况下,若想记录其他函数的调用情况,服务提供方需要编写用于记录其他函数的调用情况的代码。例如,假设用户的滑动操作未调用action函数而调用了X函数,则不能根据记录action函数调用情况的代码记录该X函数的调用情况,需要相应编写记录该X函数调用情况的代码,通过记录该X函数的调用情况,确定用户的滑动操作。这就使得,针对每个想要记录调用情况的函数来说,服务提供方在开发客户端代码时,都需要对应该函数编写用于记录该函数调用情况的代码。一方面增加了客户端的开发成本,另一方面也使得需要记录调用情况的函数越多客户端越臃肿。
于是,为了更准确分析用户行为以及更准确的重现BUG产生的过程,协助开发人员完善该客户端,本说明书提供了一种事件回放的方法,以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书提供的一种事件回放的流程示意图,具体可包括以下步骤:
S100:通过所述业务代码监测用户行为。
在本说明书中,通过记录用户行为触发的客户端执行的事件,使得通过记录的事件的事件内容,可进行事件回放,并通过事件回放对用户行为分析或确定客户端BUG产生原因。其中,该客户端安装在用户使用的终端中,该客户端可包括浏览器客户端、小程序客户端等,该终端可包括手机、平板电脑等设备。
在本说明书中该客户端可包含记录代码与业务代码,其中,该业务代码为客户端中根据用户行为执行业务的代码,该记录代码为客户端中记录用户行为触发的事件的事件内容的代码,通过记录代码该客户端可存储用户在客户端内的用户行为对应的事件的事件内容。例如,当用户滑动界面时,该滑动手势操作就会触发执行滑动界面业务的业务代码,由该业务代码调用相应函数执行滑动界面业务,使客户端中显示的界面滑动,而记录代码则记录该滑动行为对应的事件的事件内容。
具体的,该客户端在启动后,可通过该客户端内的业务代码,监测用户行为,以便当用户行为触发该客户端内的业务代码时,可通过该业务代码执行业务。如,用户在页面内点击了支付按钮,该用户行为触发了执行支付业务的业务代码,即,客户端通过该执行支付业务的业务代码监测到了该用户点击支付按钮的行为。
S102:通过所述业务代码确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求。
在本说明书中,当该客户端通过该业务代码监测到用户行为后,该客户端便可通过该业务代码确定监测到的用户行为对应的事件,并通过该业务代码根据确定出的事件向目标发送执行请求,以执行确定出的事件。其中,用户行对应的事件的类型可包括:本地事件以及网络请求事件。
在本说明书中,本地事件是指业务代码向客户端本地的目标函数发送调用请求的事件。该客户端在通过业务代码执行本地事件时,可先通过业务代码根据该本地事件,确定该本地事件的事件内容以及执行该本地事件的目标函数,之后通过业务代码向确定出的目标函数发送调用请求,该调用请求包含该本地事件的事件内容以及该目标函数的地址,使该目标函数在接收到该调用请求后,根据调用请求中包含的该本地事件的事件内容执行业务。
网络请求事件是指由用户行为引起的从该客户端向业务服务端发送业务请求,以及接收该业务服务端根据该业务请求返回的业务数据的事件。具体的,该客户端在通过该业务代码执行网络请求事件时,可先通过该业务代码根据该网络请求事件,确定该网络请求事件的事件内容以及执行该网络请求事件的业务服务端,之后通过该业务代码向确定出的该业务服务端发送该业务请求,该业务请求包含该网络请求事件的事件内容以及该业务服务端的地址,使该业务服务端根据接收到的该业务请求进行处理并返回业务数据,则该客户端在通过该业务代码接收该业务数据时,可对该业务数据进行处理。将发送该业务请求的事件作为网络请求事件的第一子事件,将接收该业务数据并进行处理的事件作为网络请求事件的第二子事件。其中,该业务服务端为向客户端提供业务支持的代码,具体可安装于服务提供方的业务服务器中,用于根据接收到的业务请求确定需要向该客户端返回的业务数据。
例如,客户端在播放视频时,需要根据视频播放进度不断向服务器发送获取视频数据的请求。则当用户行为是触发视频播放的行为时,该客户端每次通过播放视频的业务代码向业务服务端发送获取视频数据的业务请求,可视为是网络请求事件的第一子事件,而该客户端接收该业务服务端返回的视频数据(即业务数据),并提供给播放视频的业务代码,可视为是该网络请求事件的第二子事件。在视频播放过程中,每次客户端发送业务请求以及接收业务数据的网络请求事件,均为该触发视频播放的用户行为引起的网络请求事件。
S104:通过所述记录代码拦截所述执行请求,根据拦截的执行请求执行所述用户行为对应的事件。
在本说明书中,为了能够根据存储的事件内容进行事件回放,当该客户端通过该业务代码根据确定出的事件向目标发送执行请求之后,该客户端可通过该记录代码拦截该执行请求,以便后续可根据拦截到的该执行请求存储事件内容。并且,为了不妨碍该客户端业务的正常执行,该客户端在通过该记录代码拦截该执行请求后,还可根据该执行请求执行该用户行为对应的事件。
具体的,当该客户端通过业务代码监测到的用户行为对应的事件为本地事件时,该客户端在通过业务代码向目标函数发送调用请求后,该客户端可先通过记录代码拦截该调用请求,再根据该调用请求确定该目标函数,最后通过该记录代码向该目标函数转发该调用请求以执行该事件,如图2a所示。
图2a为本说明书实施例提供的执行本地事件的过程示意图,图2b为现有技术中执行本地事件的过程示意图,可见在图2b所示的现有技术中,用户在使用该终端中安装的客户端时,客户端可监测用户行为,并确定用户行为触发业务代码,由该被触发的业务代码向目标函数发送调用请求,以通过调用该目标函数执行本地事件。而区别于现有技术在图2a中,该业务代码在向目标函数发送调用请求时,该客户端通过该记录代码拦截了该调用请求,并由该记录代码根据该调用请求确定该目标函数,并向确定出的目标函数转发该调用请求以执行该本地事件。
另外,若确定监测到的用户行为对应的事件为网络请求事件,在该客户端通过该业务代码向业务服务端发送业务请求后,该客户端可先通过记录代码拦截了该业务请求,并根据该业务请求确定该业务服务端,再向该业务服务端发送该业务请求,使该业务服务端在接收到该客户端发送的业务请求后,可通过执行业务确定业务数据并返回该客户端。于是,该客户端还可通过该记录代码接收该业务服务端返回的该业务数据,并由该记录代码将该业务数据返回该业务代码,如图3a所示。
图3a为本说明书实施例提供的执行网络请求事件的过程示意图,图3b为现有技术中执行网络请求事件的过程示意图,可见在图3b所示的现有技术执行网络请求事件的过程中,用户在使用终端中安装的客户端时,客户端可监测用户行为,并确定用户行为触发业务代码,若该业务代码的实现的功能是向业务服务端发送业务请求时,该客户端可通过该业务代码向安装在业务服务器中的业务服务端发送业务请求,并通过该业务代码接收该业务服务端返回的业务数据,以处理接收到的业务数据。而区别于现有技术在图3a中,该客户端通过记录代码拦截了该业务代码向该业务服务端发送的业务请求,并由该记录代码根据该业务请求确定业务服务端,并向确定出的业务服务端转发该业务请求,以使该业务服务端接收该业务请求,并由该业务服务器根据接收到的业务请求进行处理再通过该业务服务端返回业务数据,则该客户端在通过该记录代码接收该业务服务端返回的业务数据后,再将接收到的业务数据返回给该业务代码。
S106:通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,以当需要进行事件回放时,根据存储的事件的事件内容进行事件回放。
在本说明书中,由于该客户端已经通过记录代码拦截了该执行请求,因此在步骤S106中,该客户端可通过记录代码根据拦截到的该执行请求,确定用户行为对应的事件的事件内容,并存储确定出的事件内容,以当需要进行事件回放时可根据存储的事件内容进行事件回放。
具体的,若该客户端通过记录代码拦截的为本地事件的调用请求时,则可通过该记录代码确定拦截该调用请求时的时间戳,再根据该时间戳以及该调用请求,确定该本地事件的事件内容,并存储该本地事件的事件内容。
若该客户端通过记录代码拦截的为网络请求事件的业务请求时,则可通过该记录代码确定发送该业务请求时的时间戳,再根据确定出的该时间戳以及该业务请求,确定该网络请求事件包含的第一子事件的事件内容。在该客户端通过该记录代码接收业务数据时,可通过记录代码确定接收业务数据时的时间戳,再根据确定出的该时间戳以及该业务数据,确定该网络请求事件包含的第二子事件的事件内容,最后存储该网络请求事件包含的各子事件的事件内容。
另外,当根据用户反馈信息进行事件回放时,客户端可接收回放系统发送的事件获取请求,通过该记录代码确定该事件获取请求中包含的回放时间范围,并从存储的各事件内容中,确定事件内容中包含的时间戳落入该回放时间范围内的事件内容,作为用于回放的事件内容。之后,该客户端可将确定出的用于回放的事件内容发送至该回放系统,使该回放系统在接收到用于回放的事件内容后,可根据各事件内容中包含的时间戳,依次对接收到的各事件内容进行回放。
对于不满足存储条件的用户行为对应的事件,该记录代码仍需执行该事件,但是并不存储该事件的事件内容。当需要根据用户反馈信息进行回放时,根据存储的事件的事件内容进行回放,也就是根据满足存储条件的用户行为对应的事件的事件内容进行回放。
基于图1所示的事件回放的过程,客户端包括业务代码以及记录代码,在实现事件回放的过程中,可先通过业务代码监测用户行为,再通过业务代码根据监测到的用户行为,确定该用户行为对应的事件,再通过该业务代码向目标发送执行请求,之后可通过记录代码拦截该执行请求,并根据拦截的执行请求执行该事件,最终通过记录代码存储该事件的事件内容,使得当需要进行事件回放时,可根据存储的事件的事件内容进行事件回放。本说明书通过存储的事件内容进行事件回放的方式,可准确的重现用户行为和BUG产生的过程。解决了现有技术中只能存储action函数的调用情况,导致用户行为回放不全面,难以准确分析用户行为以及难以确定BUG产生的原因的问题。
在本说明书中,客户端中通过该业务代码调用该客户端本地的目标函数的事件属于本地事件,而通过该业务代码向业务服务端发送业务请求以及接收该业务服务端返回业务数据的事件属于网络请求事件。即,该客户端中用户行为对应的事件包括:本地事件以及网络请求事件。用户行为在客户端内触发的任何业务代码,该业务代码执行的任何事件都属于用户行为对应的事件。
进一步地,在本说明书中本地事件以及网络请求事件也可按照业务维度或者时间维度细分为多种事件,例如,本地事件按业务维度又可分为本地支付业务事件、本地登录业务事件等事件,网络请求事件按业务维度也可分为更新页面请求事件、返回信息请求事件等事件,本地事件按时间维度可分为当日本地事件、历史本地事件等事件,网络请求事件按时间维度也可分为当日网络请求事件、历史网络请求事件等事件。
另外,在步骤S106中,在根据存储的事件的事件内容重现BUG产生的过程,以确定BUG产生的原因时,由于用户在客户端内的行为对应的事件有些导致BUG产生的概率较大,但有些导致BUG产生的概率较小,因此为了减少存储的数据量,对于确定出的每个事件内容,记录代码可根据预设的存储条件,判断是否记录该事件内容。如,记录代码可仅存储导致BUG出现概率较大的事件内容,而不存储导致BUG产生概率较小的事件内容。
具体的,该存储条件可根据需要设置,本说明书不做限定。例如,由开发人员根据经验确定导致BUG产生概率较大的事件内容为:调用A函数的本地事件、向业务服务端B发送业务请求使该业务服务端B返回业务数据C的网络请求事件。则可根据上述导致BUG产生概率较大的事件内容,设置存储条件。当记录代码根据该存储条件判断是否存储确定出的事件内容时,具体可判断确定出的该事件内容,是否为向函数A发送调用请求,或者向业务服务端B发送业务请求并接收业务服务端B返回业务数据C,若是,则确定符合存储条件对该事件内容进行存储,若否,则确定不符合存储条件不对该事件内容进行存储。
进一步地,在根据存储的事件的事件内容进行用户行为分析时,由于有些用户行为难以反映用户的行为习惯、喜好等等,因此对于确定出的每个事件内容,记录代码可根据预设的存储条件,判断是否记录该事件内容,以减少存储的数据量、提高确定出的用户喜好的准确度等等。例如,由于大多数用户的登录操作都是相同的常规操作,所以难以反映用户的行为习惯、喜好等等,使得通过记录的用户登录操作对应的事件,难以分析用户喜好。因此该记录代码可不存储难以反映用户的行为习惯、喜好的事件内容,通过存储能够便于反映该用户的行为习惯、喜好的事件内容,提高用户行为分析的效率、减少存储的数据量。
在步骤S106中,该客户端在通过该记录代码记录确定拦截执行请求时的时间戳时,通过该记录代码可将在该客户端启动时,记录的该客户端的启动时间作为基准时间,在通过该记录代码拦截执行请求时,通过performance.now函数确定拦截该执行请求时的时间与该基准时间的偏移量,根据该偏移量确定时间戳。
但是,在某些情况下BUG产生的原因,可能也与格林威治时间有关(如,千年虫BUG),因此若需要确定拦截该执行请求时的格林威治时间,也可根据基准时间对应的格林威治时间,以及拦截该执行请求时的时间与该基准时间的偏移量,确定事件发生的格林威治时间。
由于客户端有多种类型,对于不同类型的客户端,采用的编写语言也不完全相同,因此针对每种类型的客户端,都需要编写该客户端类型对应的记录代码。为了减少服务提供方开发人员的工作量,可通过适配器实现在各种类型的客户端中使用由一种方法编写的记录代码。该记录代码在转发执行请求时,可根据适配器提供的接口代码确定目标,以向该目标转发该执行请求。于是,在本说明书中,该客户端内存储有对应该客户端类型的适配器。在本说明书的步骤S104中,通过记录代码拦截执行请求后,该客户端还可通过该适配器确定向该目标转发该执行请求的方式。例如,假设客户端在通过业务代码向目标函数发送调用请求时,通过该记录代码拦截该调用请求,并通过客户端存储的适配器确定发送该调用请求的接口代码,根据运行该接口代码向该目标函数发送该调用请求。
另外,由于目前客户端类型有多种,在利用超文本标记语言第五版(HyperTextMarkup Language5,H5)编写的网页客户端中,业务代码可为文档对象模型(DocumentObject Model,DOM)节点。也就是说,用户在利用H5编写的网页客户端中的用户行为会触发DOM节点,以使DOM节点向目标发送执行请求执行该事件。在小程序客户端中,业务代码可为微信标签语言(WeiXin Markup Language,WXML)节点,也就是说,用户在小程序客户端中的用户行为会触发WXML节点,以使WXML节点向目标发送执行请求执行该事件。因此,本说明书中对于业务代码的具体形式不做限定,如上述可以是DOM节点形式的业务代码,或者是WXML节点形式的业务代码等等,可根据需要设置。
基于图1所示事件回放的过程,本说明书还提供回放系统执行的事件回放的过程,如图4所示。
图4为本说明书提供的一种事件回放的流程示意图,具体可包括以下步骤:
S400:回放系统向客户端发送事件获取请求。
在本说明书实施例中,该回放系统为服务提供方用于进行事件回放的系统,从硬件层面来说该回放系统可包括回放服务器以及测试机,从软件层面来说该回放系统可包括回放代码以及业务代码。其中,该回放服务器以及该测试机中均可包含回放代码,并且,位于该回放服务器以及该测试机的回放代码实现的功能不完全相同。该回放服务器可通过回放代码向用户的客户端发送事件获取请求以获取事件内容,并将接收到的事件内容发送至该测试机中的回放代码,该测试机可通过回放代码接收该回放服务器中的回放代码发送的事件内容。
进一步地,该回放系统的测试机中安装有客户端,用于进行事件回放,需要说明的是测试机中安装的客户端与用户使用的客户端不完全相同,测试机中安装的客户端是用于进行事件回放的客户端,可包括回放代码以及业务代码,如图6所示。其中,客户端中的回放代码用于接收该回放服务器中的回放代码发送的事件内容,并触发该客户端中的业务代码进行事件回放。
该回放系统可通过回放代码根据服务提供方提供的时间信息,从用户所在客户端获取用于回放的事件的事件内容,以通过事件回放分析用户行为或确定BUG产生的原因。
具体的,首先该回放系统的回放服务器可通过回放代码根据服务提供方提供的时间信息,确定需要获取的事件对应的回放时间范围。
其中,当该回放系统进行事件回放的目的是分析用户行为,确定用户喜好时,该回放时间范围可根据需要分析的时间段确定,例如,需要分析某A下班后使用客户端的行为,则可确定需要分析的时间段为19:00~23:00,于是该回放系统可确定回放时间范围为19:00~23:00。当用户反馈客户端使用时出现BUG时,该回放系统需要重现BUG产生的过程,以确定BUG产生的原因,则该回放时间范围可根据BUG产生的时间确定,其中,该BUG产生的时间可根据用户反馈信息确定。
其次再确定需要发送获取请求的客户端。该回放系统在确定需要发送获取请求的客户端时,若该回放系统进行事件回放的目的是分析用户行为,则可通过回放代码根据该服务提供方提供的被分析用户的账户标识,确定该账户标识登录的客户端,以向确定出的客户端发送该事件获取请求。若该回放系统进行事件回放的目的是重现BUG产生的过程,则可通过回放代码根据用户反馈信息确定该用户的账户标识,再根据确定出的账户标识,确定该账户标识登录的客户端,即为用户执行业务时产生BUG的客户端,以向确定出的客户端发送该事件获取请求。
最后通过回放代码向确定出的客户端发送携带该回放时间范围的事件获取请求,以获取该回放时间范围的事件的事件内容并进行回放。
当然,本说明书并不限定该回放系统确定回放时间范围与确定客户端的先后顺序,可根据需要设置。
S402:接收所述客户端根据所述事件获取请求返回的事件内容。
在本说明书中,当该回放系统通过步骤S400向该客户端发送该事件获取请求后,该客户端中的记录代码便可根据该事件获取请求中携带的回放时间范围,从存储的各事件内容中确定需要返回该回放系统的事件内容,之后再将确定出的需要返回的事件内容发送至该回放系统,其中,返回该回放系统的事件内容为:事件内容中包含的时间戳落入该回放时间范围内的事件内容。
于是,在步骤S402中该回放系统的回放服务器可通过回放代码接收该客户端发送的用于回放的事件内容。其中,该用于回放的事件的事件内容是由该客户端监测并存储的,具体的,监测并存储事件内容的过程可参考图1中的步骤S100-步骤S106的描述。当然,由于在上述步骤S100-步骤S106对应的说明书中已经进行了详细描述,因此本说明书在此对事件内容的存储过程不再赘述。
S404:根据接收到的事件内容,进行事件回放。
在本说明书中,该回放系统的回放服务器在通过回放代码接收到该客户端返回的事件的事件内容后,可由回放服务器通过回放代码将接收到的事件内容发送至测试机的回放代码,由测试机通过回放代码以及业务代码进行事件回放。
具体的,由该回放系统进行事件回放时,若接收到的事件内容为多个,可由该回放系统中测试机通过回放代码,根据接收到的各事件内容中包含的时间戳以及各事件内容,再通过业务代码依次执行各事件。
在本说明书中,该回放系统的测试机首先可通过回放代码从接收到的各事件内容包含的时间戳中,确定最小的时间戳为起始时间戳,确定包含该起始时间戳的事件内容为起始事件内容,并进行事件回放。其次,针对每个其他事件内容,确定该其他事件内容包含的时间戳与该起始时间戳的时间间隔,并当根据该起始事件内容进行事件回放后的时长达到该时间间隔时,根据该其他事件内容进行事件回放。
或者,在本说明书中,该回放系统的测试机还可通过回放代码利用requestAnimationFrame函数,按帧对接收到的各事件内容进行回放。当然,由于通过requestAnimationFrame函数按帧进行回放已经是现有技术中较为成熟的方法,因此对回放过程不再赘述。并且,提供该事件内容的该客户端在存储各事件内容时,客户端可通过记录代码中也需要根据该客户端所在终端系统的系统刷新频率,在步骤S106中确定各事件内容中包含对应的帧数,并存储。
例如,该客户端所在终端系统的系统刷新频率为60帧,每帧时长1/60秒,则在事件回放时回放系统根据接收到事件内容中包含的时间戳的触发时间的先后顺序以1/60秒为单位,确定出每帧中需要回放的事件内容,按帧对接收到的各事件内容进行回放。
如图5所示,图5为根据时间戳执行各事件的示意图,以客户端启动时间作为基准时间,记为T0,根据记录代码提供的时间戳,依次存储包含时间戳T1的事件内容1、包含的时间戳T2的事件内容2,以此类推。图5下方为回放系统的测试机通过回放代码按照接收到的各事件内容中包含的时间戳,对各事件进行回放,假设回放系统确定出的时间范围为Ta-Tb,则客户端向该回放系统返回的事件内容包括:包含时间戳T3的事件内容3、包含时间戳T4的事件内容4以及包含时间戳T5的事件内容5。
在进行事件回放时,回放系统的测试机可以通过回放代码,将接收到的各事件内容包含的时间戳最小的时间戳T3作为起始时间戳,先根据事件内容3进行事件回放,之后在经过t1时长后,即,经过T3与T4的时间间隔后,根据事件内容4进行事件回放,最后在再次经过t2时长后,即,经过T4与T5的时间间隔后,根据事件内容5进行事件回放。
或者,回放系统的测试机可以通过回放代码利用requestAnimationFrame函数按帧对各事件进行回放。在进行事件回放时,回放系统的测试机通过回放代码对于获取到的帧3、帧4、帧5三帧内的事件进行回放,按照各事件内容中包含的时间戳对应的帧数的顺序,依次回放帧3内的事件内容3、事件内容4以及帧5内的事件内容5。其中,帧4内没有触发事件。
针对接收到的每个事件内容,当该事件的事件内容为本地事件包含的事件内容时,由回放系统通过测试机中的回放代码根据该事件内容,确定出该事件所触发的测试机中的业务代码以及执行该事件的目标函数,然后将该事件发送至确定出的业务代码,再通过该业务代码向确定出的目标函数发送该事件对应的调用请求,以调用目标函数执行该事件,如图7所示。
针对接收到的每个事件内容,当该事件的事件内容为网络请求事件包含的第一子事件的事件内容时,该回放系统通过测试机中的回放代码根据该事件内容,确定该事件内容对应的事件触发的测试机中的业务代码以及执行该事件的业务服务器中的业务服务端,通过测试机中的回放代码将该事件内容发送至确定出的业务代码,通过该测试机中的业务代码向确定出的业务服务端发送该事件对应的业务请求,再通过该测试机中的回放代码拦截该业务请求,如图8a所示。
针对接收到的每个事件内容,当该事件的事件内容为网络请求事件包含的第二子事件的事件内容时,该回放系统通过测试机中的回放代码根据该事件内容,确定业务数据以及该事件内容包含的时间戳,根据确定出的时间戳,该回放系统通过测试机中的回放代码将确定出的业务数据返回至该测试机中的业务代码,实现了网络请求事件各子事件的回放,如图8b所示。
在对事件进行回放时,对于本地事件以及网络请求事件,事件回放的顺序都是按照时间先后顺序进行回放的,并不按照不同事件类型分别进行回放。当然,若接收到的事件内容为一个,则在回放该事件内容对应的事件时,无需根据该事件内容包含的时间戳进行事件回放。
基于图4所示的事件回放的过程,回放系统向客户端发送事件获取请求,之后接收该客户端根据该事件获取请求返回的事件内容,其中,接收到的事件内容为根据图1所示的事件回放方法中描述的事件内容的存储过程存储的,最后根据接收到的事件内容,进行事件回放。本说明书通过存储的事件内容进行事件回放的方式,可准确的重现用户行为和BUG产生的过程。解决了现有技术中只能存储action函数的调用情况,导致用户行为回放不全面,难以准确分析用户行为以及确定BUG产生的原因的问题。
在上述基于图4所示的事件回放过程中,以回放系统包含回放服务器和测试机为例进行说明,步骤S400-S402可由该回放系统中的回放服务器执行,步骤S404可在该回放系统中的回放服务器通过回放代码将接收到的事件内容发送至测试机后,由测试机执行。
此外,该回放系统也可仅包含回放服务器,则回放服务器中包含回放代码和业务代码,其中,回放服务器可通过搭建终端系统的虚拟环境,在该虚拟环境中安装包含业务代码的客户端,以进行事件回放。具体的,该回放服务器可通过回放代码向用户的客户端发送事件获取请求以获取事件内容,并将接收到的事件内容发送至该虚拟环境中客户端的业务代码,以进行事件回放,上述步骤S400-S404可均由回放服务器执行。
当然,回放服务器在该虚拟环境中安装客户端也可包含业务代码和回放代码,其中,该回放代码用于向用户的客户端发送事件获取请求以获取事件内容,该业务代码用于根据接收到的事件内容进行事件回放。
另外在本申请步骤S400中,该回放系统也可不根据该服务提供方提供的时间信息,确定回放时间范围,而直接向确定出的客户端发送事件获取请求,以接收该客户端的全部事件的事件内容。则后续步骤S402以及步骤S404该回放系统可根据接收到的事件内容,进行全部事件的回放,以分析用户行为或确定BUG产生的原因。
图9为本说明书实施例提供的一种事件回放的装置的结构示意图,包括:
监测模块800,监测用户行为;
发送模块802,确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求;
执行模块804,拦截所述执行请求,根据拦截的执行请求执行所述用户行为对应的事件;
存储及回放模块806,根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,以当需要进行事件回放时,根据存储的事件的事件内容进行事件回放。
可选地,所述事件至少包括:本地事件以及网络请求事件,所述本地事件为所述业务代码向所述客户端本地的目标函数发送调用请求的事件,所述网络请求事件为所述客户端向业务服务端发送业务请求以及接收所述业务服务端返回业务数据的事件。
可选地,所述执行模块804具体用于:根据确定出的本地事件发送所述调用请求,并根据拦截到的调用请求,确定所述目标函数,再向所述目标函数转发所述调用请求,使所述目标函数根据所述调用请求执行所述本地事件。
可选地,所述存储及回放模块806具体用于,确定拦截所述调用请求时的时间戳,根据确定出的时间戳以及所述调用请求,确定所述本地事件的事件内容,存储确定出的所述本地事件的事件内容。
可选地,所述执行模块804具体用于,根据确定出的网络请求事件发送所述业务请求,并根据拦截到的业务请求,确定所述业务服务端,再向所述业务服务端转发所述业务请求,使所述业务服务端根据所述业务请求返回所述业务数据,接收所述业务服务端根据所述业务请求返回的所述业务数据,并将接收到的业务数据返回所述业务代码。
可选地,所述存储及回放模块806具体用于,确定发送所述业务请求时的时间戳,根据确定出的发送所述业务请求时的时间戳以及所述业务请求,确定所述网络请求事件包含的第一子事件的事件内容,并确定接收所述业务数据时的时间戳,根据确定出的接收所述业务数据时的时间戳以及所述业务数据,确定所述网络请求事件包含的第二子事件的事件内容,存储确定出的所述网络请求事件包含的各子事件的事件内容。
可选地,所述存储及回放模块806具体用于,接收回放系统发送的事件获取请求,根据所述事件获取请求,从存储的各事件内容中确定用于回放的事件内容,将确定出的事件内容发送至所述回放系统,以使所述回放系统根据接收到的事件内容以及事件内容包含的时间戳,进行事件回放。
在上述基于图1所示的事件回放的方法中,该客户端通过业务代码监测用户行为,并根据监测到的用户行为对应的事件,向确定出的目标发送执行请求以执行该事件。该客户端通过记录代码拦截执行请求以存储该事件的事件内容。相应的在图9所示的本说明书实施例提供的该事件回放装置中,监测模块800实现了事件回放的方法中该客户端中业务代码的监测用户行为的功能,发送模块802实现了事件回放的方法中该客户端中业务代码的确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求的功能,执行模块804实现了事件回放的方法中该客户端中记录代码的拦截所述执行请求,根据拦截的执行请求执行所述用户行为对应的事件的功能,存储及回放模块806实现了事件回放的方法中该客户端中记录代码的根据拦截的执行请求,存储所述用户行为对应的事件的事件内容的功能。
图10为本说明书实施例提供的一种事件回放的装置的结构示意图,包括:
发送模块900,发送事件获取请求;
接收模块902,接收所述客户端根据所述事件获取请求返回的事件内容,其中,接收到的事件内容为根据权利要求1-6任一种方法存储的;
回放模块904,根据接收到的事件内容,进行事件回放。
可选地,所述发送模块900具体用于,确定回放时间范围,将携带所述回放时间范围的所述事件获取请求发送至所述客户端。
可选地,所述接收模块902具体用于,接收所述客户端根据所述事件获取请求返回的事件内容,具体包括:
接收所述客户端根据所述事件获取请求返回的事件内容,所述事件内容包含的时间戳落入所述回放时间范围。
可选地,所述回放模块904具体用于,包含业务代码以及回放代码,根据接收到的事件内容,进行事件回放,具体包括:
若接收到的事件内容为多个,则根据各事件内容包含的时间戳,通过所述业务代码依次执行各事件。
可选地,所述回放模块904具体用于,针对每个事件内容,当该事件内容为本地事件包含的事件内容时,将该事件内容发送至所述业务代码,以根据接收到的该事件内容向所述目标函数发送所述调用请求,以执行所述本地事件。
可选地,所述回放模块904具体用于,针对每个事件内容,当该事件内容为网络请求事件包含的第一子事件的事件内容时,将该事件内容发送至所述业务代码,以使所述业务代码根据该事件内容,向所述业务服务端发送所述业务请求,并拦截向所述业务服务端发送的所述业务请求。
可选地,所述回放模块904具体用于,针对每个事件内容,当该事件内容为网络请求事件包含的第二子事件的事件内容时,根据该事件内容,确定业务数据,并将确定出的业务数据返回所述业务代码。
在上述基于图4所示的事件回放的方法中,该回放系统通过回放代码向客户端发送事件获取请求,并通过回放代码接收客户端返回的事件内容,最后通过回放代码以及业务代码进行事件回放。相应的在图10所示的本说明书实施例提供的该事件回放装置中,发送模块900实现了事件回放的方法中该回放系统中回放代码的发送事件获取请求的功能,接收模块902实现了事件回放的方法中该回放系统中回放代码的接收所述客户端根据所述事件获取请求返回的事件内容的功能,回放模块904实现了事件回放的方法中该回放系统中回放代码和业务代码根据接收到的事件内容,进行事件回放的功能。
需要说明的是,上述涉及到的服务器既可以是单个服务器,也可以是若干服务器组成的系统,例如:分布式服务器等。本说明书提供的事件回放的方法对任何服务器都适用,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本说明书实施例还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的事件回放的方法。
本说明书实施例还提出了图11所示的电子设备的示意结构图。如图11,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的事件回放的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (17)
1.一种事件回放的方法,其特征在于,客户端包括业务代码以及记录代码,所述客户端至少包括浏览器客户端以及小程序客户端中的一种,所述方法包括:
通过所述业务代码监测用户行为;
通过所述业务代码确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求,其中,所述事件至少包括:本地事件以及网络请求事件;
通过所述记录代码拦截所述执行请求;
当所述事件为本地事件时,所述记录代码根据所述执行请求确定目标函数,将拦截的执行请求发送至目标函数,使所述目标函数执行所述用户行为对应的事件;
当所述事件为网络请求事件时,所述记录代码根据所述执行请求确定业务服务端,将拦截的执行请求发送至业务服务端,使所述执行所述用户行为对应的事件;
通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,以当需要进行事件回放时,根据存储的事件的事件内容进行事件回放。
2.如权利要求1所述的方法,其特征在于,所述本地事件为所述业务代码向所述客户端本地的目标函数发送调用请求的事件,所述网络请求事件为所述客户端向业务服务端发送业务请求以及接收所述业务服务端返回业务数据的事件。
3.如权利要求2所述的方法,其特征在于,所述记录代码根据所述执行请求确定目标函数,将拦截的执行请求发送至目标函数,使所述目标函数执行所述用户行为对应的事件,具体包括:
当通过所述业务代码根据确定出的本地事件发送所述调用请求时,通过所述记录代码根据拦截到的调用请求,确定所述目标函数;
通过所述记录代码向所述目标函数转发所述调用请求,使所述目标函数根据所述调用请求执行所述本地事件。
4.如权利要求3所述的方法,其特征在于,通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,具体包括:
通过所述记录代码,确定拦截所述调用请求时的时间戳;
根据确定出的时间戳以及所述调用请求,确定所述本地事件的事件内容;
存储确定出的所述本地事件的事件内容。
5.如权利要求2所述的方法,其特征在于,所述记录代码根据所述执行请求确定业务服务端,将拦截的执行请求发送至业务服务端,使所述执行所述用户行为对应的事件,具体包括:
当通过所述业务代码根据确定出的网络请求事件发送所述业务请求时,通过所述记录代码根据拦截到的业务请求,确定所述业务服务端;
通过所述记录代码向所述业务服务端转发所述业务请求,使所述业务服务端根据所述业务请求返回所述业务数据;
通过所述记录代码接收所述业务服务端根据所述业务请求返回的所述业务数据,并将接收到的业务数据返回所述业务代码。
6.如权利要求5所述的方法,其特征在于,通过所述记录代码根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,具体包括:
通过所述记录代码确定发送所述业务请求时的时间戳,根据确定出的发送所述业务请求时的时间戳以及所述业务请求,确定所述网络请求事件包含的第一子事件的事件内容;
通过所述记录代码确定接收所述业务数据时的时间戳,根据确定出的接收所述业务数据时的时间戳以及所述业务数据,确定所述网络请求事件包含的第二子事件的事件内容;
存储确定出的所述网络请求事件包含的各子事件的事件内容。
7.如权利要求4或6所述的方法,其特征在于,当需要进行事件回放时,根据存储的事件的事件内容进行事件回放,具体包括:
接收回放系统发送的事件获取请求;
根据所述事件获取请求,从存储的各事件内容中确定用于回放的事件内容;
将确定出的事件内容发送至所述回放系统,以使所述回放系统根据接收到的事件内容以及事件内容包含的时间戳,进行事件回放。
8.一种事件回放的方法,其特征在于,包括:
回放系统向客户端发送事件获取请求;
接收所述客户端根据所述事件获取请求返回的事件内容,其中,接收到的事件内容为根据权利要求1-6任一种方法存储的;
根据接收到的事件内容,进行事件回放。
9.如权利要求8所述的方法,其特征在于,回放系统向客户端发送事件获取请求,具体包括:
所述回放系统确定回放时间范围;
将携带所述回放时间范围的所述事件获取请求发送至所述客户端;
接收所述客户端根据所述事件获取请求返回的事件内容,具体包括:
接收所述客户端根据所述事件获取请求返回的事件内容,所述事件内容包含的时间戳落入所述回放时间范围。
10.如权利要求8所述的方法,其特征在于,所述回放系统包含业务代码以及回放代码;
根据接收到的事件内容,进行事件回放,具体包括:
若接收到的事件内容为多个,则根据各事件内容包含的时间戳,通过所述业务代码依次执行各事件。
11.如权利要求10所述的方法,其特征在于,根据接收到的事件内容,进行事件回放,具体包括:
针对每个事件内容,当该事件内容为本地事件包含的事件内容时,所述回放系统通过所述回放代码,将该事件内容发送至所述业务代码,以使所述业务代码根据接收到的该事件内容向目标函数发送调用请求,以执行所述本地事件。
12.如权利要求10所述的方法,其特征在于,根据接收到的事件内容,进行事件回放,具体包括:
针对每个事件内容,当该事件内容为网络请求事件包含的第一子事件的事件内容时,所述回放系统通过所述回放代码,将该事件内容发送至所述业务代码,以使所述业务代码根据该事件内容,向所述业务服务端发送所述业务请求;
所述回放系统通过所述回放代码,拦截向所述业务服务端发送的所述业务请求。
13.如权利要求10所述的方法,其特征在于,根据接收到的事件内容,进行事件回放,具体包括:
针对每个事件内容,当该事件内容为网络请求事件包含的第二子事件的事件内容时,所述回放系统通过所述回放代码根据该事件内容,确定业务数据,并将确定出的业务数据返回所述业务代码。
14.一种事件回放的装置,其特征在于,所述装置包括:
监测模块,监测用户行为;
发送模块,确定监测到的用户行为对应的事件,并根据确定出的事件向目标发送执行请求;
执行模块,通过拦截所述执行请求;当所述事件为本地事件时,根据所述执行请求确定目标函数,将拦截的执行请求发送至目标函数,使所述目标函数执行所述用户行为对应的事件;当所述事件为网络请求事件时,根据所述执行请求确定业务服务端,将拦截的执行请求发送至业务服务端,使所述执行所述用户行为对应的事件;
存储及回放模块,根据拦截的执行请求,存储所述用户行为对应的事件的事件内容,以当需要进行事件回放时,根据存储的事件的事件内容进行事件回放。
15.一种事件回放的装置,其特征在于,所述装置包括:
发送模块,发送事件获取请求;
接收模块,接收客户端根据所述事件获取请求返回的事件内容,其中,接收到的事件内容为根据权利要求1-6任一种方法存储的;
回放模块,根据接收到的事件内容,进行事件回放。
16.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1-7或8-13任一所述的方法。
17.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1-7或8-13任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911046841.5A CN110795311B (zh) | 2019-10-30 | 2019-10-30 | 一种事件回放的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911046841.5A CN110795311B (zh) | 2019-10-30 | 2019-10-30 | 一种事件回放的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110795311A CN110795311A (zh) | 2020-02-14 |
CN110795311B true CN110795311B (zh) | 2020-11-03 |
Family
ID=69442202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911046841.5A Active CN110795311B (zh) | 2019-10-30 | 2019-10-30 | 一种事件回放的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795311B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552872A (zh) * | 2020-04-15 | 2020-08-18 | 携程旅游网络技术(上海)有限公司 | 还原用户行为的方法及系统、电子设备及存储介质 |
CN111625452B (zh) * | 2020-05-22 | 2024-04-16 | 上海哔哩哔哩科技有限公司 | 流量回放方法和系统 |
CN112131085A (zh) * | 2020-08-01 | 2020-12-25 | 青岛希望鸟科技有限公司 | 互联网业务过程记录与回放的方法、系统及装置 |
CN112286804B (zh) * | 2020-10-26 | 2024-05-03 | 深圳市优必选科技股份有限公司 | 系统的调试方法、装置、设备和介质 |
CN116132534B (zh) * | 2022-07-01 | 2024-03-08 | 马上消费金融股份有限公司 | 业务请求的存储方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685354A (zh) * | 2012-09-05 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种基于rmi协议的测试方法和装置 |
CN105893228A (zh) * | 2009-12-15 | 2016-08-24 | 迈克菲股份有限公司 | 用于行为沙箱化的系统和方法 |
CN108170593A (zh) * | 2017-12-22 | 2018-06-15 | 北京奇虎科技有限公司 | 应用程序运行的方法及装置 |
CN109189665A (zh) * | 2018-08-01 | 2019-01-11 | 阿里巴巴集团控股有限公司 | 数据录制、数据回放和自动测试的方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8645912B2 (en) * | 2010-08-31 | 2014-02-04 | General Electric Company | System and method for use in replaying software application events |
CN103488507A (zh) * | 2013-09-18 | 2014-01-01 | 北京思特奇信息技术股份有限公司 | 一种用户行为轨迹回放方法 |
CN104572447B (zh) * | 2014-12-19 | 2017-09-29 | 中国电子科技集团公司第十五研究所 | 基于安卓操作系统的业务流程录制‑回放方法及系统 |
US10430212B1 (en) * | 2016-07-13 | 2019-10-01 | Screenshare Technology Ltd. | Method for recording, editing and reproduction of computer session |
US10268567B2 (en) * | 2017-04-12 | 2019-04-23 | Microsoft Technology Licensing, Llc | Systems, methods, and computer-readable media for using immutable and copy-on-write data semantics to optimize record and replay frameworks |
-
2019
- 2019-10-30 CN CN201911046841.5A patent/CN110795311B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893228A (zh) * | 2009-12-15 | 2016-08-24 | 迈克菲股份有限公司 | 用于行为沙箱化的系统和方法 |
CN103685354A (zh) * | 2012-09-05 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种基于rmi协议的测试方法和装置 |
CN108170593A (zh) * | 2017-12-22 | 2018-06-15 | 北京奇虎科技有限公司 | 应用程序运行的方法及装置 |
CN109189665A (zh) * | 2018-08-01 | 2019-01-11 | 阿里巴巴集团控股有限公司 | 数据录制、数据回放和自动测试的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110795311A (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795311B (zh) | 一种事件回放的方法及装置 | |
US7941789B2 (en) | Common performance trace mechanism | |
CN111124906B (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
US8037458B2 (en) | Method and system for providing a common structure for trace data | |
CN108984389B (zh) | 一种应用程序测试方法及终端设备 | |
KR102205372B1 (ko) | 클라이언트 측 활동 모니터링 | |
CN107066519B (zh) | 一种任务检测方法及装置 | |
CN110162512B (zh) | 一种日志检索方法、装置及存储介质 | |
CN110879781B (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
US20090265719A1 (en) | Application macro recording utilizing method interception | |
CN109976966A (zh) | 一种应用程序启动时间统计方法、装置及系统 | |
CN110688245B (zh) | 信息获取方法、装置、存储介质及设备 | |
CN112631679A (zh) | 一种微应用的预加载方法及装置 | |
CN108966041B (zh) | 一种音视频播放埋点方法、装置、设备、计算机可读存储介质 | |
US20090327995A1 (en) | Annotation-aided code generation in library-based replay | |
CN111949512A (zh) | 应用程序的卡顿检测方法、装置、终端及介质 | |
CN111159033A (zh) | 一种软件测试方法及装置 | |
CN116048977A (zh) | 一种基于数据还原的测试方法及装置 | |
CN112269622A (zh) | 页面管理方法、装置、设备和介质 | |
CN107193734B (zh) | 用于移动Web应用的重放方法及重放系统 | |
CN112905449B (zh) | 目标测试方法、装置、设备和存储介质 | |
CN112597408A (zh) | 一种系统融合方法、装置、设备和存储介质 | |
CN113297515A (zh) | 资源信息的处理方法和装置,计算机存储介质和电子设备 | |
CN112650959A (zh) | 页面加载时长的统计方法、装置、设备及存储介质 | |
CN111638903B (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 |