CN117421208A - 一种确定页面唯一标识的方法、装置、存储介质及设备 - Google Patents

一种确定页面唯一标识的方法、装置、存储介质及设备 Download PDF

Info

Publication number
CN117421208A
CN117421208A CN202311318962.7A CN202311318962A CN117421208A CN 117421208 A CN117421208 A CN 117421208A CN 202311318962 A CN202311318962 A CN 202311318962A CN 117421208 A CN117421208 A CN 117421208A
Authority
CN
China
Prior art keywords
page
determining
program
tested
active
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.)
Pending
Application number
CN202311318962.7A
Other languages
English (en)
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202311318962.7A priority Critical patent/CN117421208A/zh
Publication of CN117421208A publication Critical patent/CN117421208A/zh
Pending legal-status Critical Current

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

在本说明书提供的一种确定页面唯一标识的方法、装置、存储介质及设备中,通过遍历待测试程序的源代码,确定待测试程序的活动页面,再通过锚点工具确定各活动页面包含的页面生成信息,从而判断该活动页面是否包含下级页面,若包含则根据下级页面的类型,重新确定页面的唯一标识。若不包含则以该活动页面的类名和页面参数作为页面的唯一标识。存储该唯一标识,并在该活动页面的生成代码中添加锚点,使得在程序测试时通过该锚点确定待测试程序的页面的唯一标识。减小了定义页面的颗粒度,确定页面的唯一性,提高了待测试程序在压力测试中结果的准确性。

Description

一种确定页面唯一标识的方法、装置、存储介质及设备
技术领域
本说明书涉及计算机领域,尤其涉及一种确定页面唯一标识的方法、装置、存储介质及设备。
背景技术
随着计算机技术的发展,应用程序页面的渲染方式和页面的构建方式逐渐复杂化,应用程序中页面结构也越来越复杂。目前,常见的页面结构中,一个父页面可能包含多个子页面。
虽然,更复杂的页面结构可以满足用户使用应用程序时的需求,但是也为对应用程序的稳定性压力测试带来困难。目前,对应用程序进行的稳定性压力测试时,需要对应用程序各功能进行全面的测试,若应用程序拥有安全增强技术(software guardextensions),会在可信执行环境中,保护应用程序的私有数据前提下,遍历该应用程序的各页面。而为了确定测试是否足够全面,不仅需要预先确定应用程序中包含哪些页面,同时测试过程中也需要准确的记录已访问的页面。可见,准确唯一的记录应用程序的页面是十分必要的。现有技术采用的方案是通过记录页面中Activity的标识,确定当前访问的页面。
但是,随着页面结构越发复杂,仅通过Activity的标识记录页面唯一标识不够准确,可能导致压力测试的结果不准确。因此,如何确定页面唯一标识成为一个亟待解决的问题。本说明书提供一种确定页面唯一标识的方法、装置、存储介质及设备。
发明内容
本说明书提供一种确定页面唯一标识的方法及装置,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种确定页面唯一标识的方法,包括:
响应于确定唯一标识的指令,遍历待测试程序的源代码,确定所述待测试程序的各活动页面;
针对每个活动页面,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面;
若是,则确定所述下级页面的类型,当所述下级页面的类型为网页页面时,确定所述网页页面对应的统一资源定位符和网页参数,作为所述待测试程序的页面唯一标识;当所述下级页面的类型不是网页页面时,确定所述下级页面对应的类名和页面参数,作为所述待测试程序的页面唯一标识;
若否,则根据该活动页面的类名以及该活动页面的页面参数,确定所述页面唯一标识;
存储确定出的该活动页面的页面唯一标识,并在所述源代码的该活动页面的生成代码中添加锚点,使得程序测试时通过所述锚点工具确定所述待测试程序的页面唯一标识。
可选地,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面,具体包括:
确定该活动页面包含的页面生成信息,并发送至锚点工具;
通过所述锚点工具的动态链接库,判断所述页面生成信息中是否包含指定功能类的代码;
其中,所述指定功能类包括:网页页面类、碎片页面类以及视图页面类,若包含所述指定功能类的代码,则确定该活动页面包含下级页面,若不包含所述指定功能类的代码,则确定该活动页面不包含下级页面。
可选地,确定所述网页页面对应的统一资源定位符和网页参数,具体包括:
访问所述网页页面的工厂程序接口,获取生成所述网页页面的实例;
根据所述实例中包含的数据,确定所述网页页面的统一资源定位符和网页参数。
可选地,所述待测试程序包含小程序内核;
确定所述网页页面对应的统一资源定位符和网页参数,具体包括:
确定所述网页页面所属的该活动页面的根视图;
遍历所述根视图,确定所述网页页面的实例;
根据所述实例中包含的数据,确定所述网页页面的统一资源定位符和网页参数。
可选地,确定所述下级页面对应的类名和页面参数,具体包括:
判断所述下级页面的类型是否为碎片页面类;
若是,则确定所述下级页面对应的碎片页面实例,根据所述碎片页面实例,确定所述碎片页面类的类名,以及所述碎片页面的页面参数;
若否,则确定所述下级页面对应的视图页面实例,根据所述视图页面实例,确定所述视图页面类的类名,以及所述视图页面的页面参数。
可选地,在所述源代码的该活动页面的生成代码中添加锚点,具体包括:
若该活动页面不包含下级页面,在该活动页面的管理器处,添加锚点;
若该活动页面包含下级页面,确定所述下级页面的类型;当所述下级页面为网页页面时,在所述网页页面的工厂程序接口处添加锚点;当所述下级页面为碎片页面时,在所述碎片页面的管理器处添加锚点;当所述下级页面为视图页面时,在所述视图页面的管理器处添加锚点。
可选地,所述待测试程序包含小程序内核;
在所述源代码的该活动页面的生成代码中添加锚点,具体包括:
当所述下级页面为网页页面时,在所述待测试程序的根视图处添加锚点。
可选地,所述方法还包括:
接收针对所述待测试程序的测试指令;
运行所述待测试程序,当运行到所述锚点时,通过所述锚点的动态链接库,确定所述待测试程序的页面唯一标识,作为测试页面标识;
根据所述测试页面标识,和已存储的所述待测试程序包含的各页面唯一标识,确定测试覆盖率。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述页面唯一标识的方法。
本说明书提供了一种无人驾驶设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述确定页面唯一标识的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的确定页面唯一标识的方法中,通过遍历待测试程序的源代码,确定待测试程序的活动页面,再通过锚点工具确定各活动页面包含的页面生成信息,从而判断该活动页面是否包含下级页面,若包含则根据下级页面的类型,重新确定页面的唯一标识。若不包含则以该活动页面的类名和页面参数作为页面的唯一标识。存储该唯一标识,并在该活动页面的生成代码中添加锚点,使得在程序测试时通过该锚点确定所述待测试程序的页面的唯一标识。
从上述方法中可以看出,本方法通过确定生成的活动页面是否包含下级页面,确定页面的唯一标识,减小了定义的页面的粒度,使得识别到的遍历过的页面不包含下级页面,确定了识别到的页面的唯一性,提高了待测试程序在压力测试中结果的准确性,同时,通过锚点工具,确定页面唯一标识,减少了执行逻辑确定页面唯一标识对待测试程序源代码的影响,避免了影响软件自身的逻辑。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附
图中:
图1为本说明书提供的一种确定页面唯一标识方法的流程示意图;
图2为本说明书提供的一种程序产品的页面结构的示意图;
图3a为本说明书提供的一种程序产品的多级页面结构的示意图;
图3b为本说明书提供的一种程序产品的多级页面结构的示意图;
图4为本说明书提供的一种确定页面唯一标识的流程的示意图;
图5为本说明书提供的一种确定页面唯一标识装置的示意图;
图6为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,活动(Activity)页面类是构建页面的基础组件,用于确定渲染出的页面中展示的内容。随着页面结构越发复杂,仅通过Activity的标识记录页面唯一标识不够准确,可能导致压力测试的结果不准确。
以安卓(Android)应用程序为例,Android的应用程序通常包含多个彼此松散绑定的Activity,而每个Activity下还能包含一些依赖于Activity生成的下级页面,如网页(Web)页面、碎片(Fragment)页面、视图(view)页面等。
基于此,本说明书提供一种确定页面唯一性方法,以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的确定页面唯一标识方法的流程示意图,包括以下步骤:
S100:响应于确定唯一标识的指令,遍历待测试程序的源代码,确定所述待测试程序的各活动页面。
在本说明书一个或多个实施例中,为了在对应用程序(Application,APP)进行测试时,可以确定测试涉及到的页面都有哪些,因此需要准确的确定APP中各页面的唯一标识。因此在对APP测试前,需先确定该APP各页面的页面唯一标识,以便在经过测试后可以根据预先获取的该APP的各页面唯一标识,确定测试覆盖率。
由于一般APP测试(如,稳定性压力测试)是在线下进行的,通常在测试平台上实施,而这种测试一般都由服务器来执行,因此本说明书的确定页面唯一标识的过程,可由服务器执行。当然,本说明书不限制具体由何种设备实行该确定页面唯一标识方法,例如,个人电脑、移动终端等。为了方便描述,本说明书后续以服务器执行该确定页面唯一标识的方法为例。其中,该服务器可以是单独的一台设备,或者由多台设备组成,例如,分布式服务器,本说明书对此不做限制。
具体的,由于APP页面复杂度越来越高,一般在Activity下还可生成下级页面,因此本说明书中该服务器在确定应用程序的页面的唯一标识时,可先确定该待测试程序中由Activity类渲染的页面,作为Activity页面,再判断该Activity页面是否包含下级页面,根据该Activity类渲染的页面的下级页面生成情况重新确定该Activity类渲染页面的页面唯一标识。
在本说明书一个或多个实施例中,当确定待测试程序后,需要确定该待测试程序中各页面的页面唯一标识,因此该服务器接收确定唯一标识的指令。其中,该确定唯一标识的指令,可以是用户发送的,也可以是测试程序根据预先设置的测试流程,发送至该服务器的,本说明书不做限制。
当然,该服务器可响应接收到的该确定唯一标识的指令,确定该待测试程序的源代码,通过遍历该待测试程序的源代码,确定该待测试程序中的Activity。其中,Activity是指该待测试程序中顶端的活动页面(Top Activity)。如图2所示,图2为本说明书实施例提供的一种程序产品的页面结构示意图,其中,APP页面中标识为1的区域是通过TopActivity渲染展示的区域,并且在该Top Activity中还包含下级页面,即标识为2和3的区域。
S102:针对每个活动页面,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面,若是则执行步骤S104,若否则执行步骤S106。
由于不同Activity类的包含的页面生成信息不同,在一个Top Activity页面中,可包含一个或多个下级页面,如Fragment页面、View页面、Web页面等,如图3a和图3b所示。图3a和图3b为本说明书实施例提供的一种多级页面结构示意图,在图3a中矩形1表示一个Activity页面,矩形2表示依赖于该Activity页面的多个Fragment页面,矩形3表示依赖于Fragment页面的View页面,矩形4表示依赖于Fragment页面的Web页面,箭头表示用户可在该Activity页面中通过左右滑动或点击等操作,实现各Fragment页面之间的跳转。
除此之外,一个Activity页面,还有可能不包含Fragment页面,而是由多个Web页面构成、或由多个View页面作为子页面组成。如图3b所示,图3b为本说明书实施例提供的一种多级页面结构,其中矩形1为Activity页面,矩形4为依赖于Activity页面的Web页面,箭头表示用户可在该Activity页面中通过左右滑动或点击等操作,实现Web页面的跳转。
可见,以Activity页面的className作为页面的唯一标识忽略了依赖于该Activity页面的其他Fragment页面、Web页面或View页面。会导致在对待测试程序进行测试时,无法确定测试时是否遍历了该Activity下的各下级页面,导致确定出的测试覆盖率不准,则测试结果准确性难以保证。也就是说,以各Activity页面的className作为页面的唯一标识,对页面的定义粒度过大。
因此,在确定该待测试程序的页面唯一标识时,应先判断该Activity页面是否包含下级页面。若是,则说明应根据该Activity页面对应的下级页面确定页面唯一标识。若否,则说明将该Activity页面仅有一个页面。
具体的,该服务器确定该Activity页面包含的页面生成信息,并发送至锚点工具。通过述锚点工具的动态链接库,判断所述页面生成信息中是否包含指定功能类的代码。其中,指定功能类包括:Web页面类、Fragment页面类以及View页面类。若该Activity页面包含的页面生成信息中存在该指定功能类的代码,则可确定该Activity页面包含下级页面,若不包含所述指定功能类的代码,则确定该Activity页面不包含下级页面。
需要说明的是,上述锚点工具可以是钩子(hook)也可以是其他的锚点工具,本说明书不做限制。为方便描述,本说明书后续以锚点工具是hook为例。
S104:确定所述下级页面的类型,当所述下级页面的类型为网页页面时,确定所述网页页面对应的统一资源定位符和网页参数,作为所述待测试程序的页面唯一标识;当所述下级页面的类型不是网页页面时,确定所述下级页面对应的类名和页面参数,作为所述待测试程序的页面唯一标识。
在本说明书一个或多个实施例中,该服务器可针对不同的下级页面的类型,采用不同的方法确定下级页面的唯一标识,具体的:
若该Activity页面的下级页面为Web页面时,则说明该下级页面是通过获取服务器的网页资源生成的,因此该服务器可确定Web页面的生成实例,根据所述实例中包含的数据,确定该Web页面的统一资源定位符(Uniform Resource Locator,URL)和该Web页面的网页参数。将各Web页面对应的URL以及该Web页面对应的网页参数,作为页面的唯一标识。其中,该网页参数可能有多种,该服务器可根据至少部分网页参数以及URL,确定该Web页面的唯一标识。具体确定哪些网页参数本说明书不做限制,可根据需要设置。
若该Activity页面的下级页面不是网页页面时,该服务器则可将各下级页面的类名(className)和各下级页面对应的页面参数,作为页面的唯一标识。
需要说明的是,该Activity页面的下级页面可以是Fragment页面,可以是View页面,还可以是其他依赖于Activity页面的下级页面,本说明书不做限制。
具体的,若该下级页面为Fragment页面时,确定各Fragment页面的className,以及各Fragment页面对应的页面参数,作为页面唯一标识。
若该下级页面为View页面时,确定各View页面的className,以及各View页面对应的页面参数,作为页面唯一标识。
针对不同版本系统,也可通过本方法确定页面唯一标识。例如,对于安卓原生的网页内核,由于基于此内核生成Web页面不包含manager,可通过Java的动态代理技术接管该待测试程序的Web页面对应的WebView的工厂程序接口(WebViewFractorProvider),获取各Web页面对应的WebView的生成实例,确定WebView的URL以及对应的网页参数,作为该待测试程序的页面唯一标识。
进一步的,针对小程序的网页内核,基于此内核生成的Web页面,由于也无对应的manager,因此,也无法直接确定各Web页面对应的WebView的实例。该服务器可根据各WebView依赖的Top Activity页面的根视图(rootview)查找WebView实例,从而确定WebView的URL以及对应的网页参数,作为页面唯一标识。
需要说明的是,上述的页面参数为各页面生成时确定的,各页面的尺寸、分辨率等数据。上述的确定的该Activity页面的页面唯一标识的数量取决于,该Activity页面的下级页面的数量。例如图3a所示,该Activity页面包含3个Fragment页面,则确定出的页面唯一标识是3个。
S106:根据该活动页面的类名以及该活动页面的页面参数,确定所述页面唯一标识。
由于该Activity页面不包含下级页面,则说明该服务器可将该Activity页面的类名以及该活动页面的页面参数,作为待测试程序的页面唯一标识。
S108:存储确定出的该活动页面的页面唯一标识,并在所述源代码的该活动页面的生成代码中添加锚点,使得程序测试时通过所述锚点工具确定所述待测试程序的页面唯一标识。
在确定待测试程序的页面唯一标识后,由于各页面唯一标识用于对待测试程序进行测试时,确定最小颗粒度的页面,保证测试的准确性,以防出现定义的页面颗粒度过大导致测试不准确的问题。所以可在唯一标识处添加锚点,用于测试时根据锚点确定该待测试程序中各Activity页面的唯一标识。
在本说明书一个或多个实施例中,该服务器将确定的唯一标识存储,存储的位置可以是服务器的缓存,也可以是hook的动态链接库等其他可存储并读取数据模块。然后将hook注入对应位置。
具体的,若该Activity页面不包含下级页面,在该Activity页面的manager处,注入hook。
若该Activity页面包含下级页面,确定下级页面的类型;当下级页面为Web页面时,在Web页面的WebViewFractorProvider处注入hook。当所述下级页面为Fragment页面时,在Fragment页面的FragmentManager处注入hook。当所述下级页面为View页面时,在所述View页面的manager处注入hook。
进一步的,若该待测试程序被部署在小程序内核中时,在Activity页面的rootView处注入hook。
在测试过程中,当测试系统再对该待测试程序进行测试时,运行到hook的位置,自动跳转到hook的动态链接库,获取页面唯一标识,确定最小粒度的页面。使得当Activity页面在包含下级页面时,以该Activity页面的下级页面作为一个遍历到的页面,而不是仅遍历了该Activity页面,就认为已经遍历了该Activity页面的下级页面。
基于图1所示的确定页面唯一性的方法,通过遍历待测试程序的源代码,确定待测试程序的活动页面,再通过锚点工具确定各活动页面包含的页面生成信息,从而判断该活动页面是否包含下级页面,若包含则根据下级页面的类型,重新确定页面的唯一标识。若不包含则以该活动页面的类名和页面参数作为页面的唯一标识。存储该唯一标识,并在该活动页面的生成代码中添加锚点,使得在程序测试时通过该锚点确定该待测试程序的页面的唯一标识。
从上述方法中可以看出,本方法通过确定生成的活动页面是否包含下级页面,确定页面的唯一标识,减小了定义的页面的粒度,使得对待测试程序进行测试时,可以确定测试时是否遍历了该Activity下的各下级页面,致确定出的测试覆盖率相对准确。同时,通过锚点工具,确定页面唯一标识,减少了执行逻辑确定页面唯一标识对待测试程序源代码的影响,避免了影响软件自身的逻辑。更进一步的,本方法还兼容不同的版本的系统,具有较高的通用性。
需要说明的是,由于现有技术中主机端和移动端系统边界愈发模糊,因此,在本说明书一个或多个实施例中,该待测试程序可以是应用(Application,APP)、安卓系统安装包(AndroidPackage,APK)、小程序或网页等由代码构建的程序产品等。同时,也不限制该待测试程序适用于那种系统版本,或应用何种软件技术栈。只要该待测试程序的页面至少由一个或多个Activity页面构成,并且该Activity页面可设置多种下级页面,则均可通过本说明书提供的方法,确定页面唯一标识。
同时,步骤S104和步骤S106也可以代码的形式,存储在hook的动态链接库中,hook注入在各页面生成的manager(或WebViewFactorProvider、rootview)处。则在对该待测试程序进行测试时,服务器可运行该待测试程序代码,当运行到该待测试程序代码注入的hook处时,可跳转到hook的动态链接库中,运行该动态链接库中对应步骤S104和步骤S106的代码,以执行步骤S104或步骤S106确定页面唯一标识。
进一步,当待测试程序采用的构建方式并不是由多个彼此松散绑定的Activity组成,而是由其他方法构建时,也可基于本说明书的思路,总结页面构建方法,确定构建页面的组件之间的依赖关系,确定多级页面,然后再通过锚点工具,确定页面唯一标识,实现兼容多种不同的系统。
更进一步的,通过图1所示过程确定的页面唯一标识,可用于对待测试程序的压力测试、稳定性测试或其他需要确定页面数量的测试中,本说明书不对该页面唯一标识具体用于执行何种测试进行限制。
例如,通过图1所示过程确定的页面唯一标识,还可用于保证待测试程序的压力测试的准确性。通过对比确定的页面唯一标识和实际存储的待测试程序包含的各页面唯一标识,确定该待测试程序的侧是覆盖率,从而保证测试的准确性。
除此之外,由于在对待测试程序进行测试时,若以该待测试程序的各Activity页面的className作为页面唯一标识的情况下,当该Activity页面具有下级页面时,运行该Activity页面所需的运行资源至少为该Activity页面中各下级页面所需时间之和。因此,在对该待测试程序进行测试过程中,若某个Activity页面设置的下级页面较多时,会出现运行该Activity页面时间过长,从而导致程序报错。但是若以根据该Activity页面的下级页面确定的唯一标识,确定页面,则可以减小程序因为定义的页面粒度过大,导致页面运行时长高于预设值,导致程序报错。
如图4所示,图4为本说明书实施例提供的确定页面唯一标识的流程图。
当该服务器接收到获取页面唯一标识的请求时,确定各Activity页面,然后针对每个Activity页面,确定该Activity页面的生成信息。再根据该页面生成信息,判断该Activity页面是否包含Web页面,若是,则确定各Web页面对应的WebView的URL以及各WebView对应的网页参数,作为唯一标识返回。若否,则判断该Activity页面是否包含Fragment页面,若是,则确定各FragmentclassName和各Fragment对应的页面参数,作为唯一标识返回。若否,则判断该Activity页面是否包含View页面,若是,则确定各View页面对应的TabclassName和各View页面对应的页面参数,作为唯一标识返回。若否,则确定该Activity页面不包含下级页面,则确定该各ActivityName和各Activity页面对应的页面参数,作为唯一标识返回。
需要说明的是,上述的判断过程可以是按照顺序依次进行,其中各下级页面的类型的判断顺序是随机的,也就是说,也可以先判断该Activity页面是否包含Fragment页面,若否,则再判断是否包含View页面,若否再判断是否包含Web页面,在本说明书一个或多个实施例中,不限制具体的判断顺序。也可以对下级页面的类型进行同时判断。
更进一步的,上述确定页面唯一标识的方法应用于具有最高权限(root)或具有待测试的调试包(debug包)的待测试程序。因为此状态下的待测试程序,该服务器可遍历该程序的源代码,若该待测试程序不具备root或debug包,则需将hook以及hook的动态链接库静态注入到待测试程序中,然后再将该待测试程序重新打包并签名,以保证待测试程序的数据安全。
以上为本说明书的一个或多个实施例提供的确定页面唯一标识的方法,基于同样的思路,本说明书还提供了相应的确定页面唯一标识的装置,如图5所示。
获取模块500,用于响应于确定唯一标识的指令,遍历待测试程序的源代码,确定该待测试程序的各活动页面;
判断模块501,用于针对每个活动页面,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面;
确定模块502,用于,若是,则确定该下级页面的类型,当该下级页面的类型为网页页面时,确定该网页页面对应的统一资源定位符和网页参数,作为该待测试程序的页面唯一标识;当该下级页面的类型不是网页页面时,确定该下级页面对应的类名和页面参数,作为该待测试程序的页面唯一标识,若否,则根据该活动页面的类名以及该活动页面的页面参数,确定该页面唯一标识;
锚点模块503,用于存储确定出的该活动页面的页面唯一标识,并在该源代码的活动页面的生成代码中添加锚点,使得程序测试时通过该锚点工具确定该待测试程序的页面唯一标识。
可选地,所述判断模块501,具体用于确定该活动页面包含的页面生成信息,并发送至锚点工具,通过锚点工具的动态链接库,判断页面生成信息中是否包含指定功能类的代码,其中,该指定功能类包括:网页页面类、碎片页面类以及视图页面类,若包含该指定功能类的代码,则确定该Activity页面包含下级页面,若不包含该指定功能类的代码,则确定该活动页面不包含下级页面。
可选地,所述确定模块502,具体用于访问网页页面的工厂程序接口,获取生成该网页页面的实例,根据各实例中包含的数据,确定该页面的统一资源定位符和网页参数。
可选地,所述确定模块502,具体用于该待测试程序包含小程序内核时,确定该网页页面所属的该活动页面的根视图,遍历该根视图,确定该网页页面的实例,根据各实例中包含的数据,确定该Web页面的统一资源定位符和网页参数。
可选地,所述判断模块501,具体用于判断该下级页面的类型是否为碎片页面类,若是,则确定该下级页面对应的碎片页面实例,根据该碎片页面实例,确定该碎片页面类的类名,以及该碎碎片页面的页面参数,若否,则确定该下级页面对应的视图页面实例,根据该视图页面实例,确定该视图页面类的类名,以及该视图页面的页面参数。
可选地,所述锚点模块503,具体用于若该活动页面不包含下级页面,在该活动页面的管理器处,添加锚点,若该活动页面包含下级页面,确定该下级页面的类型,当该下级页面为网页页面时,在该网页页面的工厂程序接口处添加锚点,当该下级页面为碎片页面时,在该碎片页面的管理器处添加锚点,当该下级页面为视图页面时,在该视图页面的管理器处添加锚点。
可选地,所述待测试程序包含小程序内核,所述锚点模块503,具体用于当所述下级页面为网页页面时,在所述待测试程序的根视图处添加锚点。
可选地,所述确定模块502,还用于接收针对所述待测试程序的测试指令,运行所述待测试程序,当运行到所述锚点时,通过所述锚点的动态链接库,确定所述待测试程序的页面唯一标识,作为测试页面标识,根据所述测试页面标识,和已存储的所述待测试程序包含的各页面唯一标识,确定测试覆盖率。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的确定页面唯一标识方法。
本说明书还提供了图6所示的电子设备的示意结构图。如图6所示,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图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 (11)

1.一种确定页面唯一标识的方法,包括:
响应于确定唯一标识的指令,遍历待测试程序的源代码,确定所述待测试程序的各活动页面;
针对每个活动页面,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面;
若是,则确定所述下级页面的类型,当所述下级页面的类型为网页页面时,确定所述网页页面对应的统一资源定位符和网页参数,作为所述待测试程序的页面唯一标识;当所述下级页面的类型不是网页页面时,确定所述下级页面对应的类名和页面参数,作为所述待测试程序的页面唯一标识;
若否,则根据该活动页面的类名以及该活动页面的页面参数,确定所述页面唯一标识;
存储确定出的该活动页面的页面唯一标识,并在所述源代码的该活动页面的生成代码中添加锚点,使得程序测试时通过所述锚点工具确定所述待测试程序的页面唯一标识。
2.如权利要求1所述方法,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面,具体包括:
确定该活动页面包含的页面生成信息,并发送至锚点工具;
通过所述锚点工具的动态链接库,判断所述页面生成信息中是否包含指定功能类的代码;
其中,所述指定功能类包括:网页页面类、碎片页面类以及视图页面类,若包含所述指定功能类的代码,则确定该活动页面包含下级页面,若不包含所述指定功能类的代码,则确定该活动页面不包含下级页面。
3.如权利要求1所述方法,确定所述网页页面对应的统一资源定位符和网页参数,具体包括:
访问所述网页页面的工厂程序接口,获取生成所述网页页面的实例;
根据所述实例中包含的数据,确定所述网页页面的统一资源定位符和网页参数。
4.如权利要求1所述方法,所述待测试程序包含小程序内核;
确定所述网页页面对应的统一资源定位符和网页参数,具体包括:
确定所述网页页面所属的该活动页面的根视图;
遍历所述根视图,确定所述网页页面的实例;
根据所述实例中包含的数据,确定所述网页页面的统一资源定位符和网页参数。
5.如权利要求2所述方法,确定所述下级页面对应的类名和页面参数,具体包括:
判断所述下级页面的类型是否为碎片页面类;
若是,则确定所述下级页面对应的碎片页面实例,根据所述碎片页面实例,确定所述碎片页面类的类名,以及所述碎片页面的页面参数;
若否,则确定所述下级页面对应的视图页面实例,根据所述视图页面实例,确定所述视图页面类的类名,以及所述视图页面的页面参数。
6.如权利要求3所述方法,在所述源代码的该活动页面的生成代码中添加锚点,具体包括:
若该活动页面不包含下级页面,在该活动页面的管理器处,添加锚点;
若该活动页面包含下级页面,确定所述下级页面的类型;当所述下级页面为网页页面时,在所述网页页面的工厂程序接口处添加锚点;当所述下级页面为碎片页面时,在所述碎片页面的管理器处添加锚点;当所述下级页面为视图页面时,在所述视图页面的管理器处添加锚点。
7.如权利要求4所述方法,所述待测试程序包含小程序内核;
在所述源代码的该活动页面的生成代码中添加锚点,具体包括:
当所述下级页面为网页页面时,在所述待测试程序的根视图处添加锚点。
8.如权利要求2所述方法,所述方法还包括:
接收针对所述待测试程序的测试指令;
运行所述待测试程序,当运行到所述锚点时,通过所述锚点的动态链接库,确定所述待测试程序的页面唯一标识,作为测试页面标识;
根据所述测试页面标识,和已存储的所述待测试程序包含的各页面唯一标识,确定测试覆盖率。
9.一种确定页面唯一标识的装置,包括:
获取模块,用于响应于确定唯一标识的指令,遍历待测试程序的源代码,确定所述待测试程序的各活动页面;
判断模块,用于针对每个活动页面,根据该活动页面包含的页面生成信息,通过锚点工具,判断该活动页面是否包含下级页面;
确定模块,用于,若是,则确定所述下级页面的类型,当所述下级页面的类型为网页页面时,确定所述网页页面对应的统一资源定位符和网页参数,作为所述待测试程序的页面唯一标识;当所述下级页面的类型不是网页页面时,确定所述下级页面对应的类名和页面参数,作为所述待测试程序的页面唯一标识;若否,则根据该活动页面的类名以及该活动页面的页面参数,确定所述页面唯一标识;
锚点模块,用于存储确定出的该活动页面的页面唯一标识,并在所述源代码的该活动页面的生成代码中添加锚点,使得程序测试时通过所述锚点工具确定所述待测试程序的页面唯一标识。
10.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~8任一项所述的方法。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~8任一项所述的方法。
CN202311318962.7A 2023-10-11 2023-10-11 一种确定页面唯一标识的方法、装置、存储介质及设备 Pending CN117421208A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311318962.7A CN117421208A (zh) 2023-10-11 2023-10-11 一种确定页面唯一标识的方法、装置、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311318962.7A CN117421208A (zh) 2023-10-11 2023-10-11 一种确定页面唯一标识的方法、装置、存储介质及设备

Publications (1)

Publication Number Publication Date
CN117421208A true CN117421208A (zh) 2024-01-19

Family

ID=89525692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311318962.7A Pending CN117421208A (zh) 2023-10-11 2023-10-11 一种确定页面唯一标识的方法、装置、存储介质及设备

Country Status (1)

Country Link
CN (1) CN117421208A (zh)

Similar Documents

Publication Publication Date Title
CN107066519B (zh) 一种任务检测方法及装置
CN107016282B (zh) 一种信息处理方法及装置
CN111241040B (zh) 信息获取方法、装置、电子设备及计算机存储介质
CN108595246B (zh) 一种运行应用的方法、装置及设备
CN112559934A (zh) 一种页面弹窗显示方法及装置
CN114547024A (zh) 一种sql语句风险检测方法、装置、设备及介质
CN113536174A (zh) 一种界面加载方法、装置及设备
CN114840426A (zh) 一种代码测试的方法及装置
CN114840427A (zh) 一种代码测试、测试用例生成的方法及装置
CN111190692A (zh) 一种基于鲲鹏处理器的监控方法、系统及可读介质
CN117009252B (zh) 一种基于函数替换的故障注入测试方法及装置
CN111949297B (zh) 一种区块链智能合约升级方法、装置及电子设备
CN113556260B (zh) 一种流量监控方法、装置、存储介质及电子设备
CN111078435A (zh) 业务处理方法、装置及电子设备
CN116432185B (zh) 一种异常检测方法、装置、可读存储介质及电子设备
CN111796864A (zh) 一种数据校验的方法及装置
CN109976769B (zh) 应用安装包对应的服务器标识的确定方法、装置及设备
CN111338655A (zh) 一种安装包分发方法和系统
CN110874322B (zh) 一种用于应用程序的测试方法及测试服务器
CN116541116A (zh) 一种云原生系统的应用界面渲染方法、装置、介质及设备
CN117421208A (zh) 一种确定页面唯一标识的方法、装置、存储介质及设备
CN112579938B (zh) 一种页面加载方法、装置、存储介质及电子设备
CN117311856A (zh) 一种接口调用代码的生成方法及装置
CN111835513B (zh) 一种更新凭证数据的方法、装置及设备
CN110046090B (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