CN117349143A - 性能测试方法、装置及存储介质 - Google Patents

性能测试方法、装置及存储介质 Download PDF

Info

Publication number
CN117349143A
CN117349143A CN202210745526.7A CN202210745526A CN117349143A CN 117349143 A CN117349143 A CN 117349143A CN 202210745526 A CN202210745526 A CN 202210745526A CN 117349143 A CN117349143 A CN 117349143A
Authority
CN
China
Prior art keywords
tested
node
processed
nodes
determining
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
CN202210745526.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.)
Douyin Vision Beijing Co Ltd
Original Assignee
Douyin Vision Beijing 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 Douyin Vision Beijing Co Ltd filed Critical Douyin Vision Beijing Co Ltd
Priority to CN202210745526.7A priority Critical patent/CN117349143A/zh
Publication of CN117349143A publication Critical patent/CN117349143A/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • 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/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3692Test management for test results analysis

Landscapes

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

Abstract

本申请提供一种性能测试方法、装置及存储介质,该方法基于web端的页面dom结构对应的节点树,获得待处理节点数据,其中,每一节点包括至少一个待处理元素,进而,从上述待处理节点中确定待测试节点,获取待测试节点中每一个待处理元素的堆叠顺序,基于该堆叠顺序,确定待测试节点中的待测试元素,进行性能测试。其中,本申请实施例基于元素堆叠顺序确定待测试元素进行性能测试,该堆叠顺序根据元素出现的先后顺序确定,从而,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),提高测试覆盖率,以便后续触发一些不容易发现的异常和程序奔溃闪退等,加快软件开发。

Description

性能测试方法、装置及存储介质
技术领域
本申请涉及软件测试技术,尤其涉及一种性能测试方法、装置及存储介质。
背景技术
随着软件产业的不断发展,软件开发通常采用前端和后端独立设计。其中,前端是指为发送请求目的而建立连接的应用程序,其主要用于设计开发逻辑、调试页面等。在软件开发时,需要对软件前端的各项性能指标进行测试,以保证软件运行。
现有技术中,通常采用自动化测试进行软件前端各项性能指标的测试。自动化测试就是把以人驱动的测试工作转变为以程序驱动的自动测试,以自动遍历测试为例,自动遍历测试是自动遍历软件前端页面的元素节点,选出一个节点自动执行一系列的操作,如:点击、滑动、后退、输入等,以期能够触发一些不容易发现的异常。自动遍历测试一般用于web端、手机客户端(android/ios)各项性能指标的测试。
然而,不同于android和ios端,全球广域网(World Wide Web,web)端的页面文档对象模型(Document Object Model,dom)结构是动态变化的,采用现有自动化测试对其进行性能指标测试,即对web端的页面dom结构对应的节点树中每一节点下的元素进行性能指标测试时,容易漏掉一些元素,如临时出现的元素,导致测试覆盖率较低,从而后续无法触发一些不容易发现的异常和程序奔溃闪退等,影响软件开发。
发明内容
为解决现有技术中存在的问题,本申请提供一种性能测试方法、装置及存储介质。
第一方面,本申请实施例提供一种性能测试方法,包括:
基于待测试web端的页面dom结构对应的节点树,获得待处理节点,其中,所述待处理节点中的每一节点包括至少一个待处理元素;
从所述待处理节点中确定待测试节点;
获取所述待测试节点中每一个待处理元素的堆叠顺序,基于所述堆叠顺序,确定所述待测试节点中的待测试元素,其中,所述堆叠顺序根据所述每一个待处理元素出现的先后顺序确定;
基于所述待测试元素,进行性能测试。
在一种可能的实现方式中,所述基于待测试web端的页面dom结构对应的节点树,获得待处理节点,包括:
确定所述待测试web端的页面dom结构对应的节点树中各个节点之间的层级关系,以及每一节点中待处理元素的标识和宽高数据;
根据所述各个节点之间的层级关系,以及所述每一节点中待处理元素的标识和宽高数据,获得扁平化的节点数据;
基于所述扁平化的节点数据和预设过滤规则,获得所述待处理节点。
在一种可能的实现方式中,所述基于所述堆叠顺序,确定所述待测试节点中的待测试元素,包括:
根据所述堆叠顺序,确定所述待测试节点中每一个待处理元素的权重,所述权重基于所述堆叠顺序从前到后依次减小;
基于所述权重,确定所述待测试节点中的待测试元素。
在一种可能的实现方式中,所述基于所述权重,确定所述待测试节点中的待测试元素,包括:
根据所述权重,从所述待测试节点的每一个待处理元素中确定大于预设权重阈值的元素;
将大于所述预设权重阈值的元素,作为所述待测试元素。
在一种可能的实现方式中,所述从所述待处理节点中确定待测试节点,包括:
判断所述待处理节点中每一节点对应的获取次数是否大于预设获取次数阈值;
基于判断结果,从所述待处理节点中确定获取次数小于或等于所述预设获取次数阈值的节点,将确定的节点作为所述待测试节点。
在一种可能的实现方式中,所述基于所述待测试元素,进行性能测试,包括:
判断所述待测试元素是否为已推送过的元素;
若所述待测试元素为已推送过的元素,则判断所述待测试元素的推送次数是否大于预设推送次数阈值;
若所述待测试元素的推送次数小于或等于所述预设推送次数阈值,则对所述待测试元素进行性能测试。
在一种可能的实现方式中,在所述判断所述待测试元素是否为已推送过的元素之后,还包括:
若所述待测试元素不为已推送过的元素,则对所述待测试元素进行性能测试。
在一种可能的实现方式中,所述预设元素过滤规则包括过滤无效标签元素、过滤宽或高为0的元素、过滤不在所述待测试web端可视区域内的元素,以及过滤可缩放矢量图形(Scalable Vector Graphics,svg)的子元素中的一个或多个。
在一种可能的实现方式中,在所述基于待测试web端的页面dom结构对应的节点树,获得待处理节点之前,还包括:
在缓存中获取所述待处理节点;
所述基于待测试web端的页面dom结构对应的节点树,获得待处理节点,包括:
若没有在缓存中获取到所述待处理节点,则基于所述待测试web端的页面dom结构对应的节点树,获得所述待处理节点。
第二方面,本申请实施例提供一种性能测试装置,包括:
页面解析模块,用于基于待测试web端的页面dom结构对应的节点树,获得待处理节点,其中,所述待处理节点中的每一节点包括至少一个待处理元素;
节点获取模块,用于从所述待处理节点中确定待测试节点;
元素确定模块,用于获取所述待测试节点中每一个待处理元素的堆叠顺序,基于所述堆叠顺序,确定所述待测试节点中的待测试元素,其中,所述堆叠顺序根据所述每一个待处理元素出现的先后顺序确定。
性能测试模块,用于基于所述待测试元素,进行性能测试。
在一种可能的实现方式中,所述页面解析模块,具体用于:
确定所述待测试web端的页面dom结构对应的节点树中各个节点之间的层级关系,以及每一节点中待处理元素的标识和宽高数据;
根据所述各个节点之间的层级关系,以及所述每一节点中待处理元素的标识和宽高数据,获得扁平化的节点数据;
基于所述扁平化的节点数据和预设过滤规则,获得所述待处理节点。
在一种可能的实现方式中,所述元素确定模块,具体用于:
根据所述堆叠顺序,确定所述待测试节点中每一个待处理元素的权重,所述权重基于所述堆叠顺序从前到后依次减小;
基于所述权重,确定所述待测试节点中的待测试元素。
在一种可能的实现方式中,所述元素确定模块,具体用于:
根据所述权重,从所述待测试节点的每一个待处理元素中确定大于预设权重阈值的元素;
将大于所述预设权重阈值的元素,作为所述待测试元素。
在一种可能的实现方式中,所述节点获取模块,具体用于:
判断所述待处理节点中每一节点对应的获取次数是否大于预设获取次数阈值;
基于判断结果,从所述待处理节点中确定获取次数小于或等于所述预设获取次数阈值的节点,将确定的节点作为所述待测试节点。
在一种可能的实现方式中,所述性能测试模块,具体用于:
判断所述待测试元素是否为已推送过的元素;
若所述待测试元素为已推送过的元素,则判断所述待测试元素的推送次数是否大于预设推送次数阈值;
若所述待测试元素的推送次数小于或等于所述预设推送次数阈值,则对所述待测试元素进行性能测试。
在一种可能的实现方式中,所述性能测试模块,还用于:
若所述待测试元素不为已推送过的元素,则对所述待测试元素进行性能测试。
在一种可能的实现方式中,所述预设元素过滤规则包括过滤无效标签元素、过滤宽或高为0的元素、过滤不在所述待测试web端可视区域内的元素,以及过滤svg的子元素中的一个或多个。
在一种可能的实现方式中,所述页面解析模块,具体用于:
在缓存中获取所述待处理节点;
若没有在缓存中获取到所述待处理节点,则基于所述待测试web端的页面dom结构对应的节点树,获得所述待处理节点。
第三方面,本申请实施例提供一种终端设备,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
本申请实施例提供的性能测试方法、装置及存储介质,该方法基于web端的页面dom结构对应的节点树,获得待处理节点数据,其中,每一节点包括至少一个待处理元素,进而,从上述待处理节点中确定待测试节点,获取待测试节点中每一个待处理元素的堆叠顺序,基于该堆叠顺序,确定待测试节点中的待测试元素,进行性能测试。其中,本申请实施例基于元素堆叠顺序确定待测试元素进行性能测试,该堆叠顺序根据元素出现的先后顺序确定,从而,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),提高测试覆盖率,以便后续触发一些不容易发现的异常和程序奔溃闪退等,加快软件开发。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的性能测试***架构示意图;
图2a为本申请实施例提供的一种非扁平化示意图;
图2b为本申请实施例提供的一种扁平化示意图;
图3为本申请实施例提供的一种性能测试方法的流程示意图;
图4为本申请实施例提供的另一种性能测试方法的流程示意图;
图5为本申请实施例提供的一种web端性能测试的示意图;
图6为本申请实施例提供的一种性能测试装置的结构示意图;
图7为本申请实施例提供的一种终端设备的基本硬件架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在软件测试领域,自动化测试是一种节省人力成本的重要测试方式,把以人驱动的测试工作转变为以程序驱动的自动测试。自动化测试既是传统测试方式的进化,又创造了新的测试方式。以自动遍历测试为例,自动遍历测试是自动遍历软件前端页面的元素节点,选出一个节点自动执行一系列的操作,如:点击、滑动、后退、输入等,以期能够触发一些不容易发现的异常和程序奔溃闪退等,一般用于web端、手机客户端(Android/IOS)各项性能指标的测试。但是,不同于android和ios端,web端的页面dom结构是动态变化的,如没有明确的Activity或UIController列表,所以容易漏掉一些元素,如临时出现的元素,导致测试覆盖率较低,从而后续无法触发一些不容易发现的异常和程序奔溃闪退等,影响软件开发。
因此,本申请实施例提出一种性能测试方法,基于元素堆叠顺序确定待测试元素,进而进行性能测试,该堆叠顺序根据元素出现的先后顺序确定,从而,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),从而,提高测试覆盖率,以便后续触发一些不容易发现的异常和程序奔溃闪退等,加快软件开发。
可选地,本申请实施例提供的性能测试方法可以应用于如图1所示的性能测试***中。在图1中,该性能测试***架构可以包括终端设备101和服务器102。这里,终端设备中运行web端,为用户提供不同服务,终端设备和服务器之间可以通过网络通信。其中,该网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
在具体实现过程中,如果需要对web端的性能进行测试,终端设备101可以基于web端的页面dom结构对应的节点树,获得待处理节点数据,其中,每一节点包括至少一个待处理元素,进而获得待测试元素,并根据该待测试元素,进行性能测试。其中,终端设备101基于元素堆叠顺序,确定待测试元素进行性能测试,该堆叠顺序根据元素出现的先后顺序确定,从而,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),提高测试覆盖率,以便后续触发一些不容易发现的异常和程序奔溃闪退等,加快软件开发。其中,上述堆叠顺序可以为z-index。
另外,终端设备101在基于待测试web端的页面文档对象模型结构对应的节点树,获得待处理节点时,可以基于待测试web端的页面文档对象模型结构对应的节点树,获得扁平化的节点数据,进而,根据该扁平化的节点数据和预设过滤规则,获得上述待处理节点,避免过滤时将有效元素过滤掉。其中,图2a和2b分别给出非扁平化和扁平化处理的示意图。从图2a和2b的对比可知:在扁平化处理后,终端设备101在进行节点中元素的过滤时,不会把父节点宽高为0,但子节点宽高不为0的有效节点过滤掉。如扁平化处理后得到id:0-2的元素,宽为0,但id:0-2-0和id:0-2-1的元素,宽不为0,终端设备101不会过滤掉id:0-2-0和id:0-2-1的元素。其中,扁平化处理后节点的层级关系不变,不影响后续处理。
另外,终端设备101在对web端的性能进行测试后,可以把相应的结果发送至服务器102。服务器102可以对上述结果进行记录,并将上述结果发送给相关人员,以便相关人员在App上线之前及时处理web端的性能问题。终端设备101中执行的上述web端性能测试的过程也可以由服务器102执行,即服务器102基于web端的页面dom结构对应的节点树,获得待处理节点数据,其中,每一节点包括至少一个待处理元素,进而,确定待测试元素,根据该待测试元素,进行性能测试。
需要进行说明的是,本申请实施例描述的***架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着***架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
下面以几个实施例为例对本申请的技术方案进行描述,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图3为本申请实施例提供的一种性能测试方法的流程示意图,本实施例的执行主体以图1中的终端设备为例,具体执行主体可以根据实际应用场景确定,本申请实施例对此不做特别限制。如图3所示,本申请实施例提供的性能测试方法可以包括如下步骤:
S301:基于待测试web端的页面dom结构对应的节点树,获得待处理节点,其中,该待处理节点中的每一节点包括至少一个待处理元素。
其中,待测试web端可以根据实际情况确定。上述终端设备在基于待测试web端的页面dom结构对应的节点树,获得待处理节点时,可以确定待测试web端的页面dom结构对应的节点树中各个节点之间的层级关系,以及每一节点中待处理元素的标识和宽高数据,进而,获得扁平化的节点数据,基于扁平化的节点数据和预设过滤规则,过滤无效元素,并在过滤无效元素后的节点数据中,获得待处理节点数据。
这里,上述预设元素过滤规则可以根据实际情况设置,例如包括过滤无效标签元素、过滤宽或高为0的元素、过滤不在待测试web端可视区域内的元素,以及过滤svg的子元素等。其中,无效标签元素可以包括style、script、noscript、iframe。过滤svg的子元素可以理解为在svg元素不深入递归,过滤其子元素。
本申请实施例在扁平化处理后,进行元素过滤,避免有效元素被过滤掉,而且,通过元素过滤减小后续处理数据的大小,提高后续元素推选效率,进而提高同等测试时间内的操作个数。
另外,上述终端设备在基于待测试web端的页面dom结构对应的节点树,获得待处理节点之前,还可以先在缓存中获取上述待处理节点数据,如果在缓存中成功获取到上述待处理节点数据,则直接从缓存获取数据进行后续处理,以减少节点获得的时间,从而提高同等测试时间内操作数量。如果没有在缓存中成功获取到上述待处理节点数据才执行上述步骤,保证后续处理正常进行,满足实际应用需要。这里,上述终端设备首次进行性能测试,需要基于待测试web端的页面dom结构对应的节点树,获得待处理节点,然后将得到的节点数据存入缓存,后续测试有一定几率从缓存获取到(如有50%几率从缓存获取到,不用执行上述节点获得步骤),如果没有在缓存中获取到,需要再次基于待测试web端的页面dom结构对应的节点树,获得待处理节点。
S302:从上述待处理节点中确定待测试节点。
这里,上述终端设备可以判断待处理节点中每一节点对应的获取次数是否大于预设获取次数阈值,进而,基于判断结果,从上述待处理节点中确定获取次数小于或等于预设获取次数阈值的节点,将确定的节点作为上述待测试节点,如节点i的获取次数小于或等于上述预设获取次数阈值,将节点i作为上述待测试节点。其中,i=1,…,n,n根据上述待处理节点中的节点数目确定,n为整数。
其中,上述预设获取次数阈值可以根据实际情况设置,例如10次。
在本申请实施例中,上述终端设备设置上述预设获取次数阈值,判断待处理节点中每一节点对应的获取次数是否大于上述预设获取次数阈值,是为了避免一直重复获取同一节点,测试覆盖率较低。例如节点i的获取次数大于上述预设获取次数阈值,说明终端设备长时间获取同一节点,其它节点未获取,测试覆盖率较低,此时可以直接返回空值(null),跳过本***作,这样后续可以获取其它节点,提高测试覆盖率。
S303:获取上述待测试节点中每一个待处理元素的堆叠顺序,基于该堆叠顺序,确定上述待测试节点中的待测试元素。
这里,上述堆叠顺序根据上述每一个待处理元素出现的先后顺序确定,如上述堆叠顺序为z-index。上述终端设备获取各节点中元素的z-index,从而,根据该z-index,确定上述待测试节点中的待测试元素。
在本实施例中,上述终端设备可以根据上述堆叠顺序,确定上述待测试节点中每一个待处理元素的权重,该权重基于上述堆叠顺序从前到后依次减小,从而,基于上述权重,确定上述待测试节点中的待测试元素。
其中,不同的堆叠顺序对应的权重不同,堆叠顺序越靠前权重越大,这样,方便终端设备对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),提高测试覆盖率。
示例性的,上述终端设备可以预设堆叠顺序与权重的对应关系,从而,根据该对应关系和上述堆叠顺序,确定上述待测试节点中每一个待处理元素的权重。其中,上述对应关系中堆叠顺序越靠前权重越大。例如上述终端设备设置堆叠顺序99-80的权重为0.5,堆叠顺序50-22的权重为0.3,剩余的权重为0.2。这里,堆叠顺序越大表明越靠前。
这里,上述终端设备可以根据上述权重,从上述待测试节点的每一个待处理元素中确定大于预设权重阈值的元素,进而,将大于上述预设权重阈值的元素,作为待测试元素。如上述终端设备按权重大小对待测试节点中的待处理元素进行排序,将其中大于上述预设权重阈值的元素,作为待测试元素。
由上述可知,权重大说明堆叠顺序靠前。临时出现的元素的堆叠顺序靠前,这样,方便终端设备后续对临时出现的元素进行性能测试,提高测试覆盖率。
另外,上述终端设备还可以更新相应节点的获取次数,例如将上述节点i的获取次数加1,以便后续基于更新后的信息进行后续处理,避免长时间获取同一节点,提高测试覆盖率。
S304:基于上述待测试元素,进行性能测试。
这里,上述终端设备可以基于上述待测试元素执行一系列的操作,如:点击、滑动、后退、输入等,以触发一些不容易发现的异常和程序奔溃闪退等。
本申请实施例,基于web端的页面dom结构对应的节点树,获得待处理节点数据,其中,每一节点包括至少一个待处理元素,进而,从上述待处理节点中确定待测试节点,获取待测试节点中每一个待处理元素的堆叠顺序,基于该堆叠顺序,确定待测试节点中的待测试元素,进行性能测试。其中,本申请实施例基于元素堆叠顺序确定待测试元素进行性能测试,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),提高测试覆盖率,以便后续触发一些不容易发现的异常和程序奔溃闪退等,加快软件开发。
另外,上述终端设备在基于上述待测试元素,进行性能测试时,还考虑上述待测试元素是否为已推送过的元素,如果为已推送过的元素,则进一步判断上述待测试元素的推送次数是否大于预设推送次数阈值,如果小于或等于上述预设推送次数阈值,则对所述待测试元素进行性能测试。其中,上述终端设备通过设置推送次数阈值,允许同一元素被推选多次,提高了因该元素产生的临时元素的覆盖率。图4为本申请实施例提出的另一种性能测试方法的流程示意图。如图4所示,该方法包括:
S401:基于待测试web端的页面dom结构对应的节点树,获得待处理节点,其中,该待处理节点中的每一节点包括至少一个待处理元素。
S402:从上述待处理节点中确定待测试节点。
S403:获取上述待测试节点中每一个待处理元素的堆叠顺序,基于该堆叠顺序,确定上述待测试节点中的待测试元素。
其中,上述堆叠顺序根据上述每一个待处理元素出现的先后顺序确定。
上述步骤S401-S403与上述步骤S301-S303的实现方式相同,此处不再赘述。
S404:判断上述待测试元素是否为已推送过的元素。
这里,上述终端设备可以将已推送过的元素的信息进行存储,例如保存已推送过的元素的标识。上述终端设备将上述待测试元素的标识与上述保存的已推送过的元素的标识进行比较,根据比较结果,判断上述待测试元素是否为已推送过的元素。
例如,上述终端设备比较上述待测试元素的标识与上述保存的已推送过的元素的标识没有一样的,则判定上述待测试元素不为已推送过的元素;比较上述待测试元素的标识与上述保存的已推送过的元素的标识有一样的,则判定上述待测试元素为已推送过的元素。
S405:若上述待测试元素为已推送过的元素,则判断上述待测试元素的推送次数是否大于预设推送次数阈值。
如果上述待测试元素为已推送过的元素,上述终端设备可以进一步判断上述待测试元素的推送次数是否大于预设推送次数阈值。其中,该预设推送次数阈值可以根据实际情况设置,例如5次。
在本申请实施例中,上述终端设备可以保存已推送过的元素的标识与推送次数,例如以<k,v>结构保存上述信息,k是已推送过的元素的标识,v是推送次数。如果上述待测试元素为已推送过的元素,上述终端设备可以从上述保存的信息中,获取上述测试元素的推送次数,进而,判断该推送次数是否大于预设推送次数阈值。
S406:若上述待测试元素的推送次数小于或等于上述预设推送次数阈值,则对所述待测试元素进行性能测试。
这里,如果上述待测试元素的推送次数小于或等于上述预设推送次数阈值,上述终端设备可以将上述待测试元素作为推选元素,进行性能测试,否则,不再将上述待测试元素作为推选元素,继续执行下一次尝试推选的流程。其中,上述终端设备通过设置推送次数阈值,允许同一元素被推选多次,提高了因该元素产生的临时元素的覆盖率。
进一步地,在将上述待测试元素作为推选元素后,上述终端设备可以更新上述待测试元素的推选次数,例如将上述待测试元素的推选次数加1,以便后续基于更新后的信息推选元素,提高后续处理结果的准确率。
另外,如果上述待测试元素不为已推送过的元素,则上述终端设备可以直接将上述待测试元素作为上述推选元素,进行性能测试。这里,上述待测试元素不为已推送过的元素,说明先前测试没有覆盖到上述待测试元素,此时将将上述待测试元素作为上述推选元素,提高了测试覆盖率。
其中,在将上述待测试元素作为上述推选元素后,上述终端设备还可以将上述待测试元素的信息保存,例如保存到已推送过的元素的信息中,保存上述待测试元素的标识,并更新推选次数为1,以便后续基于更新后的信息进行后续处理,满足实际应用需要。
本申请实施例在进行性能测试时,还考虑上述待测试元素是否为已推送过的元素,如果为已推送过的元素,则进一步判断上述待测试元素的推送次数是否大于预设推送次数阈值,如果小于或等于上述阈值,则对上述待测试元素进行性能测试。其中,本申请实施例通过设置推送次数阈值,允许同一元素被推选多次,提高了因该元素产生的临时元素的覆盖率。而且,本申请实施例基于元素堆叠顺序确定待测试元素进行性能测试,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),也提高了测试覆盖率,加快软件开发。
另外,如图5所示,本申请实施例提供一种web端性能测试的示意图。上述终端设备在对web端进行性能测试时,可以先在缓存中获取上述web端对应的待处理节点数据,如果获取到,则直接从缓存中获取相应数据进行后续处理。如果没有获取到,上述终端设备可以基于web端的页面dom结构对应的节点树,获得待处理节点。其中,可以通过获得扁平化的节点数据以及元素过滤,获得上述待处理节点。这里,上述终端设备进行上述处理的具体内容参照图3和图4所述实施例中的相关描述,在此不再赘述。另外,上述终端设备有一定几率从缓存获取到节点数据(如有50%几率从缓存获取到,不用执行上述节点获得步骤),如果没有在缓存中获取到,需要再次执行上述节点获得步骤,获得节点数据进行后续处理。
在得到上述待处理节点数据后,上述终端设备可以从上述待处理节点中确定待测试节点。并且,为了避免一直重复获取同一节点,测试覆盖率较低的情况,上述终端设备可以判断节点的获取次数是否大于预设获取次数阈值,基于判断结果,从上述待处理节点中确定获取次数小于或等于预设获取次数阈值的节点,将确定的节点作为待测试节点。如果节点的获取次数大于预设获取次数阈值,上述终端设备可以直接返回null,跳过本***作,这样后续可以获取其它节点,提高测试覆盖率。
在确定待测试节点后,上述终端设备可以获取上述待测试节点中每一个待处理元素的堆叠顺序,基于该堆叠顺序,确定上述待测试节点中的待测试元素,例如根据堆叠顺序,确定上述待测试节点中每一个待处理元素的权重,该权重基于所述堆叠顺序从前到后依次减小,基于该权重,确定上述待测试节点中的待测试元素。如从上述待测试节点的每一个待处理元素中确定大于预设权重阈值的元素,将大于预设权重阈值的元素,作为待测试元素。进一步地,上述终端设备在进行性能测试前,还可以判断上述待测试元素是否为已推送过的元素,如果上述待测试元素为已推送过的元素,则再判断上述待测试元素的推送次数是否大于预设推送次数阈值。如果上述待测试元素的推送次数小于或等于上述预设推送次数阈值,则上述终端设备可以将上述待测试元素作为推选元素,进行性能测试。如果上述待测试元素的推送次数大于上述预设推送次数阈值,则上述终端设备不再将上述待测试元素作为推选元素,不进行性能测试,继续执行下一次尝试推选的流程。其中,上述终端设备通过设置推送次数阈值,允许同一元素被推选多次,提高了因该元素产生的临时元素的覆盖率。
另外,如果上述待测试元素不为已推送过的元素,则上述终端设备可以直接将上述待测试元素作为推选元素,进行性能测试,并将上述待测试元素的信息保存,例如保存到已推送过的元素的信息中,保存上述待测试元素的标识,并更新推选次数为1。
因此,综上所述,本申请实施例相对现有技术有如下优点:通过扁平化处理,避免后续过滤元素时有效元素被过滤掉;基于元素堆叠顺序确定待测试元素进行性能测试,能够对临时出现的元素进行性能测试(临时出现的元素的堆叠顺序靠前),提高测试覆盖率;在获取节点时,通过设置预设获取次数阈值,避免了一直重复获取同一节点,测试覆盖率较低的情况;在推选元素时,通过设置推送次数阈值,允许同一元素被推选多次,提高了因该元素产生的临时元素的覆盖率。
对应于上文实施例的性能测试方法,图6为本申请实施例提供的性能测试装置的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。图6为本申请实施例提供的一种性能测试装置的结构示意图,该性能测试装置60包括:页面解析模块601、节点获取模块602、元素确定模块603以及性能测试模块604。这里的性能测试装置可以是上述终端设备本身,或者是实现终端设备的功能的芯片或者集成电路。这里需要说明的是,页面解析模块、节点获取模块、元素确定模块以及性能测试模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
其中,页面解析模块601,用于基于待测试web端的页面dom结构对应的节点树,获得待处理节点,其中,所述待处理节点中的每一节点包括至少一个待处理元素。
节点获取模块602,用于从所述待处理节点中确定待测试节点。
元素确定模块603,用于获取所述待测试节点中每一个待处理元素的堆叠顺序,基于所述堆叠顺序,确定所述待测试节点中的待测试元素,其中,所述堆叠顺序根据所述每一个待处理元素出现的先后顺序确定。
性能测试模块604,用于基于所述待测试元素,进行性能测试。
在一种可能的实现方式中,所述页面解析模块601,具体用于:
确定所述待测试web端的页面dom结构对应的节点树中各个节点之间的层级关系,以及每一节点中待处理元素的标识和宽高数据;
根据所述各个节点之间的层级关系,以及所述每一节点中待处理元素的标识和宽高数据,获得扁平化的节点数据;
基于所述扁平化的节点数据和预设过滤规则,获得所述待处理节点在一种可能的实现方式中,元素确定模块603,具体用于:
根据所述堆叠顺序,确定所述待测试节点中每一个待处理元素的权重,所述权重基于所述堆叠顺序从前到后依次减小;
基于所述权重,确定所述待测试节点中的待测试元素。
在一种可能的实现方式中,所述元素确定模块603,具体用于:
根据所述权重,从所述待测试节点的每一个待处理元素中确定大于预设权重阈值的元素;
将大于所述预设权重阈值的元素,作为所述待测试元素。
在一种可能的实现方式中,所述节点获取模块602,具体用于:
判断所述待处理节点中每一节点对应的获取次数是否大于预设获取次数阈值;
基于判断结果,从所述待处理节点中确定获取次数小于或等于所述预设获取次数阈值的节点,将确定的节点作为所述待测试节点。
在一种可能的实现方式中,所述性能测试模块604,具体用于:
判断所述待测试元素是否为已推送过的元素;
若所述待测试元素为已推送过的元素,则判断所述待测试元素的推送次数是否大于预设推送次数阈值;
若所述待测试元素的推送次数小于或等于所述预设推送次数阈值,则对所述待测试元素进行性能测试。
在一种可能的实现方式中,所述性能测试模块604,还用于:
若所述待测试元素不为已推送过的元素,则对所述待测试元素进行性能测试。
在一种可能的实现方式中,所述预设元素过滤规则包括过滤无效标签元素、过滤宽或高为0的元素、过滤不在所述待测试web端可视区域内的元素,以及过滤svg的子元素中的一个或多个。
在一种可能的实现方式中,所述页面解析模块601,具体用于:
在缓存中获取所述待处理节点;
若没有在缓存中获取到所述待处理节点,则基于所述待测试web端的页面dom结构对应的节点树,获得所述待处理节点。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
可选地,图7示意性地提供本申请所述终端设备的一种可能的基本硬件架构示意图。
参见图7,终端设备700包括至少一个处理器701以及通信接口703。进一步可选的,还可以包括存储器702和总线704。
其中,终端设备700中,处理器701的数量可以是一个或多个,图7仅示意了其中一个处理器701。可选地,处理器701,可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或者数字信号处理器(digital signalprocessor,DSP)。如果终端设备700具有多个处理器701,多个处理器701的类型可以不同,或者可以相同。可选地,终端设备700的多个处理器701还可以集成为多核处理器。
存储器702存储计算机指令和数据;存储器702可以存储实现本申请提供的上述性能测试方法所需的计算机指令和数据,例如,存储器702存储用于实现上述性能测试方法的步骤的指令。存储器702可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如ROM、固态硬盘(Solid State Disk,SSD)、硬盘(Hard Disk Drive,HDD)、光盘),易失性存储器。
通信接口703可以为所述至少一个处理器提供信息输入/输出。也可以包括以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
可选的,通信接口703还可以用于终端设备700与其它计算设备或者终端设备进行数据通信。
进一步可选的,图7用一条粗线表示总线704。总线704可以将处理器701与存储器702和通信接口703连接。这样,通过总线704,处理器701可以访问存储器702,还可以利用通信接口703与其它计算设备或者终端设备进行数据交互。
在本申请中,终端设备700执行存储器702中的计算机指令,使得终端设备700实现本申请提供的上述性能测试方法,或者使得终端设备700部署上述的性能测试装置。
从逻辑功能划分来看,示例性的,如图7所示,存储器702中可以包括页面解析模块601、节点获取模块602、元素确定模块603以及性能测试模块604。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现页面解析模块、节点获取模块、元素确定模块以及性能测试模块的功能,而不限定是物理上的结构。
另外,上述的终端设备除了可以像上述图7通过软件实现外,也可以作为硬件模块,或者作为电路单元,通过硬件实现。
本申请提供一种计算机可读存储介质,所述计算机程序产品包括计算机指令,所述计算机指令指示计算设备执行本申请提供的上述性能测试方法。
本申请提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行上述性能测试方法。
本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口为所述至少一个处理器提供信息输入和/或输出。进一步,所述芯片还可以包含至少一个存储器,所述存储器用于存储计算机指令。所述至少一个处理器用于调用并运行该计算机指令,以执行本申请提供的上述性能测试方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

Claims (13)

1.一种性能测试方法,其特征在于,包括:
基于待测试web端的页面文档对象模型结构对应的节点树,获得待处理节点,其中,所述待处理节点中的每一节点包括至少一个待处理元素;
从所述待处理节点中确定待测试节点;
获取所述待测试节点中每一个待处理元素的堆叠顺序,基于所述堆叠顺序,确定所述待测试节点中的待测试元素,其中,所述堆叠顺序根据所述每一个待处理元素出现的先后顺序确定;
基于所述待测试元素,进行性能测试。
2.根据权利要求1所述的方法,其特征在于,所述基于待测试web端的页面文档对象模型结构对应的节点树,获得待处理节点,包括:
确定所述待测试web端的页面文档对象模型结构对应的节点树中各个节点之间的层级关系,以及每一节点中待处理元素的标识和宽高数据;
根据所述各个节点之间的层级关系,以及所述每一节点中待处理元素的标识和宽高数据,获得扁平化的节点数据;
基于所述扁平化的节点数据和预设过滤规则,获得所述待处理节点。
3.根据权利要求1所述的方法,其特征在于,所述基于所述堆叠顺序,确定所述待测试节点中的待测试元素,包括:
根据所述堆叠顺序,确定所述待测试节点中每一个待处理元素的权重,所述权重基于所述堆叠顺序从前到后依次减小;
基于所述权重,确定所述待测试节点中的待测试元素。
4.根据权利要求3所述的方法,其特征在于,所述基于所述权重,确定所述待测试节点中的待测试元素,包括:
根据所述权重,从所述待测试节点的每一个待处理元素中确定大于预设权重阈值的元素;
将大于所述预设权重阈值的元素,作为所述待测试元素。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述从所述待处理节点中确定待测试节点,包括:
判断所述待处理节点中每一节点对应的获取次数是否大于预设获取次数阈值;
基于判断结果,从所述待处理节点中确定获取次数小于或等于所述预设获取次数阈值的节点,将确定的节点作为所述待测试节点。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述基于所述待测试元素,进行性能测试,包括:
判断所述待测试元素是否为已推送过的元素;
若所述待测试元素为已推送过的元素,则判断所述待测试元素的推送次数是否大于预设推送次数阈值;
若所述待测试元素的推送次数小于或等于所述预设推送次数阈值,则对所述待测试元素进行性能测试。
7.根据权利要求6所述的方法,其特征在于,在所述判断所述待测试元素是否为已推送过的元素之后,还包括:
若所述待测试元素不为已推送过的元素,则对所述待测试元素进行性能测试。
8.根据权利要求2所述的方法,其特征在于,所述预设过滤规则包括过滤无效标签元素、过滤宽或高为0的元素、过滤不在所述待测试web端可视区域内的元素,以及过滤可缩放矢量图形的子元素中的一个或多个。
9.根据权利要求1至4中任一项所述的方法,其特征在于,在所述基于待测试web端的页面文档对象模型结构对应的节点树,获得待处理节点之前,还包括:
在缓存中获取所述待处理节点;
所述基于待测试web端的页面文档对象模型结构对应的节点树,获得待处理节点,包括:
若没有在缓存中获取到所述待处理节点,则基于所述待测试web端的页面文档对象模型结构对应的节点树,获得所述待处理节点。
10.一种性能测试装置,其特征在于,包括:
页面解析模块,用于基于待测试web端的页面文档对象模型结构对应的节点树,获得待处理节点,其中,所述待处理节点中的每一节点包括至少一个待处理元素;
节点获取模块,用于从所述待处理节点中确定待测试节点;
元素确定模块,用于获取所述待测试节点中每一个待处理元素的堆叠顺序,基于所述堆叠顺序,确定所述待测试节点中的待测试元素,其中,所述堆叠顺序根据所述每一个待处理元素出现的先后顺序确定;
性能测试模块,用于基于所述待测试元素,进行性能测试。
11.一种终端设备,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如权利要求1-9任一项所述的方法的指令。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行权利要求1-9任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行权利要求1-9任一项所述的方法。
CN202210745526.7A 2022-06-27 2022-06-27 性能测试方法、装置及存储介质 Pending CN117349143A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210745526.7A CN117349143A (zh) 2022-06-27 2022-06-27 性能测试方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210745526.7A CN117349143A (zh) 2022-06-27 2022-06-27 性能测试方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN117349143A true CN117349143A (zh) 2024-01-05

Family

ID=89369756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210745526.7A Pending CN117349143A (zh) 2022-06-27 2022-06-27 性能测试方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN117349143A (zh)

Similar Documents

Publication Publication Date Title
CN109388566B (zh) 一种代码覆盖率分析方法、装置、设备及存储介质
CN106021079B (zh) 一种基于用户频繁访问序列模型的Web应用性能测试方法
CN108509453B (zh) 一种信息处理方法及装置
CN111262753B (zh) 一种numa节点个数自动配置方法方法、***、终端及存储介质
CN111970151A (zh) 虚拟及容器网络的流量故障定位方法及***
CN111767217A (zh) Js单元测试案例生成方法及装置
CN103077080B (zh) 基于高性能平台的并行程序性能数据采集方法及装置
CN113254350A (zh) 一种Flink作业测试方法、装置、设备及存储介质
CN117349143A (zh) 性能测试方法、装置及存储介质
CN117008920A (zh) 引擎***、请求处理方法、装置、计算机设备及存储介质
CN111026947A (zh) 一种爬虫方法以及基于浏览器的嵌入式爬虫实现方法
CN110955604A (zh) 一种信息显示方法、装置、服务器及存储介质
CN114063606B (zh) Plc协议模糊测试方法及装置、电子设备、存储介质
CN116302885A (zh) 问题处理方法及装置、计算机可读存储介质、终端
CN105786865B (zh) 一种检索***故障分析方法及装置
CN113342647A (zh) 一种测试数据的生成方法及装置
CN113448985A (zh) 一种api接口生成方法、调用方法、装置及电子设备
CN112532447A (zh) 一种rdma参数配置的方法、装置及存储介质
CN106909503B (zh) 一种Android应用自动化测试用例精简方法
CN110704222A (zh) 转储文件的分析方法及装置、存储介质、电子设备
CN111444057A (zh) 页面性能数据采集方法、装置及计算设备
CN112637355B (zh) 基于多并发单通道无线数据处理方法、装置、设备及介质
CN109522205A (zh) 一种仿真测试的方法、装置、计算机存储介质及终端
CN117251282A (zh) 神经网络模型资源处理方法、装置和设备
CN116302932A (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