掌桥专利:专业的专利平台
掌桥专利
首页

自动化测试方法、设备及介质

文献发布时间:2023-06-19 19:40:14


自动化测试方法、设备及介质

技术领域

本申请涉及半实物仿真自动化测试的技术领域,尤其涉及一种自动化测试方法、自动化测试设备及计算机可读存储介质。

背景技术

在当前的半实物仿真自动化测试领域中,大多数企业都会选择自动化测试作为提升测试效率的一种重要手段。但是在自动化测试的执行过程中,存在以下技术缺陷:

1、由于半实物仿真自动化测试需要有实物控制器的介入,没有办法像软件测试一样可以利用多核并行开展测试,只能单核运行,所以测试效率偏低;

2、大多数测试用例彼此间的很多测试步骤是相同的,只是少许的测试步骤会有不同,例如某两条测试用例,均是测试电机在不同转速下的运行情况,区别只是测试用例一的测试内容是转速等于5000转每分钟,而测试用例二的测试用例是转速等于10000转每分钟,其余的内容均是相同的。但是测试用例在执行自动化测试的过程是线性执行的,即先执行结束测试用例一的全部步骤,再执行测试用例二的全部步骤,导致两条测试用例中相同的测试步骤被执行了两次,降低了测试效率。

发明内容

本申请的主要目的在于提供一种自动化测试方法、自动化测试设备及计算机可读存储介质,旨在解决常规技术中半实物仿真自动化测试耗时长、效率低的技术问题。

为实现上述目的,本申请提供一种自动化测试方法,所述方法包括:

在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;

获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;

基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

示例性的,所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后,还包括:

确定与下一条测试用例的第二相同功能块,并保存运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块。

示例性的,所述方法还包括:

在运行第一条测试用例之前,开辟临时存储空间和永久存储空间;

其中,在所述临时存储空间中运行与当前测试用例相关的代码块;在所述永久存储空间中保存所述快照信息或者所述已运行代码块。

示例性的,所述获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块的步骤,包括:

从所述永久存储空间中读取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块。

示例性的,所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之前,包括:

释放所述临时存储空间中上一条测试用例的代码块;

将读取出的所述快照信息或者所述已运行代码块添加至所述临时存储空间;

将当前测试用例除所述第一相同功能块之外的功能块对应的代码块添加至所述临时存储空间。

示例性的,所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后,包括:

释放所述永久存储空间中保存的上一条测试用例的所述快照信息或者所述已运行代码块;

将运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块保存至所述永久存储空间。

示例性的,所述方法还包括:

在切换分组时,清空所述临时存储空间和所述永久存储空间;

在切换分组之后,执行所述确定与上一条测试用例的第一相同功能块的步骤。

示例性的,所述运行当前分组的当前测试用例的步骤之前,包括:

对各测试用例的用例脚本进行功能抽象化处理,得到所述测试用例的测试步骤;

对所述测试步骤进行功能划分,得到所述测试用例的所述功能块;

基于所述功能块确定各所述测试用例的分组和在各分组中的执行顺序。

示例性的,所述基于所述功能块确定各所述测试用例的分组的步骤,包括:

基于相同功能块的执行顺序从先到后的第一策略以及相同功能块的相似度由高到低的第二策略,确定各所述测试用例的分组;

其中,所述第一策略的优先级高于所述第二策略的优先级;

其中,所述第一策略为所述相同功能块在所述测试用例中的执行顺序越靠前,对应的所述测试用例越趋向于同一分组;所述第二策略为所述相同功能块相似度越高,对应的所述测试用例越趋向于同一分组。

示例性的,所述基于所述功能块确定各所述测试用例在各分组中的执行顺序的步骤,包括:

基于功能块的相似度由低到高的第三策略,调整在各分组中所述测试用例的执行顺序;

其中,所述第三策略为当前测试用例的所述功能块与其它测试用例的所述功能块之间的相似度越低,当前测试用例在分组中的执行顺序越靠前。

本申请还提供一种自动化测试设备,所述自动化测试设备包括:存储器、处理器、及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的自动化测试方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的自动化测试方法的步骤。

本申请还提供一种自动化测试装置,所述自动化测试装置包括:

确定模块,用于在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;

获取模块,用于获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;

运行模块,用于基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

本申请实施例提出的一种自动化测试方法、自动化测试设备及计算机可读存储介质,在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

在本申请中,将测试用例的用例脚本中的测试步骤经过功能划分得到测试用例的功能块,在运行当前测试用例时确定与上一条测试用例相同的功能块,并获取上一条测试用例运行到该相同功能块时的快照信息或者已运行过一遍的该相同功能块对应的代码块,根据获取到的快照信息或者已运行过的相同代码块,直接从当前测试用例的相同功能块的下一个功能块开始运行当前测试用例剩下的功能块。

在本申请中,首先,打破原有的半实物仿真自动化测试用例必须按照编写时的顺序进行执行,提出了通过特定的方法对半实物自动化测试用例进行特定分类,并在执行半实物仿真自动化测试的过程中,按照特定分类顺序执行测试用例,提升测试效率;其次,将正在执行的测试用例在执行本条测试用例的同时,保留下一条测试用例运行时需要的快照信息或者已运行过的相同代码块,从而使下一条测试用例无需执行与前一条测试用例相同的测试步骤,提升测试效率;而且,本申请的自动化测试方法具有良好的效率延伸性,当测试用例的测试步骤越多且相似度越高的情况下,越能提升测试效率。

如此,可以最大程度上降低重复测试步骤的运行次数,对于同功能的半实物仿真自动化测试用例,相同的测试步骤最多只需要执行一次即可,大幅度提升测试过程的运行效率。

附图说明

图1是本申请实施例方案涉及的硬件运行环境的运行设备的结构示意图;

图2为本申请实施例方案涉及的自动化测试方法一实施例的流程示意图;

图3为本申请实施例方案涉及的自动化测试方法一实施例的原理架构图;

图4为本申请实施例方案涉及的自动化测试方法另一实施例的流程示意图;

图5为本申请实施例方案涉及的第一自动化测试装置的示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,图1为本申请实施例方案涉及的硬件运行环境的运行设备结构示意图。

如图1所示,该运行设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的结构并不构成对运行设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及计算机程序。

在图1所示的运行设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本申请运行设备中的处理器1001、存储器1005可以设置在运行设备中,所述运行设备通过处理器1001调用存储器1005中存储的计算机程序,并执行以下操作:

在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;

获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;

基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后,还包括:

确定与下一条测试用例的第二相同功能块,并保存运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述方法还包括:

在运行第一条测试用例之前,开辟临时存储空间和永久存储空间;

其中,在所述临时存储空间中运行与当前测试用例相关的代码块;在所述永久存储空间中保存所述快照信息或者所述已运行代码块。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块的步骤,包括:

从所述永久存储空间中读取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之前,包括:

释放所述临时存储空间中上一条测试用例的代码块;

将读取出的所述快照信息或者所述已运行代码块添加至所述临时存储空间;

将当前测试用例除所述第一相同功能块之外的功能块对应的代码块添加至所述临时存储空间。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后,包括:

释放所述永久存储空间中保存的上一条测试用例的所述快照信息或者所述已运行代码块;

将运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块保存至所述永久存储空间。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述方法还包括:

在切换分组时,清空所述临时存储空间和所述永久存储空间;

在切换分组之后,执行所述确定与上一条测试用例的第一相同功能块的步骤。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述运行当前分组的当前测试用例的步骤之前,包括:

对各测试用例的用例脚本进行功能抽象化处理,得到所述测试用例的测试步骤;

对所述测试步骤进行功能划分,得到所述测试用例的所述功能块;

基于所述功能块确定各所述测试用例的分组和在各分组中的执行顺序。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述基于所述功能块确定各所述测试用例的分组的步骤,包括:

基于相同功能块的执行顺序从先到后的第一策略以及相同功能块的相似度由高到低的第二策略,确定各所述测试用例的分组;

其中,所述第一策略的优先级高于所述第二策略的优先级;

其中,所述第一策略为所述相同功能块在所述测试用例中的执行顺序越靠前,对应的所述测试用例越趋向于同一分组;所述第二策略为所述相同功能块相似度越高,对应的所述测试用例越趋向于同一分组。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述基于所述功能块确定各所述测试用例在各分组中的执行顺序的步骤,包括:

基于功能块的相似度由低到高的第三策略,调整在各分组中所述测试用例的执行顺序;

其中,所述第三策略为当前测试用例的所述功能块与其它测试用例的所述功能块之间的相似度越低,当前测试用例在分组中的执行顺序越靠前。

本申请实施例提供了一种自动化测试方法,参照图2,在自动化测试方法的一实施例中,所述方法包括:

步骤S10,在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;

在本实施例中,半实物仿真自动化测试包括虚拟控制器+实际对象的快速控制原型(RCP)仿真系统,以及实际控制器+虚拟对象的硬件在回路(HiL)仿真系统。

在本实施例中,将各个测试用例的用例脚本中的测试步骤经过功能划分,从而得到各测试用例的功能块,功能块与测试用例的用例脚本的代码块对应。在一实施例中,包括测试用例1至测试用例6,其中,测试用例1的功能块为A-B-C-D(1),测试用例2的功能块为A-B-C-E(2),测试用例3的功能块为A-B-D-E(3),测试用例4的功能块为G-B-C-D(4),测试用例5的功能块为G-B-C-E(5),测试用例6的功能块为G-B-D-E(6)。以测试用例1为例,其测试步骤经过功能划分得到A-B-C-D的功能块,在运行测试用例1时,先后执行A-B-C-D功能块。

在一实施例中,测试用例1至测试用例3被分为一组,测试用例4至测试用例6被分为另一组。在测试用例1至测试用例3的分组中,测试用例的执行顺序为测试用例3,测试用例1,测试用例2。在当前运行的测试用例为测试用例1时,其与上一条测试用例(测试用例3)相同的功能块为A-B,即确定此时的第一相同功能块为A-B。

需要说明的是,当正在运行的测试用例为当前分组中的第一条测试用例时,不需要确定与上一条测试用例的第一相同功能块,此时也并不存在上一条测试用例,直接依次运行第一条测试用例的功能块对应的代码块即可。

步骤S20,获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;

在当前测试用例(除当前分组中的第一条测试用例之外)的运行过程中,不运行全部的功能块对应的代码块,而是获取上一条测试用例运行到第一相同功能块时的快照信息,在快照信息中记录了上一条测试用例运行完第一相同功能块时的代码状态和数据等快照信息,在运行当前测试用例时,便不需要重复运行第一相同功能块对应的代码块;或者,获取上一条测试用例运行后第一相同功能块对应的已运行代码块,在运行当前测试用例时,便也不需要重复运行第一相同功能块对应的代码块。在本实施例中,对快照信息承载的信息不做限定。

步骤S30,基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

在运行当前测试用例时,不需要重复运行第一相同功能块对应的代码块,只需要基于在上一条测试用例中已经运行过一遍第一相同功能块对应的代码块的快照信息,或者只需要基于上一条测试用例运行后第一相同功能块对应的已运行代码块,从当前测试用例的第一相同功能块的下一个功能块对应的代码块开始运行剩下的代码块。

示例性的,所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后,还包括:

步骤S40,确定与下一条测试用例的第二相同功能块,并保存运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块。

在运行完当前测试用例之后,确定当前测试用例和下一条测试用例的第二相同功能块,而且将当前测试用例下运行到第二相同功能块时的快照信息或者第二相同功能块对应的已运行代码块进行保存,提供给下一条测试用例使用,直至当前分组下的最后一条测试用例。在一实施例中,在当前运行的测试用例为测试用例1时,其与下一条测试用例(测试用例2)相同的功能块为A-B-C,即确定此时的第二相同功能块为A-B-C。

在本实施例中,在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

在本实施例中,将测试用例的用例脚本中的测试步骤经过功能划分得到测试用例的功能块,在运行当前测试用例时确定与上一条测试用例相同的功能块,并获取上一条测试用例运行到该相同功能块时的快照信息或者已运行过一遍的该相同功能块对应的代码块,根据获取到的快照信息或者已运行过的相同代码块,直接从当前测试用例的相同功能块的下一个功能块开始运行当前测试用例剩下的功能块。

在本实施例中,首先,打破原有的半实物仿真自动化测试用例必须按照编写时的顺序进行执行,提出了通过特定的方法对半实物自动化测试用例进行特定分类,并在执行半实物仿真自动化测试的过程中,按照特定分类顺序执行测试用例,提升测试效率;其次,将正在执行的测试用例在执行本条测试用例的同时,保留下一条测试用例运行时需要的快照信息或者已运行过的相同代码块,从而使下一条测试用例无需执行与前一条测试用例相同的测试步骤,提升测试效率;而且,本实施例的自动化测试方法具有良好的效率延伸性,当测试用例的测试步骤越多且相似度越高的情况下,越能提升测试效率。

如此,可以最大程度上降低重复测试步骤的运行次数,对于同功能的半实物仿真自动化测试用例,相同的测试步骤最多只需要执行一次即可,大幅度提升测试过程的运行效率。

本申请实施例提供了一种自动化测试方法,在自动化测试方法的另一实施例中,所述方法还包括:

在运行第一条测试用例之前,开辟临时存储空间和永久存储空间;

其中,在所述临时存储空间中运行与当前测试用例相关的代码块;在所述永久存储空间中保存所述快照信息或者所述已运行代码块。

在运行当前分组中的第一条测试用例之前,开辟用于运行与当前测试用例相关的代码块的临时存储空间,以及用于保存快照信息或者已运行代码块的永久存储空间。在一实施例中,临时存储空间类似于运行闪存,永久存储空间类似于硬盘内存。

示例性的,所述获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块的步骤,包括:

从所述永久存储空间中读取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块。

由于在永久存储空间中保存有快照信息或者已运行代码块,因此,在运行到当前测试用例时,会从永久存储空间中读取上一条测试用例运行到第一相同功能块时的快照信息或者上一条测试用例运行后第一相同功能块对应的已运行代码块,从而基于快照信息或者已运行代码块从第一相同功能块的下一个功能块开始运行当前测试用例。

在一实施例中,在当前运行的测试用例为测试用例1时,会从永久存储空间中读取中运行测试用例3时保存至永久存储空间中的运行完A-B时的快照信息或者运行过一遍之后的A-B功能块对应的已运行代码块。

示例性的,所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之前,包括:

释放所述临时存储空间中上一条测试用例的代码块;

将读取出的所述快照信息或者所述已运行代码块添加至所述临时存储空间;

将当前测试用例除所述第一相同功能块之外的功能块对应的代码块添加至所述临时存储空间。

在运行当前测试用例之前,需要将临时存储空间中上一条测试用例的代码块进行释放,从而腾出给当前测试用例运行代码块的空间。还需要将读取出的快照信息或者已运行代码块添加至临时存储空间,将当前测试用例除第一相同功能块之外的后续功能块对应的代码块添加至临时存储空间,从而基于快照信息或者已运行代码块从第一相同功能块的下一个功能块开始运行当前测试用例。

在一实施例中,在当前运行的测试用例为测试用例1时,会释放临时存储空间中测试用例3的代码块,将读取出的运行完A-B时的快照信息或者运行过一遍之后的A-B功能块对应的已运行代码块添加至临时存储空间,将测试用例1剩下的功能块C-D对应的代码块也添加至临时存储空间,此时,运行测试用例1只需要执行功能块C-D对应的代码块,只需要执行功能块C-D两个步骤。

示例性的,所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后,包括:

释放所述永久存储空间中保存的上一条测试用例的所述快照信息或者所述已运行代码块;

将运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块保存至所述永久存储空间。

在当前测试用例运行结束之后,释放掉永久存储空间中保存的上一条测试用例的快照信息或者已运行代码块,从而腾出给当前测试用例保存快照信息或者已运行代码块的空间,再将运行到第二相同功能块时的快照信息或者第二相同功能块对应的已运行代码块保存至永久存储空间。

在一实施例中,在当前运行的测试用例为测试用例1时,会把测试用例3保存在永久存储空间中的运行完A-B时的快照信息或者运行过一遍之后的A-B功能块对应的已运行代码块进行释放,并将运行完A-B-C时的快照信息或者运行过一遍之后的A-B-C功能块对应的已运行代码块保存至永久存储空间。

同理,接下来在运行测试用例2时,只需要执行功能块E对应的代码块,只需要执行功能块E一个步骤。也就是说,先后执行完当前分组下的测试用例3,测试用例1,测试用例2之后,相较于常规技术中需要执行12个步骤,本实施例中只需要执行4+2+1,7个步骤即可,测试效率得到大幅提升。其中,这7个步骤为:A-B-D-E(3),C-D(1),E(2)。

示例性的,所述方法还包括:

在切换分组时,清空所述临时存储空间和所述永久存储空间;

在切换分组之后,执行所述确定与上一条测试用例的第一相同功能块的步骤。

在执行完当前分组之后,需要切换分组继续执行当前测试任务下的另外的分组中的测试用例,此时,在切换分组时,将临时存储空间和永久存储空间清空,对应腾出为下一分组进行运行和存储的空间;在切换分组之后,基于临时存储空间和永久存储空间继续执行下一分组中的各个测试用例。

本申请实施例提供了一种自动化测试方法,参照图3,在自动化测试方法的另一实施例中,所述运行当前分组的当前测试用例的步骤之前,包括:

步骤S01,对各测试用例的用例脚本进行功能抽象化处理,得到所述测试用例的测试步骤;

步骤S02,对所述测试步骤进行功能划分,得到所述测试用例的所述功能块;

步骤S03,基于所述功能块确定各所述测试用例的分组和在各分组中的执行顺序。

首先,在运行各个测试用例之前,需要对测试用例的用例脚本进行抽象化处理,得到测试用例的测试步骤,即对其进行去壳处理,只保留自动化测试脚本中的主体需要执行的部分,如控制变量动作,采集变量动作和等待时间等。在本实施例中,对抽象化处理的具体执行动作不做具体限定。

然后,对每条自动化测试用例脚本中的测试步骤按照其功能划分对应的功能块,在一实施例中,还用特定的符号(包括但不限于数字或者字母等形式)进行编号标注,例如某条测试用例中可能包含了10条测试步骤,按照功能划分可以将其划分三个功能(功能A,功能B和功能C),并对上述三个功能按照测试用例执行顺序进行编号,如A-B-C。

最后,基于测试用例的功能块确定各测试用例的分组,以及某个测试用例在其所在分组中的执行顺序。

示例性的,所述基于所述功能块确定各所述测试用例的分组的步骤,包括:

基于相同功能块的执行顺序从先到后的第一策略以及相同功能块的相似度由高到低的第二策略,确定各所述测试用例的分组;

其中,所述第一策略的优先级高于所述第二策略的优先级;

其中,所述第一策略为所述相同功能块在所述测试用例中的执行顺序越靠前,对应的所述测试用例越趋向于同一分组;所述第二策略为所述相同功能块相似度越高,对应的所述测试用例越趋向于同一分组。

在本实施例中,根据相同功能块的执行顺序从先到后的第一策略以及相同功能块的相似度由高到低的、优先级低于第一策略的第二策略,确定各测试用例的分组。

在一实施例中,因为测试用例(1)、(2)、(3)具有相同的测试步骤,即A-B,而测试用例(4)、(5)、(6)具有相同的测试步骤G-B,且由于第一策略优先级高于第二策略,所以,即使测试用例(1)与测试用例(4)和测试用例(2)均存在3个相同的功能块,测试用例(1)与测试用例(4)、测试用例(1)与测试用例(2)相似度均为75%,但是最终还是测试用例(1)与测试用例(2)被划为一组,其原因便是第一策略:相同功能块在测试用例中的执行顺序越靠前,对应的测试用例越趋向于同一分组,测试用例(1)、(2)、(3)的起始操作均为A,而测试用例(4)、(5)、(6)的起始操作是G,所以测试用例(1)、(2)、(3)是一组,而测试用例(4)、(5)、(6)是二组。另外,参照上述实施例中测试用例的分组情况,对第二策略在此不做赘述。

示例性的,所述基于所述功能块确定各所述测试用例在各分组中的执行顺序的步骤,包括:

基于功能块的相似度由低到高的第三策略,调整在各分组中所述测试用例的执行顺序;

其中,所述第三策略为当前测试用例的所述功能块与其它测试用例的所述功能块之间的相似度越低,当前测试用例在分组中的执行顺序越靠前。

在分组之后,还需要基于功能块的相似度由低到高的第三策略,调整分组内各测试用例的执行顺序。

在一实施例中,第一分组中的测试用例(1)和测试用例(2)相同的测试步骤为A-B-C,而测试用例(3)和测试用例(1)、测试用例(2)相同的测试用例步骤为A-B,说明测试用例(3)的相似度较低,所以自动化测试用例的执行顺序为(3)-(1)-(2),同理,二组的自动化测试用例执行顺序为(6)-(4)-(5)。

从而,在本实施例中,通过提前分组和组内排序,方便后续基于快照信息或已运行代码块进行自动化测试,不堵塞和中断自动化测试的流程,进一步缩短测试耗时并提高测试效率。

参照图3,在本申请一种自动化测试方法的一应用场景中,提供一种基于半实物仿真的快速自动化测试的方法。

在该应用场景中,首先上位机将半实物仿真自动化测试用例抽象成API(Application Programming Interface,应用程序编程接口)函数形式,并根据自动化测试用例的步骤和其对应的功能重新组合,随后对重新组合的半实物仿真自动化测试用例按照相似性进行分组,并将其分组的信息传回至上位机,半实物仿真机和待测控制器。[对各测试用例的用例脚本进行功能抽象化处理,得到所述测试用例的测试步骤;对所述测试步骤进行功能划分,得到所述测试用例的所述功能块;基于所述功能块确定各所述测试用例的分组和在各分组中的执行顺序。]

上位机在确认收到分组信息后,会请求待测控制器将待测控制器开辟临时存储空间和永久存储空间,分别用于存放特定的待测控制器软件代码块。[在运行第一条测试用例之前,开辟临时存储空间和永久存储空间;其中,在所述临时存储空间中运行与当前测试用例相关的代码块;在所述永久存储空间中保存所述快照信息或者所述已运行代码块。]

当该自动化测试用例结束与下一条测试用例相同的测试步骤后,此时临时存储空间会首先将当前代码块的运行状态进行快照记录,并将存储在其中的代码块同所记录的快照信息一起复制到永久存储空间,在临时储存空间复制代码块的同时会继续执行自动化测试用例。[确定与下一条测试用例的第二相同功能块,并保存运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块。][释放所述永久存储空间中保存的上一条测试用例的所述快照信息或者所述已运行代码块;将运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块保存至所述永久存储空间。]

当正在运行的自动化测试用例运行结束后,临时存储空间会释放原本执行和存储的代码块,并由永久存储空间将之前保存的内容复制或者剪贴(视测试用例而定)到临时存储空间。[释放所述临时存储空间中上一条测试用例的代码块;将读取出的所述快照信息或者所述已运行代码块添加至所述临时存储空间;将当前测试用例除所述第一相同功能块之外的功能块对应的代码块添加至所述临时存储空间。]

另外,当半实物仿真自动化测试用例在运行过程中出现换组时,则需要首先清空待测控制器中的临时存储空间和永久存储空间。[在切换分组时,清空所述临时存储空间和所述永久存储空间;在切换分组之后,执行所述确定与上一条测试用例的第一相同功能块的步骤。]

在该应用场景的一种实现方式中,其具体实施的过程如下:

上位机通过步骤1和步骤2分别和半实物仿真机及待测控制器进行连接,待测控制器通过步骤10与半实物仿真机进行连接。上述的连接方式包括但不限于光纤,总线,硬线,WIFI等。在完成连接的基础后,通过步骤3在上位机中加载待测控制器需要执行的自动化测试用例脚本。

上位机通过步骤4根据所加载的自动化测试用例脚本进行抽象化处理,即对其进行去壳处理,只保留自动化测试脚本中的主体需要执行的部分(如控制变量动作,采集变量动作和等待时间等),抽象层通过步骤5传递至功能层模块。在功能层模块里,主要是对每条自动化测试用例脚本中的测试步骤按照其功能进行划分对应的功能块,并用特定的符号(包括但不限于数字或者字母等形式)进行编号标注。例如某条测试用例中可能包含了10条测试步骤,但是按照功能划分可以将其划分三个功能(功能A,功能B和功能C),并对上述三个功能按照测试用例执行顺序进行编号,如A-B-C。功能层模块将经过抽象后且重新根据功能标注的自动化测试用例脚本通过步骤6传递至数据分组模块。

在数据分组模块中,需要按照“依次最优相似度”算法对自动化测试用例脚本进行分组。“依次最优相似度”分组算法即按照自动化测试用例执行的顺序,按照“执行顺序从先到后”,“测试用例脚本相似度由高到低”的逻辑对自动化测试用例脚本进行分组,分组时“执行顺序从先到后”在分组时的优先级高于“测试用例脚本相似度由高到低”,例如A-B-C-D(1),A-B-C-E(2)和A-B-D-E(3)会分在一组,而G-B-C-D(4),G-B-C-E(5)和G-B-D-E(6)会分在二组。因为测试用例(1)、(2)、(3)具有相同的测试步骤,即A-B,而测试用例(4)、(5)、(6)具有相同的测试步骤G-B,因为“执行顺序从先到后”的优先级更高,所以测试用例(1)、(2)、(3)的起始操作均为A,而测试用例(4)(5)(6)的起始操作是G,所以测试用例(1)、(2)、(3)是一组,而测试用例(4)、(5)、(6)是二组。

在分组结束后,测试用例分组模块会通过步骤7将分组完毕后的自动化测试用例脚本传递至测试用例匹配模块,在该模块里,按照“相似度由低到高”的原则,对每组的自动化测试脚本调整其执行的顺序。例如在上述一组的三个测试用例中,测试用例(1)和测试用例(2)相同的测试步骤为A-B-C,而测试用例(3)和测试用例(1)、(2)相同的测试用例步骤为A-B,说明(3)的相似度较低,所以自动化测试用例的执行顺序为(3)-(1)-(2),同理,二组的自动化测试用例执行顺序为(6)-(4)-(5)。

在调整结束后,测试用例匹配模块状态信息通过步骤8和步骤9分别反馈至半实物仿真机和待测控制器,使其知晓测试用例执行的顺序。同时通过步骤14将自动化测试用例脚本重新匹配和新的执行顺序信息反馈至上位机,并由上位机按照反馈信息自动地对原有的自动化测试用例进行排序。

在上述操作完成后,上位机会通过步骤2请求待测控制器通过步骤11和步骤12增加空的临时存储空间和空的永久存储空间。此时已完成半实物仿真自动化测试全部的准备工作。

在准备完成之后,待测控制器首先在临时存储空间中添加第一条自动化测试用例需要执行的代码块,当该自动化测试用例结束与下一条测试用例相同的测试步骤后,此时临时存储空间会通过步骤13将当前代码块的运行状态进行快照记录,并将存储在其中的代码块同所记录的快照信息一起复制到永久存储空间,在临时储存空间复制代码块的同时会继续执行自动化测试用例。

当正在运行的自动化测试用例运行结束后,临时存储空间会释放原本执行和存储的代码块,并由永久存储空间将之前保存的内容通过步骤13复制或者剪贴(视测试用例而定)到临时存储空间。

当半实物仿真自动化测试用例在运行过程中出现换组时,则需要首先清空待测控制器中的临时存储空间和永久存储空间,并按照测试用例匹配模块所制定的顺序依次完成所有的半实物仿真自动化测试用例的执行过程。

在该应用场景的第一种应用案例中,当某项目需要执行三条自动化测试用例,根据抽象层模块和功能层模块,将其抽象成A-B-C-D(1),A-B-C-E(2)和A-B-D-E(3),随后在测试用例匹配模块中,确定了执行顺序为(3)-(1)-(2)。在正式执行的过程中,待测控制器首先执行测试用例(3),当执行结束A-B动作后,会将运行后的代码块A-B和快照记录信息通过步骤13传递至永久存储空间,并同时继续执行D-E直至该条测试用例结束,此时临时存储空间会自动释放内存。在下一条测试用例(1)执行时,永久存储空间通过步骤13将储存的代码块和快照信息发送至临时存储空间,此时因为所存储的代码块已经执行过A-B动作,所以在执行测试用例(1)时,只需完成C-D动作即可,并同时同上述操作,将执行过A-B动作的代码块和快照信息通过步骤13传递至永久存储空间。同理执行测试用例(2)。按照常规技术的方案,完成上述三条测试用例需要执行12个测试步骤,而在该应用案例中,只需要执行7个测试步骤,测试效率提升了1/3。

在该应用场景的第二种应用案例中,在上述第一种应用案例的基础上,此时需要继续测试G-B-C-D(4),G-B-C-E(5)和G-B-D-E(6)三条测试用例。当测试用例(3)执行结束后,由于测试用例(4)和测试用例(3)的初始步骤不相同,一个是“A”,而另外一个是“G”,所以待测控制器需要通过步骤12将永久存储空间清空(因为临时存储空间在每条测试用例执行结束后都会清空,所以不需要额外清理),再按照应用案例一的方法完成测试用例(4)、(5)、(6)的测试过程。

通过上述应用案例可知,如果不同的测试用例相似度越高,那么执行的效率提升幅度会越大。例如在第一种应用案例的基础上,将测试用例(1)、(2)、(3)的测试用例内容改为:A-B-C-D-E(1),A-B-C-D-F(2)和A-B-C-D-H(3),那么在常规技术的方案中,需要执行15个测试步骤,而按照本发明方案,仅需要执行7个测试步骤,测试效率相较于传统方案提升8/15(约等于53.3%)。

通过上述应用场景和应用案例可知,本申请可以最大程度上降低重复测试步骤的运行次数,对于同功能的半实物仿真自动化测试用例,相同的测试步骤最多只需要执行一次即可,大幅度提升测试过程的运行效率。

参照图5,此外,本申请实施例还提供一种自动化测试装置,所述自动化测试装置包括:

确定模块M1,用于在运行当前分组的当前测试用例时,确定与上一条测试用例的第一相同功能块;其中,所述功能块根据所述测试用例的用例脚本中的测试步骤经过功能划分得到;

获取模块M2,用于获取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块;

运行模块M3,用于基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例。

示例性的,所述自动化测试装置还包括保存模块,用于:

所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后:

确定与下一条测试用例的第二相同功能块,并保存运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块。

示例性的,所述自动化测试装置还包括开辟模块,用于:

在运行第一条测试用例之前,开辟临时存储空间和永久存储空间;

其中,在所述临时存储空间中运行与当前测试用例相关的代码块;在所述永久存储空间中保存所述快照信息或者所述已运行代码块。

示例性的,获取模块还用于:

从所述永久存储空间中读取上一条测试用例运行到所述第一相同功能块时的快照信息或者上一条测试用例运行后所述第一相同功能块对应的已运行代码块。

示例性的,所述自动化测试装置还包括释放模块,用于:

所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之前:

释放所述临时存储空间中上一条测试用例的代码块;

将读取出的所述快照信息或者所述已运行代码块添加至所述临时存储空间;

将当前测试用例除所述第一相同功能块之外的功能块对应的代码块添加至所述临时存储空间。

示例性的,保存模块还用于:

所述基于所述快照信息或者所述已运行代码块从所述第一相同功能块的下一个功能块开始运行当前测试用例的步骤之后:

释放所述永久存储空间中保存的上一条测试用例的所述快照信息或者所述已运行代码块;

将运行到所述第二相同功能块时的快照信息或者所述第二相同功能块对应的已运行代码块保存至所述永久存储空间。

示例性的,所述自动化测试装置还包括切换模块,用于:

在切换分组时,清空所述临时存储空间和所述永久存储空间;

在切换分组之后,执行所述确定与上一条测试用例的第一相同功能块的步骤。

示例性的,所述自动化测试装置还包括准备模块,用于:

所述运行当前分组的当前测试用例的步骤之前:

对各测试用例的用例脚本进行功能抽象化处理,得到所述测试用例的测试步骤;

对所述测试步骤进行功能划分,得到所述测试用例的所述功能块;

基于所述功能块确定各所述测试用例的分组和在各分组中的执行顺序。

示例性的,所述自动化测试装置还包括准备模块,还用于:

基于相同功能块的执行顺序从先到后的第一策略以及相同功能块的相似度由高到低的第二策略,确定各所述测试用例的分组;

其中,所述第一策略的优先级高于所述第二策略的优先级;

其中,所述第一策略为所述相同功能块在所述测试用例中的执行顺序越靠前,对应的所述测试用例越趋向于同一分组;所述第二策略为所述相同功能块相似度越高,对应的所述测试用例越趋向于同一分组。

示例性的,所述自动化测试装置还包括准备模块,还用于:

基于功能块的相似度由低到高的第三策略,调整在各分组中所述测试用例的执行顺序;

其中,所述第三策略为当前测试用例的所述功能块与其它测试用例的所述功能块之间的相似度越低,当前测试用例在分组中的执行顺序越靠前。

本申请提供的自动化测试装置,采用上述实施例中的自动化测试方法,解决常规技术中半实物仿真自动化测试耗时长、效率低的技术问题。与常规技术相比,本申请实施例提供的自动化测试装置的有益效果与上述实施例提供的自动化测试方法的有益效果相同,且自动化测试装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。

此外,本申请实施例还提供一种自动化测试设备,所述自动化测试设备包括:存储器、处理器、及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的自动化测试方法的步骤。

此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的自动化测试方法的步骤。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对常规技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

相关技术
  • 一种自动化压力测试方法及装置、计算设备及存储介质
  • 自动化测试方法、装置、电子设备及计算机可读介质
  • 存储设备测试方法、存储设备测试系统及存储介质
  • 移动应用的测试方法、终端设备及介质
  • 云数据库的测试方法及其装置、设备和存储介质
  • 自动化测试方法、自动化测试装置、电子设备、存储介质
  • 一种自动化测试系统、自动化测试方法、设备及存储介质
技术分类

06120115991758