首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 系统软件 / 操作系统 / 进程 / 一种小程序的加载时间确定方法、装置、终端及存储介质

一种小程序的加载时间确定方法、装置、终端及存储介质

阅读:1016发布:2020-05-27

专利汇可以提供一种小程序的加载时间确定方法、装置、终端及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种小程序的加载时间确定方法、装置、终端及存储介质,其中,小程序的加载时间确定方法包括:每隔预设时间间隔检测终端中 操作系统 的前台 进程 ;当检测到前台进程发生改变,且当前的前台进程为小程序的进程时记录检测时间;在加载目标小程序的过程中,通过调用预设函数获取 指定 事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间;所述指定事件为表征目标小程序加载完成的事件;根据检测时间和加载完成时间,确定目标小程序的启动时间;根据启动时间和加载完成时间,确定目标小程序的加载时间。本发明提高了小程序加载时间确定的准确性和确定效率,适合获取批量小程序在不同终端上的加载时间。,下面是一种小程序的加载时间确定方法、装置、终端及存储介质专利的具体信息内容。

1.一种小程序的加载时间确定方法,其特征在于,所述方法包括:
每隔预设时间间隔检测终端中操作系统的前台进程
当检测到所述前台进程发生改变,且当前的前台进程为小程序的进程时,记录检测时间;所述小程序包括目标小程序;
在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间;所述指定事件为表征所述目标小程序加载完成的事件;
根据所述检测时间和加载完成时间,确定所述目标小程序的启动时间;
根据所述启动时间和加载完成时间,确定所述目标小程序的加载时间。
2.根据权利要求1所述的小程序的加载时间确定方法,其特征在于,所述根据所述检测时间和加载完成时间,确定所述目标程序的启动时间包括:
根据检测时间与预设时间间隔,确定所述小程序出现在所述前台进程的前台时间;
计算所述加载完成时间与所述前台时间的差值,得到对应所述前台时间的时间差;
确定最小的时间差对应的前台时间,将所述最小的时间差对应的前台时间作为所述目标小程序的启动时间。
3.根据权利要求2所述的小程序的加载时间确定方法,其特征在于,所述根据检测时间与预设时间间隔,确定所述小程序出现在所述前台进程的前台时间包括:
计算所述检测时间与预设时间间隔的差值;
将所述检测时间与预设时间间隔的差值,确定为所述小程序出现在所述前台进程的前台时间。
4.根据权利要求1所述的小程序的加载时间确定方法,其特征在于,所述目标小程序包括页面类型小程序;所述在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间包括:
在加载所述页面类型小程序的过程中,通过调用预设函数获取页面渲染事件的发生时间。
5.根据权利要求4所述的小程序的加载时间确定方法,其特征在于,所述在加载所述页面类型小程序的过程中,通过调用预设函数获取页面渲染事件的发生时间包括:
在页面类型小程序定义页面对象之前,调用页面对象的类;
在所述页面对象的类中调用页面渲染事件监听函数,通过所述页面渲染事件监听函数监听所述页面渲染事件;
当监听到所述页面渲染事件发生时,通过所述类中的预设函数记录所述操作系统的当前时间;所述操作系统的当前时间作为所述页面渲染事件的发生时间。
6.根据权利要求5所述的小程序的加载时间确定方法,其特征在于,所述调用所述页面对象的类包括:通过挂钩函数调用所述页面对象的类;
所述调用页面渲染完成事件监听函数包括:通过挂钩函数调用页面渲染事件监听函数。
7.根据权利要求1所述的小程序的加载时间确定方法,其特征在于,所述目标小程序包括游戏类型小程序;所述在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间包括:
在加载所述游戏类型小程序时,通过调用预设函数获取游戏界面绘制事件的发生时间;所述预设函数挂钩游戏界面绘制函数。
8.一种小程序的加载时间确定装置,其特征在于,所述装置包括:
检测模,用于每隔预设时间间隔检测终端中操作系统的前台进程;
记录模块,用于在检测到所述前台进程为小程序的进程时,记录检测时间;所述小程序包括目标小程序;
第一获取模块,用于在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间;所述指定事件为表征所述目标小程序加载完成的事件;
第一确定模块,用于根据所述检测时间和加载完成时间,确定所述目标小程序的启动时间;
第二确定模块,用于根据所述启动时间和加载完成时间,确定所述目标小程序的加载时间。
9.一种终端,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1~7中任一项所述的小程序的加载时间确定方法。
10.一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1~7任一项所述的小程序的加载时间确定方法。

说明书全文

一种小程序的加载时间确定方法、装置、终端及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种小程序的加载时间确定方法、装置、终端及存储介质。

背景技术

[0002] 小程序,是指一种基于特定编程语言开发完成,无需下载和安装,就可以使用的移动端应用程序,其可以运行在跨平台移动客户端上。小程序的最大特点是使用便捷,用户扫一扫或者搜一下即可打开应用,无需手动在移动端的操作系统中安装,从而用户不用关心是否安装太多应用程序的问题。
[0003] 小程序的加载时间是指用户启动小程序到用户能看到小程序的首屏界面的时间间隔,加载时间的长短直接影响到用户对小程序的使用体验,其是衡量小程序性能的一个重要指标,因此,在小程序的测试阶段对于小程序的加载时间的获取是非常必要的。
[0004] 相关技术中,小程序在测试时主要通过人工介入的方式来获得加载时间,例如,人工肉眼掐秒计时,或者进行视频录制,人工逐分析录制的视频得到。显然,人工介入方式确定的小程序的加载时间不仅误差大、准确性低,而且实现过程繁琐,不适合批量小程序的测试场景。

发明内容

[0005] 为了解决现有技术的问题,本发明实施例提供了一种小程序的加载时间确定方法、装置、终端及存储介质。所述技术方案如下:
[0006] 一方面,提供了一种小程序的加载时间确定方法,所述方法包括:
[0007] 每隔预设时间间隔检测终端中操作系统的前台进程
[0008] 当检测到所述前台进程发生改变,且当前的前台进程为小程序的进程时,记录检测时间;所述小程序包括目标小程序;
[0009] 在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间;所述指定事件为表征所述目标小程序加载完成的事件;
[0010] 根据所述检测时间和加载完成时间,确定所述目标小程序的启动时间;
[0011] 根据所述启动时间和加载完成时间,确定所述目标小程序的加载时间。
[0012] 另一方面,提供了一种小程序的加载时间确定装置,所述装置包括:
[0013] 检测模,用于每隔预设时间间隔检测终端中操作系统的前台进程;
[0014] 第一记录模块,用于在检测到所述前台进程发生改变,且当前的前台进程为小程序的进程时,记录检测时间;所述小程序包括目标小程序;
[0015] 第一获取模块,用于在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间;所述指定事件为表征所述目标小程序加载完成的事件;
[0016] 第一确定模块,用于根据所述检测时间和加载完成时间,确定所述目标小程序的启动时间;
[0017] 第二确定模块,用于根据所述启动时间和加载完成时间,确定所述目标小程序的加载时间。
[0018] 可选的,所述第一确定模块包括:
[0019] 第三确定模块,用于根据检测时间与预设时间间隔,确定所述小程序出现在所述前台进程的前台时间;
[0020] 第一计算模块,用于计算所述加载完成时间与所述前台时间的差值,得到对应所述前台时间的时间差;
[0021] 第四确定模块,用于确定最小的时间差对应的前台时间,将所述最小的时间差对应的前台时间作为所述目标小程序的启动时间。
[0022] 可选的,所述第三确定模块包括:
[0023] 第二计算模块,用于计算所述检测时间与预设时间间隔的差值;
[0024] 第五确定模块,用于将所述检测时间与预设时间间隔的差值,确定为所述小程序出现在所述前台进程的前台时间。
[0025] 可选的,所述目标小程序包括页面类型小程序;所述第一获取模块,具体用于:在加载所述页面类型小程序的过程中,通过调用预设函数获取页面渲染事件的发生时间。
[0026] 可选的,所述第一获取模块包括:
[0027] 第一调用模块,用于在所述页面类型小程序定义页面对象之前,调用页面对象的类;
[0028] 监听模块,用于在所述页面对象的类中调用页面渲染事件监听函数,通过所述页面渲染事件监听函数监听所述页面渲染事件;
[0029] 第二记录模块,用于在监听到所述页面渲染事件发生时,通过所述类中的预设函数记录所述操作系统的当前时间;所述操作系统的当前时间作为所述页面渲染事件的发生时间。
[0030] 可选的,所述第一调用模块通过挂钩函数调用所述页面对象的类;所述监听模块通过挂钩函数调用页面渲染事件监听函数。
[0031] 可选的,所述目标小程序包括游戏类型小程序;所述第一获取模块,具体用于:在加载所述游戏类型小程序时,通过调用预设函数获取游戏界面绘制事件的发生时间;所述预设函数挂钩游戏界面绘制函数。
[0032] 另一方面,提供了一种终端,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述小程序的加载时间确定方法。
[0033] 另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的小程序的加载时间确定方法。
[0034] 本发明实施例通过在检测到终端操作系统的前台进程改变为小程序的进程时,记录检测时间,在加载目小程序的过程中,通过调用预设函数来获取用于表征目标小程序加载完成的指定事件的发生时间得到加载完成时间,进而基于检测时间和加载完成时间确定目标小程序的启动时间,并根据启动时间和加载完成时间得到目标小程序的加载时间,从而实现对小程序加载时间的自动生成,无需人工介入对测试阶段小程序加载时间的统计,提高了小程序加载时间确定的准确性和确定效率,非常适合获取批量小程序在不同终端上的加载时间,有利于提高小程序的测试效率。附图说明
[0035] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036] 图1是本发明实施例提供的一种小程序的加载时间确定方法的流程示意图;
[0037] 图2是本发明实施例提供的小程序出现在前台进程的前台时间的一个示意图;
[0038] 图3是本发明实施例提供的根据检测时间和加载完成时间,确定目标小程序的启动时间的一种方法的流程示意图;
[0039] 图4是本发明实施例提供的确定目标小程序的启动时间的一个示意图;
[0040] 图5是采用本发明实施例的小程序的加载时间确定方法对小程序在不同终端上进行性能测试得到的性能报告示意图;
[0041] 图6是本发明实施例提供的一种小程序的加载时间确定装置的结构示意图;
[0042] 图7是本发明实施例提供的一种终端的硬件结构框图

具体实施方式

[0043] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044] 需要说明的是,本发明的说明书权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0045] 请参阅图1,其所示为本发明实施例提供的一种小程序的加载时间确定方法的流程示意图,该方法可应用于终端,终端可以为手机、平板电脑、计算机等设备,终端包括操作系统和能够运行于操作系统的小程序。
[0046] 操作系统(Operating System,OS)是管理和控制计算机硬件与软件资源的计算机程序,为终端上的其他程序提供接口,供其他程序调用,操作系统可以为安卓操作系统或者iOS(iPhone Operating System,苹果操作系统)等。
[0047] 进程是操作系统中资源分配和独立运行的基本单位,其是正在运行的一个程序,每一个进程都是一个运行的实体,有自己的地址空间,并且占用一定的系统资源。操作系统中的每个进程都可能以两种方式存在即前台进程和后台进程,所谓前台进程是指用户目前在屏幕上可以进行交互的进程,后台进程是指实际在操作但由于屏幕上无法看到的、无法进行交互的进程。
[0048] 作为一个可选的应用场景,终端可以为对小程序进行测试的测试终端,当开发人员开发出小程序后,可以在测试终端运行小程序,采用本发明实施例提供的小程序的加载时间确定方法获取小程序的加载时间,将小程序的加载时间作为评测该小程序性能的一个评价维度,可以理解的测试终端可以是不同品牌、不同操作系统以及其它硬件不同或者软件不同的多个测试终端。
[0049] 下面将从终端的度,结合具体实施例对本发明提供的小程序的加载时间确定方法进行详细说明,如图1所示,所述方法可以包括:
[0050] S101,每隔预设时间间隔检测终端中操作系统的前台进程。
[0051] 其中,预设时间间隔可以根据实际需要进行设定,本说明书实施例中,预设时间间隔按毫秒设置,例如预设时间间隔可以设定为1毫秒、3毫秒等等。
[0052] 具体的实施中,可以通过后台开启一个服务组件来运行按照预设时间间隔检测操作系统的前台进程的检测逻辑,从而不干扰用户的行为操作,该按照预设时间间隔检测前台进程的检测逻辑可以放到异步线程中执行,例如该检测逻辑可以使用adb命令:“adb shell dumpsys activity processes|findstr top-activity”。
[0053] 本说明书实施例中,每次检测均获取前台进程的进程信息,并将本次检测得到的进程信息与上一次检测得到进程信息进行比对,判断二者是否一致,若不一致,说明前台进程发生了改变,进一步根据本次检测得到的进程信息判断前台新开启的进程是否为小程序的进程,其中,进程信息包括进程类型,根据进程类型可以确定进程是否为小程序的进程,若前台新开启的进程是小程序的进程,则进入步骤S103;若前台新开启的进程不是小程序的进程,则继续下一次检测。若本次检测得到的进程信息与上一次检测得到进程信息相一致,则继续下一次检测。
[0054] 以Android系统为例,Android系统中各个进程之间的区别可以通过进程的包名来区别,该包名中包括进程类型,例如,桌面进程(如launcher)、小程序进程(如appbrand)等。因此,检测得到的进程信息中可以包括前台进程的包名,在根据进程信息判断相应的前台进行是否为小程序的进程时,可以从进程信息中提取前台进程的包名,识别该包名中的进程类型以确定前台进程是否为小程序的进程。
[0055] 以微信平台为例,小程序的前台进程的包名中有明显的appbrand0、appbrand1以此类推的进程类型标志。以下是使用“adb shell dumpsys activity processes|findstr top-activity”检测逻辑对前台进程进行检测得到进程信息的示例,每执行一次上述检测逻辑都会获取到相应的进程信息:
[0056] D:\>adb shell dumpsys activity processes|findstr top-activity[0057] Proc#0:fore T/A/TOP trm:0 1808:com.huawei.android.launcher/u0a49(top-activity)
[0058] D:\>
[0059] D:\>adb shell dumpsys activity processes|findstr top-activity[0060] Proc#0:fore T/A/TOP trm:0 17890:com.tencent.mm:appbrand1/u0a21(top-activity
[0061] 其中,进程 信息“Proc#0 :fore  T/A/TOP  trm :0  1808:com.huawei.android.launcher/u0a49(top-activity)”中的“launcher”表明该进程信息为桌面进程,即不是小程序的进程;
[0062] 进程信息“Proc#0:fore T/A/TOP trm:0 17890:com.tencent.mm:appbrand1/u0a21(top-activity)”中含有“appbrand1”,表明该进程信息为小程序的进程,即此次检测时,前台进程发生了改变,且当前的前台进程为小程序的进程。
[0063] 可以理解的,本说明书实施例中,根据前台进程的进程信息确定前台进程发生的改变可以包括前台进程由非小程序的进程改变为小程序的进程,以及前台进程由小程序A的进程改变为小程序B的进程,其中,小程序A和小程序B可以是任意不同的小程序。
[0064] S103,当检测到所述前台进程发生改变,且当前的前台进程为小程序的进程时,记录检测时间;所述小程序包括目标小程序。
[0065] 本说明书实施例中对前台进程发生改变且改变后的进程为小程序的进程的检测时间进行记录,也即每一次前台进程发生改变且改变后的前台进程为小程序的进程都会有一个对应的检测时间。
[0066] S105,在加载目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间。
[0067] 其中,所述指定事件为表征所述目标小程序加载完成的事件。预设函数用于获取指定事件发生时的发生时间。加载完成时间是指用户能看到加载完成后的首屏界面的时间。
[0068] 实际应用中,指定事件可以根据小程序的类型不同而不同,本说明书实施例中,小程序的类型可以包括页面类型小程序和游戏类型小程序。
[0069] 对于页面类型小程序,当页面开始渲染过程即表明用户可以看见界面了,因此,可以将页面渲染事件作为指定事件。该页面渲染事件可以是小程序的第一个页面的页面渲染事件,结合页面类型小程序的页面生命周期,该页面渲染事件可以是与页面渲染对应的页面生命周期事件。
[0070] 以微信小程序为例,页面生命周期事件包括onLoad、onShow、onReady、onHide、onUnload,其中,onLoad监听页面加载,onShow监听页面显示,onReady监听页面初次渲染完成,onHide监听页面隐藏,onUnload监听页面卸载,因此,可以将小程序的第一个页面的onReady事件的发生时间作为页面类小程序的加载完成时间。
[0071] 具体的实施中,可以在小程序工程中,定义App对象之前,完成对Page类的挂钩hook,在Page类中通过hook方法改变OnReady回调逻辑,获得Page对象的onReady事件的时间,以Javascript为例,可以通过以下逻辑实现:
[0072]
[0073] 其中,第33行为小程序App对象生成;第31行为hook Page类,第28行实现使用新的Page对象替换原有的Page对象;第12行至22行为新的Page对象的onReady事件,其中,第12行至28行记录onReady事件的时间,并向外传输;第19至22行实现调用原有的onReady事件;第14行的sendEvent方法即为用于获取onReady事件发生时的发生时间的预设函数。通过运行上述逻辑可以获得Page对象的onReady事件对应的发生时间的一个示例为:{event_type:“Page”,event_name:“onReady”,timestamp:1565869129442}
[0074] 基于以上描述,本说明书实施例中,当目标小程序为页面类型小程序时,在加载该目标小程序的过程中,通过调用预设函数获取页面渲染事件的发生时间。作为一个可选的实施方式,在加载页面类型小程序的过程中,通过调用预设函数获取页面渲染事件的发生时间可以包括:
[0075] 在页面类型小程序定义页面对象之前,调用页面对象的类;具体的,可以通过挂钩函数hook()来调用页面对象的类。
[0076] 在页面对象的类中调用页面渲染事件监听函数,通过所述页面渲染事件监听函数监听所述页面渲染事件;具体的,可以通过挂钩函数hook()来调用将要被定义的页面对象的onReady回调函数,通过onReady回调函数监听页面初次渲染完成事件。
[0077] 当监听到页面渲染事件发生时,通过所述类中的预设函数记录操作系统的当前时间;所述操作系统的当前时间作为所述页面渲染事件的发生时间。
[0078] 对于游戏类型小程序(以下简称为小游戏),当小游戏加载完成之后便会进入到游戏的绘帧逻辑,在游戏引擎第一次绘帧时用户就可以看到界面了,因此,可以将游戏界面绘制事件作为指定事件,当游戏引擎第一次绘帧即表明游戏界面绘制事件发生了,该游戏界面绘制事件发生时的发生时间可以作为加载完成时间。
[0079] 具体的实施中,可以对游戏引擎的update方法(游戏界面绘制函数)进行挂钩hook,并通过预设的绘帧检测逻辑对游戏引擎有没有发生绘帧的事件进行检测,一旦检测到有绘帧,即表明游戏界面绘制事件发生了,可以通过预设函数记录此次绘帧的时间并将其作为首帧时间,并输出,得到小游戏的加载完成时间。具体的实现逻辑可以表示为如下:
[0080]
[0081] 其中,第58行框选出的即为预设的绘帧检测逻辑,第42行的函数animate()即为用于获取游戏界面绘制事件发生时的发生时间的预设函数。上述逻辑运行的输出结果的一个示例为:first_frame_time:1565871085781。
[0082] 以cocos、laya和egret这三种主要的H5游戏引擎为例,对其update方法进行挂钩hook可以参见以下示例中框选出的部分逻辑,其中对Laya和egret游戏引擎的新旧版本,做了兼容:
[0083]
[0084] 可以理解的,以上只是挂钩update方法的一种示例,并不构成对本发明的限制。
[0085] 基于以上描述,本说明书实施例中,当目标小程序为游戏类型小程序时,在加载该游戏类型小程序时,可以通过调用预设函数获取游戏界面绘制事件的发生时间,该预设函数挂钩游戏界面绘制函数。具体的,在加载小游戏时,调用指定程序,该指定程序与游戏界面绘制函数挂钩hook,该指定程序包括绘帧检测函数和预设函数,其中,绘帧检测函数用于检测游戏界面绘制函数是否发生了第一次绘帧事件,一旦检测到有第一次绘帧,则预设函数记录操作系统的当前时间,该操作系统的当前时间即为游戏界面绘制事件的发生时间。
[0086] S107,根据所述检测时间和加载完成时间,确定所述目标小程序的启动时间。
[0087] 实际应用中,操作系统的前台进程改变为小程序的进程可能出现在以下两种情景下:(1)启动进入小程序;(2)小程序由后台切换到前台。
[0088] 可以理解的,在情景(2)中小程序并没有重新加载,只有在情景(1)中才会出现小程序的加载。但是,步骤S103在记录检测时间时并不对这两种情景进行区分,也就是说,记录的检测时间可能有很多个,并不是每个都是对应情景(1),而且在对应情景(1)的检测时间中还包括在启动目标小程序之前的一些小程序的检测时间,因此,首先需要从记录的检测时间中确定启动进入目标小程序的检测时间。
[0089] 而由步骤S105确定加载完成时间的方式可知,只有在情景(1)的情况下才会有加载完成时间,因此,本说明书实施例中,可以结合目标小程序的加载完成时间来确定对应启动进入目标小程序的检测时间。具体的,可以从记录的多个检测时间中确定最接近目标小程序的加载完成时间的检测时间,该检测时间即可以认为是启动进入目标小程序的启动时间。具体的实施中,可计算加载完成时间与各检测时间的差值,其中,最小差值对应的检测时间即为最接近目标小程序的加载完成时间的检测时间。
[0090] 考虑到对操作系统的前台进程的检测是按照预设时间间隔进行的,因此,当在T时刻检测到前台进程改变且当前为小程序的进程时,该小程序实际出现在前台进程的时机是在[T-F,T]这个时间段内,其中,F表示预设时间间隔,也就是说,[T-F,T]这个时间段内的任意时刻都可能是小程序出现在前台进程的前台时间。本说明书实施例中,为了避免后续加载时间计算出现负数,取T-F这个时间来近似为小程序出现在前台进行的前台时间,从而可以得到各检测时间对应的前台时间。以前台进程的改变为由非小程序的进程改变为小程序的进程为例,如图2所示,小程序出现在前台进程的前台时间分别为T1-F,T2-F。在得到各检测时间对应的前台时间后,即可从多个前台时间中确定最接近目标小程序的加载完成时间的前台时间,将最接近目标小程序的加载完成时间的前台时间作为目标小程序的启动时间。
[0091] 基于以上描述,本说明书实施例中,如图3所示,在根据检测时间和加载完成时间,确定目标小程序的启动时间时可以包括:
[0092] S301,根据检测时间与预设时间间隔,确定所述小程序出现在所述前台进程的前台时间。
[0093] 具体的,计算检测时间与预设时间间隔的差值,该检测时间与预设时间间隔的差值作为检测时间对应的小程序出现在前台进程的前台时间。当检测时间为多个时,得到的前台时间也为多个。
[0094] S303,计算所述加载完成时间与所述前台时间的差值,得到对应所述前台时间的时间差。
[0095] 具体的,分别计算目标小程序的加载完成时间与各个前台时间的差值,得到对应每个前台时间的时间差。
[0096] S305,确定最小的时间差对应的前台时间,将所述最小的时间差对应的前台时间作为所述目标小程序的启动时间。
[0097] 可以理解的,最小的时间差对应的前台时间为与目标小程序的加载完成时间最接近的前台时间,由于小程序的加载是一个连续的过程,因此与目标小程序的加载完成时间最接近的前台时间即为目标小程序的启动时间。
[0098] 图4是确定目标小程序的启动时间的一个示意图,对于微信平台中页面类型小程序,根据onReady事件确定启动时间为T2-F;对于微信平台中的小游戏,根据游戏界面绘制事件的first_frame_time确定启动时间为T2-F。
[0099] S109,根据所述启动时间和加载完成时间,确定所述目标小程序的加载时间。
[0100] 具体的,目标小程序的加载完成时间减去启动时间即可得到目标小程序的加载时间。
[0101] 图5是对小程序在不同终端上进行性能测试得到性能报告,其中,首屏加载耗时即为采用本发明实施例提供的小程序的加载时间确定方法得到的小程序的加载时间。
[0102] 由此可见,本发明实施例的小程序的加载时间确定方法可以实现对测试中小程序的加载时间的自动生成,无需人工介入对测试阶段小程序加载时间的统计,提高了小程序加载时间确定的准确性和确定效率,非常适合获取批量小程序在不同终端上的加载时间,有利于提高小程序的测试效率。
[0103] 为了说明采用本发明实施例的小程序的加载时间确定方法得到的加载时间的准确性,下面对该加载时间进行验证。
[0104] 现有技术中,在开发者开发小程序时,微信平台的微信小程序的开发者在IDE(集成开发环境,Integrated Development Environment)中可以生成其所开发的微信小程序的编译预览版本,该编译预览版本通常为30分钟的有效时间。开发者只能使用自己的微信账号登录微信后,扫描微信小程序的编译预览版本,才可以进入其所开发的微信小程序,当选择打开性能面板选项时,该微信小程序进行重启,重新进入该微信小程序后可以观察到性能面板,在该性能面板里面可以看到其所开发的微信小程序的启动耗时。
[0105] 显然,上述基于编译预览版本得到的微信小程序的启动耗时的方法不适用于小程序的测试阶段,更不适用于获取小程序在不同终端的加载时间,但是可以将基于编译预览版本得到的启动耗时作为验证采用本发明实施例的方法得到的小程序的加载时间的准确性的依据。
[0106] 请参见表1和表2,其中,表1为微信平台中页面类型小程序的加载时间的验证数据表。表2为微信平台中小游戏的加载时间的验证数据表。表1和表2中,采用本发明实施例的小程序的加载时间确定方法对应的测试环境为vivox9plus,安卓7.1.2,微信v7.0.4;进程检测频率:0.3s;脚本执行环境:linux虚拟机,ubuntu 18.064位,adbv1.0.32。
[0107] 表1
[0108]
[0109] 可见,采用本发明实施的自动化方法测到的加载时间,在基于编译预览版本对应的启动耗时上下波动,平均误差为103.6ms,误差百分比2.567%。
[0110] 表2
[0111]
[0112] 可见,采用本发明实施的自动化方法测到的加载时间,在基于编译预览版本对应的启动耗时上下波动,平均误差为99.4ms,误差百分比2.376%。
[0113] 综上,与基于编译预览版本的启动耗时对比,总体误差在200ms以内,符合预期,是一个比较能接受的范围,即采用本发明实施例提供的小程序的加载时间确定方法可以得到精确的加载时间。
[0114] 与上述几种实施例提供的小程序的加载时间确定方法相对应,本发明实施例还提供一种小程序的加载时间确定装置,由于本发明实施例提供的小程序的加载时间确定装置与上述几种实施例提供的小程序的加载时间确定方法相对应,因此前述小程序的加载时间确定方法的实施方式也适用于本实施例提供的小程序的加载时间确定装置,在本实施例中不再详细描述。
[0115] 请参阅图6,其所示为本发明实施例提供的一种小程序的加载时间确定装置的结构示意图,该装置具有实现上述方法实施例中小程序的加载时间确定方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图6所示,该装置可以包括:
[0116] 检测模块610,用于每隔预设时间间隔检测终端中操作系统的前台进程;
[0117] 第一记录模块620,用于在检测到所述前台进程发生改变,且当前的前台进程为小程序的进程时,记录检测时间;所述小程序包括目标小程序;
[0118] 第一获取模块630,用于在加载所述目标小程序的过程中,通过调用预设函数获取指定事件发生时的发生时间;所述指定事件发生时的发生时间作为所述目标小程序的加载完成时间;所述指定事件为表征所述目标小程序加载完成的事件;
[0119] 第一确定模块640,用于根据所述检测时间和加载完成时间,确定所述目标小程序的启动时间;
[0120] 第二确定模块650,用于根据所述启动时间和加载完成时间,确定所述目标小程序的加载时间。
[0121] 作为一个可选的实施方式,第一确定模块640可以包括:
[0122] 第三确定模块,用于根据检测时间与预设时间间隔,确定所述小程序出现在所述前台进程的前台时间;
[0123] 第一计算模块,用于计算所述加载完成时间与所述前台时间的差值,得到对应所述前台时间的时间差;
[0124] 第四确定模块,用于确定最小的时间差对应的前台时间,将所述最小的时间差对应的前台时间作为所述目标小程序的启动时间。
[0125] 作为一个可选的实施方式,第三确定模块可以包括:
[0126] 第二计算模块,用于计算所述检测时间与预设时间间隔的差值;
[0127] 第五确定模块,用于将所述检测时间与预设时间间隔的差值,确定为所述小程序出现在所述前台进程的前台时间。
[0128] 作为一个可选的实施方式,所述目标小程序包括页面类型小程序;第一获取模块630,具体用于:在加载所述页面类型小程序的过程中,通过调用预设函数获取页面渲染事件的发生时间。
[0129] 作为一个可选的实施方式,第一获取模块630可以包括:
[0130] 第一调用模块,用于在所述页面类型小程序定义页面对象之前,调用页面对象的类;
[0131] 监听模块,用于在所述页面对象的类中调用页面渲染事件监听函数,通过所述页面渲染事件监听函数监听所述页面渲染事件;
[0132] 第二记录模块,用于在监听到所述页面渲染事件发生时,通过所述类中的预设函数记录所述操作系统的当前时间;所述操作系统的当前时间作为所述页面渲染事件的发生时间。
[0133] 在一个具体的实施例中,第一调用模块通过挂钩函数调用所述页面对象的类;所述监听模块通过挂钩函数调用页面渲染事件监听函数。
[0134] 作为一个可选的实施方式,目标小程序包括游戏类型小程序;第一获取模块630,具体用于:在加载所述游戏类型小程序时,通过调用预设函数获取游戏界面绘制事件的发生时间;所述预设函数挂钩游戏界面绘制函数。
[0135] 需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0136] 本发明实施例的小程序的加载时间确定装置通过在检测到终端操作系统的前台进程改变为小程序的进程时,记录检测时间,在加载目小程序的过程中,通过调用预设函数来获取用于表征目标小程序加载完成的指定事件的发生时间得到加载完成时间,进而基于检测时间和加载完成时间确定目标小程序的启动时间,并根据启动时间和加载完成时间得到目标小程序的加载时间,从而实现对小程序加载时间的自动生成,无需人工介入对测试阶段小程序加载时间的统计,提高了小程序加载时间确定的准确性和确定效率,非常适合获取批量小程序在不同终端上的加载时间,有利于提高小程序的测试效率。
[0137] 本发明实施例提供了一种终端,该终端包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的小程序的加载时间确定方法。
[0138] 存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及确定小程序的加载时间。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问
[0139] 本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在终端上为例,图7是本发明实施例提供的运行一种小程序的加载时间确定方法的终端的硬件结构框图,具体来讲:
[0140] 所述终端可以包括RF(Radio Frequency,射频)电路710、包括有一个或一个以上计算机可读存储介质的存储器720、输入单元730、显示单元740、传感器750、音频电路760、WiFi(wireless fidelity,无线保真)模块770、包括有一个或者一个以上处理核心的处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0141] RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器780处理;另外,将涉及上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他终端通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code Division Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
[0142] 存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述终端的使用所创建的数据等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器720还可以包括存储器控制器,以提供处理器780和输入单元730对存储器720的访问。
[0143] 输入单元730可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元730可包括触敏表面731以及其他输入设备732。触敏表面731,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面731上或在触敏表面731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面731。除了触敏表面731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0144] 显示单元740可用于显示由用户输入的信息或提供给用户的信息以及所述终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元740可包括显示面板741,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板
741。进一步的,触敏表面731可覆盖显示面板741,当触敏表面731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。其中,触敏表面731与显示面板741可以两个独立的部件来实现输入和输入功能,但是在某些实施例中,也可以将触敏表面731与显示面板741集成而实现输入和输出功能。
[0145] 所述终端还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在所述终端移动到边时,关闭显示面板741和/或背光。作为运动传感器的一种,重加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于所述终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0146] 音频电路760、扬声器761,传声器762可提供用户与所述终端之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一终端,或者将音频数据输出至存储器720以便进一步处理。音频电路760还可能包括耳塞插孔,以提供外设耳机与所述终端的通信。
[0147] WiFi属于短距离无线传输技术,所述终端通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于所述终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0148] 处理器780是所述终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行所述终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器780可包括一个或多个处理核心;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
[0149] 所述终端还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源790还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0150] 尽管未示出,所述终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述方法实施例提供的小程序的加载时间确定的指令。
[0151] 本发明的实施例还提供了一种计算机可读存储介质,所述存储介质可设置于终端之中以保存用于实现一种小程序的加载时间确定方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的小程序的加载时间确定方法。
[0152] 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0153] 需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0154] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0155] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0156] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈