CN117931652A - 自动化测试脚本生成方法、装置、计算机设备及存储介质 - Google Patents
自动化测试脚本生成方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN117931652A CN117931652A CN202410063998.3A CN202410063998A CN117931652A CN 117931652 A CN117931652 A CN 117931652A CN 202410063998 A CN202410063998 A CN 202410063998A CN 117931652 A CN117931652 A CN 117931652A
- Authority
- CN
- China
- Prior art keywords
- node
- control
- user interface
- page
- current
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 222
- 238000013515 script Methods 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000001960 triggered effect Effects 0.000 claims description 69
- 230000004913 activation Effects 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 26
- 230000004048 modification Effects 0.000 claims description 17
- 238000012986 modification Methods 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 230000003213 activating effect Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 abstract description 29
- 230000008859 change Effects 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 9
- 238000012423 maintenance Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 239000007787 solid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000008719 thickening Effects 0.000 description 1
- 239000002699 waste material Substances 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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及自动化测试技术领域,公开了自动化测试脚本生成方法、装置、计算机设备及存储介质,所述方法包括确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系;以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树;基于组件树生成自动化测试脚本,自动化测试脚本用于测试待测软件的用户界面功能。将待测软件中各用户界面控件之间的层级关系、各用户界面控件的节点标识以及属性信息等相关信息封装在组件树中,当用户界面控件发生变化时仅需修改组件树无需大面积修改自动化测试脚本提高了测试脚本的开发效率。
Description
技术领域
本申请涉及自动化测试技术领域,具体涉及自动化测试脚本生成方法、装置、计算机设备及存储介质。
背景技术
目前大多数的软件都会提供UI(User Interface,用户界面)功能,这就要求对软件的UI功能进行测试以保证软件可以投入使用。为了提高软件UI功能的测试效率并降低测试成本,目前常基于自动化测试来测试软件的UI功能。
目前的自动化测试脚本开发方法通常是基于测试用例中的测试步骤找到相应UI控件以及UI控件的所有上层控件,对UI控件以及所有上层控件一一编码最终得到测试脚本,并基于测试脚本对软件进行测试。但是,随着软件功能的丰富以及需求的变化UI控件会发生频繁变化,目前的方法需要自动化测试工程师不断地对所有涉及变化的控件的测试脚本进行修改、更新和调试大大降低测试脚本的开发效率。
因此,如何在UI控件发生变化的情况下提高测试脚本的开发效率已成为目前亟需解决的技术问题。
发明内容
有鉴于此,本申请提供了一种自动化测试脚本生成方法、装置、计算机设备及存储介质,以解决如何在UI控件发生的属性变化的情况下提高测试脚本的开发效率的问题。
第一方面,本申请提供了一种自动化测试脚本生成方法,该方法包括:
确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系;
以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树,其中,组件树中每个节点对应一个节点标识以及一个用户界面控件的属性信息,各节点之间的层级关系与各用户界面控件之间的层级关系对应;
基于组件树生成自动化测试脚本,自动化测试脚本用于测试待测软件的用户界面功能。
在上述技术方案中,待测软件的组件树中各节点与待测软件的一个用户界面控件对应,实现了将待测软件中各用户界面控件之间的层级关系、各用户界面控件的节点标识以及属性信息等相关信息封装在组件树中,进而可以基于组件树中封装的信息快速生成自动化测试脚本,当用户界面控件的属性信息发生变化时,仅需修改封装有该信息的组件树即可,对于基于组件树生成的自动化测试脚本的修改可以做到无修改或少量修改,无需像传统的方法那样对所有涉及变化的控件的测试脚本进行修改,大大提高了在UI控件发生变化的情况下测试脚本的开发效率。
在一些可选的实施例中,以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树,包括:
以主页面作为当前页面,主页面中的用户界面控件作为当前页面的控件,根节点为当前节点,执行以下步骤:
遍历当前页面的各个控件,获取当前页面的各个控件的属性信息;
在当前节点下新增分别与当前页面的各个控件对应的子节点,新增的子节点对应有节点标识;
将当前页面的各个控件的属性信息与自身对应子节点绑定;
根据预设触发操作集合触发当前页面的各控件;
若存在能够被触发的控件,则将触发后的页面确定为当前页面的下一级页面,并确定出下一级页面的控件;
将当前页面中触发后得到下一级页面的控件所对应的节点作为当前节点,将下一级页面作为当前页面,下一级页面的控件作为当前页面的控件,返回执行遍历当前页面的各个控件,获取当前页面的各个控件的属性信息的步骤;
若不存在能够触发的控件,则当前的组件树为待测软件的组件树。
在上述技术方案中,从主页面开始,遍历当前页面的各个控件,以在当前节点下新增分别与当前页面的各个控件对应的子节点,并在子节点上绑定各控件的属性信息,进而触发当前页面的各个控件通过动态触发的方式得到各控件触发后的页面,得到当前页面的下一级页面,以在组件树中重现确定当前节点与当前页面,以更新组件树中的节点。实现了在构建组件树的过程中从待测软件的主页面开始动态逐个的触发控件以找到所有控件的上层以及下层控件,保证最终的组件树中节点间层级结构与待测软件中各页面中用户界面控件之间的层级结构高度一致,保证了组件树的可靠性。
在一些可选的实施例中,待测软件的组件树中的每个节点还对应一个用户界面控件的激活条件,在将当前页面中触发后得到下一级页面的控件所对应的节点作为当前节点,将下一级页面作为当前页面,下一级页面的控件作为当前页面的控件,返回执行遍历当前页面的各个控件,获取当前页面的各个控件的属性信息的步骤之前,方法还包括:
在当前的组件树中,将不能被触发的控件的激活条件确定为无法激活,并将确定的激活条件绑定至不能被触发的控件对应的节点;
对于能够被触发的控件,判断触发能够被触发的控件的触发操作的个数是否等于一;
若个数等于一,则将触发能够被触发的控件的触发操作作为激活条件绑定至能够被触发的控件对应的节点上;
若个数大于一,则比对触发能够被触发的控件后的各个页面中的用户界面控件是否相同;
若存在至少两个页面中的用户界面控件相同,则将至少两个页面对应触发操作中最先触发能够被触发的控件的触发操作作为激活条件绑定至能够被触发的控件对应的节点上;
若存在至少两个页面中的用户界面控件不同,则复制能够被触发的控件对应的节点,并将至少两个页面对应的触发操作作为激活条件分别绑定至能够被触发的控件对应的各节点上。
在上述技术方案中,在当前的组件树中记录能够触发每个节点对应控件的触发操作,且在记录时对于将触发后的页面中用户界面控件相同的控件,将各触发后的页面对应触发操作中最先触发控件的触发操作作为激活条件绑定至该控件对应的节点上,对于触发后的页面中用户界面控件不同的控件,先复制该控件在当前的组件树中对应的节点,再将各触发后的页面对应触发操作分别绑定至该控件对应的各节点上,实现了在组件树中分支记录用户界面控件对于不同触发操作的响应结果。使得组件树中记录有根节点对应主页面至某节点对应用户界面控件之间的具体触发操作流程,使用户在UI控件发生的变化的情况下,可以不用关心从待测软件的主页面到待测用户界面控件之间的具体实现过程来编写自动化测试脚本,降低了首次自动化测试脚本开发的难度,提高了自动化测试脚本的开发效率。
在一些可选的实施例中,方法还包括:
以待测软件的组件树中根节点下的任一子节点为当前待检节点,执行以下步骤,直至待测软件的组件树中所有节点均遍历完毕或确定自检失败:
确定当前待检节点在待测软件中对应的当前待检页面;
获取当前待检页面中所有用户界面控件的属性信息;
从获取的所有属性信息中查找当前待检节点绑定的属性信息;
若查找到当前待检节点绑定的属性信息,则将当前待检节点的下一个节点确定为当前待检节点,并返回执行确定当前待检节点在待测软件中对应的当前待检页面的步骤;
若未查找到当前待检节点绑定的属性信息,则确定待测软件的组件树的自检结果为自检失败,并将自检结果发送至预设用户终端。
在上述技术方案中,自动监测待测软件的组件树中各节点对应用户界面控件的属性信息是否与待测软件中相应用户界面控件的属性信息相一致,以此来发现在待测软件中发生变化在未在组件树中进行相应变化的用户界面控件,并将自检结果发送至预设用户终端便于使用预设用户终端的用户对组件树进行更新。由此可以实现自动检查组件树的目的,提高组件树的可靠性以提高后续自动化测试脚本的可靠性的同时,还可以提前发现UI控件发生变化的情况,降低因UI控件发生变化但组件树未及时更新出现的测试失败并需要人工对测试脚本以及组件树进行排查的情况,提高UI控件发生变化时自动化测试脚本的开发效率。
在一些可选的实施例中,在将当前待检节点的下一个节点确定为当前待检节点,并返回执行确定当前待检节点在待测软件中对应的当前待检页面的步骤之前,方法包括:
确定当前待检页面中是否存在属性信息未被绑定的用户界面控件;
若存在未被绑定的用户界面控件,则在待测软件的组件树中新增与当前待检节点处于同一层级的节点;
将未被绑定的控件的属性信息绑定至新增的节点。
在上述技术方案中,当前待检页面中存在属性信息未被绑定的用户界面控件时,就在待测软件的组件树中新增与当前待检节点处于同一层级的节点,并将未被绑定的控件的属性信息绑定至新增的节点,实现对组件树的自动更新,减少人工对组件树的维护,降低组件树的维护成本。
在一些可选的实施例中,在基于组件树生成自动化测试脚本之后,方法还包括:
接收对自动化测试脚本中目标用户界面控件的属性信息的修改操作,修改待测软件的组件树中目标用户界面控件对应的节点上绑定的属性信息。
在上述技术方案中,接收用户对自动化测试脚本中涉及到某目标用户界面控件的属性信息的修改操作,在修改目标用户界面控件的属性信息的同时对组件树中该目标用户页面控件对应节点上绑定的属性信息进行修改。在自动化测试脚本中涉及到的用户界面控件的属性发生变化时,仅需修改组件树中对应节点上绑定的属性信息即可完成对自动化测试脚本的更新,无需修改自动化测试脚本中的测试代码,更无需修改所有涉及变化的用户界面控件的测试脚本,降低了自动化测试脚本的维护成本,大大提高了UI控件发生变化的情况下测试脚本的开发效率。
在一些可选的实施例中,自动化测试脚本包括待测用户界面控件对应的节点标识以及对待测用户界面控件的测试操作,在基于组件树生成自动化测试脚本之后,方法还包括:
在待测软件的组件树中从根节点开始,搜索绑定的节点标识为待测用户界面控件对应的节点标识的目标节点,得到根节点至目标节点之间的路径;
基于路径中每一个节点对应的激活条件以及属性信息,触发待测软件的各页面中相应的用户页面控件,以从主页面中到达待测用户界面控件;
基于对待测用户界面控件的测试操作,测试待测用户界面控件。
在上述技术方案中,基于自动化测试脚本中包括的待测用户界面控件的节点标识,即可自动从组件树中找到从主页面至待测用户界面控件的路径,并基于路径中节点绑定的节点标识、激活条件以及属性信息,触发待测软件的各页面中相应的用户页面控件,以自动导航到待测用户界面控件,从而基于测试操作测试待测用户界面控件,实现了无需关心中间的实现过程基于组件树自动导航到待测用户界面控件的目的,提高了自动化测试脚本的稳定性。对测试脚本编写人员而言无需关心中间的实现过程大大降低了自动化测试脚本编写的复杂性提高了自动化测试脚本开发的效率。
第二方面,本申请提供了一种自动化测试脚本生成装置,该装置包括:
确定模块,用于确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系;
建立模块,用于以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树,其中,组件树中每个节点对应一个用户界面控件的节点标识以及属性信息,各节点之间的层级关系与各用户界面控件之间的层级关系对应;
生成模块,用于基于组件树生成自动化测试脚本,自动化测试脚本用于测试待测软件的用户界面功能。
第三方面,本申请提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面任一实施例自动化测试脚本生成方法。
第四方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面任一实施例自动化测试脚本生成方法。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是传统自动化测试脚本开发方法的框架示意图;
图2是根据本申请实施例的一种自动化测试脚本生成方法的流程示意图;
图3是本申请实施例的一种应用场景中自动化测试脚本生成方法中涉及的第一页面的示意图;
图4是根据本申请实施例的又一种自动化测试脚本生成方法的流程示意图;
图5是本申请实施例的一种应用场景中自动化测试脚本开发方法的框架示意图;
图6是根据本申请实施例的再一种自动化测试脚本生成方法的流程示意图;
图7是根据本申请实施例的一种自动化测试脚本生成装置的结构框图;
图8是本申请实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
传统自动化测试脚本开发方法的框架如图1所示,需要根据测试用例中的测试步骤,来编写测试脚本,具体的对每一步测试步骤中涉及的目标UI控件,要结合待测软件内各UI控件之间的层级结构,从Home界面(也即主页面),将到达目标UI控件过程中的所有控件一一编程,并直接编写在脚本中,比如图1所示测试用例包括步骤1至步骤n的n个测试步骤,其中,步骤1为滑动控件5后,双击控件5下的控件2,其中的目标UI控件为控件2,结合待测软件的UI控件的层级结构,从Home界面到达控件2的路径为从Home界面中滑动控件3,在滑动后到达控件5,再滑动控件5才到达控件2,则最后编写的测试代码如下所示:
(1),点击Home
(2),滑动控件3。
(3),滑动控件5。
(4),双击控件2。对于其它测试步骤也遵循与步骤1相似的程序,找到从Home界面(也即主页面),将到达目标UI控件过程中的所有控件或子控件以编写测试代码得到自动化测试脚本也即图1中的测试脚本。这就导致当任一UI控件或UI控件的属性,例如,resourceid(服务资源的唯一标识)、名称和或描述等发生变化时,需要修改所有用该UI控件的测试脚本。增加了人力成本方面的浪费,而且也增加了自动化测试的复杂性且降低了UI控件发生变化的情况下自动化测试脚本的开发效率。
本申请针对上述问题提供了一种自动化测试脚本生成方法,通过将待测软件上的所有UI控件之间的层级关系、各UI控件的节点标识以及属性信息等先关信息封装在组件树中,使组件树记录从待测软件的主页面至某UI控件之间的路由,以基于组件树生成自动化测试脚本,将传统面向UI控件编程的方式改变为面向组件路树的编程方式,在编写脚本的过程中,不需再关注UI控件之间的层级结构和具体的UI控件的属性信息,在UI控件发生变化时,仅修改组件树即可无需大范围修改自动化测试脚本,大大提高自动化测试脚本的开发速度和脚本稳定性。下面详细介绍本申请的自动化测试脚本生成方法。
根据本申请实施例,提供了一种自动化测试脚本生成方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本申请实施例中提供了一种自动化测试脚本生成方法,可用于计算机设备,如笔记本电脑、台式电脑或平板电脑等,图2是根据本申请实施例的一种自动化测试脚本生成方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系。
可以从待测软件的主页面开始,对当前页面中的各个用户界面控件执行触发操作,并读取各已触发的用户界面控件的属性信息,直至没有用户界面控件可以被触发为止,这样就可以确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系。其中,执行的触发操作包括单击、双击、上滑、下滑以及左滑等操作,用户界面控件的属性信息包括用户界面控件的resourceid、用户界面控件的名称、用户界面控件的描述以及用户界面控件的操作属性(也即用户界面控件能够响应的触发操作)。
步骤S202,以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树。
其中,组件树中每个节点对应一个节点标识以及一个用户界面控件的属性信息,各节点之间的层级关系与各用户界面控件之间的层级关系对应。节点标识即为节点的身份标识号(id)。计算机设备以待测软件的主页面为根节点,从根节点出发,通过转储命令转储(dump)当前页面的UI控件,dump的过程中计算机设备可以获取到UI控件的属性信息,将所有dump出的UI控件创建为UI组件,也即将dump的UI控件的属性信息绑定到当前节点下的具有节点标识的子节点,得到第一层叶子组件(也即第一层叶子节点)。
然后遍历第一层叶子组件,并对第一层叶子组件中的每一个组件对应UI控件执行触发操作,每一种触发操作后,都按上述得到第一叶子组件的方式创建UI组件,并为第一层叶子节点添加激活条件,具体流程在后续实施例中介绍。如先单击第一层叶子组件中组件a对应UI控件a,dump当前页面的UI控件,得到第二层叶子组件a-1、a-2以及a-3;然后双击UI控件a,如果dump出的UI控件跟单击UI控件a的不一致,则复制组件a为组件A(也即复制UI控件a对应的节点,并为复制的节点赋值一个新的节点标识),并添加组件A的激活条件为“双击”,同时添加第二层叶子组件A-1,A-2以及A-3;如果dump的结果跟单击UI控件a之后的结果一样,则忽略该操作。继续遍历第二层叶子组件得到第三层叶子组件,如此重复直至对叶子组件对应UI控件执行触发操作后dump后的UI控件不再发生变化,得到从根节点出发形成的一颗待测软件的组件树。
在创建组件树的过程中,为每一个节点都赋予对应的激活条件(单击、双击、上滑、下滑等),以指示各节点对应用户界面控件能够响应的触发操作,其具体过程在后续实施例中介绍。通过各节点对应的激活条件可以在后续的自动化测试脚本中屏蔽从待测软件主页面到达某用户界面控件的路径,可以简化自动化测试脚本。
步骤S203,基于组件树生成自动化测试脚本。
其中,自动化测试脚本用于测试待测软件的用户界面功能。响应于用户对待测软件中目标页面的展示操作,在第一页面中展示目标页面、目标页面中的所有用户界面控件以及待测软件的组件树;响应于用户在第一页面中对目标页面中目标用户界面控件的选择指令,在组件树中从根节点开始搜索绑定有该目标用户界面控件的属性信息的节点,并在第一页面中标识该节点,同时在第一页面的目标页面中标识目标用户界面控件并展示目标用户界面控件对应各测试操作选项;响应于用户对各操作选项中目标测试操作选项的选择指令,在第一页面中生成用于指示目标测试操作选项的测试代码,并在绑定有该目标用户界面控件的属性信息的节点中搜索对应激活条件为目标测试操作选项的目标节点,将目标节点的节点标识添加至测试代码中,所有测试代码组成自动化测试脚本。组件树中各节点对应的激活条件用于指示各节点对应用户界面控件能够响应的触发操作。
需要说明的是,计算机设备展示待测软件中目标页面以及目标页面中所有用户界面控件的具体实现方式本申请实施例不做具体限制,可以是响应于用户对目标页面的转储命令转储并展示相关内容,也可以是提前转储待测软件的各页面以及各页面中用户界面控件,响应于用户对目标页面的选择指令以展示相关内容。第一页面中标识绑定有目标用户界面控件的属性信息的节点的具体方式本申请实施例不做具体限制,可以是将高亮、加粗或利用预设颜色来表示。在响应于用户在第一页面中对目标页面中目标用户界面控件的选择指令时,还可以在目标页面标识目标用户界面控件,具体标识方式本申请实施例不做具体限制,可以是将高亮、加粗或利用预设颜色来表示。
在一种应用场景中,第一页面中展示内容如图3所示,某测试用例中的测试步骤为滑动子控件4后,双击子控件4下的灯光控件,用户基于该测试步骤判断最终测试的目标用户界面控件为灯光控件,计算机设备在图3所示第一页面中展示灯光控件所在目标页面以及目标页面上的所有用户界面控件,该目标页面除了灯光控件外,还包括返回、大灯、舒适座舱以及能量管理等用户界面控件。图3所示第一页面中左侧的展示内容即为组件树,该组件树的根节点为Display0,根节点下包括Launcher以及多媒体等与某用户界面控件对应的节点(图中未示出),其中灯光控件对应的节点在位于根节点下的车辆中心的节点下,并标红显示,表明用户在图3所示第一页面的目标页面中选种了灯光控件(该控件在目标页面中被选择后被绿色框标出,且该控件的显示颜色为蓝色)。且在用户选择灯光控件后,弹出包括双击在内的各操作选项。由于待测软件中各页面上的用户界面控件与组件树上的节点一一对应,在用户点击灯光控件以及各操作选项中的双击时会自动映射到对应节点上,生成带对应节点id(也即节点标识)的测试代码“双击组件(“灯光”,“1705382685858”)”。
本申请实施例中,待测软件的组件树中各节点与待测软件的一个用户界面控件对应,实现了将待测软件中各用户界面控件之间的层级关系、各用户界面控件的节点标识以及属性信息等相关信息封装在组件树中,进而可以基于组件树中封装的信息快速生成自动化测试脚本,当用户界面控件的属性信息发生变化时,仅需修改封装有该信息的组件树即可,对于基于组件树生成的自动化测试脚本的修改可以做到无修改或少量修改,无需像传统的方法那样对所有涉及变化的控件的测试脚本进行修改,大大提高了在UI控件发生变化的情况下测试脚本的开发效率。
在本申请实施例中提供了又一种自动化测试脚本生成方法,可用于计算机设备,如笔记本电脑、台式电脑或平板电脑等,图4是根据本申请实施例的又一种自动化测试脚本生成方法的流程图,如图4所示,该流程包括如下步骤:
步骤S401,确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系。
步骤S402,以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树。
步骤S401至步骤S402详细参见图2所示实施例步骤S201至步骤S202,在此不做赘述。
可选的,为了保证组件树的可靠性,上述步骤S402可以包括如下步骤S4021至步骤S4027:
步骤S4021,以主页面作为当前页面,主页面中的用户界面控件作为当前页面的控件,根节点为当前节点,执行以下步骤:
遍历当前页面的各个控件,获取当前页面的各个控件的属性信息。
计算机设备可以基于转储命令转储当面页面以及当前页面中的各个控件,进而获取到各控件的属性信息。
步骤S4022,在当前节点下新增分别与当前页面的各个控件对应的子节点。
其中,新增的子节点对应有节点标识。计算机设备会当前节点下创建若干个具有唯一节点标识的子节点,并将不同节点标识的子节点分配给当前页面中不同的控件。
步骤S4023,将当前页面的各个控件的属性信息与自身对应子节点绑定。
对于当前页面的每个控件,都会将该控件的属性信息绑定至与其自身对应的子节点上。
步骤S4024,根据预设触发操作集合触发当前页面的各控件。
其中,预设触发操作集合中包括单击、双击、上滑、下滑以及左滑等多种触发操作。遍历当前节点下各个已绑定属性信息的子节点,对于遍历到的当前子节点,对当前子节点对应控件执行预设触发操作集合中的每种触发操作,以确定当前子节点对应控件能否响应于至少一种触发操作以更新当前页面,这样就可以确定当前页面的各控件中是否存在能够被触发的控件。
步骤S4025,若存在能够被触发的控件,则将触发后的页面确定为当前页面的下一级页面,并确定出下一级页面的控件。
对于遍历到的当前子节点,若当前子节点对应控件仅能响应于一种触发操作,则将该控件触发后的页面确定为当前子节点在当前页面的下一级页面,并将触发后的页面中属性信息不同于当前页面中各控件的用户界面控件确定为下一级页面的控件。
若当前子节点对应控件可以响应于多种触发操作,则比对该控件被每种触发操作触发后的页面中的用户界面控件是否相同;如果存在至少两个页面中的用户界面控件相同,则将相同的页面中的任一个页面确定为当前子节点在当前页面的下一级页面,并将下一级页面中属性信息不同于当前页面中各控件的用户界面控件确定为下一级页面中的控件;如果存在至少两个页面中的用户界面控件不同,则复制当前子节点并修改复制后的子节点的节点标识,将用户界面控件不同的至少两个页面中一者确定为当前子节点在当前页面的下一级页面,将用户界面控件不同的至少两个页面中的其他页面分别确定为复制的各当前子节点在当前页面的下一级页面;对于各下一级页面,将下一级页面中属性信息不同于当前页面中各控件的用户界面控件确定为下一级页面中的控件。
需要说明的是,若当前子节点对应控件未能对预设触发操作集合中的每种触发操作做出响应,则在当前的组件树中将与当前子节点平级(也即与当前子节点处于同一层级)的下一个子节点确定为当前子节点,并返回执行对当前子节点对应控件执行预设触发操作集合中的每种触发操作的步骤,直至当前的组件树中与当前子节点平级的所有子节点均遍历完毕,这样就可以确定当前的组件树中当前节点下各子节点在当前页面的下一级页面。
可选的,为了提高自动化测试脚本的开发效率,待测软件的组件树中的每个节点还对应一个用户界面控件的激活条件,这样一来就可以将待测软件中各用户页面控件转到其下级用户页面控件之间所需的操作也即各用户界面控件能够响应的触发操记录在待测软件的组件树中,从而在开发自动化测试脚本时用户就无需关心各测试步骤中从待测软件的主页面到待测用户界面控件之间的具体实现过程,转而可以通过在测试代码中记录待测用户界面控件对应节点的节点标识的方式,在待测软件的组件树中依据该节点标识以及各节点的激活条件自动导航到待测用户页面控件,可以提高自动化测试脚本的开发效率。而且,在UI控件发生变化时,通过修改组件树中的各节点的相关信息就可以实现对UI控件的触发操作的更新,无需大面积修改测试代码提高了在UI控件发生变化的情况下自动化测试脚本的开发效率。在步骤S4026之前该方法还可以包括如下步骤A1至步骤A6,以得到节点对应有激活条件的组件树:
步骤A1,在当前的组件树中,将不能被触发的控件的激活条件确定为无法激活,并将确定的激活条件绑定至不能被触发的控件对应的节点。
在遍历当前节点下各个已绑定属性信息的子节点时,对于遍历到的当前子节点,若当前子节点对应控件为不能被触发的控件,将该控件的激活条件确定为无法激活,并将确定的激活条件绑定至当前子节点。
步骤A2,对于能够被触发的控件,判断触发能够被触发的控件的触发操作的个数是否等于一。
若当前子节点对应控件为能够被触发的控件,则确定该控件对预设触发操作集合中作出响应的触发操作的个数是否等于一。
步骤A3,若个数等于一,则将触发能够被触发的控件的触发操作作为激活条件绑定至能够被触发的控件对应的节点上。
如果个数等于一,就将能够被当前子节点对应控件作出响应的触发操作作为激活条件绑定至当前子节点。可以理解的是,此时当前子节点在当前页面的下一级页面即为前子节点对应控件触发后的页面。
步骤A4,若个数大于一,则比对触发能够被触发的控件后的各个页面中的用户界面控件是否相同。
如果个数大于一,就比较当前子节点对应控件响应不同触发操作后的页面中的用户界面控件是否相同。
步骤A5,若存在至少两个页面中的用户界面控件相同,则将至少两个页面对应触发操作中最先触发能够被触发的控件的触发操作作为激活条件绑定至能够被触发的控件对应的节点上。
如果存在至少两个页面中的用户界面控件相同,则将至少两个页面对应触发操作中最先被当前子节点对应控件响应的触发操作作为激活条件绑定至当前子节点。可以理解的是,此时当前子节点在当前页面的下一级页面即为至少两个页面中的任一者。
步骤A6,若存在至少两个页面中的用户界面控件不同,则复制能够被触发的控件对应的节点,并将至少两个页面对应的触发操作作为激活条件分别绑定至能够被触发的控件对应的各节点上。
如果存在至少两个页面中的用户界面控件不同,则复制当前子节点并修改复制后的子节点的节点标识,并将至少两个页面对应的触发操作作为激活条件分别绑定至能够当前子节点以及复制后的子节点上。可以理解的是,此时当前子节点在当前页面的下一级页面即为绑定的激活条件对应的页面,复制的子节点在当前页面的下一级页面也为各自绑定的激活条件对应的页面。复制的子节点的个数加一后与当前子节点对应控件能够响应的触发操作的个数一致。
可选的,还可以将预设默认触发操作集合中某种触发操作例如,单击,确定为默认激活条件,在遍历当前节点下各个已绑定属性信息的子节点时,将每个遍历到的子节点绑定上默认激活条件,若遍历到的当前子节点在当前页面的下一级页面对应触发操作与默认激活条件不一致,则将默认激活条件修改为下一级页面对应触发操作。
在一种示例中,以节点激活代码指示激活条件、用户界面控件为Android(安卓)控件以及主页面为待测软件的Home界面为例,可以将用户界面控件的默认激活条件设置为单击。如用户界面控件的激活条件不是单击(也即用户页面控件能够响应的触发操作不是单击)时,将该激活条件添加到用户界面控件对应的节点激活代码中(也即将默认激活条件修改为该激活条件)。因此,节点激活代码也即是遇到该节点对应用户界面控件时应该做什么触发操作,才能遇到该节点对应用户界面控件的下一级用户界面控件的动作集合。在该示例中具有节点激活代码的节点称为组件路由器。通过组件路由器,可以在后续生成的自动化测试脚本中屏蔽从Home界面到目标Android控件的实现路径,在进行UI测试时可以基于待测软件的组件树中各节点之间的层级结构及各节点的节点激活代码,自动到达目标Android控件。
在当前的组件树中记录能够触发每个节点对应控件的触发操作,且在记录时对于将触发后的页面中用户界面控件相同的控件,将各触发后的页面对应触发操作中最先触发控件的触发操作作为激活条件绑定至该控件对应的节点上,对于触发后的页面中用户界面控件不同的控件,先复制该控件在当前的组件树中对应的节点,再将各触发后的页面对应触发操作分别绑定至该控件对应的各节点上,实现了在组件树中分支记录用户界面控件对于不同触发操作的响应结果。使得组件树中记录有根节点对应主页面至某节点对应用户界面控件之间的具体触发操作流程,使用户在UI控件发生的变化的情况下,可以不用关心从待测软件的主页面到待测用户界面控件之间的具体实现过程来编写自动化测试脚本,降低了首次自动化测试脚本开发的难度,提高了自动化测试脚本的开发效率。
步骤S4026,将当前页面中触发后得到下一级页面的控件所对应的节点作为当前节点,将下一级页面作为当前页面,下一级页面的控件作为当前页面的控件,返回执行遍历当前页面的各个控件,获取当前页面的各个控件的属性信息的步骤。
对于遍历到的当前子节点,若该当前子节点对应控件为能够被触发控件,则将当前子节点作为当前节点,当前子节点在当前页面的下一级页面作为当前页面,该下一级页面的控件作为当前页面的控件返回执行步骤S4021。
步骤S4027,若不存在能够触发的控件,则当前的组件树为待测软件的组件树。
在遍历当前节点下各个已绑定属性信息的子节点时,若对于每次遍历到的当前子节点,该当前子节点对应控件均未能响应预设触发操作集合中的每种触发操作,且当前节点下不存在还未遍历的子节点,则确定预设触发操作集合中的所有触发操作均不能触发当前页面的各个控件,这意味着当前页面已经是待测软件的各页面中位于最底层的页面,则确定当前的组件树即为待测软件的组件树。
从主页面开始,遍历当前页面的各个控件,以在当前节点下新增分别与当前页面的各个控件对应的子节点,并在子节点上绑定各控件的属性信息,进而触发当前页面的各个控件通过动态触发的方式得到各控件触发后的页面,得到当前页面的下一级页面,以在组件树中重现确定当前节点与当前页面,以更新组件树中的节点。实现了在构建组件树的过程中从待测软件的主页面开始动态逐个的触发控件以找到所有控件的上层以及下层控件,保证最终的组件树中节点间层级结构与待测软件中各页面中用户界面控件之间的层级结构高度一致,保证了组件树的可靠性。
步骤S403,基于组件树生成自动化测试脚本。
步骤S403详细参见图2所示实施例步骤S203,在此不做赘述。
步骤S404,在待测软件的组件树中从根节点开始,搜索绑定的节点标识为待测用户界面控件的节点标识的目标节点,得到根节点至搜索到目标节点之间的路径。
其中,自动化测试脚本包括待测用户界面控件对应的节点标识以及对待测用户界面控件的测试操作。在基于自动化测试脚本测试待测软件的UI功能时,可以读取自动化测试脚本中待测用户界面控件对应节点的节点标识对待测用户界面控件的测试操作,并在待测软件的组件树中从根节点开始向下搜索绑定有该节点标识的目标节点,这样一来就得到了待测软件的组件树中根节点至搜索到目标节点之间的路径,该路径即为待测软件中从主页面至待测用户界面控件之间的路径。
步骤S405,基于路径中每一个节点对应的激活条件以及属性信息,触发待测软件的各页面中相应的用户页面控件,以从主页面中到达待测用户界面控件。
待测软件中查找属性信息与路径中每一个节点对应的属性信息相同的用户界面控件,对找到的用户界面控件执行该节点对应的激活条件指示的触发操作如此一来就可以从待测软件的主页面到达待测用户界面控件。
步骤S406,基于对待测用户界面控件的测试操作,测试待测用户界面控件。
进而对用户页面控件执行测试操作以测试待测用户界面控件,如此完成对待测软件的UI功能的测试。
基于自动化测试脚本中包括的待测用户界面控件的节点标识,即可自动从组件树中找到从主页面至待测用户界面控件的路径,并基于路径中节点绑定的节点标识、激活条件以及属性信息,触发待测软件的各页面中相应的用户页面控件,以自动导航到待测用户界面控件,从而基于测试操作测试待测用户界面控件,实现了无需关心中间的实现过程基于组件树自动导航到待测用户界面控件的目的,提高了自动化测试脚本的稳定性。对测试脚本编写人员而言无需关心中间的实现过程大大降低了自动化测试脚本编写的复杂性提高了自动化测试脚本开发的效率。
可选的,该方法还包括接收对自动化测试脚本中目标用户界面控件的属性信息的修改操作,修改待测软件的组件树中目标用户界面控件对应的节点上绑定的属性信息。
接收用户对自动化测试脚本中涉及到某目标用户界面控件的属性信息的修改操作,在修改目标用户界面控件的属性信息的同时对组件树中该目标用户页面控件对应节点上绑定的属性信息进行修改。在自动化测试脚本中涉及到的用户界面控件的属性发生变化时,仅需修改组件树中对应节点上绑定的属性信息即可完成对自动化测试脚本的更新,无需修改自动化测试脚本中的测试代码,更无需修改所有涉及变化的用户界面控件的测试脚本,降低了自动化测试脚本的维护成本,大大提高了UI控件发生变化的情况下测试脚本的开发效率。
在又一种应用场景中,结合图1,如图5所示,图中所示的控件以及子控件指示某待测软件中的用户界面控件,该待测软件的主页面中包括控件1以及控件2,控件1的下级控件为子控件1与子控件2,控件2的下级控件为子控件3与子控件4。以主页面作为当前页面,主页面中的用户界面控件作为当前页面的控件,根节点为当前节点开始执行以下步骤:
获取当前页面也即主页面中控件1以及控件2的属性信息,在根节点也即当前节点下新增两个子节点分别绑定控件1以及控件2的属性信息,得到如图5所示组件树中的组件1与组件2(图5中的组件树中未示出根节点)。而后遍历根节点下的两子节点,设遍历到的当前子节点对应控件1,控件1仅能对单击进行响应,响应后的页面中包括子控件1以及子控件2,则控件1对应节点在主页面的下一级页面为响应后的页面,将控件1对应子节点确定为当前节点,下一级页面确定为当前页面,获取当前页面中子控件1以及子控件2的属性信息,在当前节点下新增两个子节点分别绑定子控件1以及子控件2的属性信息,得到如图5所示组件树中的子组件1与子组件2。而后遍历当前节点下的两子节点,这两个子节点对应子控件1以及子控件2均无法被触发,但当前的组件树中还存在未被遍历的节点(也即控件2对应的节点),则对于该节点执行与相同的流程,最终得到如图5所示组件树中的子组件3与子组件4。这样就得到了该待测软件的组件树,且组件树中组件1与组件2的激活条件为单击,如此得到具有激活条件的节点也即图5中所示的组件路由。
基于测试用例中的各测试步骤1至n可以分析出各测试步骤最终测试的目标控件以及对目标控件的测试操作,在第一页面中对相关控件进行选择可以生成具有目标控件对应节点的节点标识的测试代码得到自动化测试脚本,也即图5中对各测试步骤生成具有用于指示组件路由1与2等组件路由的节点标识的测试脚本。
相较于图1所示的传统的自动化脚本测试方法本申请实施例中的自动化测试脚本生成方法可以将传统面向UI控件编程的方式改变为面向组件路由器的编程方式,以提高座舱软件测试的效率和精度,同时降低人力成本。将UI控件构建为组件树,形成组件路由器,在编写脚本的过程中,不需再关注UI控件之间的层级结构和UI控件具体的属性信息,只需通过组件数即可自动导航到目标UI控件,因此对自动化测试脚本的开发速度和脚本稳定性有显著提高。
本申请实施例中,在构建组件树的过程中从待测软件的主页面开始动态逐个的触发控件以找到所有控件的上层以及下层控件,保证最终的组件树中节点间层级结构与待测软件中各页面中用户界面控件之间的层级结构高度一致,同时在组件树以激活条件的方式中记录能够触发每个节点对应控件的触发操作,使用户在UI控件发生的变化的情况下,可以不用关心从待测软件的主页面到待测用户界面控件之间的具体实现过程来编写自动化测试脚本,提高了自动化测试脚本的开发效率。在UI控件发生变化的情况下,修改组件树即可无需对已开发的自动化测试脚本进行大面积修改,降低了自动化测试脚本的维护成本,提高自动化测试脚本的开发成本。在测试待测软件的用户界面功能时基于自动化测试脚本中的记录的待测用户界面控件对应的节点标识既基于组件树自动导航到待测用户界面控件以进行测试,无需在自动化测试脚本中实现主页面至待测用户界面控件之间的具体过程,大大提高了自动化测试脚本的稳定性。
为了进一步加快UI控件发生变化的情况下自动化测试脚本的开发效率,还可以对已创建的组件树进行检查以发现变化的UI控件,以对组件树进行更新,如此一来可以基于更新后的组件树应用自动化测试脚本,降低因UI控件发生变化但组件树未及时更新出现的测试失败并需要人工对测试脚本以及组件树进行排查的情况,具体的如图6所示,图6为本申请实施例的再一种自动化测试脚本生成方法的流程图,该方法可用于计算机设备,如笔记本电脑、台式电脑或平板电脑等,该流程包括如下步骤:
步骤S601,以待测软件的组件树中根节点下的任一子节点为当前待检节点,执行以下步骤,直至待测软件的组件树中所有节点均遍历完毕或确定自检失败:
确定当前待检节点在待测软件中对应的当前待检页面。
基于当前待检节点在组件树中距离根节点的层级数确定当前待检节点在待测软件中对应的当前待检页面。例如,若当前待检节点在组件树中距离根节点的层级数为0或1则当前待检页面为主页面,若当前待检节点在组件树中距离根节点的层级数为2,则当前待检页面为主页面中各用户界面控件在主页面中的下一级页面,若层级数为3,则主页面中各用户界面控件在主页面中的下两级页面,依次类推即可得到当前待检节点在待测软件中对应的当前待检页面。
步骤S602,获取当前待检页面中所有用户界面控件的属性信息。
基于转储命令转储当前待检页面中所有用户界面控件的属性信息。
步骤S603,从获取的所有属性信息中查找当前待检节点绑定的属性信息。
从转储出的所有用户界面控件的属性信息中查找与当前待检节点绑定的属性信息。
步骤S604,若查找到当前待检节点绑定的属性信息,则将当前待检节点的下一个节点确定为当前待检节点,并返回执行确定当前待检节点在待测软件中对应的当前待检页面的步骤。
若查找到当前待检节点绑定的属性信息,则将待测软件的组件树中与当前待检节点平级的下一个节点确定为当前待检节点,如果当前待检节点为该组件树中遍历到与当前待检节点平级的最后一个节点,则将组件树中位于当前待检节点下一级的节点中的任一个节点确定为当前待检节点,并返回执行确定当前待检节点在待测软件中对应的当前待检页面的步骤。
步骤S605,若未查找到当前待检节点绑定的属性信息,则确定待测软件的组件树的自检结果为自检失败,并将自检结果发送至预设用户终端。
若未查找到当前待检节点绑定的属性信息,意味着当前待检节点对应用户界面控件在待测软件发生了变化,需要主动通知管理者进行修改因此会确定待测软件的组件树的自检结果为自检失败,并将自检结果发送至预设用户终端。
可以理解的是,上述步骤S601至步骤S605可以是每隔固定时间间隔就执行一次以对待测软件的组件树进行定期检查,也可以是响应于用户的组件树自检指令,执行上述步骤S601至步骤S605,以对待测软件的组件树进行检查。
可选的,在对组件树进行检查的过程中还可以将新增的用户界面控件绑定至组件树中以减少人工对组件树的维护,降低组件树的维护成本,在将当前待检节点的下一个节点确定为当前待检节点,并返回执行确定当前待检节点在待测软件中对应的当前待检页面的步骤,该方法还可以包括如下步骤B1至步骤B3:
步骤B1,确定当前待检页面中是否存在属性信息未被绑定的用户界面控件。
可以在组件树中的所有节点绑定的属性信息中查找转储出当前待检页面的所有用户界面控件的属性信息,如果在所有节点绑定的属性信息中未查找到当前待检页面中某用户界面控件的属性信息,则确定该用户界面控件为属性信息未被绑定的用户界面控件。
步骤B2,若存在未被绑定的用户界面控件,则在待测软件的组件树中新增与当前待检节点处于同一层级的节点。
其中,新增的节点具有节点标识。可以判断该未被绑定的用户界面控件在待测软件中的上级用户界面控件,在其上级用户界面控件对应节点下新增具有节点标识的节点,可以理解的是该节点与当前待检测节点在待测软件的组件树中处于同一层级的节点。
步骤B3,将未被绑定的控件的属性信息绑定至新增的节点。
当前待检页面中存在属性信息未被绑定的用户界面控件时,就在待测软件的组件树中新增与当前待检节点处于同一层级的节点,并将未被绑定的控件的属性信息绑定至新增的节点,实现对组件树的自动更新,减少人工对组件树的维护,降低组件树的维护成本。
本申请实施例中,自动监测待测软件的组件树中各节点对应用户界面控件的属性信息是否与待测软件中相应用户界面控件的属性信息相一致,以此来发现在待测软件中发生变化在未在组件树中进行相应变化的用户界面控件,并将自检结果发送至预设用户终端便于使用预设用户终端的用户对组件树进行更新。由此可以实现自动检查组件树的目的,提高组件树的可靠性以提高后续自动化测试脚本的可靠性的同时,还可以提前发现UI控件发生变化的情况,降低因UI控件发生变化但组件树未及时更新出现的测试失败并需要人工对测试脚本以及组件树进行排查的情况,提高UI控件发生变化时自动化测试脚本的开发效率。
在本申请实施例中还提供了一种自动化测试脚本生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本申请实施例提供一种自动化测试脚本生成装置,如图7所示,包括:
确定模块710,用于确定待测软件上的所有用户界面控件以及各用户界面控件之间的层级关系;
建立模块720,用于以待测软件的主页面为根节点,基于用户界面控件以及各用户界面控件之间的层级关系,建立待测软件的组件树,其中,组件树中每个节点对应一个用户界面控件的节点标识以及属性信息,各节点之间的层级关系与各用户界面控件之间的层级关系对应;
生成模块730,用于基于组件树生成自动化测试脚本,自动化测试脚本用于测试待测软件的用户界面功能。
在一些可选的实施例中,建立模块包括:
建立单元,用于以主页面作为当前页面,主页面中的用户界面控件作为当前页面的控件,根节点为当前节点,执行以下步骤:
遍历当前页面的各个控件,获取当前页面的各个控件的属性信息;
在当前节点下新增分别与当前页面的各个控件对应的子节点,新增的子节点对应有节点标识;
将当前页面的各个控件的属性信息与自身对应子节点绑定;
根据预设触发操作集合触发当前页面的各控件;
若存在能够被触发的控件,则将触发后的页面确定为当前页面的下一级页面,并确定出下一级页面的控件;
将当前页面中触发后得到下一级页面的控件所对应的节点作为当前节点,将下一级页面作为当前页面,下一级页面的控件作为当前页面的控件,返回执行遍历当前页面的各个控件,获取当前页面的各个控件的属性信息的步骤;
若不存在能够触发的控件,则当前的组件树为待测软件的组件树。
在一些可选的实施例中,该装置还包括:
绑定模块,用于在当前的组件树中,将不能被触发的控件的激活条件确定为无法激活,并将确定的激活条件绑定至不能被触发的控件对应的节点;
第一判断模块,用于对于能够被触发的控件,判断触发能够被触发的控件的触发操作的个数是否等于一;
绑定模块,还用于若个数等于一,则将触发能够被触发的控件的触发操作作为激活条件绑定至能够被触发的控件对应的节点上;
比对模块,用于若个数大于一,则比对触发能够被触发的控件后的各个页面中的用户界面控件是否相同;
绑定模块,还用于若存在至少两个页面中的用户界面控件相同,则将至少两个页面对应触发操作中最先触发能够被触发的控件的触发操作作为激活条件绑定至能够被触发的控件对应的节点上;
绑定模块,还用于若存在至少两个页面中的用户界面控件不同,则复制能够被触发的控件对应的节点,并将至少两个页面对应的触发操作作为激活条件分别绑定至能够被触发的控件对应的各节点上。
在一些可选的实施例中,该装置还包括:
自检模块,用于以待测软件的组件树中根节点下的任一子节点为当前待检节点,执行以下步骤,直至待测软件的组件树中所有节点均遍历完毕或确定自检失败:
确定当前待检节点在待测软件中对应的当前待检页面;
获取当前待检页面中所有用户界面控件的属性信息;
从获取的所有属性信息中查找当前待检节点绑定的属性信息;
若查找到当前待检节点绑定的属性信息,则将当前待检节点的下一个节点确定为当前待检节点,并返回执行确定当前待检节点在待测软件中对应的当前待检页面的步骤;
若未查找到当前待检节点绑定的属性信息,则确定待测软件的组件树的自检结果为自检失败,并将自检结果发送至预设用户终端。
在一些可选的实施例中,该装置还包括:
第二判断模块,用于确定当前待检页面中是否存在属性信息未被绑定的用户界面控件;
新增模块,用于若存在未被绑定的用户界面控件,则在待测软件的组件树中新增与当前待检节点处于同一层级的节点;
绑定模块,还用于将未被绑定的控件的属性信息绑定至新增的节点。
在一些可选的实施例中,该装置还包括:
修改模块,用于接收对自动化测试脚本中目标用户界面控件的属性信息的修改操作,修改待测软件的组件树中目标用户界面控件对应的节点上绑定的属性信息。
在一些可选的实施例中,该装置还包括:
搜索模块,用于在待测软件的组件树中从根节点开始,搜索绑定的节点标识为待测用户界面控件对应的节点标识的目标节点,得到根节点至目标节点之间的路径;
触发模块,用于基于路径中每一个节点对应的激活条件以及属性信息,触发待测软件的各页面中相应的用户页面控件,以从主页面中到达待测用户界面控件;
测试模块,用于基于对待测用户界面控件的测试操作,测试待测用户界面控件。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的自动化测试脚本生成装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本申请实施例还提供一种计算机设备,具有上述图7所示的自动化测试脚本生成装置。
请参阅图8,图8是本申请可选实施例提供的一种计算机设备的结构示意图,如图8所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图8中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器20存储有可由至少一个处理器10执行的指令,以使所述至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本申请实施例还提供了一种计算机可读存储介质,上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本申请的实施例,但是本领域技术人员可以在不脱离本申请的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种自动化测试脚本生成方法,其特征在于,所述方法包括:
确定待测软件上的所有用户界面控件以及各所述用户界面控件之间的层级关系;
以所述待测软件的主页面为根节点,基于所述用户界面控件以及各所述用户界面控件之间的所述层级关系,建立所述待测软件的组件树,其中,所述组件树中每个节点对应一个节点标识以及一个用户界面控件的属性信息,各节点之间的层级关系与各所述用户界面控件之间的层级关系对应;
基于所述组件树生成自动化测试脚本,所述自动化测试脚本用于测试所述待测软件的用户界面功能。
2.根据权利要求1所述的方法,其特征在于,所述以所述待测软件的主页面为根节点,基于所述用户界面控件以及各所述用户界面控件之间的所述层级关系,建立所述待测软件的组件树,包括:
以所述主页面作为当前页面,所述主页面中的用户界面控件作为所述当前页面的控件,所述根节点为当前节点,执行以下步骤:
遍历所述当前页面的各个控件,获取所述当前页面的各个控件的属性信息;
在所述当前节点下新增分别与所述当前页面的各个控件对应的子节点,新增的子节点对应有节点标识;
将所述当前页面的各个控件的属性信息与自身对应子节点绑定;
根据预设触发操作集合触发所述当前页面的各控件;
若存在能够被触发的控件,则将触发后的页面确定为所述当前页面的下一级页面,并确定出所述下一级页面的控件;
将所述当前页面中触发后得到所述下一级页面的控件所对应的节点作为所述当前节点,将所述下一级页面作为所述当前页面,所述下一级页面的控件作为所述当前页面的控件,返回执行遍历所述当前页面的各个控件,获取所述当前页面的各个控件的属性信息的步骤;
若不存在能够触发的控件,则当前的组件树为所述待测软件的组件树。
3.根据权利要求2所述的方法,其特征在于,所述待测软件的组件树中的每个节点还对应一个用户界面控件的激活条件,在将所述当前页面中触发后得到所述下一级页面的控件所对应的节点作为所述当前节点,将所述下一级页面作为所述当前页面,所述下一级页面的控件作为所述当前页面的控件,返回执行遍历所述当前页面的各个控件,获取所述当前页面的各个控件的属性信息的步骤之前,所述方法还包括:
在当前的组件树中,将不能被触发的控件的激活条件确定为无法激活,并将确定的激活条件绑定至所述不能被触发的控件对应的节点;
对于所述能够被触发的控件,判断触发所述能够被触发的控件的触发操作的个数是否等于一;
若所述个数等于一,则将触发所述能够被触发的控件的触发操作作为激活条件绑定至所述能够被触发的控件对应的节点上;
若所述个数大于一,则比对触发所述能够被触发的控件后的各个页面中的用户界面控件是否相同;
若存在至少两个页面中的用户界面控件相同,则将至少两个页面对应触发操作中最先触发所述能够被触发的控件的触发操作作为激活条件绑定至所述能够被触发的控件对应的节点上;
若存在至少两个页面中的用户界面控件不同,则复制所述能够被触发的控件对应的节点,并将至少两个页面对应的触发操作作为激活条件分别绑定至所述能够被触发的控件对应的各节点上。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
以所述待测软件的组件树中根节点下的任一子节点为当前待检节点,执行以下步骤,直至所述待测软件的组件树中所有节点均遍历完毕或确定自检失败:
确定所述当前待检节点在所述待测软件中对应的当前待检页面;
获取所述当前待检页面中所有用户界面控件的属性信息;
从获取的所有属性信息中查找所述当前待检节点绑定的属性信息;
若查找到所述当前待检节点绑定的属性信息,则将所述当前待检节点的下一个节点确定为当前待检节点,并返回执行确定所述当前待检节点在所述待测软件中对应的当前待检页面的步骤;
若未查找到所述当前待检节点绑定的属性信息,则确定所述待测软件的组件树的自检结果为自检失败,并将自检结果发送至预设用户终端。
5.根据权利要求4所述的方法,其特征在于,在将所述当前待检节点的下一个节点确定为当前待检节点,并返回执行确定所述当前待检节点在所述待测软件中对应的当前待检页面的步骤之前,所述方法包括:
确定所述当前待检页面中是否存在属性信息未被绑定的用户界面控件;
若存在未被绑定的用户界面控件,则在所述待测软件的组件树中新增与所述当前待检节点处于同一层级的节点;
将所述未被绑定的控件的属性信息绑定至新增的节点。
6.根据权利要求1至3任一项所述的方法,其特征在于,在基于所述组件树生成自动化测试脚本之后,所述方法还包括:
接收对所述自动化测试脚本中目标用户界面控件的属性信息的修改操作,修改所述待测软件的组件树中所述目标用户界面控件对应的节点上绑定的属性信息。
7.根据权利要求6所述的方法,其特征在于,所述自动化测试脚本包括待测用户界面控件对应的节点标识以及对所述待测用户界面控件的测试操作,在基于所述组件树生成自动化测试脚本之后,所述方法还包括:
在所述待测软件的组件树中从根节点开始,搜索绑定的节点标识为所述待测用户界面控件对应的节点标识的目标节点,得到所述根节点至所述目标节点之间的路径;
基于所述路径中每一个节点对应的激活条件以及属性信息,触发所述待测软件的各页面中相应的用户页面控件,以从所述主页面中到达所述待测用户界面控件;
基于对所述待测用户界面控件的测试操作,测试所述待测用户界面控件。
8.一种自动化测试脚本生成装置,其特征在于,所述装置包括:
确定模块,用于确定待测软件上的所有用户界面控件以及各所述用户界面控件之间的层级关系;
建立模块,用于以所述待测软件的主页面为根节点,基于所述用户界面控件以及各所述用户界面控件之间的所述层级关系,建立所述待测软件的组件树,其中,所述组件树中每个节点对应一个用户界面控件的节点标识以及属性信息,各节点之间的层级关系与各所述用户界面控件之间的层级关系对应;
生成模块,用于基于所述组件树生成自动化测试脚本,所述自动化测试脚本用于测试所述待测软件的用户界面功能。
9.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至7中任一项所述的自动化测试脚本生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令由处理器加载并执行以实现如权利要求1至7中任一项所述的自动化测试脚本生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410063998.3A CN117931652A (zh) | 2024-01-16 | 2024-01-16 | 自动化测试脚本生成方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410063998.3A CN117931652A (zh) | 2024-01-16 | 2024-01-16 | 自动化测试脚本生成方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117931652A true CN117931652A (zh) | 2024-04-26 |
Family
ID=90764093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410063998.3A Pending CN117931652A (zh) | 2024-01-16 | 2024-01-16 | 自动化测试脚本生成方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931652A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649100A (zh) * | 2016-11-16 | 2017-05-10 | 福建天晴数码有限公司 | 一种自动化测试方法及*** |
CN107506300A (zh) * | 2017-08-09 | 2017-12-22 | 百度在线网络技术(北京)有限公司 | 一种用户界面测试方法、装置、服务器和存储介质 |
CN109086204A (zh) * | 2018-07-20 | 2018-12-25 | 北京小米移动软件有限公司 | 节点关系树建立、页面标记和识别方法、装置和存储介质 |
CN111552627A (zh) * | 2020-03-16 | 2020-08-18 | 平安科技(深圳)有限公司 | 用户界面测试方法、装置、存储介质及计算机设备 |
US20200409830A1 (en) * | 2018-01-23 | 2020-12-31 | Netease (Hangzhou) Network Co.,Ltd. | Automated testing method and apparatus, storage medium and electronic device |
-
2024
- 2024-01-16 CN CN202410063998.3A patent/CN117931652A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649100A (zh) * | 2016-11-16 | 2017-05-10 | 福建天晴数码有限公司 | 一种自动化测试方法及*** |
CN107506300A (zh) * | 2017-08-09 | 2017-12-22 | 百度在线网络技术(北京)有限公司 | 一种用户界面测试方法、装置、服务器和存储介质 |
US20200409830A1 (en) * | 2018-01-23 | 2020-12-31 | Netease (Hangzhou) Network Co.,Ltd. | Automated testing method and apparatus, storage medium and electronic device |
CN109086204A (zh) * | 2018-07-20 | 2018-12-25 | 北京小米移动软件有限公司 | 节点关系树建立、页面标记和识别方法、装置和存储介质 |
CN111552627A (zh) * | 2020-03-16 | 2020-08-18 | 平安科技(深圳)有限公司 | 用户界面测试方法、装置、存储介质及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11650910B2 (en) | Automated testing method and apparatus, storage medium and electronic device | |
US8185917B2 (en) | Graphical user interface application comparator | |
WO2020155778A1 (zh) | 接口自动化测试方法、测试装置、测试设备及存储介质 | |
US7958495B2 (en) | Program test system | |
US8839107B2 (en) | Context based script generation | |
US20080244524A1 (en) | Program Test System | |
US8930772B2 (en) | Method and system for implementing a test automation results importer | |
US20080244523A1 (en) | Program Test System | |
Sayagh et al. | On cross-stack configuration errors | |
CN110013672A (zh) | 用于机器运行的游戏的自动化测试的方法、设备、装置以及计算机可读存储介质 | |
CN110084486B (zh) | 一种资源管理方法及装置 | |
CN104423961A (zh) | 一种生成测试脚本的方法及*** | |
CN115080398A (zh) | 一种接口自动化测试***及方法 | |
CN116627418B (zh) | 一种基于递归算法的多级表单界面可视化生成方法及装置 | |
US20210026756A1 (en) | Deriving software application dependency trees for white-box testing | |
CN116107892A (zh) | 自动化测试方法、装置、设备及存储介质 | |
US20080244323A1 (en) | Program Test System | |
US10678864B2 (en) | Analysis model preparing system, programming apparatus, and analysis model preparing method | |
KR102635847B1 (ko) | 애플리케이션 테스트 자동화 장치 및 방법 | |
CN112559346A (zh) | 一种业务测试的方法及装置 | |
US20080244322A1 (en) | Program Test System | |
CN117931652A (zh) | 自动化测试脚本生成方法、装置、计算机设备及存储介质 | |
CN113377468A (zh) | 一种脚本执行方法、装置、电子设备及存储介质 | |
US20240176728A1 (en) | Plug and play language acceptance testing | |
CN114968687B (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 |