CN111367787B - 应用中的页面脚本对象泄漏的检查方法及装置 - Google Patents

应用中的页面脚本对象泄漏的检查方法及装置 Download PDF

Info

Publication number
CN111367787B
CN111367787B CN201811603792.6A CN201811603792A CN111367787B CN 111367787 B CN111367787 B CN 111367787B CN 201811603792 A CN201811603792 A CN 201811603792A CN 111367787 B CN111367787 B CN 111367787B
Authority
CN
China
Prior art keywords
script
application
target page
snapshot
tested
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
Application number
CN201811603792.6A
Other languages
English (en)
Other versions
CN111367787A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811603792.6A priority Critical patent/CN111367787B/zh
Publication of CN111367787A publication Critical patent/CN111367787A/zh
Application granted granted Critical
Publication of CN111367787B publication Critical patent/CN111367787B/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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了应用中的页面脚本对象泄漏的检查方法及装置,其中所述方法包括:运行待测试应用;待测试应用包括基于预置框架开发的调试版本,调试版本中包括调试方法代码;在待测试应用的目标页面被加载前,通过调试方法代码,对脚本运行环境中的脚本对象进行第一次快照;加载目标页面,在脚本运行环境中执行目标页面中的脚本代码;目标页面结束后,对脚本运行环境中的脚本对象进行第二次快照;对比两次快照的数据,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,通过该方法,可以自动的检查脚本对象泄漏,克服了现有调试工具不匹配应用调试的功能和效率需求的缺陷,为泄漏脚本代码的定位和调试提供了可靠依据。

Description

应用中的页面脚本对象泄漏的检查方法及装置
技术领域
本发明涉及应用调试领域,特别涉及一种应用中的页面脚本对象泄漏的检查方法及装置。
背景技术
开发智能设备中的应用APP比较流行的方式包括了混合开发模式,即同时使用Native语言(例如在苹果公司的iOS操作系统中进行APP开发使用Objective-C开发语言),以及Web开发语言(如JavaScript)来进行应用的开发。混合开发模式可以在同一APP中兼顾Native开发语言和Web开发语言的优势,提高了开发效率,也实现了非常优秀的跨平台应用效果。在智能设备APP开发所使用的Web开发语言中,JavaScript是非常重要和使用频率非常高的一种开发语言,APP中大量前端业务代码都可以以JavaScript代码实现。这些代码包括在页面文件中,在页面加载的时候被执行。APP页面的加载需要使用一定量的设备内存,而因为应用的编码设计缺陷等原因,JavaScript代码运行时产生的部分对象所占据的内存并不能及时的被释放,而这会引起JavaScript对象内存泄漏。随着应用运行,内存泄漏变得更加严重后,导致的后果可能是应用占用越来越多的内存资源,严重时可能引起内存溢出使整个APP崩溃。
APP开发进入调试阶段后,JavaScript对象内存泄漏的检查与调试是一项非常重要的工作。在现有技术中,一种方法是开发者通过编译器将APP编译到实际运行设备中,利用设备中的调试工具,对APP各页面中的JavaScript对象的运行情况进行跟踪,以发现可能存在的JavaScript对象内存泄漏。但现有的调试工具往往不是为了APP业务代码调试而专门设计的,缺乏APP调试所需的相应功能,从编译到调试的过程需要大量人员配合才能完成,且得到的数据噪声影响较大,难以快速定位核心问题,使得现有的技术方法效率低下,可靠性不足,特别是当应用中涉及大量实现业务逻辑的脚本代码,应用中的脚本代码更新迭代较为频繁的情况下,更是无法满足需求。综上,需要本领域技术人员解决的问题在于,如何提高脚本对象内存泄漏检查的有效性,以及检查效率,降低脚本对象内存泄漏检查过程的时间和人力成本,更好的满足应用APP以及APP业务代码迅速迭代条件下APP脚本代码调试的效率需求。
发明内容
本发明提供了应用中的页面脚本对象泄漏的检查方法及装置,能够自动化的检查脚本对象泄漏方法,克服了现有调试工具不匹配应用调试的功能和效率需求的缺陷,为脚本代码调试提供了可靠的参考依据。
本发明提供了如下方案:
一种应用中的页面脚本对象泄漏的检查方法,包括:
运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
在待测试应用中的目标页面被加载前,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合;
加载所述目标页面,在所述脚本运行环境中执行所述目标页面中的脚本代码,在所述脚本运行环境中产生所述脚本代码相应的脚本对象;
结束所述目标页面;在所述目标页面结束后,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第二快照数据包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
一种应用中的页面脚本对象泄漏的检查方法,包括:
运行待测试应用;其中,所述待测试应用包括对目标页面中脚本代码进行调试的调试方法代码;
通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;
加载所述目标页面;
结束所述目标页面,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
一种应用中的页面脚本对象泄漏的检查方法,包括:
运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
通过所述调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括在所述第一时间点所述脚本运行环境中所有脚本对象信息的第一集合;
在第二时间点通过所述调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第一快照数据包括在所述第二时间点所述脚本运行环境中所有脚本对象信息的第二集合;其中,所述第一时间点与所述第二时间点之间,所述目标页面在所述脚本运行环境中经过N次完整的加载和退出过程,N为自然数;并且,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
一种应用中的页面脚本对象泄漏的检查装置,包括:
应用运行单元,用于运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
加载前快照单元,用于在待测试应用中的目标页面被加载前,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合;
目标页面加载单元,用于加载所述目标页面,在所述脚本运行环境中执行所述目标页面中的脚本代码,在所述脚本运行环境中产生所述脚本代码相应的脚本对象;
结束后快照单元,用于结束所述目标页面;在所述目标页面结束后,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第二快照数据包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合;
数据对比单元,用于对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
一种应用中的页面脚本对象泄漏的检查装置,包括:
应用加载单元,用于运行待测试应用;其中,所述待测试应用包括对目标页面中脚本代码进行调试的调试方法代码;
第一数据获取单元,用于通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;
页面代码执行单元,用于加载所述目标页面;
第二数据获取单元,用于结束所述目标页面,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;
结果产生单元,用于对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
一种应用中的页面脚本对象泄漏的检查装置,包括:
应用启动单元,用于运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
第一快照单元,用于通过所述调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括在所述第一时间点所述脚本运行环境中所有脚本对象信息的第一集合;
第二快照单元,用于在第二时间点通过所述调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第一快照数据包括在所述第二时间点所述脚本运行环境中所有脚本对象信息的第二集合;其中,所述第一时间点与所述第二时间点之间,所述目标页面在所述脚本运行环境中经过N次完整的加载和退出过程,N为自然数;并且,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
快照对比单元,用于对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
一种电子设备,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
在待测试应用中的目标页面被加载前,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合;
加载所述目标页面,在所述脚本运行环境中执行所述目标页面中的脚本代码,在所述脚本运行环境中产生所述脚本代码相应的脚本对象;
结束所述目标页面;在所述目标页面结束后,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第二快照数据包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
根据本申请提供的具体实施例,本申请公开了以下技术效果:
通过本申请,可以通过运行待测试应用的基于预置框架开发的调试版本,运行其中包括的对目标页面中脚本代码进行调试的调试方法代码;在待测试应用中的目标页面被加载前,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照;结束目标页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,该方法中各步骤的实现和流程的控制,都可以在调试版本应用的运行过程中,由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,以及提供一种自动化的检查脚本对象泄漏方法,克服了现有调试工具不匹配应用调试的功能需求和效率需求的缺陷,为脚本代码调试提供了可靠的参考依据。
进一步的,当查找筛选指定脚本对象的相关继承/调用关系信息,或者查找筛选与泄漏的脚本对象相关的继承/调用关系信息时,可以在可视化前端工具按照数据的结构显示查找筛选得到的结果,便于调试人员直观查看筛选的结果,为更方便发现和定位问题提供参考。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的方法原理的示意图;
图2是本申请实施例一提供的应用中的页面脚本对象泄漏的检查方法的流程图;
图3是本申请实施例一提供的查找筛选结果的可视化显示的示意图;
图4是本申请实施例二提供的应用中的页面脚本对象泄漏的检查方法的流程图;
图5是本申请实施例三提供的应用中的页面脚本对象泄漏的检查方法的流程图;
图6是本申请实施例三所提供的应用页面加载过程的内存占用示意图;
图7是本申请实施例四所提供的装置示意图;
图8是本申请实施例五提供的装置示意图;
图9是本申请实施例六所提供的装置示意图;
图10是本申请实施例七所提供的电子设备示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
随着移动应用中基于Web语言实现的业务代码比重的增加,对于其中承载着许多应用功能和内容实现的脚本语言代码,例如JavaScript代码,其调试工作也日益变得繁重起来。而在现有技术中,由于缺乏相应的高效调试工具,代码的调试工作消耗了许多时间成本,传统技术工具无法满足应用APP自身,及其中的业务代码迅速迭代条件下的代码调试的工作需求。另外,在一些平台型的应用中,除了基于平台应用自身为终端用户提供自有服务外,还为开发者提供了平台化的开发框架,平台应用自身的功能模块或者第三方服务应用,都可以通过该开发框架进行开发,进而以子应用的形式接入平台主应用。可接入应用作为独立功能子应用,依托于主应用而运行,例如可以从主应用中提供的接口启动,由主应用分配运行环境等,同时,又在功能和运行特性等方面保持一定的独立性,平台主应用也可以被视作独立功能子应用的宿主应用,简称主应用。
子应用的开发者可以是第三方开发者,第三方开发者可以在平台提供的开发框架下开发可接入平台应用的子应用,以平台应用中的子应用的方式为用户提供第三方内容或第三方服务,即主应用与子应用可以来自不同的提供方。在应用运行的过程中,主应用中可以集成前端框架代码,通过前端框架代码的运行为子应用运行提供必要的支持,如通过调用前端框架的API来启动子应用的执行环境,在其中执行子应用的脚本代码,提供相应的运行接口等。子程序的页面中通常具有脚本语言实现的业务代码。在一些平台主应用中,大量来自第三方的子应用包含脚本语言代码,这也给脚本对象泄漏的检查定位带来了新的挑战。本申请实施例提供了应用中的页面脚本对象泄漏的检查方法,利用在页面的脚本代码在运行环境中被执行的过程中,在出现了脚本对象泄漏时,被泄漏的脚本对象在页面结束后无法释放内存的特点,在页面运行前后分别执行对运行环境中存在的脚本对象进行快照,通过快照信息的对比,来确定该页面中是否出现了脚本对象泄漏,进一步的,还可以根据对比结果确定和定位出现泄漏的脚本对象,为调试人员确定问题代码的工作提供可靠的参考依据。
如图1所示,为本申请实施例提供的应用中的页面脚本对象泄漏的检查方法的原理示意图,如图1所示,可以在移动终端中运行待测试应用的调试版本,待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码,调试方法代码主要包括调试方法代码(快照A)以及调试方法代码(快照B),在目标页面中的脚本代码在运行环境运行的过程中,分别在页面脚本代码运行前后实现对运行环境中存在的脚本对象进行快照,进而对两次快照进行对比,以根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。调试方法代码(快照A)以及调试方法代码(快照B)可以通过调用相关的获取脚本对象的API实现。下面详细阐述本申请提供的应用中的页面脚本对象泄漏的检查方法。
实施例一
本申请实施例一提供了应用中的页面脚本对象泄漏的检查方法,参见图2,为本申请实施例一提供的应用中的页面脚本对象泄漏的检查方法的流程图,如图2所示,该方法可以包括以下步骤:
S210:运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
首先,可以运行待测试应用。在本申请实施例一中,处于测试或调试阶段的应用所使用的安装包,包括带有调试代码的调试版本安装包(Debug包),不同于应用的发行版本,应用的调试版本安装包中包括了调试方法代码和调试信息,被安装在终端设备或模拟机等设备中并启动运行以后,可以在应用运行的过程中执行其中的调试方法代码,按照设计流程自动进行相应的调试过程。使用这种方式,开发人员可以直接将调试版本安装包安装到设备中运行,而不需要将开发者将真机链接编译器再进行调试,后者通常需要多个开发人员配合完成,例如可能需要客户端开发人员和业务代码开发人员的配合,从而节约人力和时间成本;另一方面,本方法可以通过调试方法代码按照设计流程自动进行相应的调试过程,相较于现有技术中在查找脚本对象泄漏的过程中只能手动控制流程和操作,本方法能够大幅提高这一过程的效率。
待测试应用的调试版本可以在特定的框架下进行开发,即基于预置框架开发,以便待测试应用在运行时可以使用相应的脚本运行环境,如脚本引擎为脚本运行开辟的脚本运行环境,以及调用相应的API资源等。也即,待测试应用的脚本运行环境与其开发所基于的框架可以具有特定的对应关系。例如,在开发和调试iOS中的应用的JavaScript代码时,可以基于JavaScriptCore框架进行,这样,待测试应用中的JavaScript代码可以通过JavaScriptCore引擎解释和运行,JavaScriptCore引擎可以通过JSContext模块提供JavaScript代码的运行环境。
S220:在待测试应用中的目标页面被加载前,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合;
如前所述,移动设备中APP开发所使用的Web开发语言中,用于开发页面内容的脚本语言如JavaScript有着非常高的使用频率,APP一个页面从开始加载到关闭结束的生命周期内,应用中的脚本代码被脚本引擎执行,会在内存的脚本代码运行环境中产生相应的脚本对象。而一旦有某个页面中的脚本对象发生了泄漏,会导致退出页面后该对象无法被回收,其所占用的内存空间不能够及时释放的问题,表现在APP使用上会产生内存占用持续增加,应用崩溃退出等现象,而从应用运行的角度上,则是内存中出现该页面中某个或某些脚本对象在页面结束后依然占据着内存空间。根据这种特点,本申请实施例一提供使用了对比内存快照对比的方式,来检测和发现页面加载运行页面脚本代码至页面结束后,内存中是否有脚本对象泄漏的问题。
首先,可以在待测试应用中的目标页面被加载前,通过所述的调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据。第一快照数据中可以包括目标页面被加载前脚本运行环境中所有脚本对象信息的第一集合。本申请实施例一中,调试方法代码至少可以承担两部分任务,一种是动作时间的控制,即在何时开始某动作;另外还可以实现具体的动作,例如快照截取。具体实现某种动作的方式可以由具体框架环境的实现方式来确定,例如在框架环境已经提供相关的功能对象或API时,可以通过继承该功能对象,或者调用已有的相关的接口实现。当然在框架环境中不包括所需的功能时,也可以自下而上自行编码实现。
以JavaScriptCore引擎运行的JavaScript脚本为例,在收到点击目标页面的指令后,可以先挂起目标页面的加载操作,转而首先通过的调试方法代码调用相关的接口,对待测试应用的JSContext运行环境中的脚本对象进行第一次快照,获取第一快照数据,其中,至少包括了目标页面加载前JSContext运行环境中所有JavaScript脚本对象的第一集合,在第一次快照完成后,再继续执行目标页面的加载操作。
在一些的框架下,所提供的调试工具可以具备自动模拟加载指令的能力,在这种框架下可以首先获取快照,然后通过指令启动目标页面的加载操作,而非采用挂起-继续执行的方式。另外需要说明的是,一些框架中所提供的获取脚本运行环境中脚本对象信息的接口,由于其并非仅为调试脚本代码而设计,使用这类接口时所获得的信息可能会附加得到许多非本方法所必需的信息,因此,在调用这类接口获得脚本运行环境的信息后,可以对获取的信息进行筛选,以得到所需信息,当然,所需的信息至少应包括目标页面被加载前脚本运行环境中所有脚本对象信息。
S230:加载所述目标页面,在所述脚本运行环境中执行所述目标页面中的脚本代码,在所述脚本运行环境中产生所述脚本代码相应的脚本对象;
在完成第一次快照后,可以继续执行目标页面的加载,目标页面中的脚本代码得以在脚本运行环境中得以运行,在脚本运行环境中产生该相应的脚本对象。例如对于基于JavaScriptCore框架实现的JavaScript业务代码,可以通过JavaScriptCore引擎运行,在JavaScript代码具体运行时,JavaScriptCore引擎通过JSContext对象提供JavaScript的执行环境,换而言之,应用的JavaScript业务代码可以在JavaScriptCore引擎为之创建的JSContext运行环境中执行,在执行的过程中产生一系列JS对象。
S240:结束所述目标页面;在所述目标页面结束后,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第二快照数据包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合;
目标页面中的脚本代码得到执行,在脚本产生了相应的脚本对象,此时可以结束目标页面;在保证目标页面中的需要调试的脚本代码得到加载执行的前提下,可以在目标页面内容全部或部分加载完成后结束目标页面。结束目标页面,可以通过点击关闭按钮或发送关闭指令的方式进行,目标页面结束后,可以通过相应的调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据,第二快照数据至少包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合。
为了更便利的为调试人员提供直观的参考数据以及其他用途,在进行第二次快照操作时,还可以获取待测试应用的脚本运行环境中的脚本对象之间的继承/调用关系信息。这种脚本对象之间的继承或调用关系,可以提供给调试人员查看和使用,例如可以供调试人员检查脚本对象之间的继承或关系的正确性,或者查找筛选指定脚本对象的相关继承或调用关系信息等等。一种实现方式下,可以提供查找筛选指定脚本对象的操作入口,在通过该操作入口接收到查找筛选指定脚本对象的指令时,查找筛选指定脚本对象的相关继承或用关系信息。
S250:对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
正常情况下,应用中的打开,加载其中的脚本代码,以及到页面在内存中退出,该页面所产生的相关脚本对象会被完全销毁,在其运行环境中占用内存资源也会被完全释放。而如果脚本对象产生泄漏,在目标页面结束后,未被释放的脚本对象仍然会持续占用内存空间,脚本运行环境的快照上会产生相应的增量,所以,在获取到第一快照数据以及第二快照数据后,可以对两者进行对比,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。在进行第一次快照时,所获取的第一快照数据包括目标页面被加载前脚本运行环境中所有脚本对象信息的第一集合;在进行第二次快照时,所获取的第二快照数据包括目标页面被结束后脚本运行环境中所有脚本对象信息的第二集合,第一集合以及第二集合中,可以包括各自的脚本对象的标识信息,例如脚本对象的名称,大小等。一般情况下,经对比第一集合以及第二集合,如果对比结果为第一集合为第二集合的真子集,即相对于第一集合,第二集合中存在多余的脚本对象,则可以确定在目标页面中的脚本代码运行过程中产生的脚本对象存在泄漏。
在脚本对象产生泄漏时,增量部分通常对应的即是产生内存泄漏的脚本对象的占用部分,因此,通常可以对比第一快照数据以及第二快照数据,根据对比结果确定泄漏的脚本对象,具体的可以对比第一集合以及第二集合,如果某个或某些对象只在第二集合中存在而没有出现在第一集合中,则可以确定这个或这些对象为泄漏的脚本对象,或者确定为可疑的脚本对象后作进一步的分析。
一个页面在脚本运行环境中的产生的脚本对象之间,大多具有继承/调用关系,某一个脚本对象产生了泄漏,可能会导致其它脚本对象也出现泄漏,或者,如果发现一个脚本对象泄漏,其原因可能不在于这个对象本身,而是在于它的继承者或调用者对象。在另一种实现方式下,在进行第二次快照时,可以获取待测试应用的脚本运行环境中的脚本对象之间的继承/调用关系信息,在对比第一快照数据以及第二快照数据,根据对比结果确定泄漏的脚本对象后,进而,可以在待测试应用的脚本运行环境中的脚本对象之间的继承/调用关系信息中,查找筛选与泄漏的脚本对象相关的继承/调用关系信息,以便调试人员根据与泄漏的脚本对象相关的继承/调用关系信息来确定问题的所在。
在步骤S240中的查找筛选指定脚本对象的相关继承/调用关系信息,或者步骤S250中查找筛选与泄漏的脚本对象相关的继承/调用关系信息,都可以将查找筛选得到的结果组织为结构化数据后返回,例如在对于JSContext运行环境中的指定的JavaScript对象或泄漏的JavaScript对象,可以将该指定对象,或泄漏对象相关的继承/调用关系信息以树形结构数据的形式返回。进一步的,还可以以将查找筛选得到的结果组织为结构化数据后返回给可视化前端工具,可视化前端工具按照数据的结构显示查找筛选得到的结果,可以便于调试人员通过更加直观的方式查看筛选的结果,更方便和高效的发现和定位问题。在实际应用中,可视化前端工具可以实现在运行于测试端的调试版本APP中,也可以实现在与测试端移动设备相连接的计算机中,该计算机可以通过特定连接,例如网络,线缆等与测试端移动设备相连接,接收测试端移动设备传送的数据并以特定方式显示给调试人员,以及实现相应的人机接口供调试人员使用。
请参见图3,为查找筛选结果的可视化显示的示意图,目标页面在脚本运行环境中的产生的脚本对象之间的继承/调用关系如图3所示,对象相关的继承/调用关系信息可以以树形结构数据表示,可以返回给可视化前端工具供调试人员使用。当查找筛选指定脚本对象的相关继承/调用关系信息,或者查找筛选与泄漏的脚本对象相关的继承/调用关系信息时,同样可以在可视化前端工具按照数据的结构显示查找筛选得到的结果,例如图3中,当确定脚本对象“converters”为指定脚本对象,或者确定“methods”为泄漏的脚本对象,可以在可视化的工具中显示该脚本对象的相关继承/调用关系信息。如图中,可以将其中的指定脚本对象“converters”的相关对象链“converters”、“data”、“flare”突出显示;也可以将其中的泄漏的脚本对象“methods”的相关对象链“methods”、“query”、“flare”突出显示;便于调试人员直观查看筛选的结果,为更方便发现和定位问题提供参考。
需要说明的是,在以上介绍的本申请实施例一所提供方法中,以iOS平台中基于JavaScriptCore框架开发的APP中,页面加载所产生的JavaScript对象的泄漏检测为示例,应该理解的是,该示例是为了更好的说明该方法的实现过程,并不应该被理解为对本申请实施例一阐述的方法的限制。在实际应用中,在类似实现机制的具体脚本语言框架中,也可以实施本实施例提供的方法,以取得相似的技术效果。另外由于各种JavaScript引擎都具有很好的跨平台使用的特性,在不同的平台中的不同引擎中,也可以实施本实施例一提供的方法,例如在一些平台型应用中,平台框架提供了独有的脚本引擎以及相应的开发工具,利用平台框架开发并接入到平台应用可以为子应用,对于平台应用中子应用页面的脚本进行泄漏检查,同样可以通过本实施例一提供的方法进行。
平台应用中可以包括子应用,子应用的页面中包括脚本代码的情形下,也可以通过本申请实施例一提供的方法对子应用的页面的脚本对象进行泄漏检查,此时,待测试应用中包括主程序以及子应用,其中,主程序可以看作是平台提供的主应用,而子应用可以通过主程序启动,并与主程序的功能相互独立。目标页面可以为待测试应用中的子应用的页面。在进行这种页面的脚本对象泄漏检查时,首先可以运行主程序,可以在子应用运行前,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,然后通过主程序启动子应用,以加载该子应用的页面,并在脚本运行环境中执行子应用的页面中的脚本代码;然后,关闭子应用以结束子应用的页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据。进而,对比第一快照数据以及第二快照数据,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
以上对本申请实施例一提供的应用中的页面脚本对象泄漏的检查方法进行了详细的介绍,该方法可以通过运行待测试应用的基于预置框架开发的调试版本,运行其中包括的对目标页面中脚本代码进行调试的调试方法代码;在待测试应用中的目标页面被加载前,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照;结束目标页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,该方法中各步骤的实现和流程的控制,都可以在调试版本应用的运行过程中,由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,以及提供一种自动化的检查脚本对象泄漏方法,克服了现有调试工具不匹配应用调试的功能需求和效率需求的缺陷,为泄漏脚本代码的调试提供了可靠依据。
实施例二
本申请实施例二提供了一种应用中的页面脚本对象泄漏的检查方法,如图4所示,为本申请实施例二提供的应用中的页面脚本对象泄漏的检查方法的流程图,该方法可以包括以下步骤:
S410:运行待测试应用;其中,所述待测试应用包括对目标页面中脚本代码进行调试的调试方法代码;
首先,可以运行待测试应用,待测试应用中可以包括对目标页面中脚本代码进行调试的调试方法代码。目标页面可以为待测试应用中的目标页面,在待测试应用为平台化应用,其中包括子应用时,目标页面可以包括子应用的目标页面。目标页面中包括需要检测或调试的脚本代码,脚本代码运行过程中可以有脚本引擎分配运行环境,脚本代码在运行时可以产生相应的脚本对象。在目标页面结束后,相应的脚本代码也停止运行,正常情况下,脚本代码运行产生的内存中的脚本对象也会被释放,而当某些脚本对象因故无法被释放时,则会产生脚本对象泄漏。基于此,可以通过检测内存中页面结束后脚本运行环境中是否产生了本应被释放却没有释放的脚本对象,来确定页面脚本对象是否存在泄漏。
检查内存中的页面脚本对象泄漏可以通过对比页面脚本运行前与页面结束后的内存快照来进行,而页面脚本运行前与页面结束后的内存快照,可以通过待测试应用包括的对目标页面中脚本代码进行调试的调试方法代码来自动获取。待测试应用运行后,其中包括的调试方法代码可以自动的执行预设步骤,按照设计流程自动进行相应的调试过程,从而节约人力和时间成本,提高泄漏对象检查过程的效率。包括了对目标页面中脚本代码进行调试的调试方法的应用,可以视为待测试应用的调试版本。
S420:通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;
可以在待测试应用中的目标页面被加载前,具体的说,可以是在目标页面中的脚本代码被解释执行前,对待测应用的脚本运行环境进行第一次快照。在进行第一次快照时,目标页面的脚本代码还未被加载执行,在内存中也就没有产生相应的内存对象。获取第一快照数据可以通过的调试方法代码的执行来进行。第一快照数据可以包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合。
S430:加载所述目标页面;
所加载目标页面可以由测试人员指定,也可以根据预置的流程确定目标页面并通过自动执行加载指令进行加载。加载目标页面后,目标页面中的脚本代码得以在脚本运行环境中得以运行,在脚本运行环境中产生该相应的脚本对象。
S440:结束所述目标页面,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;
在保证目标页面中的需要调试的脚本代码得到加载执行的前提下,可以在目标页面内容全部或部分加载完成后结束目标页面。目标页面中的脚本代码得到执行,在脚本产生了相应的脚本对象,此时可以结束目标页面;目标页面结束后,可以通过相应的调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据,第二快照数据可以包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合。
S450:对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏;
在脚本对象产生泄漏时,目标页面结束后,未被释放的脚本对象仍然会持续占用内存空间,脚本运行环境的快照上会产生相应的增量,所以,在获取到第一快照数据以及第二快照数据后,可以对两者进行对比,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。在进行第一次快照时以及第二次快照时,可以分别得到包括各次快照的脚本对象的标识信息,例如脚本对象的名称,大小等,将第一快照数据以及第二快照数据进行对比,如果第二快照数据相对于第一次快照数据存在增量,则可以确定目标页面中的脚本代码运行过程中有脚本对象的泄漏存在,而泄漏的脚本对象部分通常为两者对比的增量部分。
以上对本申请实施例二提供的应用中的页面脚本对象泄漏的检查方法进行了详细的介绍,该方法可以运行包括对目标页面中脚本代码进行调试的调试方法代码的待测试应用;通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;加载目标页面;结束目标页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。该方法中各步骤的实现和流程的控制,都可以由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,以及提供一种自动化的检查脚本对象泄漏方法,克服了现有调试工具不匹配应用调试的功能需求和效率需求的缺陷。
实施例三
本申请实施例三提供了另一种应用中的页面脚本对象泄漏的检查方法,参见图5,为本申请实施例三提供的应用中的页面脚本对象泄漏的检查方法的流程图,如图5所示,该方法可以包括以下步骤:
S510:运行待测试应用;其中,待测试应用包括基于预置框架开发的调试版本,其中包括对目标页面中脚本代码进行调试的调试方法代码;
首先,可以运行待测试应用。在本申请实施例一中,处于测试或调试阶段的应用所使用的安装包,包括带有调试代码的调试版本安装包(Debug包),不同于应用的发行版本,应用的调试版本安装包中包括了调试方法代码和调试信息,被安装在终端设备或模拟机等设备中并启动运行以后,可以在应用运行的过程中执行其中的调试方法代码,按照设计流程自动进行相应的调试过程。
S520:通过所述调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括在所述第一时间点所述脚本运行环境中所有脚本对象信息的第一集合;
本申请实施例三中,可以通过调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;第一快照数据包括在所述第一时间点脚本运行环境中所有脚本对象信息的第一集合。在第一时间点的选择上,可以包括1)目标页面退出内存运行的状态,或者2)加载完成的状态。其中1)目标页面退出内存运行的状态可以包括:未加载状态,或者加载后退出的状态。第一时间点的选择,在目标页面所处的状态上需要与第二时间点保持一致,因为只有目标页面相同在运行状态下,所得到的快照进行对比的结果才具有参考意义。显然,第二时间点要晚于第一时间点。
S530:在第二时间点通过所述调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第一快照数据包括在所述第二时间点所述脚本运行环境中所有脚本对象信息的第二集合;其中,所述第一时间点与所述第二时间点之间,所述目标页面在所述脚本运行环境中经过N次完整的加载和退出过程,N为自然数;并且,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
下面结合附图来说明在第一时间点获取第一快照数据,以及在第二时间点获取第二快照数据的过程。参见图6,为本申请实施例三所提供的应用页面加载过程的内存占用示意图。如图6所示,在同一个含有脚本代码的页面被加载的过程中,可能出现脚本对象的泄漏,如果这个出现泄漏问题的页面被反复加载,表现在图6中可见,在每次加载目标页面后,内存占用都会一定程度的升高,这种无节制的内存占用,最终导致的结果可能是应用崩溃。
在第二时间点通过调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照时,第二时间点与第一时间点在目标页面所处的状态上需要具有一致性,例如图6中,目标页面在脚本运行环境中经过多次加载和退出过程,其中t1,t2,以及t3时刻,目标页面处于加载完成的状态,可以在{t1,t2,t3}中选择获取快照的时刻,例如在t1时刻获取第一快照数据,在t2时刻获取第二快照数据。
同理,在O(t0,第一次加载目标页面之前),t4,t5,以及t6时刻,目标页面处于退出内存运行的状态(但泄漏的脚本对象仍占据内存运行空间),可以在{t0,t4,t5,t6}中选择获取快照的时刻,例如在t0时刻获取第一快照数据,在t6时刻获取第二快照数据。t0和t6之间,目标页面在所述脚本运行环境中经过N次完整的加载和退出过程,但t0时刻和t6时刻目标页面所处的运行状态上具有一致性。
S540:对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
具体实现时,可以对比第一集合以及第二集合,如果对比结果为第一集合为第二集合的真子集,即相对于第一集合,第二集合中存在多余的脚本对象,则可以确定在目标页面中的脚本代码运行过程中产生的脚本对象存在泄漏。
在本申请实施例三提供的方法中,可以在进行第二次快照时,获取待测试应用的脚本运行环境中的脚本对象之间的调用关系信息,在调用关系信息中查找筛选指定脚本对象的相关调用关系信息并返回。例如查找用户指定的脚本对象的相关调用关系信息,或者对比第一快照数据以及第二快照数据,根据对比结果确定泄漏的脚本对象,在待测试应用的脚本运行环境中的脚本对象之间的调用关系信息中,查找筛选与泄漏的脚本对象相关的调用关系信息。也可以将查找筛选得到的结果组织为结构化数据后返回给调试人员等。具体实现方式与实施例一中的相关方式类似,在此就不再赘述了。
在保证进行快照操作的时间点目标页面的内存运行状态一直的前提下,对待测试应用的脚本运行环境中的脚本对象可以进行多次快照,以及对快照进行对比。或者,可以上述前提下进行两次快照操作,在两次快照操作之间目标页面在脚本运行环境中经过多次完整的加载和退出过程,然后对两次快照数据进行对比。在这两种方式下,若目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,某一或某些多余的脚本对象的信息可能会在对比结果中会重复出现,而这种重复出现的脚本对象,基本可以确定为被泄漏的对象。可以将相关的信息返回,供调试人员参考使用。另外,该方法对于快照时间选择灵活,可以,与其它测试任务并行,即可以作为测试工程的一个子任务执行。
以上对本申请实施例三提供的应用中的页面脚本对象泄漏的检查方法进行了详细的介绍,该方法可以通过运行待测试应用的基于预置框架开发的调试版本,运行其中包括的对目标页面中脚本代码进行调试的调试方法代码;在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据。在第二时间点通过调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,该方法中各步骤的实现和流程的控制,都可以在调试版本应用的运行过程中,由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,以及提供一种自动化的检查脚本对象泄漏方法,克服了现有调试工具不匹配应用调试的功能需求和效率需求的缺陷,可以为应用中页面脚本代码的调试提供可靠的参考依据。
实施例四
与本申请实施例一相对应,还提供了一种应用中的页面脚本对象泄漏的检查装置,如图7所示,该装置可以包括:
应用运行单元710,用于运行待测试应用;其中,待测试应用包括基于预置框架开发的调试版本,其中包括对目标页面中脚本代码进行调试的调试方法代码;
加载前快照单元720,用于在待测试应用中的目标页面被加载前,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;第一快照数据包括目标页面被加载前脚本运行环境中所有脚本对象信息的第一集合;
目标页面加载单元730,用于加载目标页面,在脚本运行环境中执行目标页面中的脚本代码,在脚本运行环境中产生脚本代码相应的脚本对象;
结束后快照单元740,用于在目标页面的所有内容加载完成后,结束目标页面;在目标页面结束后,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;第二快照数据包括目标页面被结束后脚本运行环境中所有脚本对象信息的第二集合;
数据对比单元750,用于对比第一快照数据以及第二快照数据,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
该应用中的页面脚本对象泄漏的检查装置还可以包括,泄漏对象确定单元,用于:
对比第一快照数据以及第二快照数据,根据对比结果确定泄漏的脚本对象。
其中,预置框架可以包括JavaScriptCore框架;待测试应用的脚本运行环境中可以包括JSContext运行环境。
数据对比单元750,具体可以用于:
对比第一集合以及第二集合,如果对比结果为第一集合为第二集合的真子集,则确定在目标页面中的脚本代码运行过程中产生的脚本对象存在泄漏。
在另一种实施方式下,该应用中的页面脚本对象泄漏的检查装置还可以包括调用关系确定单元,用于:
在进行第二次快照时,获取待测试应用的脚本运行环境中的脚本对象之间的调用关系信息。
在这种实施方式下,该应用中的页面脚本对象泄漏的检查装置还可以包括操作入口提供单元,用于:
提供查找筛选指定脚本对象的操作入口;在通过操作入口接收到查找筛选指定脚本对象的指令时,查找筛选指定脚本对象的相关调用关系信息。
此外,该应用中的页面脚本对象泄漏的检查装置还可以包括泄漏对象追踪单元,用于:
对比第一快照数据以及第二快照数据,根据对比结果确定泄漏的脚本对象;以及,在待测试应用的脚本运行环境中的脚本对象之间的调用关系信息中,查找筛选与泄漏的脚本对象相关的调用关系信息。
为了便于调试人员对筛选查询的结果进行查看,该应用中的页面脚本对象泄漏的检查装置还可以包括数据整理单元,用于:
将查找筛选得到的结果组织为结构化数据后返回。
在另一种实施方式下,该数据整理单元具体可以用于:
将查找筛选得到的结果组织为结构化数据后返回给可视化前端工具,以便可视化前端工具按照数据的结构显示查找筛选得到的结果。
以上对本申请实施例四提供的应用中的页面脚本对象泄漏的检查装置进行了的介绍,该装置可以通过运行待测试应用的基于预置框架开发的调试版本,运行其中包括的对目标页面中脚本代码进行调试的调试方法代码;在待测试应用中的目标页面被加载前,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照;在目标页面的所有内容加载完成后,结束目标页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,该装置中各步骤的实现和流程的控制,都可以在调试版本应用的运行过程中,由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,以及提供一种自动化的检查脚本对象泄漏装置,克服了现有调试工具不匹配应用调试的功能需求和效率需求的缺陷。
实施例五
与本申请实施例二相对应,还提供了另一种应用中的页面脚本对象泄漏的检查装置,如图8所示,该装置可以包括:
应用加载单元810,用于运行待测试应用;其中,待测试应用包括对目标页面中脚本代码进行调试的调试方法代码;
第一数据获取单元820,用于通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;
页面代码执行单元830,用于加载目标页面;
第二数据获取单元840,用于结束目标页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;
结果产生单元850,用于对比第一快照数据以及第二快照数据,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
以上对本申请实施例五提供的应用中的页面脚本对象泄漏的检查装置进行了的介绍,该装置可以运行包括对目标页面中脚本代码进行调试的调试方法代码的待测试应用;通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;加载目标页面,以及结束目标页面,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。该方法中各步骤的实现和流程的控制,都可以由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,以及提供一种自动化的检查脚本对象泄漏方法,克服了现有调试工具不匹配应用调试的功能需求的缺陷,提高了应用中的页面脚本对象泄漏的检查效率。
实施例六
与本申请实施例三相对应,还提供了又一种应用中的页面脚本对象泄漏的检查装置,如图9所示,该装置可以包括:
应用启动单元910,用于运行待测试应用;其中,待测试应用包括基于预置框架开发的调试版本,其中包括对目标页面中脚本代码进行调试的调试方法代码;
第一快照单元920,用于通过调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;第一快照数据包括在第一时间点脚本运行环境中所有脚本对象信息的第一集合;
第二快照单元930,用于在第二时间点通过调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;第一快照数据包括在第二时间点脚本运行环境中所有脚本对象信息的第二集合;其中,第一时间点与第二时间点之间,目标页面在脚本运行环境中经过N次完整的加载和退出过程,N为自然数;并且,在第一时间点以及第二时间点,目标页面处于相同的运行状态;
快照对比单元940,用于对比第一快照数据以及第二快照数据,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
在另一种实施方式下,该应用中的页面脚本对象泄漏的检查装置还可以包括筛选数据返回单元,用于:
在进行所述第二次快照时,获取待测试应用的脚本运行环境中的脚本对象之间的调用关系信息;在调用关系信息中查找筛选指定脚本对象的相关调用关系信息并返回。其中,指定脚本对象可以包括:根据第一快照数据以及第二快照数据的对比结果确定的泄漏的脚本对象。
以上对本申请实施例六提供的应用中的页面脚本对象泄漏的检查装置进行了的介绍,该装置可以通过运行待测试应用的基于预置框架开发的调试版本,运行其中包括的对目标页面中脚本代码进行调试的调试方法代码;在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据。在第二时间点通过调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;通过对比第一快照数据以及第二快照数据,确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,该方法中各步骤的实现和流程的控制,都可以在调试版本应用的运行过程中,由其中的调试方法代码自动实现和控制,避免了现有技术中需要各类开发人员互相配合将待测应用编译至真机的繁琐过程,克服了现有调试工具不匹配应用调试的功能需求和效率需求的缺陷,可以为应用中页面脚本代码的调试提供可靠的参考依据。
实施例七
一种电子设备,可以包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
运行待测试应用;其中,待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
在待测试应用中的目标页面被加载前,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;第一快照数据包括目标页面被加载前脚本运行环境中所有脚本对象信息的第一集合;
加载目标页面,在脚本运行环境中执行目标页面中的脚本代码,在脚本运行环境中产生脚本代码相应的脚本对象;
结束目标页面;在目标页面结束后,通过调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;第二快照数据包括目标页面被结束后脚本运行环境中所有脚本对象信息的第二集合;
对比第一快照数据以及第二快照数据,根据对比结果确定在目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
其中,图10示例性的展示出了电子设备的架构,例如,设备1000可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理,飞行器等。
参照图10,设备1000可以包括以下一个或多个组件:处理组件1002,存储器1004,电源组件1006,多媒体组件1008,音频组件1010,输入/输出(I/O)的接口1012,传感器组件1014,以及通信组件1016。
处理组件1002通常控制设备1000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1002可以包括一个或多个处理器1020来执行指令,以完成本公开技术方案提供的视频播放方法中的当满足预设条件时,生成流量压缩请求,并发送给服务器,其中所述流量压缩请求中记录有用于触发服务器获取目标关注区域的信息,所述流量压缩请求用于请求服务器优先保证目标关注区域内视频内容的码率;根据服务器返回的码流文件播放所述码流文件对应的视频内容,其中所述码流文件为服务器根据所述流量压缩请求对所述目标关注区域之外的视频内容进行码率压缩处理得到的视频文件的全部或部分步骤。此外,处理组件1002可以包括一个或多个模块,便于处理组件1002和其他组件之间的交互。例如,处理组件1002可以包括多媒体模块,以方便多媒体组件1008和处理组件1002之间的交互。
存储器1004被配置为存储各种类型的数据以支持在设备1000的操作。这些数据的示例包括用于在设备1000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1006为设备1000的各种组件提供电力。电源组件1006可以包括电源管理系统,一个或多个电源,及其他与为设备1000生成、管理和分配电力相关联的组件。
多媒体组件1008包括在设备1000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1008包括一个前置摄像头和/或后置摄像头。当设备1000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1010被配置为输出和/或输入音频信号。例如,音频组件1010包括一个麦克风(MIC),当设备1000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1004或经由通信组件1016发送。在一些实施例中,音频组件1010还包括一个扬声器,用于输出音频信号。
I/O接口1012为处理组件1002和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1014包括一个或多个传感器,用于为设备1000提供各个方面的状态评估。例如,传感器组件1014可以检测到设备1000的打开/关闭状态,组件的相对定位,例如所述组件为设备1000的显示器和小键盘,传感器组件1014还可以检测设备1000或设备1000一个组件的位置改变,用户与设备1000接触的存在或不存在,设备1000方位或加速/减速和设备1000的温度变化。传感器组件1014可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1016被配置为便于设备1000和其他设备之间有线或无线方式的通信。设备1000可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1016经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1016还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,设备1000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1004,上述指令可由设备1000的处理器1020执行以完成本公开技术方案提供的视频播放方法中的当满足预设条件时,生成流量压缩请求,并发送给服务器,其中所述流量压缩请求中记录有用于触发服务器获取目标关注区域的信息,所述流量压缩请求用于请求服务器优先保证目标关注区域内视频内容的码率;根据服务器返回的码流文件播放所述码流文件对应的视频内容,其中所述码流文件为服务器根据所述流量压缩请求对所述目标关注区域之外的视频内容进行码率压缩处理得到的视频文件。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的应用中的页面脚本对象泄漏的检查方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种应用中的页面脚本对象泄漏的检查方法,其特征在于,包括:
运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
在待测试应用中的目标页面被加载前的第一时间点,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合;
加载所述目标页面,在所述脚本运行环境中执行所述目标页面中的脚本代码,在所述脚本运行环境中产生所述脚本代码相应的脚本对象;
结束所述目标页面;在所述目标页面结束后的第二时间点,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第二快照数据包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合;其中,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
2.根据权利要求1所述的方法,其特征在于,还包括:
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定泄漏的脚本对象。
3.根据权利要求1所述的方法,其特征在于,所述对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏,包括:
对比所述第一集合以及所述第二集合,如果对比结果为第一集合为第二集合的真子集,则确定在所述目标页面中的脚本代码运行过程中产生的脚本对象存在泄漏。
4.根据权利要求1所述的方法,其特征在于,还包括:
在进行所述第二次快照时,获取所述待测试应用的脚本运行环境中的脚本对象之间的调用关系信息。
5.根据权利要求4所述的方法,其特征在于,还包括:
提供查找筛选指定脚本对象的操作入口;在通过所述操作入口接收到查找筛选指定脚本对象的指令时,查找筛选所述指定脚本对象的相关调用关系信息。
6.根据权利要求4所述的方法,其特征在于,还包括:
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定泄漏的脚本对象;
在所述待测试应用的脚本运行环境中的脚本对象之间的调用关系信息中,查找筛选与泄漏的脚本对象相关的调用关系信息。
7.根据权利要求1所述的方法,其特征在于,所述待测试应用中包括主程序以及子应用,所述子应用通过所述主程序启动,并与所述主程序的功能独立;所述目标页面包括待测试应用中的所述子应用的页面,所述加载所述目标页面,包括:
通过所述主程序启动所述子应用,以加载所述子应用的页面,并在所述脚本运行环境中执行所述子应用的页面中的脚本代码;
所述结束所述目标页面,在所述目标页面结束后,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据,包括:
关闭所述子应用以结束所述子应用的页面,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据。
8.一种应用中的页面脚本对象泄漏的检查方法,其特征在于,包括:
运行待测试应用;其中,所述待测试应用包括对目标页面中脚本代码进行调试的调试方法代码;
在加载所述目标页面之前的第一时间点,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;
加载所述目标页面;
结束所述目标页面,在所述目标页面结束后的第二时间点,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;其中,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
9.一种应用中的页面脚本对象泄漏的检查方法,其特征在于,包括:
运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
通过所述调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括在所述第一时间点所述脚本运行环境中所有脚本对象信息的第一集合;
在第二时间点通过所述调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第一快照数据包括在所述第二时间点所述脚本运行环境中所有脚本对象信息的第二集合;其中,所述第一时间点与所述第二时间点之间,所述目标页面在所述脚本运行环境中经过N次完整的加载和退出过程,N为自然数;并且,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
10.根据权利要求9所述的方法,其特征在于,还包括:
在进行所述第二次快照时,获取所述待测试应用的脚本运行环境中的脚本对象之间的调用关系信息;
在所述调用关系信息中查找筛选指定脚本对象的相关调用关系信息并返回。
11.根据权利要求10所述的方法,其特征在于,所述指定脚本对象包括:
根据第一快照数据以及第二快照数据的对比结果确定的泄漏的脚本对象。
12.一种应用中的页面脚本对象泄漏的检查装置,其特征在于,包括:
应用运行单元,用于运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
加载前快照单元,用于在待测试应用中的目标页面被加载前的第一时间点,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括目标页面被加载前所述脚本运行环境中所有脚本对象信息的第一集合;
目标页面加载单元,用于加载所述目标页面,在所述脚本运行环境中执行所述目标页面中的脚本代码,在所述脚本运行环境中产生所述脚本代码相应的脚本对象;
结束后快照单元,用于结束所述目标页面;在所述目标页面结束后的第二时间点,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第二快照数据包括目标页面被结束后所述脚本运行环境中所有脚本对象信息的第二集合;其中,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
数据对比单元,用于对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
13.一种应用中的页面脚本对象泄漏的检查装置,其特征在于,包括:
应用加载单元,用于运行待测试应用;其中,所述待测试应用包括对目标页面中脚本代码进行调试的调试方法代码;
第一数据获取单元,用于在加载所述目标页面之前的第一时间点,通过所述调试方法代码,对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;
页面代码执行单元,用于加载所述目标页面;
第二数据获取单元,用于结束所述目标页面,在所述目标页面结束后的第二时间点,通过所述调试方法代码,对所述待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;其中,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
结果产生单元,用于对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
14.一种应用中的页面脚本对象泄漏的检查装置,其特征在于,包括:
应用启动单元,用于运行待测试应用;其中,所述待测试应用包括基于预置框架开发的调试版本,所述待测试应用的调试版本中包括对目标页面中脚本代码进行调试的调试方法代码;
第一快照单元,用于通过所述调试方法代码,在第一时间点对待测试应用的脚本运行环境中的脚本对象进行第一次快照,获取第一快照数据;所述第一快照数据包括在所述第一时间点所述脚本运行环境中所有脚本对象信息的第一集合;
第二快照单元,用于在第二时间点通过所述调试方法代码对待测试应用的脚本运行环境中的脚本对象进行第二次快照,获取第二快照数据;所述第一快照数据包括在所述第二时间点所述脚本运行环境中所有脚本对象信息的第二集合;其中,所述第一时间点与所述第二时间点之间,所述目标页面在所述脚本运行环境中经过N次完整的加载和退出过程,N为自然数;并且,在所述第一时间点以及第二时间点,目标页面处于相同的运行状态;
快照对比单元,用于对比所述第一快照数据以及所述第二快照数据,根据对比结果确定在所述目标页面中的脚本代码运行过程中产生的脚本对象是否存在泄漏。
CN201811603792.6A 2018-12-26 2018-12-26 应用中的页面脚本对象泄漏的检查方法及装置 Active CN111367787B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811603792.6A CN111367787B (zh) 2018-12-26 2018-12-26 应用中的页面脚本对象泄漏的检查方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811603792.6A CN111367787B (zh) 2018-12-26 2018-12-26 应用中的页面脚本对象泄漏的检查方法及装置

Publications (2)

Publication Number Publication Date
CN111367787A CN111367787A (zh) 2020-07-03
CN111367787B true CN111367787B (zh) 2023-06-20

Family

ID=71208771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811603792.6A Active CN111367787B (zh) 2018-12-26 2018-12-26 应用中的页面脚本对象泄漏的检查方法及装置

Country Status (1)

Country Link
CN (1) CN111367787B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750364A (zh) * 2012-06-13 2012-10-24 华为技术有限公司 为多镜像文件分配内存地址空间的方法、编译器和系统
CN105260294A (zh) * 2015-11-16 2016-01-20 曙光信息产业(北京)有限公司 一种应用程序占用内存的监控方法及装置
CN106484580A (zh) * 2016-10-21 2017-03-08 腾讯科技(深圳)有限公司 一种内存检测方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140208169A1 (en) * 2013-01-18 2014-07-24 Unisys Corporation Domain scripting language framework for service and system integration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750364A (zh) * 2012-06-13 2012-10-24 华为技术有限公司 为多镜像文件分配内存地址空间的方法、编译器和系统
CN105260294A (zh) * 2015-11-16 2016-01-20 曙光信息产业(北京)有限公司 一种应用程序占用内存的监控方法及装置
CN106484580A (zh) * 2016-10-21 2017-03-08 腾讯科技(深圳)有限公司 一种内存检测方法、装置及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Guoqing Xu等.Precise memory leak detection for java software using container profiling.ACM Transactions on Software Engineering and Methodology.2013,第22卷(第3期),全文. *
张丽军.基于Storm的机顶盒中间件测试方法的研究.中国优秀硕士学位论文全文数据库.2014,(第10期),全文. *
陈希 ; 胡峻洁 ; 张亮 ; 严义兵 ; 雷敏 ; .OpenSSL HeartBleed漏洞自动化检测工具设计与实现.网络空间安全.2018,(01),全文. *

Also Published As

Publication number Publication date
CN111367787A (zh) 2020-07-03

Similar Documents

Publication Publication Date Title
US9495543B2 (en) Method and apparatus providing privacy benchmarking for mobile application development
CN110363004B (zh) 一种代码漏洞检测方法、装置、介质及设备
US9355003B2 (en) Capturing trace information using annotated trace output
CN112241361A (zh) 测试用例生成方法及装置、问题场景自动复现方法及装置
CN111488579A (zh) 漏洞检测方法、装置、电子设备和计算机可读存储介质
CN110597704A (zh) 应用程序的压力测试方法、装置、服务器和介质
CN109344051B (zh) 数据处理的方法、装置、电子设备及存储介质
CN116225886A (zh) 测试用例生成方法、装置、设备、存储介质及程序产品
CN113377370A (zh) 一种文件处理方法、装置、电子设备及存储介质
CN110889116B (zh) 一种广告拦截方法、装置及电子设备
CN111209195B (zh) 一种生成测试用例的方法及装置
CN111367787B (zh) 应用中的页面脚本对象泄漏的检查方法及装置
CN110908882A (zh) 一种应用程序的性能分析方法、装置、终端设备及介质
CN110716859A (zh) 自动为修改的代码推送测试用例的方法及相关装置
CN115543831A (zh) 一种测试脚本生成方法、装置、设备和存储介质
CN111338961B (zh) 应用调试方法及装置、电子设备及存储介质
CN114385487A (zh) 一种执行时间的处理方法、装置及存储介质
CN110162302B (zh) 数据处理方法、装置、电子设备及存储介质
CN111124627B (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN115248772A (zh) 软件中间件的接口测试方法和装置
CN113934561A (zh) 故障定位方法、装置、系统、硬件平台及存储介质
CN112783759B (zh) 白盒测试任务执行方法、装置、存储介质和计算机设备
CN116450534B (zh) 移动端应用程序的生成方法、装置、设备及介质
CN110162966B (zh) 数据处理方法、装置、电子设备及存储介质
CN117331536A (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