掌桥专利:专业的专利平台
掌桥专利
首页

错误复现的方法、装置、系统、设备以及存储介质

文献发布时间:2023-06-19 10:11:51


错误复现的方法、装置、系统、设备以及存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及优化应用测试领域。

背景技术

在用户端的前端页面发生了错误时,需要开发者进行修复。由于前端页面的错误发生在用户的设备中,从开发者的角度是无从感知的。因此,开发者需要复现用户端的错误,以进行修复。

相关的复现错误的方法包括,收集用户端的错误信息并上报,开发者通过分析错误栈解决问题。然而,这种方法存在错误难以复现的问题。并且,也很难复现错误出现的路径。

发明内容

本公开提供了一种用于错误复现的方法、装置、系统、设备以及存储介质。

根据本公开的一方面,提供了一种错误复现的方法,包括:

获取用户端的错误对应的复现信息,所述错误对应的复现信息包括在所述用户端出现错误的情况下的操作事件和由所述操作事件引起的视图变化;以及

根据所述复现信息,触发出现所述错误的情况下的操作事件,并还原由所述操作事件引起的视图变化,以复现所述错误。

根据本公开的另一方面,提供了一种错误复现的装置,包括:

获取模块,用于获取用户端的错误对应的复现信息,所述错误对应的复现信息包括在所述用户端出现错误的情况下的操作事件和由所述操作事件引起的视图变化;以及

复现模块,用于根据所述复现信息,触发出现所述错误的情况下的操作事件,并还原由所述操作事件引起的视图变化,以复现所述错误。

根据本公开的另一方面,提供了一种错误复现的系统,包括:

用户端,用于发送该用户端的错误对应的复现信息,所述错误对应的复现信息包括在所述用户端出现错误的情况下的操作事件和由所述操作事件引起的视图变化;

服务器,用于接收在所述用户端出现所述错误的情况下发送的所述错误对应的复现信息;以及

复现端,用于执行本公开任一实施例中的方法。

根据本公开的另一方面,提供了一种电子设备,包括:

至少一个处理器;以及

与该至少一个处理器通信连接的存储器;其中,

该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的方法。

根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的方法。

根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例中的方法。

根据本公开实施例能够快速复现错误,有利于提高错误修复的效率。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本公开的限定。其中:

图1是根据本公开一实施例的错误复现的方法的流程示意图;

图2是根据本公开另一实施例的错误复现的方法的流程示意图;

图3是根据本公开一实施例的用户端的示意图;

图4是根据本公开另一实施例的错误复现的方法的流程示意图;

图5是根据本公开一实施例的错误复现的装置的框图;

图6是根据本公开一实施例的错误复现的系统的框图;

图7示出用来实施本公开的实施例的示例电子设备的示意性框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本公开一实施例的错误复现的方法的流程示意图。该方法可以包括:

步骤S101、获取用户端的错误对应的复现信息,所述错误对应的复现信息包括在所述用户端出现错误的情况下的操作事件和由所述操作事件引起的视图变化;以及

步骤S102、根据所述复现信息,触发出现所述错误的情况下的操作事件,并还原由所述操作事件引起的视图变化,以复现所述错误。

在本实施例中,用户端可以包括手机、平板电脑、智能家电等各种类型的用户可以进行操作的终端设备。用户端也可以称为前端。用户端可以包括显示组件例如显示屏,在用户对用户端进行操作时,用户端会产生操作事件,相应地,显示屏上可以显示由该操作事件引起的视图变化。

例如,如果用户在手机屏幕上点击某个APP(Application,应用程序)的页面P1的某个控件,会产生点击事件。如果该控件被点击后会打开另一个的页面P2,则该点击事件引起了页面P1到页面P2的变化。

再如,如果用户在手机屏幕上滑动某个APP的页面P3,会产生滑动事件。如果该滑动事件会显示另一个的页面P4,则该滑动事件引起了页面P3到页面P4的变化。

在本实施例中,可以将用户端的操作事件和由该操作事件引起的视图变化相结合,用户端出现的错误对应的复现信息包括该错误对应的一个或多个操作事件,以及由这一个或多个操作事件引起的视图变化等复现信息。具体可以在用户端本地存储复现信息,也可以将复现信息发送到服务器进行存储。示例性地,可以在用户端每次出现错误时,向服务器发送该错误对应的复现信息;也可以在本地累积存储多次错误对应的复现信息后,向服务器一次发送多个错误对应的复现信息。

开发者等可以利用电子设备进行错误复现,可以从用户端或服务器获取复现信息,根据复现信息重新触发在用户端出现错误时进行的操作事件、以及还原由该操作事件引起的视图变化。在需要进行复现的情况下,用来进行错误复现的电子设备可以称为复现端。

本公开实施例,能够快速复现错误,有利于快速定位到错误并将之修复,从而提高错误修复的效率。

图2是根据本公开另一实施例的错误复现的方法的流程示意图。该实施例的错误复现的方法可以包括上述实施例的各步骤。在一种实施方式中,在步骤S102之前,该方法还可以包括:

步骤S103、根据所述复现信息,依次触发所述用户端在出现所述错误之前的预定数量的操作事件,并还原由所述预定数量的操作事件所引起的视图变化,以复现所述错误出现的路径。

在本公开实施例中,错误出现的路径可以包括用户端在出现错误之前经过的一系列操作事件以及由这些操作事件所引起的视图变化。例如,由于用户端中出现的很多错误并不一定是由某一个特定的操作事件导致的,可能是经过了一连串的操作事件之后,才出现了错误。所以,复现错误的产生路径对修复错误的帮助很大。

在本实施例中,将用户端的操作事件和由该操作事件引起的视图变化相结合,并在用户端出现错误时,重新触发了在出现错误之前用户端进行的一系列操作事件、以及还原由这些操作事件引起的视图变化。因此,根据本实施例的错误复现的方法不仅能够快速定位到错误,还能够复现错误出现的路径,有利于更加准确的定位错误出现的原因,从而能够大大提高修复效率。

在一种实施方式中,步骤S101包括:从服务器获取所述错误对应的复现信息,其中,所述错误对应的复现信息是在所述用户端出现所述错误的情况下发送至所述服务器的。

以一次访问为例,在使用所述用户端的应用时,完成的所有屏幕操作都会产生相应的文档和视图样式的变化。因此,在这种实施方式中,用户端可以将每次的操作事件和对应的视图变化、文档变化等进行本地存储。当用户端的访问出现错误时,可以将本地存储的事件相关的数据作为日志上传到服务器上。具体可以上传用户端存储的所有操作事件相关的数据,也可以仅上传错误对应的操作事件的相关的数据。上传之后,用户端本地存储的操作事件相关的数据可以删除,也可以标记为已上传,以便于防止在后续上传重复的数据。这样,通过在特定条件下向服务器发送复现信息,能够实现占用通信资源和服务器的存储空间更小,并且也能够支持更多设备使用与用户端出现的错误最相关的信息进行错误复现,例如多个复现端可以连接服务器,从服务器获取某个用户端的错误的复现信息,从而提高修复效率。

在一种实施方式中,所述错误对应的复现信息包括所述用户端的设备信息、错误栈和错误路径。

在一种实施方式中,所述设备信息可以包括能够描述用户端的设备特征的信息,例如设备型号、设备出厂编号、设备唯一标识、为设备分配的标识等。所述错误栈可以包括一个或多个错误信息。在错误信息中可以封装有用户端出现的错误,例如函数调用关系、语句执行报错信息、错误所在的代码行列数等。假设在用户端运行正常的情况下,用户在该用户端的显示组件上点击某个APP的页面P1的某个控件,会打开另一个的页面P2,则可以认为该点击事件调用了用于引起页面P1向页面P2变化的函数。但是,在出现错误的情况下,点击该控件并没有打开页面P2,而是打开了页面P3。这时,可以将该点击事件调用的用于引起页面P1向页面P3变化的函数作为错误出现时的函数调用关系封装在错误栈。

在一种实施方式中,错误路径包括可以操作事件的类型、位置和文档变更信息。例如,操作事件的类型可以包括点击、双击、滑动和双指滑动等。位置可以包括操作事件在用户端的屏幕中的操作位置、起始位置、经过位置和结束位置等,可以使用坐标来表示。文档变更信息用于描述用户端中由操作事件引起的视图变化,可以使用例如XHTML(eXtensibleHyper Text Markup Language,可扩展超文本标记语言)格式的文件来表示。

如图3所示,假设用户在用户端先后进行了两次点击操作之后出现错误:在左侧示出的视图中的圆形位置进行了点击操作具体例如点击了“带爸妈打卡”的网页控件之后,用户端的视图变成右侧示出的视图。在右侧示出的视图中的圆形位置进行了点击操作具体例如点击了“北京动物园”之后,出现了错误,用户端的视图并未改变为显示期望的网页“北京动物园”相关的内容。与上述示例中的错误对应的复现信息可以通过如下形式的数据结构来表示:

在上述的数据结构中,“设备信息”为“1360 860”可以表示该用户端的设备标识。“错误信息1”和“错误信息2”可以表示错误栈的具体内容。错误信息是错误栈中的组成单元,错误信息在错误栈中的顺序表示出了函数调用关系。错误信息中的内容可以包括语句执行报错信息、错误所在的代码行列数等信息。在“错误路径”中,“类型”为“点击”可以表示出现错误的事件为点击事件;“位置”为“260 100”以及“位置”为“560 200”,可以表示两次点击事件分别出现的位置坐标。此外,“错误路径”中还可以包括每个错误事件对应的“文档变更”信息以及其他复现所需的信息。

上述的数据结构仅是一种示例,而非限制,复现信息的具体结构可以根据实际的错误、操作事件、视图变化等的不同有所不同。

如图4所示为一种错误复现的方法的应用示例的流程示意图。该方法可以包括:

步骤S401、根据用户端的设备信息和运行的应用信息,构建复现环境。例如,开发者利用复现端从服务器获取用户端上报的设备信息和运行的应用信息。运行的应用信息可以包括用户端运行的浏览器、APP等,包括出现错误时运行的应用信息。

步骤S402、解析事件栈,开始触发操作事件,并在环境中展示例如操作事件对应的视图变化等。例如,复现端可以解析一个或多个事件栈,按照与用户端的操作顺序同样的顺序,在复现环境中依次触发事件栈包括的各种操作事件,并将复现环境中的操作区域进行可视化显示,以更直观地展示这些操作事件。

步骤S403、通过文档变更信息,展示文档变更后的界面。例如,复现端可以按照与用户端显示的视图顺序同样的顺序,依次还原由各种操作事件引起的视图变化。该步骤展示的界面可以与步骤S402中展示的操作事件相对应。例如,假设用户在用户端的显示组件上点击某个APP的页面P1的某个控件,会打开另一个的页面P2。则在步骤S402中触发“点击该APP的页面P1的某个控件”这一操作事件的同时,在步骤S402中展示页面P2。

步骤S404、判断是否触发了错误。例如,复现端可以在文档变更后的界面出现了与用户端出现错误时同样的视图的情况下,判断为触发了错误。反之,则判断为没有触发错误。再如,复现端可以在所有的操作事件均已经触发完毕的情况下,判断为触发了错误。反之,则判断为没有触发错误。

在步骤S404判断为否的情况下,即未触发错误的情况下,可以跳转至执行步骤S402开始解析下一事件件以及触发下一操作事件,然后执行步骤S403展示与该操作事件相对应的界面等。在步骤S404判断为是的情况下,即触发错误的情况下,可以执行步骤S405。

步骤S405、解析错误对应的复现信息,并对错误进行修复。

在这种实施方式中,在复现端接收到用户端出现错误的信息之后,可以通过应用界面的插件进行还原。此插件的作用可以包括,解析上报的错误信息中的用户操作记录信息以及文档变更信息。对于用户的点击、滑动等操作,通过重新触发事件,以及显示操作区域来进行可视化展示。与此同时,可以将与这些操作事件对应的文档进行与当前所触发的操作事件相对应地变化,以还原视图上的变化,直到复现用户端的错误。这样,结合错误栈和复现路径可以很方便地进行错误的定位和修复。

在本实施例中,考虑了用户端的设备信息,并根据用户端的设备信息构建了复现环境。因此,本实施例的错误复现的方法能够快速定位到错误,并能够复现出错误出现的路径,从而大大提高了修复效率。

图5是根据本公开一实施例的错误复现的装置的框图。该装置可以包括:

获取模块51,用于获取用户端的错误对应的复现信息,所述错误对应的复现信息包括在所述用户端出现错误的情况下的操作事件和由所述操作事件引起的视图变化;以及

复现模块53,用于根据所述复现信息,触发出现所述错误的情况下的操作事件,并还原由所述操作事件引起的视图变化,以复现所述错误。

在一种实施方式中,复现模块53还用于在触发出现所述错误的情况下的操作事件之前,依次触发所述用户端在出现所述错误之前的预定数量的操作事件以及还原由所述预定数量的操作事件所引起的视图变化,以复现所述错误出现的路径。

在一种实施方式中,获取模块51从服务器获取所述错误对应的复现信息,其中,所述错误对应的复现信息是在所述用户端出现所述错误的情况下发送至所述服务器的。

在一种实施方式中,所述错误对应的复现信息包括所述用户端的设备信息、错误栈和错误路径;

所述错误栈包括一个或多个错误信息;

所述错误路径包括所述操作事件的类型、位置和文档变更信息。

本公开实施例的错误复现的装置中的各模块的功能可以参见上述错误复现的方法中的对应描述,在此不再赘述。

图6是根据本公开一实施例的错误复现的系统的框图。该系统可以包括:

用户端61,用于发送该用户端61的错误对应的复现信息,所述错误对应的复现信息包括在所述用户端出现错误的情况下的操作事件和由所述操作事件引起的视图变化;

服务器63,用于接收在用户端61出现所述错误的情况下发送的所述错误对应的复现信息;以及

复现端65,用于执行上述任一实施例中的错误复现的方法。

本公开实施例的错误复现的系统中的用户端61、服务器63、复现端65的功能可以参见上述错误复现的方法中的用户端、服务器、复现端的对应描述,在此不再赘述。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图7示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或要求的本公开的实现。

如图7所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入输出(I/O)接口805也连接至总线804。

设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元80执行上文所描述的各个方法和处理,例如错误复现的方法。例如,在一些实施例中,错误复现的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的错误复现的方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行错误复现的方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

相关技术
  • 错误复现的方法、装置、系统、设备以及存储介质
  • 一种程序漏洞复现方法、系统、装置、电子设备及其存储介质
技术分类

06120112457402