CN116662143A - 测试方法、装置、设备、存储介质和计算机程序产品 - Google Patents
测试方法、装置、设备、存储介质和计算机程序产品 Download PDFInfo
- Publication number
- CN116662143A CN116662143A CN202210153603.XA CN202210153603A CN116662143A CN 116662143 A CN116662143 A CN 116662143A CN 202210153603 A CN202210153603 A CN 202210153603A CN 116662143 A CN116662143 A CN 116662143A
- Authority
- CN
- China
- Prior art keywords
- event
- page
- response
- test case
- target
- 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
Links
- 238000004590 computer program Methods 0.000 title claims abstract description 27
- 238000010998 test method Methods 0.000 title claims description 17
- 238000012360 testing method Methods 0.000 claims abstract description 251
- 230000004044 response Effects 0.000 claims abstract description 120
- 230000001960 triggered effect Effects 0.000 claims abstract description 106
- 238000013507 mapping Methods 0.000 claims abstract description 51
- 230000006870 function Effects 0.000 claims description 107
- 238000005316 response function Methods 0.000 claims description 91
- 238000000034 method Methods 0.000 claims description 48
- 238000012545 processing Methods 0.000 claims description 47
- 230000002452 interceptive effect Effects 0.000 claims description 15
- 238000009877 rendering Methods 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 5
- 238000001545 Page's trend test Methods 0.000 description 4
- 238000002347 injection Methods 0.000 description 4
- 239000007924 injection Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请提供一种测试方法、装置、设备、存储介质和计算机程序产品,可以应用于车载应用的测试场景中,以测试车载子应用的交互页面的响应状况。本申请可以提高测试用例的生成效率,包括:在与被测页面中的目标元素绑定的事件被触发后,保存与事件对应的事件对象,事件对象至少包括目标元素在被测页面中的元素路径和事件的事件类型;根据事件对象包括的元素路径,将目标元素映射至测试用例中,以及根据事件对象包括的事件类型,将事件映射至测试用例中,得到目标测试用例;根据目标测试用例,测试与被测页面中目标元素绑定的事件被触发后的响应状况。
Description
技术领域
本申请涉及计算机处理技术领域,特别是涉及一种测试方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,为了使用户可以更好地和计算机进行信息交互,出现了可与用户交互的页面,用户可以在页面上进行操作,如点击页面上的按钮,计算机则可以通过页面响应用户,如在页面上展示相应的内容。
页面被开发出来后,在正式提供给用户之前,一般需要模拟用户对页面的操作,以测试页面对该用户的操作所做出的响应是否正常。一般来说,可以手工编写测试用例,以模拟用户对页面的操作,但是手工编写测试用例效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种可提高测试用例的生成效率以提高页面测试效率的测试方法、装置、计算机设备、存储介质和计算机程序产品。
本申请提供了一种测试方法,所述方法包括:
在与被测页面中的目标元素绑定的事件被触发后,保存与所述事件对应的事件对象,所述事件对象至少包括所述目标元素在所述被测页面中的元素路径和所述事件的事件类型;
根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例;
根据所述目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况。
本申请提供了一种测试装置,所述装置包括:
事件对象保存模块,用于在与被测页面中的目标元素绑定的事件被触发后,保存与所述事件对应的事件对象,所述事件对象至少包括所述目标元素在所述被测页面中的元素路径和所述事件的事件类型;
映射模块,用于根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例;
测试模块,用于根据所述目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况。
在一个实施例中,所述事件对象保存模块,用于在所述事件对应的事件对象传入所述事件的响应函数后,在所述响应函数以所述事件对象为参数进行响应之前,通过代理函数获取并保存传入所述响应函数的所述事件对象;
所述装置还包括代理调用模块,用于通过所述代理函数基于获取的所述事件对象,代理调用所述响应函数。
在一个实施例中,所述事件对象保存模块,还用于在所述响应函数以所述事件对象为参数进行响应之前,通过运行所述代理函数的拦截代码拦截所述事件的响应函数;从拦截的所述响应函数中,获取作为所述响应函数的参数的事件对象。
在一个实施例中,所述被测页面属于车载子应用的交互页面,所述装置还包括注入模块,用于将所述代理函数注入所述车载子应用框架的逻辑层中;
所述事件对象保存模块,还用于通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数。
在一个实施例中,所述装置还包括事件触发检测模块,用于在将所述代理函数注入所述车载子应用框架的逻辑层后,启动检测被触发的事件;
所述事件对象保存模块,还用于在启动检测被触发的事件之后,通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数。
在一个实施例中,所述注入模块,还用于当所述被测页面依托于所述车载子应用框架运行,且所述车载子应用框架依托于车机模拟器运行时,在启动所述车机模拟器之后,将所述代理函数注入所述车载子应用框架的逻辑层。
在一个实施例中,所述事件对象保存模块,还用于从所述事件对应的事件对象中获取所述事件的事件类型;当所述事件类型表征所述事件为需映射至测试用例的事件时,保存所述事件对应的事件对象。
在一个实施例中,所述被测页面属于车载子应用的交互页面,所述装置还包括事件对象形成模块,用于当通过运行所述车载子应用框架的渲染层检测到与被测页面中的目标元素绑定的事件时,通过运行的所述渲染层提供的所述事件的事件类型和所述渲染层提供的目标元素在所述被测页面中的元素路径,形成与所述事件对应的事件对象。
在一个实施例中,所述映射模块,用于将所述事件对象包括的所述元素路径作为参数传入所述测试用例的元素获取函数,以将所述目标元素映射至所述测试用例中得到所述目标测试用例。
在一个实施例中,所述映射模块,用于在所述目标元素对应的多个元素处理函数中,确定处理类型与所述事件对象包括的所述事件类型相符的元素处理函数,以将所述事件映射至所述测试用例中得到所述目标测试用例。
在一个实施例中,所述测试模块,用于将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件被触发得到的测试响应页面,获取所述测试响应页面的截图;基于与被测页面中的目标元素绑定的所述事件被触发时得到的参考响应页面,获取所述参考响应页面的截图;根据所述测试响应页面的截图和所述参考响应页面的截图之间的差异,得到与被测页面中的目标元素绑定的所述事件被触发后的响应状况。
在一个实施例中,所述测试模块,还用于在车机模拟器所提供的各种操作系统中,将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件在各种操作系统下被触发得到相应的测试响应页面,以得到与各种操作系统对应的测试响应页面。
在一个实施例中,所述事件对象保存模块,用于将与所述目标元素绑定的事件对应的事件对象保存至文件中;所述文件还存储有除与被测页面中的目标元素绑定的事件之外的其他事件被触发时,所述其他事件对应的事件对象;
所述装置还包括事件对象遍历模块,用于遍历存储在所述文件的各事件对象;当遍历至与所述目标元素绑定的事件对应的事件对象时,执行根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例的步骤。
本申请提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行上述测试方法。
本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述测试方法。
本申请提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述测试方法。
上述测试方法、装置、计算机设备、存储介质和计算机程序产品中,在与被测页面中的目标元素绑定的事件被触发后,保存与该被触发的事件所对应的事件对象,由于事件对象至少包括目标元素在被测页面中的元素路径和被触发的事件的事件类型,因此,可以根据事件对象包括的元素路径,将目标元素映射至测试用例中,以及根据事件对象包括的事件类型,将被触发的事件映射至测试用例中,自动生成目标测试用例,无需手工编写;并且,后续可以直接根据该自动生成的目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况,提高页面测试效率;另外,由于事件对象包括目标元素在被测页面中的元素路径,因此,在该目标元素的起始标签不包括目标元素的唯一标识符或类名的情况下,也可以基于目标元素在被测页面中的元素路径,将目标元素映射至测试用例中,避免被测页面的开发人员在形成测试用例时修改目标元素的起始标签,降低代码处理量。
附图说明
图1为一个实施例中测试方法的应用环境图;
图2为一个实施例中测试方法的流程示意图;
图3为一个实施例中被测页面的元素示意图;
图4为一个实施例中被测页面的元素节点树示意图;
图5为一个实施例中车载子应用框架的示意图;
图6为一个实施例中需模拟用户被测页面的操作类型示意图;
图7为一个实施例中采集生成目标测试用例所需的事件对象的流程示意图;
图8为一个实施中进行元素映射和事件映射的流程示意图;
图9为一个实施例中测试装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
图1为一个实施中测试方法的应用环境图。参照图1,终端102可以通过通信网络与服务器104进行交互;终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群或云服务器来实现。其中,服务器104可以集成有数据存储系统;可以理解的是,服务器104也可以与该数据存储系统分开设置。
终端102可以展示被测页面,当与被测页面中的目标元素所绑定的事件被触发后,可以将与目标元素绑定的事件被触发时形成的事件对象发给服务器104;该事件对象至少包括目标元素在被测页面中的元素路径和事件的事件类型。服务器104可以将接收到的事件对象存储至数据存储系统中,另外,服务器104还可以根据事件对象中的包括的元素路径,将目标元素映射至测试用例中,以及根据事件对象包括的事件类型,将事件映射至测试用例中,得到目标测试用例,根据目标测试用例,测试与被测页面中目标元素绑定的事件被触发后的响应状况。
本申请提供的测试方法,可以由终端和服务器协同执行,也可以由终端或服务器单独执行。在一个实施例中,以该方法由终端执行为例进行说明;图2为一个实施例中测试方法的流程示意图,该方法包括以下步骤:
步骤S202,在与被测页面中的目标元素绑定的事件被触发后,保存与事件对应的事件对象,事件对象至少包括目标元素在被测页面中的元素路径和事件的事件类型。
其中,被测页面是对用户操作的响应状况待测试的交互页面;该被测页面可以是浏览器的交互页面和车载子应用的交互页面等。被测页面可以是基于标签语言构建的,相应地,被测页面的基本构成单元是标签,标签与标签之间具有层级结构。基于标签语言构建的交互页面所包括的标签基本包括语言标识标签、页面标题标识标签和页面主体标识标签。每个标签的起始和结束可以通过该标签的起始标签和结束标签来定义;例如,语言标识标签的起始标签是<html>,语言标识标签的结束标签是</html>;又例如,页面标题标识标签的起始标签是<head>,标题标识标签的结束标签是</head>;再例如,页面主体标识标签的起始标签是<body>,页面主体标识标签的结束标签是</body>。其中,语言标识标签是页面标题标识标签和页面主体标识标签的父层级标签,页面标题标识标签和页面主体标识标签是同一层级标签;基于语言标识标签、页面标题标识标签和页面主体标识标签之间的层级关系,形成的标签结构为:
<html>
<head></head>
<body></body>
</html>
其中,页面主体标识标签可以包括子层级标签,例如按钮和输入文本框等,所包括的子层级标签的数量可以为至少一个,页面主体标识标签以及页面主体标识标签的子层级标签可以称为元素,元素之间具有层级关系,具有层级关系的元素可以构成被测页面的元素节点树。
图3为一个实施例中被测页面的元素示意图,参照图3,该被测页面中的元素可以包括元素300、元素301、元素302、元素3011和元素3012,其中,元素300对应于页面主体标识标签,元素301、元素302、元素3011和元素3012为页面主体标识标签的子层级标签。
其中,元素300和元素301之间的层级关系是:元素301为元素300的子层级标签;元素300和元素302之间的层级关系是:元素302为元素300的标签;元素301和元素302之间的层级关系是:元素301和元素302为同一层级标签;同样地,元素301和元素3011之间的层级关系是:元素3011为元素301的子层级标签;元素301和元素3012之间的层级关系是:元素3012为元素301的子层级标签;元素3011和元素3012之间的层级关系是:元素3011和元素3012为同一层级标签。
图4为一个实施例中被测页面的元素节点树示意图;参照图4,基于元素300、元素301、元素302、元素3011和元素3012之间的层级关系,可以得到图4所示的元素节点树,其中,节点a对应于元素300、节点b和节点c分别对应于元素301和元素302,节点d和节点e分别对应于元素3011和元素3012。
元素路径为各元素在被测页面的元素节点树中的路径,例如,元素3011在图4示出的元素节点树中的路径为:节点a/节点b/节点d。
开发被测页面的时候,可以在被测页面中的元素上绑定相应的事件,各类型的事件例如是单击事件、双击事件、长按事件和滑动事件等,不同事件对应不同的事件类型,例如单击事件对应的事件类型为单击。当与绑定在元素上的事件相应的操作作用于该元素时,绑定在该元素的事件被触发,例如,绑定在某个按钮的事件为单击事件,当与该单击事件相应的单击操作作用于该按钮时,绑定在该按钮的单击事件被触发。
当绑定于元素的事件被触发后,可以进行与该被触发的事件相应的事件处理,该事件处理可以通过该事件的响应函数实现。由于通过该事件的响应函数实现事件处理时,该事件的响应函数需根据该事件的事件对象作为参数进行,该事件的事件对象是根据与该事件被触发时的相关信息封装得到的。
在一个实施例中,可以由测试人员向被测页面输入测试操作,若测试操作作用于被测页面的目标元素使与该目标元素绑定的事件被触发,那么,与该事件被触发时的相关信息会被封装为该事件的事件对象,该事件对象至少可以包括与该事件绑定的目标元素在被测页面中的元素路径和该事件的事件类型。
步骤S204,根据事件对象包括的元素路径,将目标元素映射至测试用例中,以及根据事件对象包括的事件类型,将事件映射至测试用例中,得到目标测试用例。
其中,目标测试用例是元素映射和事件映射后得到的测试用例;目标测试用例可以模拟用户对被测页面的操作,以得到相应的响应状况。具体地,目标测试用例可以在各种操作系统中作用于被测页面,以触发被测页面中目标元素绑定的事件,得到在各种操作系统中的相应响应状况。
为了使得目标测试用例可以模拟用户对被测页面的操作,需要明确目标测试用例在被测页面上所作用的元素以及作用类型。其中,所作用的元素可以是被测页面中与页面主体标识标签对应的页面主体或者是被测页面中该页面主体标识标签的子层级标签对应的按钮、输入文本框等;作用类型为被触发的事件的事件类型,例如单击、双击等。
通过事件对象包括的元素路径,可以使得目标测试用例定位至被测页面中需作用的元素;通过事件对象包括的事件类型,可以使得目标测试用例确定作用类型。
在一个实施例中,终端可以将事件对象包括的元素路径作为参数传入测试用例的元素获取函数,以将目标元素映射至测试用例中得到目标测试用例。其中,元素获取函数是用于定位页面中元素的函数。
终端将事件对象包括目标元素的元素路径作为传给元素获取函数的参数,使得目标测试用例基于该元素路径执行元素获取函数时,可以定位到目标元素。
上述实施例中,将事件对象包括的元素路径作为参数传给元素获取函数,在目标元素的起始标签不包括唯一标识符或类名的情况下,也可以定位至目标元素。
在一个实施例中,在目标元素对应的多个元素处理函数中,终端可以确定处理类型与事件对象包括的事件类型相符的元素处理函数,以将被触发的事件映射至测试用例中得到目标测试用例。
对元素处理方式多种,例如,获取元素文本、获取元素属性和点击元素等。因此,每一种元素处理方式可以对应一个元素处理函数,元素处理函数的处理类型为该元素处理函数所对应的元素处理方式。
终端可以在多个元素处理函数中,确定处理类型与事件对象包括的事件类型相符的元素处理函数,例如,事件对象包括的事件类型是点击,那么可以确定处理类型与该事件类型相符的元素处理函数,该元素处理函数对应的元素处理方式也为点击。接着,将所确定的元素处理函数放入测试用例中,以将被测试操作触发的事件映射至测试用例中,得到目标测试用例。
上述实施例中,在多个元素处理函数中确定处理类型与事件对象所包括的事件类型相符的元素处理函数,提供事件映射的准确性。
步骤S206,根据目标测试用例,测试与被测页面中目标元素绑定的事件被触发后的响应状况。
响应状况可以包括良好响应状况和非良好响应状况;良好响应状况表征目标测试用例作用后得到的响应逻辑与预先设想的响应逻辑一致,被测页面的响应逻辑代码出现问题的可能性较低;非良好响应状况表征目标测试用例作用后得到的响应逻辑与预先设想的响应逻辑不一致,说明被测页面的响应逻辑代码出现问题的可能性较高。
在得到目标测试用例后,终端可以在各种操作系统中,将目标测试用例作用于被测页面,以触发与被测页面中的目标元素绑定的事件,得到各种操作系统中的响应状况。
上述测试方法中,在与被测页面中的目标元素绑定的事件被触发后,保存与该被触发的事件所对应的事件对象,由于事件对象至少包括目标元素在被测页面中的元素路径和被触发的事件的事件类型,因此,可以根据事件对象包括的元素路径,将目标元素映射至测试用例中,以及根据事件对象包括的事件类型,将被触发的事件映射至测试用例中,自动生成目标测试用例,无需手工编写;并且,后续可以直接根据该自动生成的目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况,提高页面测试效率;另外,由于事件对象包括目标元素在被测页面中的元素路径,因此,在该目标元素的起始标签不包括目标元素的唯一标识符或类名的情况下,也可以基于目标元素在被测页面中的元素路径,将目标元素映射至测试用例中,避免被测页面的开发人员在形成测试用例时修改目标元素的起始标签,降低代码处理量。
在一个实施例中,终端可以在事件对应的事件对象传入事件的响应函数后,在响应函数以事件对象为参数进行响应之前,通过代理函数获取并保存传入响应函数的事件对象;终端还可以通过代理函数基于获取的事件对象,代理调用响应函数。
代理函数是代替原有函数对响应函数进行调用的函数,该代理函数可以对原有函数改写得到,改写方式可以是:在原有函数调用响应函数的代码之前,加入拦截响应函数的代码。在车载子应用场景中,由于车载子应用的交互页面与web页面(在浏览器展示的页面)不一样,没有window对象(浏览器打开的窗口),所以不能通过window对象进行拦截,不过,车载子应用的交互页面的元素是通过page方法(可以称为页面包装方法)或component方法(可以称为组件包装方法)包装的,因此可以改写page方法和改写component方法,将改写后的方法作为代理函数。其中,改写的方式可以是:在调用响应函数的代码之前,加入拦截响应函数的代码。
在与被测页面中的目标元素绑定的事件被测试操作触发后,会形成相应的事件对象,该事件对象作为参数传给该事件的响应函数,在以该事件对象作为响应函数的参数执行响应函数以实现响应之前,通过代理函数获取并保存传给该事件的响应函数的事件对象。终端还可以通过代理函数,以该事件对象作为响应函数的参数,代理调用响应函数以实现响应,完成事件处理。
上述实施例中,在响应函数以事件对象为参数进行响应之前,通过代理函数保存传给响应函数的事件对象,避免事件对象还未保存就被销毁;另外,在保存事件对象后,通过代理函数代理调用响应函数,使得事件处理被完成。
在一个实施例中,终端还可以在响应函数以事件对象为参数进行响应之前,通过运行代理函数的拦截代码拦截事件的响应函数;从拦截的响应函数中,获取作为响应函数的参数的事件对象。
其中,拦截代码可以利用存入设定数组的方式实现,在事件被测试操作触发后,将相应响应函数存入设定数组中。
在与被测页面中的目标元素绑定的事件被测试操作触发后,所形成的事件对象作为参数传给该事件的响应函数后,通过运行代理函数中的拦截代码拦截该事件的响应函数,从拦截的响应函数中获取作为该响应函数的参数的事件对象。
上述实施例中,通过代理函数中的拦截代码拦截被测试操作触发的事件的响应函数,得到事件对象,进而基于该事件对象,自动生成测试用例,提高测试用例的生成效率。
在一个实施例中,被测页面属于车载子应用的交互页面,终端还可以将代理函数注入车载子应用框架的逻辑层中;通过运行逻辑层中的代理函数以代理调用响应函数之前,终端可以通过运行逻辑层中的代理函数的拦截代码拦截事件的响应函数。
其中,终端上可以运行操作系统,在操作系统上运行母应用,在母应用提供的环境中运行子应用。
操作系统(Operating System,简称OS)是管理和控制终端硬件与软件资源的计算机程序,是直接运行在终端裸机上的最基本的系统软件,应用程序需要在操作系统的支持下运行。操作系统可以是视窗(Windows)操作系统或Linux操作系统或者Mac OS(苹果桌面操作系统)等桌面操作系统,也可以是iOS(苹果公司开发的移动操作系统)或者安卓(Android)操作系统等移动操作系统。
母应用是可直接运行于操作系统上的应用程序。母应用可以是社交应用程序、邮箱应用程序、浏览器应用程序、游戏应用程序等。社交应用程序可包括即时通信应用、SNS(Social Network Service,社交网站)应用或者直播应用等。
子应用是可在母应用提供的环境中运行的应用程序,即母应用具备子应用功能,子应用功能用于为母应用的注册用户提供在母应用中使用子应用的服务。子应用可以是外卖应用程序、购物应用程序、商超生鲜应用程序、美食饮品应用程序、出行应用程序等。子应用可以称之为小程序。
车载子应用为应用于车辆的子应用,车载子应用框架为车载子应用的开发文档提供运行环境的;其中,车载子应用的开发文档包括页面结构描述文档以及页面处理逻辑文档;页面结构描述文档可以通过标签语言描述交互页面的结构。图5为一个实施例中车载子应用框架的示意图,参照图5,页面结构描述文档可以运行在车载子应用框架的渲染层,页面处理逻辑文档可以运行在车载子应用框架的逻辑层;车载子应用框架的渲染层和逻辑层之间通过车载子应用所属的母应用进行通信。
当被测页面属于车载子应用的交互页面时,终端可以将对page方法和改写component方法改写得到的代理函数注入车载子应用框架的逻辑层中。
在车载子应用运行框架的逻辑层上确定与被测页面中的目标元素绑定的事件被触发后,在逻辑层上形成该事件的事件对象,所形成的事件对象从逻辑层经由车载子应用所属的母应用,传给逻辑层的响应函数。由于代理函数预先注入逻辑层中,因此,在事件对象传给逻辑层的响应函数之后,通过运行逻辑层中的代理函数以代理调用响应函数之前,可以通过运行逻辑层中的代理函数的拦截代码拦截该响应函数。
上述实施例中,将代理函数预先注入逻辑层中,以便在事件对象传给逻辑层的响应函数之后,通过运行逻辑层中的代理函数以代理调用该响应函数之前,拦截该响应函数,避免漏拦截。
在一个实施例中,在将代理函数注入车载子应用框架的逻辑层后,终端还可以启动检测被触发的事件;在启动检测被触发的事件之后,通过运行逻辑层中的代理函数以代理调用响应函数之前,终端还可以通过运行逻辑层中的代理函数的拦截代码拦截事件的响应函数。
在将代理函数注入车载子应用框架的逻辑层后,终端可以开始启动检测与被测页面中的目标元素绑定的事件是否被触发,在启动检测之后,当与被测页面中的目标元素绑定的事件被测试操作触发时,通过运行逻辑层中的代理函数以代理调用响应函数之前,可以通过运行逻辑层中的代理函数的拦截代码拦截该被触发的事件的响应函数。
上述实施例中,在将代理函数注入车载子应用框架的逻辑层后,可以启动检测被触发的事件,在启动检测被触发的事件之后,终端可以通过逻辑层中的代理函数的拦截代码拦截事件的响应函数,以免被测试操作触发的事件的响应函数被漏拦截。
在一个实施例中,被测页面属于车载子应用的交互页面,当通过运行车载子应用框架的渲染层检测到与被测页面中的目标元素绑定的事件时,终端还可以通过运行的渲染层提供的事件的事件类型和渲染层提供的目标元素在被测页面中的元素路径,形成与事件对应的事件对象。
当与被测页面中的目标元素绑定的事件被测试操作触发时,车载子应用框架的逻辑层检测到该事件被触发后,可以通过渲染层提供该被触发的事件的事件类型以及目标元素在被测页面中的元素路径,形成与被触发的事件对应的事件对象。
上述实施例中,由于车载子应用框架的逻辑层支持在事件对象中加入与被触发的事件绑定的目标元素在被测页面中的元素路径,因此,即便在页面结构描述文档中目标元素的起始标签未定义该目标元素的唯一标识符或类名,目标测试用例也可以经由事件对象得到目标元素的元素路径,完成目标元素的定位,避免被测页面的开发人员在形成测试用例时修改目标元素的起始标签,降低代码处理量。
在一个实施例中,当被测页面依托于车载子应用框架运行,且车载子应用框架依托于车机模拟器运行时,在启动车机模拟器之后,终端可以将代理函数注入车载子应用框架的逻辑层。
车机模拟器用于模拟车载子应用框架在车辆上的运行环境,为车载子应用框架提供运行时所依托车辆的操作系统。由于车载子应用框架是依托于车机模拟器运行的,因此,在启动车机模拟器之后,终端可以将代理函数注入车载子应用框架的逻辑层。
上述实施例中,在启动车机模拟器后,将代理函数注入车载子应用框架的逻辑层,以保证代理函数可以成功注入车载子应用框架。
在一个实施例中,终端还可以从事件对应的事件对象中获取事件的事件类型;当事件类型表征事件为需映射至测试用例的事件时,保存事件对应的事件对象。
需映射至测试用例的事件可以预先定义,可以将单击事件、滑动事件、输入事件、回车事件、长按事件、页面切换事件、页面返回事件或截屏事件等作为需映射至测试用例的事件。
在与被测页面中的目标元素绑定的事件被测试操作触发后,形成相应的事件对象,终端可以从该事件对象中获取被测试操作触发的事件的事件类型,当该事件类型表征被测试操作触发的事件需映射至测试用例的事件时,终端可以包括该事件对象。
上述实施例中,在保存被测试操作触发的事件的事件对象之前,先根据事件对象的事件类型判断该被触发的事件是否为需映射至测试用例的事件,避免保存无需映射至测试用例的事件的事件对象。
在一个实施例中,终端还可以将目标测试用例作用于被测页面,使被测页面的目标元素的事件被触发得到的测试响应页面,获取测试响应页面的截图;基于与被测页面中的目标元素绑定的事件被触发时得到的参考响应页面,获取参考响应页面的截图;根据测试响应页面的截图和参考响应页面的截图之间的差异,得到与被测页面中的目标元素绑定的事件被触发后的响应状况。
测试响应页面是元素映射后得到的目标测试用例作用于被测页面得到的,具体来说,通过元素映射得到目标测试用例后,将该目标测试用例作用于被测页面,使得与被测页面的目标元素绑定的事件被触发,得到相应的响应页面,该响应页面称为测试响应页面。
参考响应页面是采集测试用例所需的事件对象以进行元素映射时得到的,具体来说,当与被测页面中的目标元素绑定的事件被测试操作触发时,可以得到响应页面,该响应页面称为参考响应页面。
终端在得到测试响应页面后,可以得到该测试响应页面的截图,以及在得到参考响应页面后,可以得到参考响应页面的截图;接着,终端可以比较测试响应页面的截图和参考响应页面的截图之间的差异,根据该差异确定与被测页面中的目标元素绑定的事件被触发后的响应状况。具体来说,当测试响应页面的截图和参考响应页面的截图之间的差异小于阈值时,确定与被测页面中目标元素绑定的事件被触发后的响应状况处于良好响应状况;当测试响应页面的截图和参考响应页面的截图之间的差异大于阈值时,确定与被测页面中目标元素绑定的事件被触发后的响应状况处于非良好响应状况。
上述实施例中,保存在采集事件对象过程中,与被测页面的目标元素绑定的事件被测试操作触发时得到的参考响应页面的截图,与后续目标测试用例作用于被测页面时得到的测试响应页面的截图进行差异性比较,可以不用人工介入,自动确定与被测页面中目标元素绑定的事件被触发后的响应状况。
在一个实施例中,终端还可以在车机模拟器所提供的各种操作系统中,将目标测试用例作用于被测页面,使被测页面的目标元素的事件在各种操作系统下被触发得到相应的测试响应页面,以得到与各种操作系统对应的测试响应页面。
由于不同车型所用的操作系统有所区别,为了保证车载子应用在大部分车型的操作系统中的响应正常,需要测试车载子应用的交互页面在各种车型的操作系统中的响应情况。
车机模拟器可以提供各种车型的操作系统,终端可以在车机模拟器所提供的各种操作系统中,将元素映射和事件映射后得到的目标测试用例作用于被测页面,使得与被测页面的目标元素绑定的事件在各种操作系统下被触发,得到与各种操作系统对应的测试响应页面。
接着,终端可以将各种操作系统对应的测试响应页面的截图与参考响应页面的截图进行差异性比较,以确定车载子应用的交互页面在各种操作系统中的响应情况。
上述实施例中,可以在车机模拟器提供的各种操作系统中,将目标测试用例作用于被测页面,以得到各种操作系统对应的测试响应页面,以确定车载子应用在各种操作系统中的响应是否正常。
在一个实施例中,终端还可以将与目标元素绑定的事件对应的事件对象保存至文件中;文件还存储有除与被测页面中的目标元素绑定的事件之外的其他事件被触发时,其他事件对应的事件对象;终端还可以遍历存储在文件的各事件对象;当遍历至与目标元素绑定的事件对应的事件对象时,执行根据事件对象包括的元素路径,将目标元素映射至测试用例中,以及根据事件对象包括的事件类型,将事件映射至测试用例中,得到目标测试用例的步骤。
在与目标元素绑定的事件被测试操作触发后,会形成相应的事件对象,终端可以将该事件对象保存至文件中;同样地,当测试操作触发被测页面中的其他事件时,终端也可以将其他事件的事件对象保存至该文件中。当需要进行元素映射和事件映射时,终端可以遍历该文件中的各事件对象,并基于遍历到的每一事件对象中的元素路径,将相应的元素映射至测试用例中,基于遍历到的每一事件对象中的事件类型,将相应的事件映射至测试用例中,形成每一事件对象相应的目标测试用例。
上述实施例中,将事件对象统一保存至同一文件中,后续可以直接遍历文件的事件对象以还原得到各个目标测试用例,提高测试用例生成效率。
为了更好地理解上述方法,以下详细阐述一个本申请测试方法的应用实施例。本应用实施例中,被测页面属于车载子应用的交互页面。图6为一个实施例中需模拟用户被测页面的操作类型示意图;参照图6,当被测页面所提供的功能包括:“点击按钮”、“默认页面点击按钮”、页面滑动事件、“组件点击按钮”以及跳转至“新页面”按钮时,需要模拟用户对被测页面所提供的各种功能的操作,以查看被测页面的响应状况是否正常,例如模拟用户对“点击按钮”的操作,以查看被测页面的响应状况是否正常,例如模拟用户滑动页面的操作,以查看被测页面的滑动是否正常,例如模拟用户点击跳转至“新页面”按钮的操作,以查看是否从被测页面跳转至新的页面。
图7为一个实施例中采集生成目标测试用例所需的事件对象的流程示意图;
图7示出的步骤可以由终端执行,参照图7,主要包括如下步骤:
步骤S702,当被测页面依托于车载子应用框架运行,且车载子应用框架依托于车机模拟器运行时,启动车机模拟器;
步骤S704,将代理函数注入车载子应用框架的逻辑层;
在车载子应用场景中,由于车载子应用的交互页面与web页面不一样,没有window对象,所以不能通过window对象进行拦截,不过,车载子应用的交互页面的元素是通过page方法或component方法包装的,因此可以改写page方法和改写component方法,将改写后的方法作为代理函数。
步骤S706,启动检测事件是否被触发;
检测事件被触发的原理是:若通过代理函数,代理调用某一响应函数,则该被调用的响应函数对应的事件被触发;通过代理函数,代理调用某一响应函数,可以得到作为该响应函数的参数的事件对象,通过该事件对象中的事件类型,判断被测试操作触发的事件是否为需映射至测试用例的事件。
步骤S708,接收作用于被测页面的测试操作;
步骤S710,在与被测页面中的目标元素绑定的事件被测试操作触发后,得到参考响应页面,获取该参考响应页面的截图;
步骤S712,测试操作是否结束;
若测试操作仍未结束,则跳转回步骤S708;若测试操作结束,则跳转至步骤S714;
步骤S714,保存被测试操作触发的绑定于目标元素的事件对应的事件对象;
其中,所保存的各事件对象可以包括如下几种信息:
(1)与被测试操作触发的事件绑定的元素所属的页面的路径;
(2)事件被测试操作触发时的时间戳;
(3)被测试操作触发的事件的事件类型;
(4)当测试操作为输入内容的操作时,测试操作所输入的内容;当测试操作为滑动页面主体的操作时,测试操作在页面上的滑动距离;
(5)距离上一测试操作需等待的时间;
(6)与被测试操作触发的事件绑定的目标元素在所属页面中的元素路径。
在保存到因测试操作形成的各个事件对象后,接着,可以对每一事件对象进行元素映射和事件映射,得到与每一事件对象对应的目标测试用例。
图8为一个实施中进行元素映射和事件映射的流程示意图。图8示出的步骤可以由终端执行,参照图8,主要包括如下步骤:
步骤S802,获取用于存储事件对象的文件;
步骤S804,遍历该文件中的各事件对象;
步骤S806,针对遍历到的每一事件对象,根据该事件对象包括的事件类型,将对应于该事件对象的事件映射至测试用例中;
步骤S808,针对遍历到的每一事件对象,根据该事件对象包括的元素路径,将对应于该事件对象的事件所绑定的目标元素映射至测试用例中;
步骤S810,针对遍历到的每一事件对象,完成与该事件对象相关的事件映射和元素映射后,得到该事件对象的目标测试用例,将目标测试用例作用于被测页面,以得到被测页面的响应状况;
在车机模拟器提供的各种操作系统中,将目标测试用例作用于被测页面,以触发与被测页面中的目标元素绑定的事件,得到相应的测试响应页面以及测试响应页面的截图;接着,将测试响应页面的截图与采集事件对象过程中保存的参考响应页面的截图进行差异性比较,若二者差异小于阈值,则说明被测页面在对应的操作系统中的响应状况处于良好响应状况,若二者的差异大于阈值,则说明被测页面在对应的操作系统中的响应状况处于非良好响应状况,被测页面的代码可能出现了问题。
步骤S812,文件中的事件对象是否遍历完成;
若遍历完成,则结束元素映射和事件映射;若未遍历完成,则返回步骤S804。
上述实施例中,测试人员可以向被测页面输入测试操作,当测试操作触发与被测页面中的元素绑定的事件时,拦截该事件的事件对象,通过该事件对象包括的信息自动生成目标测试用例;后续,可以在车机模型器提供的各种操作系统中,将该自动生成的目标测试用例作用于被测页面,验证被测页面在各种操作系统中的响应情况,以提高页面测试效率。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的测试方法的测试装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个测试装置实施例中的具体限定和技术效果可以参见上文中对于测试方法的限定和技术效果,在此不再赘述。
图9为一个实施例中测试装置的结构框图。参照图9,该装置包括:
事件对象保存模块902,用于在与被测页面中的目标元素绑定的事件被触发后,保存与所述事件对应的事件对象,所述事件对象至少包括所述目标元素在所述被测页面中的元素路径和所述事件的事件类型;
映射模块904,用于根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例;
测试模块906,用于根据所述目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况。
在一个实施例中,所述事件对象保存模块902,用于在所述事件对应的事件对象传入所述事件的响应函数后,在所述响应函数以所述事件对象为参数进行响应之前,通过代理函数获取并保存传入所述响应函数的所述事件对象;
所述装置还包括代理调用模块,用于通过所述代理函数基于获取的所述事件对象,代理调用所述响应函数。
在一个实施例中,所述事件对象保存模块902,还用于在所述响应函数以所述事件对象为参数进行响应之前,通过运行所述代理函数的拦截代码拦截所述事件的响应函数;从拦截的所述响应函数中,获取作为所述响应函数的参数的事件对象。
在一个实施例中,所述被测页面属于车载子应用的交互页面,所述装置还包括注入模块,用于将所述代理函数注入所述车载子应用框架的逻辑层中;
所述事件对象保存模块902,还用于通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数。
在一个实施例中,所述装置还包括事件触发检测模块,用于在将所述代理函数注入所述车载子应用框架的逻辑层后,启动检测被触发的事件;
所述事件对象保存模块902,还用于在启动检测被触发的事件之后,通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数。
在一个实施例中,所述注入模块,还用于当所述被测页面依托于所述车载子应用框架运行,且所述车载子应用框架依托于车机模拟器运行时,在启动所述车机模拟器之后,将所述代理函数注入所述车载子应用框架的逻辑层。
在一个实施例中,所述事件对象保存模块902,还用于从所述事件对应的事件对象中获取所述事件的事件类型;当所述事件类型表征所述事件为需映射至测试用例的事件时,保存所述事件对应的事件对象。
在一个实施例中,所述被测页面属于车载子应用的交互页面,所述装置还包括事件对象形成模块,用于当通过运行所述车载子应用框架的渲染层检测到与被测页面中的目标元素绑定的事件时,通过运行的所述渲染层提供的所述事件的事件类型和所述渲染层提供的目标元素在所述被测页面中的元素路径,形成与所述事件对应的事件对象。
在一个实施例中,所述映射模块904,用于将所述事件对象包括的所述元素路径作为参数传入所述测试用例的元素获取函数,以将所述目标元素映射至所述测试用例中得到所述目标测试用例。
在一个实施例中,所述映射模块904,用于在所述目标元素对应的多个与不同事件对应的元素处理函数中,确定处理类型与所述事件对象包括的所述事件类型相符的元素处理函数,以将所述事件映射至所述测试用例中得到所述目标测试用例。
在一个实施例中,所述测试模块906,用于将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件被触发得到的测试响应页面,获取所述测试响应页面的截图;基于与被测页面中的目标元素绑定的所述事件被触发时得到的参考响应页面,获取所述参考响应页面的截图;根据所述测试响应页面的截图和所述参考响应页面的截图之间的差异,得到与被测页面中的目标元素绑定的所述事件被触发后的响应状况。
在一个实施例中,所述测试模块906,还用于在车机模拟器所提供的各种操作系统中,将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件在各种操作系统下被触发得到相应的测试响应页面,以得到与各种操作系统对应的测试响应页面。
在一个实施例中,所述事件对象保存模块902,用于将与所述目标元素绑定的事件对应的事件对象保存至文件中;所述文件还存储有除与被测页面中的目标元素绑定的事件之外的其他事件被触发时,所述其他事件对应的事件对象;
所述装置还包括事件对象遍历模块,用于遍历存储在所述文件的各事件对象;当遍历至与所述目标元素绑定的事件对应的事件对象时,执行根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例的步骤。
上述测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端或服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、输入输出接口(Input/Output,简称I/O接口)、通信接口、显示单元和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种测试方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上的实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种测试方法,其特征在于,所述方法包括:
在与被测页面中的目标元素绑定的事件被触发后,保存与所述事件对应的事件对象,所述事件对象至少包括所述目标元素在所述被测页面中的元素路径和所述事件的事件类型;
根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例;
根据所述目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况。
2.根据权利要求1所述的方法,其特征在于,所述保存与所述事件对应的事件对象,包括:
在所述事件对应的事件对象传入所述事件的响应函数后,在所述响应函数以所述事件对象为参数进行响应之前,通过代理函数获取并保存传入所述响应函数的所述事件对象;
所述方法还包括:
通过所述代理函数基于获取的所述事件对象,代理调用所述响应函数。
3.根据权利要求2所述的方法,其特征在于,所述在所述响应函数以所述事件对象为参数进行响应之前,通过代理函数获取并保存传入所述响应函数的所述事件对象,包括:
在所述响应函数以所述事件对象为参数进行响应之前,通过运行所述代理函数的拦截代码拦截所述事件的响应函数;
从拦截的所述响应函数中,获取作为所述响应函数的参数的事件对象。
4.根据权利要求3所述的方法,其特征在于,所述被测页面属于车载子应用的交互页面,所述方法还包括:
将所述代理函数注入所述车载子应用框架的逻辑层中;
所述在所述响应函数以所述事件对象为参数进行响应之前,通过运行所述代理函数的拦截代码拦截所述事件的响应函数,包括:
通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在将所述代理函数注入所述车载子应用框架的逻辑层后,启动检测被触发的事件;
所述通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数,包括:
在启动检测被触发的事件之后,通过运行所述逻辑层中的所述代理函数以代理调用所述响应函数之前,通过运行所述逻辑层中的所述代理函数的拦截代码拦截所述事件的响应函数。
6.根据权利要求4所述的方法,其特征在于,所述将所述代理函数注入所述车载子应用框架的逻辑层中,包括:
当所述被测页面依托于所述车载子应用框架运行,且所述车载子应用框架依托于车机模拟器运行时,在启动所述车机模拟器之后,将所述代理函数注入所述车载子应用框架的逻辑层。
7.根据权利要求1所述的方法,其特征在于,所述保存与所述事件对应的事件对象,包括:
从所述事件对应的事件对象中获取所述事件的事件类型;
当所述事件类型表征所述事件为需映射至测试用例的事件时,保存所述事件对应的事件对象。
8.根据权利要求1所述的方法,其特征在于,所述被测页面属于车载子应用的交互页面,在保存与所述事件对应的事件对象之前,所述方法还包括:
当通过运行所述车载子应用框架的渲染层检测到与被测页面中的目标元素绑定的事件时,通过运行的所述渲染层提供的所述事件的事件类型和所述渲染层提供的目标元素在所述被测页面中的元素路径,形成与所述事件对应的事件对象。
9.根据权利要求1所述的方法,其特征在于,所述根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,包括:
将所述事件对象包括的所述元素路径作为参数传入所述测试用例的元素获取函数,以将所述目标元素映射至所述测试用例中得到所述目标测试用例。
10.根据权利要求1所述的方法,其特征在于,所述根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例,包括:
在所述目标元素对应的多个元素处理函数中,确定处理类型与所述事件对象包括的所述事件类型相符的元素处理函数,以将所述事件映射至所述测试用例中得到所述目标测试用例。
11.根据权利要求1所述的方法,其特征在于,所述根据所述目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况,包括:
将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件被触发得到的测试响应页面,获取所述测试响应页面的截图;
基于与被测页面中的目标元素绑定的所述事件被触发时得到的参考响应页面,获取所述参考响应页面的截图;
根据所述测试响应页面的截图和所述参考响应页面的截图之间的差异,得到与被测页面中的目标元素绑定的所述事件被触发后的响应状况。
12.根据权利要求11所述的方法,其特征在于,所述将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件被触发得到的测试响应页面,获取所述测试响应页面的截图,包括:
在车机模拟器所提供的各种操作系统中,将所述目标测试用例作用于所述被测页面,使所述被测页面的目标元素的事件在各种操作系统下被触发得到相应的测试响应页面,以得到与各种操作系统对应的测试响应页面。
13.根据权利要求1所述的方法,其特征在于,所述保存与所述事件对应的事件对象,包括:
将与所述目标元素绑定的事件对应的事件对象保存至文件中;所述文件还存储有除与被测页面中的目标元素绑定的事件之外的其他事件被触发时,所述其他事件对应的事件对象;
所述方法还包括:
遍历存储在所述文件的各事件对象;
当遍历至与所述目标元素绑定的事件对应的事件对象时,执行根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例的步骤。
14.一种测试装置,其特征在于,所述装置包括:
事件对象保存模块,用于在与被测页面中的目标元素绑定的事件被触发后,保存与所述事件对应的事件对象,所述事件对象至少包括所述目标元素在所述被测页面中的元素路径和所述事件的事件类型;
映射模块,用于根据所述事件对象包括的所述元素路径,将所述目标元素映射至测试用例中,以及根据所述事件对象包括的所述事件类型,将所述事件映射至所述测试用例中,得到目标测试用例;
测试模块,用于根据所述目标测试用例,测试与所述被测页面中所述目标元素绑定的所述事件被触发后的响应状况。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至13中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153603.XA CN116662143A (zh) | 2022-02-18 | 2022-02-18 | 测试方法、装置、设备、存储介质和计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153603.XA CN116662143A (zh) | 2022-02-18 | 2022-02-18 | 测试方法、装置、设备、存储介质和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662143A true CN116662143A (zh) | 2023-08-29 |
Family
ID=87726584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210153603.XA Pending CN116662143A (zh) | 2022-02-18 | 2022-02-18 | 测试方法、装置、设备、存储介质和计算机程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662143A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117763255A (zh) * | 2023-10-11 | 2024-03-26 | 中国电力科学研究院有限公司 | 一种浏览器数据进行机器学习后评估业务系统性能的方法 |
-
2022
- 2022-02-18 CN CN202210153603.XA patent/CN116662143A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117763255A (zh) * | 2023-10-11 | 2024-03-26 | 中国电力科学研究院有限公司 | 一种浏览器数据进行机器学习后评估业务系统性能的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403364B2 (en) | Method and terminal device for extracting web page content | |
US9183072B1 (en) | Error troubleshooting using a correlated knowledge base | |
US20150236799A1 (en) | Method and system for quick testing and detecting mobile devices | |
US20230035104A1 (en) | Verification method, apparatus and device, and storage medium | |
CN110020370B (zh) | 在客户端应用中实现动画的方法、装置及动画脚本的框架 | |
CN116662143A (zh) | 测试方法、装置、设备、存储介质和计算机程序产品 | |
JP6505849B2 (ja) | 要素識別子の生成 | |
CN111881043B (zh) | 页面测试方法、装置、存储介质和处理器 | |
CN116932392A (zh) | 界面测试方法、装置、设备、存储介质和计算机程序产品 | |
CN115421693A (zh) | 微前端架构的实现方法、装置、计算机设备和存储介质 | |
CN110708270A (zh) | 异常链接检测方法以及装置 | |
CN116932356A (zh) | 跨平台的测试方法、装置、计算机设备和存储介质 | |
CN107766216A (zh) | 一种用于获取应用执行信息的方法与设备 | |
CN117493113B (zh) | 数据上报方法、装置、计算机设备和存储介质 | |
CN113961110B (zh) | 用户操作响应方法、装置、计算机设备和存储介质 | |
CN118295897A (zh) | 应用界面的测试方法、装置、计算机设备、存储介质 | |
CN118245699A (zh) | 页面获取方法、装置、设备、存储介质和计算机程序产品 | |
CN117971823A (zh) | 表单数据存储方法、装置、计算机设备及存储介质 | |
CN118427199A (zh) | 多语言文案自适应适配方法及装置 | |
CN117807334A (zh) | 首屏页面展示方法、装置、计算机设备和存储介质 | |
CN117389762A (zh) | 应用程序的接口调用方法、装置、计算机设备和存储介质 | |
CN118193083A (zh) | 一种软件资源加载方法、装置、计算机设备、存储介质 | |
CN116701184A (zh) | 插槽兼容性测试方法、装置、计算机设备及存储介质 | |
CN118897923A (zh) | 一种跨平台的数据前端展示方法 | |
CN116389409A (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 |