CN110888781A - 一种应用卡顿检测方法及检测装置 - Google Patents

一种应用卡顿检测方法及检测装置 Download PDF

Info

Publication number
CN110888781A
CN110888781A CN201911147833.XA CN201911147833A CN110888781A CN 110888781 A CN110888781 A CN 110888781A CN 201911147833 A CN201911147833 A CN 201911147833A CN 110888781 A CN110888781 A CN 110888781A
Authority
CN
China
Prior art keywords
client
detected client
target function
detected
stuck
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
Application number
CN201911147833.XA
Other languages
English (en)
Other versions
CN110888781B (zh
Inventor
刘俊辉
魏学峰
严明
周洪斌
徐宇挺
彭斌
程景
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911147833.XA priority Critical patent/CN110888781B/zh
Publication of CN110888781A publication Critical patent/CN110888781A/zh
Application granted granted Critical
Publication of CN110888781B publication Critical patent/CN110888781B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3457Performance evaluation by simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及计算机技术领域,提供一种应用卡顿检测方法及检测装置。该方法包括:响应于被检测客户端的开启操作,创建虚拟环境;在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中;其中,所述卡顿检测代码用于监控所述进程中的目标函数集合;获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,目标函数结果包括所述目标函数集合中各个目标函数的执行时长。该方法通过直接在虚拟环境中运行被检测客户端,可以实现对被检测客户端进行函数级别的检测,提高应用卡顿检测的准确性。

Description

一种应用卡顿检测方法及检测装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用卡顿检测方法及检测装置。
背景技术
在测试游戏客户端,以及用户使用游戏客户端过程中,都可能会出现游戏客户端卡顿的情况。游戏客户端出现卡顿的原因可能有很多种,通常需要检测不同的卡顿信息,后续才能根据这些卡顿信息确定产生卡顿的原因,进而解决卡顿问题。
目前,检测卡顿的方式一般为:在电脑上安装卡顿检测客户端,电脑连接手机,通过安卓调试桥梁(Android Debug Bridge,ABD)命令检测手机游戏客户端的部分运行数据,以实现卡顿检测。
但是这种方式是通过创建一个ABD demon在游戏客户端中,来获取游戏客户端的部分运行数据,这种方式无法获得手机的超级权限,因此获取游戏客户端的部分运行数据,无法去定位游戏客户端中函数级别的卡顿信息,导致检测游戏卡顿的准确性较低。
发明内容
本申请实施例提供一种应用卡顿检测方法及检测装置,用于提高检测应用卡顿的准确性。
第一方面,提供一种应用卡顿检测方法,包括:
响应于被检测客户端的开启操作,创建虚拟环境;
在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中;其中,所述卡顿检测代码用于监控所述进程中的目标函数集合;
获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,所述目标函数结果包括所述目标函数集合中各个目标函数的执行时长。
第二方面,提供一种应用卡顿检测方法,应用于被检测客户端中,所述方法包括:
在虚拟环境内运行,并接收检测代码;其中,所述虚拟环境是响应于所述被检测客户端的开启操作时,为所述被检测客户端创建的运行环境,所述卡顿检测代码用于监控所述被检测客户端关联的进程中的目标函数集合;
根据所述卡顿检测代码,上报在运行过程中的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,所述目标函数结果包括所述目标函数集合中各个目标函数的执行时长。
第三方面,提供一种应用卡顿检测装置,包括:
创建模块,用于响应于被检测客户端的开启操作,创建虚拟环境;
注入模块,用于在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中;其中,所述卡顿检测代码用于监控所述进程中的目标函数集合;
获取模块,用于获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息。
在一种可能的实施例中,注入模块还用于:
在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中之前,获取所述被检测客户端对应的引擎类型;
获得与所述引擎类型关联的卡顿检测代码;其中,引擎类型不同,对应的卡顿检测代码用于监控的目标函数集合中的目标函数不相同。
在一种可能的实施例中,所述目标函数集合包括用于形成画面的函数,获取模块具体用于:
获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的所述目标函数集合中各个目标函数的执行时长,并根据所述目标函数集合中各个目标函数的执行时长,获得所述被检测客户端在各个场景下的总运行时长,以及各个场景中每帧画面的形成时长。
在一种可能的实施例中,所述目标函数结果还包括所述被检测客户端的启动时长、所述被检测客户端的更新时长和所述被检测客户端的安装时长中的一种或几种组合。
在一种可能的实施例中,所述装置还包括收发模块,所述收发模块具体用于:
在获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果之后,将所述目标函数结果反馈给服务器,以使所述服务器根据所述目标函数结果,确定卡顿原因;
接收并显示所述卡顿原因。
在一种可能的实施例中,所述被检测客户端为游戏客户端。
在一种可能的实施例中,所述目标函数集合包括eglSwapBuffers函数或eglSwapBuffersWithDamageKHR函数。
第四方面,提供一种应用卡顿检测装置,包括处理模块和收发模块,其中:
所述收发模块,用于在处理模块的控制下,在虚拟环境内运行,并接收检测代码;其中,所述虚拟环境是响应于所述被检测客户端的开启操作时,为所述被检测客户端创建的运行环境,所述卡顿检测代码用于监控所述被检测客户端关联的进程中的目标函数集合;以及,
根据所述卡顿检测代码,上报在运行过程中的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,所述目标函数结果包括所述目标函数集合中各个目标函数的执行时长。
第五方面,提供一种终端设备,包括:
至少一个处理器,以及
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如第一方面或第二方面中任一项所述的方法。
第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面或第二方面中任一项所述的方法。
由于本申请实施例采用上述技术方案,至少具有如下技术效果:
本申请实施例中,通过在虚拟环境中运行被检测客户端,再将卡顿检测代码注入到被检测客户端关联的进程中,由于被检测客户端是直接运行在虚拟环境中的,因此无需获得对应的终端设备的超级权限,也能通过卡顿检测代码对被检测客户端中的函数的运行情况进行检测,检测函数级别的卡顿信息,例如可以检测目标函数的执行时长等,提高了卡顿检测的准确性。且,由于在每次运行被检测客户端时,动态注入对应的卡顿检测代码,可以相对减少卡顿检测代码对被检测客户端正常运行的影响。且,本申请实施例,可以为不同类型的被检测客户端创建各种被检测客户端所需的虚拟环境,因此可以适用于任意类型的客户端的卡顿检测。
附图说明
图1为本申请实施例提供的一种卡顿检测的处理机制示意图;
图2为本申请实施例提供的一种应用卡顿检测方法的应用场景示意图;
图3为本申请实施例提供的一种应用卡顿检测方法的交互示意图;
图4为本申请实施例提供的一种添加待检测客户端过程的界面变化示例图;
图5为本申请实施例提供的一种显示目标函数结果上传状态的界面示意图;
图6为本申请实施例提供的一种应用卡顿检测装置的结构示意图一;
图7为本申请实施例提供的一种应用卡顿检测装置的结构示意图二;
图8为本申请实施例提供的一种终端设备的结构示意图。
具体实施方式
为了更好的理解本申请实施例提供的技术方案,下面将结合说明书附图以及具体的实施方式进行详细的说明。
为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请涉及的专用名词进行具体说明。
虚拟环境:本申请中是指用于支持被检测客户端运行的环境,该环境可以是与终端设备的操作系统相对独立的运行环境,例如可以是模拟的操作系统等,该模拟的操作系统不同于终端设备的真实操作系统,该模拟的操作系统仅存在于卡顿检测客户端中。
卡顿检测代码:用于监控被检测客户端的目标函数集合,例如卡顿检测代码为钩子hook函数,利用hook函数去监控和获取各个目标函数的执行信息。
目标函数集合:包括一个或多个目标函数,目标函数集合属于被检测客户端在运行过程中调用的部分或全部函数。
目标函数结果:可以理解为目标函数集合中各个目标函数的执行信息,目标函数结果包括目标函数的执行时长、执行结果等,目标函数结果又可以理解为卡顿信息,也就是用于检测应用是否存在卡顿的信息。
引擎:支持代码运行的核心组件,用于辅助支持客户端的运行。不同的客户端所对应的引擎类型可能不相同,也可能相同。例如游戏客户端的引擎类型包括Unity3D(又可以简写为U3D)、il2cpp以及UE4等。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。
下面对本申请的设计思路进行介绍。
现有技术一般是通过ABD命令获取游戏客户端的部分运行数据,例如CPU使用率、内存大小等,但是无法获取函数级别的卡顿信息,卡顿检测的准确性不高。
鉴于此,本申请发明人设计一种应用卡顿检测方法,该方法可以通过终端设备中的软件模块执行,例如终端设备中的卡顿检测客户端、小程序等。该方法通过为其它被检测客户端创建虚拟环境,在虚拟环境中拉起被检测客户端,在被检测客户端运行过程中,注入相应的卡顿检测代码,再通过卡顿检测代码运行过程中返回的目标函数结果,也就相当于获得了所需的卡顿信息,从而实现应用卡顿检测。由于本申请实施例中被检测客户端110是直接运行在卡顿检测客户端120中的,因此卡顿检测客户端120即使没有获取当前终端设备的超级权限,也能通过卡顿检测代码实现对被检测客户端的底层函数的检测,从而获得更加准确的卡顿检测结果。
本申请发明人进一步考虑,可以根据被检测客户端110的引擎类型,确定对应的卡顿检测代码,这样一来,卡顿检测客户端120可以实现对不同引擎类型的被检测客户端110进行卡顿检测。
为了更清楚地理解本申请的设计思路,下面对卡顿检测客户端的处理机制进行示例介绍。
请参照图1,表示一种卡顿检测客户端的处理机制示例图,或者也可以表示一种终端设备的内部架构示意图。终端设备100中安装有被检测客户端110和卡顿检测客户端120。图1中通过卡顿检测客户端120实现卡顿检测为例进行说明。
在用户安装该被检测客户端110之后,卡顿检测客户端120可以通过终端设备100的接口获取被检测客户端110的基本信息。接口例如终端设备100中的应用列表getApplist接口。基本信息包括包名,包名是指客户端对应的安装包的名称。基本信息还可以包括被检测客户端110的应用名称、应用图标和引擎类型中的一种或几种组合等。在卡顿检测客户端120获取基本信息之后,卡顿检测客户端120就可以在其界面上显示该被检测客户端110的基本信息。
当用户想要进行卡顿检测时,用户可以在卡顿检测客户端120中开启被检测客户端110,例如用户可以点击该被检测客户端110,卡顿检测客户端120会创建虚拟环境,虚拟环境用于为被检测客户端110提供运行环境,例如虚拟应用(virtual Application,VA)。被检测客户端110可以在虚拟环境中启动运行,此时,卡顿检测客户端120可以将卡顿检测代码注入到被检测客户端110中,实现对被检测客户端110的卡顿检测。
其中,被检测客户端110可以是任意类型的客户端,例如游戏客户端、视频客户端等等,本申请不限制被检测客户端110的具体类型。
请继续参照图1,被检测客户端110以游戏客户端为例,卡顿检测代码可以实现对被检测客户端110中各个层级函数130的检测,例如对被检测客户端110的引擎层的函数进行检测,以及对被检测客户端的开放图形库(OpenGraphics Library,OPENGL)层的函数进行检测。在介绍完本申请实施例的设计思路之后,下面对应用卡顿检测方法的应用场景进行示例说明。
请参照图2,表示一种应用场景示例图。该应用场景中包括多个终端设备100和服务器200,每个终端设备100中安装有卡顿检测客户端120和被检测客户端110,卡顿检测客户端120可以与服务器200之间相互通信,卡顿检测客户端120检测得到被检测客户端110的卡顿信息。
在检测得到被检测客户端110的卡顿信息之后,可以将该卡顿信息反馈给服务器200,服务器200根据该卡顿信息,分析被检测客户端110的卡顿原因,服务器200可以向各个终端设备100反馈卡顿原因,使得用户可以及时地根据卡顿原因进行处理。服务器200也可以将信息以及对应的卡顿原因存储,并提示工作人员,及时地解决卡顿问题。
本申请实施例中涉及的检测应用卡顿的方法可以适用于用户使用被检测客户端110过程中,实时检测被检测客户端110的卡顿原因,也可以适用于应用测试过程中,便于工作人员及时处理被检测客户端110的卡顿原因。
基于图2的应用场景,下面对本申请实施例中涉及的应用卡顿检测方法进行示例说明。
本申请实施例中,主要以游戏客户端为被检测客户端为例进行说明,实现上不限制被检测客户端的具体类型。
请参照图3,表示本申请实施例涉及的应用卡顿检测方法的交互示意图。该交互过程具体如下:
S301,卡顿检测客户端120获取被检测客户端110的基本信息。
具体的,如前文图1中论述的内容,卡顿检测客户端120可以通过终端设备100中的接口获取终端设备100中安装的客户端列表,客户端列表包括一个或多个客户端的基本信息,基本信息可以参照前文论述的内容,此处不再赘述。卡顿检测客户端120可以是周期性地通过接口获取客户端列表,也可以是当终端设备100中出现新安装的客户端时,就可以通过接口实时获取客户端列表。
作为一种实施例,卡顿检测客户端120可以在获得客户端的基本信息之后,显示对应客户端的基本信息,以便于用户及时查看更新后的客户端。
作为一种实施例,卡顿检测客户端120可以终端设备100中所有安装的客户端的基本信息,响应于用户的选择操作,卡顿检测客户端120可以根据用户选择的客户端,将该客户端作为被检测客户端。在用户没有进行选择之前,这些客户端都可以视为待检测客户端。
例如,请参照图4,卡顿检测客户端120拉取的客户端列表如图4中a所示,该客户端列表中包括应用A、应用B以及应用C,例如应用A的基本信息包括应用A的应用名称、包名(com.x.yingyongA)以及应用A的应用图标等。用户点击添加控件401之后,添加应用B,此时卡顿检测客户端120中增加应用B的基本信息,如图4中b所示,当用户点击图4中的开启控件402时,可以运行应用B,点击历史卡顿检测查看控件403时,可以查看该应用之前的卡顿信息等。
S302,卡顿检测客户端120响应于被检测客户端110的开启操作,创建虚拟环境。
具体的,被检测客户端可能有多个,用户可以在卡顿检测客户端120中点击自己想要运行的客户端,卡顿检测客户端120响应于被检测客户端110的开启操作,准备开启被检测客户端110,卡顿检测客户端120可以创建与该被检测客户端110对应的虚拟环境。
作为一种实施例,用户可以开启多个被检测客户端110,卡顿检测客户端120可以支持开启多个服务,每个服务创建对应的虚拟环境,为对应的被检测客户端110提供服务,实现对多个被检测客户端110同时进行卡顿检测。
当然,当用户开启被检测客户端110的数量超过预设数量时,卡顿检测客户端120可以提示用户当前已无法支持过多的被检测客户端110的运行。由于卡顿检测客户端120的资源是有限的,本申请实施例限制用户开启的被检测客户端110的数量,可以避免卡顿检测客户端120过载而崩溃的情况。
作为一种实施例,虚拟环境可以是虚拟机,虚拟机可以适用于大多数的客户端的运行。
例如,请继续参照图4,用户可以点击开启控件402,相当于用户进行对应用B的开启操作,卡顿检测客户端120创建相应的虚拟环境。
S303,卡顿检测客户端120根据基本信息,获得对应的卡顿检测代码。
具体的,卡顿检测客户端120如果要对被检测客户端110各个层的函数进行检测,则需要生成用于检测对应函数的卡顿检测代码。且,卡顿检测代码后续需要在被检测客户端中运行,因此卡顿检测代码与被检测客户端的引擎类型相互适配,才能更顺畅地运行卡顿检测代码。如前文步骤301论述的内容,卡顿检测客户端120可以在获得被检测客户端110的基本信息之后,卡顿检测客户端120可以根据被检测客户端110的基本信息,获得与该基本信息匹配的卡顿检测代码。
下面以被检测客户端110为游戏客户端为例,对获得卡顿检测代码的方式进行示例说明。游戏客户端通常卡顿的原因包括游戏画面造成的卡顿,因此在对游戏客户端进行卡顿检测时,通常是需要对用于形成画面的函数进行监控,但是对于不同的引擎类型游戏客户端,游戏客户端对应的形成画面的函数是不同的,因此,本申请实施例中,卡顿检测客户端120可以根据被检测客户端对应的引擎类型,获得与该被检测客户端110的引擎类型匹配的卡顿检测代码。
一种获得卡顿检测代码的方式为:
卡顿检测客户端120中预存有不同引擎类型所对应的卡顿检测代码,卡顿检测客户端120在获得被检测客户端110的引擎类型之后,可以获得与该被检测客户端110的引擎类型匹配的卡顿检测代码。其中,不同引擎类型所对应的卡顿检测代码可以是由工作人员预存的。
其中,针对不同引擎类型所对应的卡顿检测代码中所定义的目标函数集合中包括的目标函数不相同,不相同包括不完全相同或者完全不相同,不完全相同是指两个不同的引擎类型对应的卡顿检测代码对应的目标函数集合可能包括一些相同的目标函数,也可能包括一些不相同的目标函数。完全不相同是指两个不同的引擎类型对应的卡顿检测代码对应的目标函数集合包括的目标函数均不相同,也就是说,两种引擎类型对应的目标函数集合中没有存在一样的目标函数。
一种获得卡顿检测代码的方式为:
卡顿检测客户端120根据卡顿检测代码模板,以及被检测客户端110关联的引擎类型生成的。
具体的,卡顿检测客户端120预存有卡顿检测代码模板,卡顿检测客户端120在获得被检测客户端110的引擎类型之后,可以将该引擎类型对应的函数写入卡顿检测代码模板中,从而获得与该引擎类型所对应的卡顿检测代码。
例如卡顿检测客户端120中预存的不同引擎类型所对应的卡顿检测代码之间的对应关系如下表1所示。
表1
Figure BDA0002282695650000111
以表1为例,如果卡顿检测客户端120确定被检测客户端110的引擎类型为Unity3D时,从而确定与该被检测客户端110的引擎类型匹配的卡顿检测代码为第一卡顿检测代码,该第一卡顿检测代码中目标函数集合包括mono函数。
一种获得卡顿检测代码的方式为:
卡顿检测客户端120可以根据被检测客户端110的引擎类型以及OPENGL版本,确定与该被检测客户端110匹配的卡顿检测代码。
具体的,引擎类型不同,对应用于形成画面的函数不同。另外OPENGL版本不同,对应用于形成画面的函数也有所不同,因此卡顿检测客户端120可以根据被检测客户端110的引擎类型和OPENGL版本,从而确定出更加适配的卡顿检测代码。OPENGL版本例如ES2.0、ES2.1和ES3.1等,针对ES2.0,针对ES2.0、ES2.1版本的OPENGL,可以监控eglSwapBuffers函数,针对ES3.1版本的OPENGL,可以监控eglSwapBuffersWithDamageKHR函数。
一种获得卡顿检测代码的方式为:
卡顿检测客户端120中运存有各个客户端对应的卡顿检测代码,卡顿检测客户端120确定被检测客户端110之后,确定与被检测客户端110匹配的卡顿检测代码。
具体的,卡顿检测客户端120中存储有各种卡顿检测代码,以及各种卡顿检测代码关联的客户端,卡顿检测客户端120获得被检测客户端110之后,直接将与该被检测客户端110对应的卡顿检测代码确定为最终的卡顿检测代码。
S304,卡顿检测客户端120将卡顿检测代码注入被检测客户端110。
具体的,卡顿检测客户端120在获得被检测客户端110对应的卡顿检测代码之后,可以将卡顿检测代码注入被检测客户端110中,以达到检测被检测客户端110的目的。例如卡顿检测客户端120可以通过卡顿检测代码在被检测客户端110进程中进行插桩处理,从而实现将卡顿检测代码注入被检测客户端110中。卡顿检测代码可以利用hook技术,修改目标函数集合中各个目标函数的返回数据地址,从而获得各个目标函数的运行信息等。卡顿检测代码还可以利用hook技术,将目标函数集合中各个目标函数替换为对应的函数,以获得各个函数对应的执行信息。
在一种可能的实施例中,被检测客户端110可以对卡顿检测客户端120的验证信息进行验证,在验证成功之后,接收卡顿检测代码。
具体的,卡顿检测客户端120可以注入卡顿检测代码时,将验证信息一并发送给被检测客户端110。被检测客户端110中预存有的验证方案,被检测客户端110通过验证方案,确定该验证信息合法时,被检测客户端110会接收该卡顿检测代码。在确定验证信息不合法时,被检测客户端110拒绝接收该卡顿检测代码。
作为一种实施例,验证信息是对卡顿检测代码进行预设加密算法加密得到的密文,被检测客户端110中存储有预设解密算法,当被检测客户端110能够根据该预设解密算法对验证信息解密成功之后,就确定该卡顿检测代码合法。该实施例中的解密过程相当于对卡顿检测代码进行编译过程,被检测客户端110可以对卡顿检测代码进行身份验证,避免非法篡改卡顿检测代码的情况。
作为一种实施例,验证信息可以是卡顿检测客户端120的身份信息。卡顿检测客户端120将自己的身份信息写入区块链中,在被检测客户端110验证该身份信息合法之后,接收卡顿检测客户端120发送的卡顿检测代码。
具体的,被检测客户端110和卡顿检测客户端120中嵌入有相同的区块链代码,卡顿检测客户端120和当前需要进行检测的被检测客户端110可以作为区块链节点。卡顿检测客户端120将自身的身份信息写入区块链,被检测客户端110同步该身份信息,以实现对卡顿检测客户端120的身份验证。在卡顿检测客户端120的身份验证成功之后,接收卡顿检测客户端120注入的卡顿检测代码。
该实施例中,通过区块链对卡顿检测客户端120的身份进行验证,可以避免非法客户端冒充卡顿检测客户端120,注入非法代码的情况。
S305,卡顿检测客户端120获取在被检测客户端110运行过程中,卡顿检测代码运行时返回的目标函数结果。
具体的,如前文论述的内容,卡顿检测代码会在被检测客户端110中运行,运行过程中,可以返回目标函数集合中各个目标函数的目标函数结果。目标函数结果包括各个目标函数的执行时长。
作为一种实施例,形成每帧画面都会对应调用eglSwapBuffers和/或eglSwapBuffersWithDamageKHR函数,运行卡顿检测代码时,就可以监控eglSwapBuffers和/或eglSwapBuffersWithDamageKHR函数调用,确定每一次调用eglSwapBuffers和/或eglSwapBuffersWithDamageKHR函数的时长,也就相当于获得了形成每帧画面的形成时长,从而获得eglSwapBuffers和/或eglSwapBuffersWithDamageKHR函数的总执行时长,总执行时长也就相当于获得了被检测客户端110的总运行时长。
作为一种实施例,卡顿检测客户端120可以记录描绘drawcall次数。
具体的,卡顿检测客户端120通过记录形成所有画面所调用的所有函数的总次数,该总次数也就是drawcall次数。
作为一种实施例,卡顿检测代码在运行过程中,仅返回满足预设条件的画面的形成时长,满足预设条件包括形成时长大于或等于预设时长的画面。这样一来,无需返回每帧画面的形成时长,可以相对减少卡顿检测代码反馈的信息,可以提高获得的目标函数结果的针对性。
作为一种实施例,卡顿检测代码可以对不同场景下形成的画面的时长进行分别监控,获得各个场景下每帧画面的形成时长,以及各个场景下的总运行时长,总时长是指形成该场景下所有画面的总时长。该实施例,可以方便工作人员对各个被检测客户端中的各个场景进行分别测试,提高测试被检测客户端的准确性和针对性。
在一种可能的实施例中,除了监控画面的形成时长之外,还可以监控被检测客户端110的启动时长、被检测客户端110的更新时长,和被检测客户端110的安装时长中的一种或几种组合。
具体的,目标函数集合还可以包括被检测客户端110的启动时会调用的函数,被检测客户端110的更新时会调用的函数,以及被检测客户端110的安装时会调用的函数,卡顿检测代码通过监控这些函数,从而获得被检测客户端110的启动时长、被检测客户端110的更新时长,和被检测客户端110的安装时长等。
例如,目标函数集合包括startActivityAndWait函数,卡顿检测代码可以通过获取该函数的执行时长,从而获得被检测客户端110的启动时长。
在一种可能的实施例中,除了监控画面的形成时长之前,还可以监控被检测客户端110运行过程中的一些性能参数,例如内存占用率以及CPU占用率等。
具体的,目标函数集合还可以包括psutil.virtual_memory函数,通过对该函数的监控,获得被检测客户端110的内存占用率。目标函数集合还可以包括psutil.cpu_percent函数,通过对该函数的监控,从而实现对被检测客户端110的CPU占用率进行监控。
S306,卡顿检测客户端120将目标函数结果发送给服务器200。
具体的,卡顿检测客户端120可以获得目标函数结果,将目标函数结果发送给服务器200。
作为一种实施例,如前文论述的内容,由于卡顿检测客户端120可能同时对多个被检测客户端110进行测试,因此在获得目标函数结果之后,卡顿检测客户端120将各个被检测客户端的标识以及对应的目标函数结果上传至服务器200,以避免混淆。
作为一种实施例,卡顿检测客户端120可以记录目标函数结果的上传标识,上传标识用于表示该目标函数结果是否上传,从而便于用户直接在卡顿检测客户端120上查看各个被检测客户端110的目标函数结果的上传情况。
作为一种实施例,卡顿检测客户端120响应于用户的重传操作,将目标函数结果重新上传至服务器200。
具体的,在网络较差的情况下或其它情况下,卡顿检测客户端120可能没有成功地将目标函数结果发送给服务器200,此时用户可以进行重新上传目标函数结果的重新上传操作,卡顿检测客户端120响应于用户的重新上传操作,重新上传该目标函数结果。
作为一种实施例,卡顿检测客户端120可以将目标函数结果以及形成该目标函数结果的时间戳一并发送给服务器200。
具体的,卡顿检测客户端120可以在获得各个目标函数的执行信息时,记录各个目标函数产生执行信息的时间,并将时间与对应的目标函数的执行信息关联存储,一并发送给服务器200。
例如,请参照图5,表示一种上传目标函数结果后的界面示意图。卡顿检测客户端120在获得目标函数结果之后,可以存储目标函数结果,并将目标函数结果反馈给服务器200,并显示该测试记录中显示已上传。
S307,服务器200可以根据目标函数结果,确定卡顿原因。
具体的,服务器200在获得目标函数结果之后,也就相当于获得形成各帧画面的时长,以及各个场景下的总时长,服务器200基于这些获得各帧画面的时长,以及各个场景下的总时长,分析出被检测客户端110卡顿原因。
作为一种实施例,服务器200例如可以确定一帧画面的形成时长是否大于或等于预设时长,如果一帧画面的形成时长大于或等于预设时长,确定该帧画面属于卡顿帧。如果一帧画面的形成时长小于预设时长,确定对应帧不属于卡顿帧,卡顿帧的数量就可以视为卡顿次数。服务器200可以根据该卡顿帧对应的其它信息,例如CPU占用率以及内存占用率等,分析出现卡顿的原因。
作为一种实施例,服务器200也可以基于帧模型确定出卡顿原因,帧模型可以是基于之前的大量卡顿帧以及卡顿帧对应的卡顿原因的样本数据训练出来的。服务器200在获得当前的卡顿帧之后,将对应的卡顿帧输入到帧模型,从而确定出卡顿原因。卡顿原因例如资源加载、内存回收、特效播放等原因。
本申请实施例中,服务器200定位对应的卡顿问题,实现了远程确定卡顿原因,即使用户对应的终端设备与服务器200不处于同一网络下,也就是说,用户的终端设备处于外网,服务器200依旧可以定位该被检测客户端110的卡顿问题。
S308,卡顿检测客户端120接收服务器200反馈的卡顿原因。
具体的,在服务器200确定出卡顿原因之后,可以将卡顿原因反馈给卡顿检测客户端120。卡顿检测客户端120在接收到卡顿原因之后,可以显示卡顿原因,以便于用户及时查看卡顿原因,或者便于用户解决部分卡顿原因。
在一种可能的实施例中,服务器200还可以将这次被检测客户端110运行过程中的卡顿次数一并反馈给卡顿检测客户端120,便于用户查看。
作为一种实施例,S301、S306-S308为两个可选的部分。
基于同一发明构思,本申请实施例提供一种应用卡顿检测装置,该装置相当于前文论述的卡顿检测客户端120,请参照图6,该装置600包括:
创建模块601,用于响应于被检测客户端的开启操作,创建虚拟环境;
注入模块602,用于在虚拟环境内运行被检测客户端,并将卡顿检测代码注入至被检测客户端关联的进程中;其中,卡顿检测代码用于监控进程中的目标函数集合;
获取模块603,用于获取在被检测客户端运行过程中,卡顿检测代码运行时返回的目标函数结果;其中,目标函数结果用于判断被检测客户端是否出现卡顿的信息,目标函数结果包括目标函数集合中各个目标函数的执行时长。
在一种可能的实施例中,注入模块602还用于:
在虚拟环境内运行被检测客户端,并将卡顿检测代码注入至被检测客户端关联的进程中之前,获取被检测客户端对应的引擎类型;
获得与引擎类型关联的卡顿检测代码;其中,引擎类型不同,对应的卡顿检测代码用于监控的目标函数集合中的目标函数不相同。
在一种可能的实施例中,所述目标函数集合包括用于形成画面的函数,获取模块603具体用于:
获取在被检测客户端运行过程中,卡顿检测代码运行时返回的目标函数集合中各个目标函数的执行时长,并根据目标函数集合中各个目标函数的执行时长,获得被检测客户端在各个场景下的总运行时长,以及各个场景中每帧画面的形成时长。
在一种可能的实施例中,目标函数结果还包括被检测客户端的启动时长、被检测客户端的更新时长和被检测客户端的安装时长中的一种或几种组合。
在一种可能的实施例中,装置还包括收发模块604,收发模块604具体用于:
在获取在被检测客户端运行过程中,卡顿检测代码运行时返回的目标函数结果之后,将目标函数结果反馈给服务器,以使服务器根据目标函数结果,确定卡顿原因;
接收并显示卡顿原因。
在一种可能的实施例中,被检测客户端为游戏客户端。
在一种可能的实施例中,目标函数集合包括eglSwapBuffers函数或eglSwapBuffersWithDamageKHR函数。
作为一种实施例,该装置600中的收发模块604为可选的模块。
作为一种实施例,图6中的装置可以用于实现前文论述的任意一种应用卡顿检测方法。
基于同一发明构思,本申请实施例提供一种应用卡顿检测装置,该装置相当于前文论述的被检测客户端110,请参照图7,该装置700包括收发模块701和处理模块702,其中:
收发模块701,用于在处理模块702的控制下,在虚拟环境内运行,并接收检测代码;其中,虚拟环境是响应于被检测客户端的开启操作时,为被检测客户端创建的运行环境,卡顿检测代码用于监控被检测客户端关联的进程中的目标函数集合;以及,根据卡顿检测代码,上报在运行过程中的目标函数结果;其中,目标函数结果用于判断被检测客户端是否出现卡顿的信息,目标函数结果包括目标函数集合中各个目标函数的执行时长。
作为一种实施例,图7中的装置可以用于实现前文论述的应用卡顿检测方法。
基于同一发明构思,本申请实施例提供一种终端设备,下面对该终端设备进行介绍。
请参照图8,表示一种终端设备的结构示意图,该终端设备100包括显示单元840、处理器880以及存储器820。其中,显示单元840包括显示面板841,用于显示由用户输入的信息或提供给用户的信息以及卡顿检测客户端120和被检测客户端110的各种操作界面等,在本申请实施例中主要用于显示终端设备100中已安装的客户端的界面、快捷窗口等。
可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)或有机发光二极管OLED(Organic Light-Emitting Diode)等形式来配置显示面板841。
处理器880用于读取计算机程序,然后执行计算机程序定义的方法,例如处理器880读取卡顿检测客户端以及被检测客户端等,从而使得卡顿检测客户端以及被检测客户端在该终端设备100上运行应用,在显示单元840上显示应用的界面。处理器880可以包括一个或多个通用处理器,还可包括一个或多个DSP(Digital Signal Processor,数字信号处理器),用于执行相关操作,以实现本申请实施例所提供的技术方案。
存储器820一般包括内存和外存,内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。外存可以为硬盘、光盘、USB盘、软盘或磁带机等。存储器820用于存储计算机程序和其他数据,该计算机程序包括客户端对应的应用程序等,其他数据可包括操作系统或应用程序被运行后产生的数据,该数据包括系统数据(例如操作系统的配置参数)和用户数据。本申请实施例中程序指令存储在存储器820中,处理器880执行存储其中820中的程序指令,实现前文论述的任意的一种应用卡顿检测方法。
此外,终端设备100还可以包括显示单元840,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及产生与终端设备100的用户设置以及功能控制有关的信号输入等。具体地,本申请实施例中,该显示单元840可以包括显示面板841。显示面板841例如触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在显示面板841上或在显示面板841的操作),并根据预先设定的程式驱动相应的连接装置。可选的,显示面板841可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测玩家的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。在本申请实施例中,若用户点击被检测客户端110,则在显示面板841中的触摸检测装置检测到触摸操作,则将检测到的触摸操作对应的信号发送的触摸控制器,触摸控制器将信号转换成触点坐标发送给处理器880,处理器880根据接收到的触点坐标确定用户需要对被检测客户端110进行卡顿检测。
其中,显示面板841可以采用电阻式、电容式、红外线以及表面声波等多种类型实现。除了显示单元840,终端设备100还可以包括输入单元830(例如包括图像输入设备831和其他输入设备832),输入单元830可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
除以上之外,终端设备100还可以包括用于给其他模块供电的电源890、音频电路860、近场通信模块870和RF电路810。终端设备100还可以包括一个或多个传感器850,例如加速度传感器、光传感器、压力传感器等。音频电路860具体包括扬声器861和麦克风862等,例如终端设备100可以通过麦克风862采集用户的声音,进行相应的操作等。
作为一种实施例,处理器880的数量可以是一个或多个,处理器880和存储器820可以是耦合设置,也可以是相对独立设置。
作为一种实施例,图8中的处理器880可以用于实现如图6中的创建模块601、注入模块602、获取模块603和收发模块604的功能。
作为一种实施例,图8中的处理器880可以用于实现如图7中的处理模块702和收发模块701的功能。
作为一种实施例,图8中的处理器880可以用于实现前文论述的卡顿检测客户端120的功能,和/或被检测客户端的110功能。
基于同一发明构思,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如前文任一所述的应用卡顿检测方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种应用卡顿检测方法,其特征在于,包括:
响应于被检测客户端的开启操作,创建虚拟环境;
在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中;其中,所述卡顿检测代码用于监控所述进程中的目标函数集合;
获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,所述目标函数结果包括所述目标函数集合中各个目标函数的执行时长。
2.如权利要求1所述的方法,其特征在于,在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中之前,包括:
获取所述被检测客户端对应的引擎类型;
获得与所述引擎类型关联的卡顿检测代码;其中,引擎类型不同,对应的卡顿检测代码用于监控的目标函数集合中的目标函数不相同。
3.如权利要求1所述的方法,其特征在于,所述目标函数集合包括用于形成画面的函数,获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果,包括:
获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的所述目标函数集合中各个目标函数的执行时长,并根据所述目标函数集合中各个目标函数的执行时长,获得所述被检测客户端在各个场景下的总运行时长,以及各个场景中每帧画面的形成时长。
4.如权利要求1所述的方法,其特征在于,所述目标函数结果还包括所述被检测客户端的启动时长、所述被检测客户端的更新时长和所述被检测客户端的安装时长中的一种或几种组合。
5.如权利要求1所述的方法,其特征在于,在获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果之后,包括:
将所述目标函数结果反馈给服务器,以使所述服务器根据所述目标函数结果,确定卡顿原因;
接收并显示所述卡顿原因。
6.如权利要求1-5任一所述的方法,其特征在于,所述被检测客户端为游戏客户端。
7.如权利要求6所述的方法,其特征在于,所述目标函数集合包括eglSwapBuffers函数或eglSwapBuffersWithDamageKHR函数。
8.一种应用卡顿检测方法,其特征在于,应用于被检测客户端中,所述方法包括:
在虚拟环境内运行,并接收检测代码;其中,所述虚拟环境是响应于所述被检测客户端的开启操作时,为所述被检测客户端创建的运行环境,所述卡顿检测代码用于监控所述被检测客户端关联的进程中的目标函数集合;
根据所述卡顿检测代码,上报在运行过程中的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,所述目标函数结果包括所述目标函数集合中各个目标函数的执行时长。
9.一种应用卡顿检测装置,其特征在于,包括:
创建模块,用于响应于被检测客户端的开启操作,创建虚拟环境;
注入模块,用于在所述虚拟环境内运行所述被检测客户端,并将卡顿检测代码注入至所述被检测客户端关联的进程中;其中,所述卡顿检测代码用于监控所述进程中的目标函数集合;
获取模块,用于获取在所述被检测客户端运行过程中,所述卡顿检测代码运行时返回的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息,所述目标函数结果包括所述目标函数集合中各个目标函数的执行时长。
10.一种应用卡顿检测装置,其特征在于,包括处理模块和收发模块,其中:
所述收发模块,用于在处理模块的控制下,在虚拟环境内运行,并接收检测代码;其中,所述虚拟环境是响应于被检测客户端的开启操作时,为所述被检测客户端创建的运行环境,所述卡顿检测代码用于监控所述被检测客户端关联的进程中的目标函数集合;以及,
根据所述卡顿检测代码,上报在运行过程中的目标函数结果;其中,所述目标函数结果用于判断被检测客户端是否出现卡顿的信息。
CN201911147833.XA 2019-11-21 2019-11-21 一种应用卡顿检测方法及检测装置 Active CN110888781B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911147833.XA CN110888781B (zh) 2019-11-21 2019-11-21 一种应用卡顿检测方法及检测装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911147833.XA CN110888781B (zh) 2019-11-21 2019-11-21 一种应用卡顿检测方法及检测装置

Publications (2)

Publication Number Publication Date
CN110888781A true CN110888781A (zh) 2020-03-17
CN110888781B CN110888781B (zh) 2021-11-16

Family

ID=69748205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911147833.XA Active CN110888781B (zh) 2019-11-21 2019-11-21 一种应用卡顿检测方法及检测装置

Country Status (1)

Country Link
CN (1) CN110888781B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131112A (zh) * 2020-09-22 2020-12-25 腾讯科技(深圳)有限公司 操作信息的获取方法和装置、存储介质及电子设备
CN112423096A (zh) * 2020-11-03 2021-02-26 上海哔哩哔哩科技有限公司 播放优化方法及系统
WO2021243574A1 (zh) * 2020-06-02 2021-12-09 深圳市欢太科技有限公司 用户信息违规获取检测方法及相关设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103886252A (zh) * 2013-04-26 2014-06-25 卡巴斯基实验室封闭式股份公司 受信进程地址空间中执行的软件代码的恶意性的选择评估
CN105389258A (zh) * 2015-12-10 2016-03-09 腾讯科技(深圳)有限公司 一种程序检测方法及装置
US20160092246A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation Reverse dependency injection in a system with dynamic code loading
CN105512015A (zh) * 2015-12-15 2016-04-20 北京奇虎科技有限公司 一种安卓目标应用崩溃统计方法和装置
CN105573755A (zh) * 2015-12-15 2016-05-11 北京奇虎科技有限公司 一种应用Activity渲染时间获取方法和装置
US9575634B2 (en) * 2013-03-04 2017-02-21 Facebook, Inc. Techniques for asynchronous rendering
CN107038107A (zh) * 2017-03-09 2017-08-11 武汉斗鱼网络科技有限公司 一种获取应用卡顿信息的方法及装置
CN108304274A (zh) * 2017-12-29 2018-07-20 深圳市金立通信设备有限公司 一种信息交互的方法、服务器及计算机可读介质
CN108932429A (zh) * 2017-05-27 2018-12-04 腾讯科技(深圳)有限公司 应用程序的分析方法、终端及存储介质
CN109240875A (zh) * 2018-07-12 2019-01-18 北京百度网讯科技有限公司 一种卡顿分析方法及系统
CN109842533A (zh) * 2019-01-17 2019-06-04 珠海金山网络游戏科技有限公司 一种检测游戏卡顿帧的方法及装置
CN110109759A (zh) * 2019-05-07 2019-08-09 Oppo广东移动通信有限公司 卡顿优化方法、服务器、电子装置及计算机可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9575634B2 (en) * 2013-03-04 2017-02-21 Facebook, Inc. Techniques for asynchronous rendering
CN103886252A (zh) * 2013-04-26 2014-06-25 卡巴斯基实验室封闭式股份公司 受信进程地址空间中执行的软件代码的恶意性的选择评估
US20160092246A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation Reverse dependency injection in a system with dynamic code loading
CN105389258A (zh) * 2015-12-10 2016-03-09 腾讯科技(深圳)有限公司 一种程序检测方法及装置
CN105512015A (zh) * 2015-12-15 2016-04-20 北京奇虎科技有限公司 一种安卓目标应用崩溃统计方法和装置
CN105573755A (zh) * 2015-12-15 2016-05-11 北京奇虎科技有限公司 一种应用Activity渲染时间获取方法和装置
CN107038107A (zh) * 2017-03-09 2017-08-11 武汉斗鱼网络科技有限公司 一种获取应用卡顿信息的方法及装置
CN108932429A (zh) * 2017-05-27 2018-12-04 腾讯科技(深圳)有限公司 应用程序的分析方法、终端及存储介质
CN108304274A (zh) * 2017-12-29 2018-07-20 深圳市金立通信设备有限公司 一种信息交互的方法、服务器及计算机可读介质
CN109240875A (zh) * 2018-07-12 2019-01-18 北京百度网讯科技有限公司 一种卡顿分析方法及系统
CN109842533A (zh) * 2019-01-17 2019-06-04 珠海金山网络游戏科技有限公司 一种检测游戏卡顿帧的方法及装置
CN110109759A (zh) * 2019-05-07 2019-08-09 Oppo广东移动通信有限公司 卡顿优化方法、服务器、电子装置及计算机可读存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021243574A1 (zh) * 2020-06-02 2021-12-09 深圳市欢太科技有限公司 用户信息违规获取检测方法及相关设备
CN112131112A (zh) * 2020-09-22 2020-12-25 腾讯科技(深圳)有限公司 操作信息的获取方法和装置、存储介质及电子设备
CN112131112B (zh) * 2020-09-22 2021-09-10 腾讯科技(深圳)有限公司 操作信息的获取方法和装置、存储介质及电子设备
CN112423096A (zh) * 2020-11-03 2021-02-26 上海哔哩哔哩科技有限公司 播放优化方法及系统
CN112423096B (zh) * 2020-11-03 2022-10-04 上海哔哩哔哩科技有限公司 播放优化方法及系统

Also Published As

Publication number Publication date
CN110888781B (zh) 2021-11-16

Similar Documents

Publication Publication Date Title
CN109388532B (zh) 测试方法、装置、电子设备及计算机可读取存储介质
CN110888781B (zh) 一种应用卡顿检测方法及检测装置
US11023363B2 (en) Performance test application sequence script
CN101493790B (zh) 记录回放系统和记录回放方法
US9665473B2 (en) Smart tester application for testing other applications
CN111782492B (zh) 页面首屏加载时长测试方法、装置、计算机设备及介质
US9679090B1 (en) Systematically exploring programs during testing
CN110941551B (zh) 一种应用卡顿检测方法、装置、设备及计算机存储介质
WO2021254075A1 (zh) 应用的登录方法和装置
WO2017165071A1 (en) Visual regression analysis
CN105630685A (zh) 程序接口测试方法及装置
KR20200002843A (ko) 모니터링 시스템에서 발생하는 경보에 대한 기계 학습식 결정 안내 기법
US9123106B2 (en) Watermarking screen capture content
US20130293486A1 (en) Touch-based remote control
US9756141B2 (en) Media content consumption analytics
CN106294176A (zh) Mac OS系统中应用程序故障定位的方法及系统
CN111949334B (zh) 基于沙箱环境的虚拟应用启动控制方法、装置及设备
CN111581005A (zh) 终端修复方法、终端和存储介质
WO2018205392A1 (zh) 控制响应区域显示控制方法、电子装置及存储介质
CN114042310A (zh) 游戏操作数据收集方法、装置、计算机设备及存储介质
CN110888740A (zh) 小程序的增量内存确定方法、装置、设备及存储介质
CN111866557B (zh) 大屏显示设备的配置方法、装置、存储介质以及电子设备
CN111866058A (zh) 数据处理方法及系统
WO2015039585A1 (en) Method and device for testing software reliability
CN110569184B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40021992

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant