发明内容
本申请实施例提供了一种测试方法、装置、电子设备以及可读存储介质,可有效提高测试效率。
一方面,本申请实施例提供一种测试方法,该方法包括:对于待测试用例中的每个测试用例,获取每个上述测试用例在设定的测试设备组中对应的各测试设备上的历史测试时长,其中,每个上述测试用例至少在该测试设备组的一个测试设备上进行过一次测试;基于各测试用例各自对应的历史测试时长,确定各测试用例的测试平均时长;根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值;根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,从而完成对各待测试用例的测试。
在一种可选的实施例中,上述根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,包括:按照各测试用例的测试平均时长由长至短的顺序,依次将对应的测试用例配置到不同的测试设备,作为已分配的测试用例的目标测试设备;对于未分配的其他测试用例的每一个测试用例,通过如下操作来确定该测试用例对应的目标测试设备:确定每个测试设备的总测试时长,上述总测试时长为已经分配至测试设备的各测试用例的测试平均时长之和;分别计算各测试用例的测试平均时长和每个测试设备的总测试时长的时长和,将与上述时长阈值的差值最小的时长和所对应的测试设备,确定为该测试用例对应的目标测试设备。
在一种可选的实施例中,上述方法还包括:记录各上述测试用例在各自对应的目标测试设备进行测试所用的新的测试时长;基于各测试用例各自对应的历史测试时长和新的测试时长,确定各测试用例对应的新的测试平均时长;根据各上述测试用例各自对应的新的测试平均时长,确定由该设定的测试设备组完成所有上述测试用例的一次测试所需的新的时长阈值。
在一种可选的实施例中,上述根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值,包括:计算各测试用例的测试平均时长之和,根据各测试用例的测试平均时长之和与该设定测试设备组中测试设备的数量,确定由该测试设备组完成所有测试用例的一次测试所需的时长阈值。
在一种可选的实施例中,若存在未在所有测试设备上进行过测试的第一测试用例,则通过如下操作来计算该测试用例的测试平均时长:利用第二测试用例在不同测试设备上的历史测试时长,确定不同测试设备之间的测试时长的转换系数,上述第二测试用例为在该测试设备组中的各设备上都测试过的测试用例之一,上述转换系数为同一个测试用例在两个测试设备上进行测试所用的测试时长的比值;据上述第一测试用例在对其测试过的测试设备上的历史测试时长和各测试设备之间的测试时长的转换系数,预测该第一测试用例在未对其测试过的测试设备上的测试时长;根据上述第一测试用例的历史测试时长和预测得到的各测试时长,确定上述第一测试用例的测试平均时长。
在一种可选的实施例中,上述第二测试用例包括:与上述第一测试用例在同一测试设备上进行测试所用的历史测试时长之间的差值小于或等于预设时长的测试用例。
在一种可选的实施例中,在上述根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备之后,上述方法还包括:对于每个上述测试设备,根据分配至上述测试设备的各测试用例的历史测试时长,预计上述测试设备完成该测试设备所对应的各测试用例所需的第一时长;在测试过程中,获取每个上述测试设备已测试的测试用例所使用的第二时长;若上述第二时长不小于上述第一时长且上述测试设备对应的各测试用例中存在未运行的测试用例,则将上述未运行的测试用例中的至少一个分配至其他测试设备。
一方面,本申请实施例提供一种测试装置,该装置包括:第一获取模块,用于对于待测试用例中的每个测试用例,获取每个上述测试用例在设定的测试设备组中对应的各测试设备上的历史测试时长,其中,每个上述测试用例至少在该测试设备组的一个测试设备上进行过一次测试;第一确定模块,用于基于各测试用例各自对应的历史测试时长,确定各测试用例的测试平均时长;第二确定模块,用于根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值;第一处理模块,用于根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,从而完成对各待测试用例的测试。
在一种可选的实施例中,上述第一处理模块包括:第一处理单元,用于按照各测试用例的测试平均时长由长至短的顺序,依次将对应的测试用例配置到不同的测试设备,作为已分配的测试用例的目标测试设备;第二处理单元,用于对于未分配的其他测试用例的每一个测试用例,通过如下操作来确定该测试用例对应的目标测试设备:确定每个测试设备的总测试时长,上述总测试时长为已经分配至测试设备的各测试用例的测试平均时长之和;分别计算各测试用例的测试平均时长和每个测试设备的总测试时长的时长和,将与上述时长阈值的差值最小的时长和所对应的测试设备,确定为该测试用例对应的目标测试设备。
在一种可选的实施例中,上述装置还包括:记录模块,用于记录各上述测试用例在各自对应的目标测试设备进行测试所用的新的测试时长;第三确定模块,用于基于各测试用例各自对应的历史测试时长和新的测试时长,确定各测试用例对应的新的测试平均时长;第四确定模块,用于根据各上述测试用例各自对应的新的测试平均时长,确定由该设定的测试设备组完成所有上述测试用例的一次测试所需的新的时长阈值。
在一种可选的实施例中,上述第二确定模块,具体用于:计算各测试用例的测试平均时长之和,根据各测试用例的测试平均时长之和与该设定测试设备组中测试设备的数量,确定由该测试设备组完成所有测试用例的一次测试所需的时长阈值。
在一种可选的实施例中,上述装置还包括第二处理模块,若存在未在所有测试设备上进行过测试的第一测试用例,则通过如下操作来计算该测试用例的测试平均时长:利用第二测试用例在不同测试设备上的历史测试时长,确定不同测试设备之间的测试时长的转换系数,上述第二测试用例为在该测试设备组中的各设备上都测试过的测试用例之一,上述转换系数为同一个测试用例在两个测试设备上进行测试所用的测试时长的比值;据上述第一测试用例在对其测试过的测试设备上的历史测试时长和各测试设备之间的测试时长的转换系数,预测该第一测试用例在未对其测试过的测试设备上的测试时长;根据上述第一测试用例的历史测试时长和预测得到的各测试时长,确定上述第一测试用例的测试平均时长。
在一种可选的实施例中,上述第二测试用例包括:上述第二测试用例包括:与上述第一测试用例在同一测试设备上进行测试所用的历史测试时长之间的差值小于或等于预设时长的测试用例。
在一种可选的实施例中,上述装置还包括:第三处理模块,用于对于每个上述测试设备,根据分配至上述测试设备的各测试用例的历史测试时长,预计上述测试设备完成该测试设备所对应的各测试用例所需的第一时长;第二获取模块,用于在测试过程中,获取每个上述测试设备已测试的测试用例所使用的第二时长;第四处理模块,用于若上述第二时长不小于上述第一时长且上述测试设备对应的各测试用例中存在未运行的测试用例,则将上述未运行的测试用例中的至少一个分配至其他测试设备。
一方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,该处理器和存储器相互连接;该存储器用于存储计算机程序;该处理器被配置用于在调用上述计算机程序时,执行上述测试方法的任一种可能的实现方式提供的方法。
一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上测试方法的任一种可能的实现方式提供的方法。
一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述测试方法的任一种可能的实现方式提供的方法。
本申请提供的技术方案带来的有益效果是:
本申请实施例所提供的测试方法、装置、电子设备以及可读存储介质,对于待测试用例中的每个测试用例,获取每个测试用例在设定的测试设备组中对应的各测试设备上的历史测试时长,其中,每个测试用例至少在该测试设备组的一个测试设备上进行过一次测试,基于各测试用例各自对应的历史测试时长,确定各测试用例的测试平均时长;根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值;根据时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,从而完成对各待测试用例的测试。采用上述技术方案,由于能够合理地将各测试用例分配至对应的目标测试设备,并使各测试用例在各自对应的目标测试设备进行测试,减少了测试设备资源的浪费,提高了测试设备的利用率,有效减少了测试的仿真时间,提高了测试效率。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在芯片开发中,回归测试是必不可少的,但回归测试需要大量的仿真时间,且该时间往往不可控制,主要取决于测试设备资源和仿真测试用例的仿真时间。想要降低回归测试仿真的时间,一方面是合理缩减用例,另一方面就需要高效利用测试设备资源。现有技术中,通过缩减用例去减少回归测试仿真时间,存在着一定的局限性。在测试过程中,仿真测试用例存在不同长短的时间路径(即在测试设备上运行测试用例所需的仿真的时间),在回归测试后期,不同时间路径的随机组合,会形成长尾效应(少部分测试用例时间路径过长,导致整个回归没有结束),这样就造成了很多测试设备资源的浪费,存在测试效率低的问题。
为了解决上述问题,本申请提出了一种解决方案。参见图1,图1是本申请实施例提供的一种测试方法的流程示意图,该方法可以由任意电子设备执行,如可以是终端设备,也可以是服务器。如图1所示,本申请实施例提供的测试方法包括如下步骤:
步骤S101,对于待测试用例中的每个测试用例,获取每个上述测试用例在设定的测试设备组中对应的各测试设备上的历史测试时长,其中,每个上述测试用例至少在该测试设备组的一个测试设备上进行过一次测试;
步骤S102,基于各测试用例各自对应的历史测试时长,确定各测试用例的测试平均时长;
步骤S103,根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值;
步骤S104,根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,从而完成对各待测试用例的测试。
在步骤S101中,可选的,对于每个待测试用例来说,可以获取该测试用例在设定的测试设备组中对应的各测试设备上进行仿真测试时所用的历史测试时长,也就是,获取每个测试用例在每个测试设备上对应的一个历史测试时长,其中,在实际应用中,对于每个测试用例来说,可能会对应于测试设备组中的全部或部分测试设备,在此不作限定。对于测试设备具体是什么设备本申请不作限定,可以是任何能够对测试用例进行测试的设备,例如,该测试设备可以是服务器。对于历史测试时长具体如何确定本申请不作任何限定,例如,该历史测试时长可以是该测试用例在每个测试设备上进行过的所有测试的测试时长的平均值,此时,该历史测试时长还可以称为历史平均仿真时间或历史平均仿真时长。例如,以测试用例A和测试设备1为例,假设测试用例A在测试设备1上进行过两次仿真测试,这两次的测试时长分别为5h、7h,其中,h表示小时,那么该测试用例A的历史测试时长可以为(5+7)/2=6h。当然,在一些可选的实施例中,该历史测试时长可以是该测试用例在每个测试设备上进行过的所有测试的测试时长的中位数、最大值等,在此不作限定。
其中,每个测试用例至少在一个测试设备上进行过一次测试。比如,测试设备有两个,测试用例A之前在其中一个服务器上进行过一次测试,则上述测试用例在至少两个测试设备上进行仿真测试时所用的历史测试时长就是该测试用例A在这个服务器上进行测试时所用的时长。
在步骤S102中,对于每个测试用例,基于该测试用例对应的历史测试时长,确定该测试用例对应的测试平均时长,该测试平均时长可以理解为所有对该测试用例进行过测试的测试设备的历史测试时长之和与这些测试设备的数量之间的比值,例如,假设测试用例A在测试设备1和测试设备2上进行过仿真测试,该测试用例A在测试设备1的历史测试时长为6h,该测试用例A在测试设备2的历史测试时长为8h,那么,该测试用例对应的测试平均时长可以为(6+8)/2=7h。
然后,在步骤S103中,根据各测试用例所对应的测试平均时长,确定由设定的测试设备组完成所有的测试用例的一次测试所需的时长阈值。其中,该时长阈值可以是测试设备组中的多个测试设备完成所有的测试用例的一次测试所需的时长的参考值/基准值,也可以是所有的测试用例对应的测试所需时长之和与这些测试设备的数量之间的比值,也可以是基于该比值确定的一个值,比如在该比值的基础上增加一个设定时长作为时长阈值,在此不作限定。以下详述如何确定该时长阈值。
在一种可选的实施例中,在步骤S103中,包括:计算各测试用例的测试平均时长之和,根据各测试用例的测试平均时长之和与该设定测试设备组中测试设备的数量,确定由该测试设备组完成所有测试用例的一次测试所需的时长阈值。
可选的,可以将各个测试用例的测试平均时长相加,得到各测试用例的测试平均时长之和,然后将各测试用例的测试平均时长之和与测试设备组中的测试设备的数量之间的比值,确定为时长阈值。
例如,假设待测试的测试用例包括测试用例A、测试用例B和测试用例C,至少两个测试设备包括测试设备1和测试设备2,测试用例A对应的测试平均时长为7h,测试用例B对应的测试平均时长为5h,测试用例C对应的测试平均时长为9h,则时长阈值可以为(7+5+9)/2=10.5h。
然后,在步骤S104中,基于时长阈值以及各测试用例对应的测试平均时长,确定各测试用例在设定的测试设备组中所对应分配至的目标测试设备,基于每个测试用例分别对应的目标测试设备进行测试。
通过本申请实施例,由于能够基于时长阈值和各测试用例对应的测试平均时长合理地将各测试用例分配至对应的目标测试设备,并使各测试用例在各自对应的目标测试设备进行测试,使得各测试设备所分配到的测试用例更加均衡,减少了服务器资源的浪费,进而减少了测试的仿真时间,提高了测试效率。
在一种可选的实施例中,在步骤S104中,包括:按照各测试用例的测试平均时长由长至短的顺序,依次将对应的测试用例配置到不同的测试设备,作为已分配的测试用例的目标测试设备。对于未分配的其他测试用例的每一个测试用例,通过如下操作来确定该测试用例对应的目标测试设备:确定每个测试设备的总测试时长,上述总测试时长为已经分配至测试设备的各测试用例的测试平均时长之和;分别计算各测试用例的测试平均时长和每个测试设备的总测试时长的时长和,将与上述时长阈值的差值最小的时长和所对应的测试设备,确定为该测试用例对应的目标测试设备。
例如,假设待测试的测试用例包括测试用例A、测试用例B、测试用例C和测试用例D,测试设备组包括测试设备1、测试设备2和测试设备3,测试用例A对应的测试平均时长为7h,测试用例B对应的测试平均时长为6h,测试用例C对应的测试平均时长为9h、测试用例D对应的测试平均时长为8h。按照由长至短的顺序排序,测试用例C对应的测试所需时长>(大于)测试用例D对应的测试所需时长>测试用例A对应的测试所需时长>测试用例B对应的测试所需时长。可以先将测试用例A、测试用例C和测试用例D分别分配至三个不同的测试设备上,例如,可以将测试用例A分配至测试设备1上,将测试用例C分配至测试设备2上、将测试用例D分配至测试设备3上。那么,测试用例A对应的目标测试设备即为测试设备1,测试用例C对应的目标测试设备即为测试设备2,测试用例D对应的目标测试设备即为测试设备3,其中,测试用例A、测试用例C和测试用例D即为上述已分配的测试用例,测试用例B即为未分配的其他测试用例。此时,测试设备1当前对应的总测试时长为7h,测试设备2当前对应的总测试时长为9h,测试设备3当前对应的总测试时长为8h。基于测试用例A至测试用例D分别对应的测试平均时长,可以得到测试设备1至测试设备3完成测试用例A至测试用例D的一次测试所需的时长阈值为(7+6+9+8)/3=10h。将其他测试用例即测试用例B对应的测试平均时长分别与测试设备1至测试设备3当前对应的总测试时长相加,可以得到测试设备1至测试设备3分别对应的时长和为13h、15h和14h,这三个时长和中与时长阈值10h差值最小的时长和为13h,此时,可以将测试用例B分配至测试设备1,即测试用例B对应的目标测试设备为测试设备1。
此时,可以基于各测试用例各自对应的目标测试设备进行测试。
通过本申请实施例,可以基于时长阈值以及各测试用例各自对应的测试平均时长,合理地为各测试用例分配对应的目标测试设备,减少服务器资源的浪费,提高了测试设备的利用率,有效减少了测试的仿真时间,提高了测试效率。
在一种可选的实施例中,上述方法还包括:记录各上述测试用例在各自对应的目标测试设备进行测试所用的新的测试时长;基于各测试用例各自对应的历史测试时长和新的测试时长,确定各测试用例对应的新的测试平均时长;根据各上述测试用例各自对应的新的测试平均时长,确定由该设定的测试设备组完成所有上述测试用例的一次测试所需的新的时长阈值。
例如,以测试用例A为例,假设测试用例A对应的目标测试设备为测试设备1,测试用例A在该测试设备1上的历史测试时长为6h,测试用例A基于目标测试设备所对应的新的测试时长为7h,那么可以得到测试用例A在测试设备1上的最新的平均测试时长为(6+7)/2=6.5h,假设测试设备组包括测试设备1和测试设备2,测试用例A在测试设备2上的历史测试时长为8h,那么,可以得到该测试用例A的新的测试平均时长为(6.5+8)/2=7.25h。
然后,可以根据各测试用例分别对应的新的测试平均时长,确定由至少两个测试设备完成所有的测试用例的一次测试所需的新的时长阈值。具体的计算时长阈值的方式可参考前文描述,在此不再赘述。
通过本申请实施例,对于每个测试用例,可以基于记录的新的测试时长,更新该测试用例对应的所需测试平均时长,并基于每个测试用例的新的测试平均时长,更新时长阈值,通过数据的不断更新,能够使阈值更加符合实际应用情况,从而能够在下一次的测试过程中,更加准确的确定如何将测试用例分配至各个测试设备。
在一种可选的实施例中,若存在未在所有测试设备上进行过测试的第一测试用例,则通过如下操作来计算该测试用例的测试平均时长:利用第二测试用例在不同测试设备上的历史测试时长,确定不同测试设备之间的测试时长的转换系数,上述第二测试用例为在该测试设备组中的各设备上都测试过的测试用例之一,上述转换系数为同一个测试用例在两个测试设备上进行测试所用的测试时长的比值;据上述第一测试用例在对其测试过的测试设备上的历史测试时长和各测试设备之间的测试时长的转换系数,预测该第一测试用例在未对其测试过的测试设备上的测试时长;根据上述第一测试用例的历史测试时长和预测得到的各测试时长,确定上述第一测试用例的测试平均时长。
举例来说,假设测试设备包括测试设备1和测试设备2,测试用例A在测试设备1上的历史测试时长为6h,测试用例A在测试设备2上的历史测试时长为8h,那么测试用例A对应的所需测试时长为7h,可以得到测试用例A在测试设备1上的转换系数为7/6,测试用例A在测试设备2上的转换系数为7/8,其中,该测试用例A即为上述第二测试用例,假设测试用例B只在测试设备1上进行过测试,该测试用例B即为上述第一测试用例,该测试用例B在测试设备1上的历史测试时长为6.5h。那么,可以通过以下公式预测测试用例B在测试设备2上所需的测试时长:
7/6*6.5=7/8*x
其中,x为测试用例B在测试设备2上所需的测试时长。
需要说明的是,上述第二测试用例包括:与上述第一测试用例在同一测试设备上进行测试所用的历史测试时长之间的差值小于或等于预设时长的测试用例。也就是说,该第二测试用例是与第一测试用例在同一测试设备上进行过测试的测试用例、且该第二测试用例与该第一测试用例在该测试设备上所用的历史测试时长之间相差较小,换言之,第二测试用例是与第一测试用例在进行测试时,测试时长相近的测试用例。例如,在同一测试设备上,第二测试用例所用的历史测试时长与第一测试用例所用的历史测试时长之间的差值小于或等于预设时长(如1h等),或者,对于第二测试用例所用的历史测试时长与第一测试用例所用的历史测试时长之间的差值,该差值与第一测试用例所用的历史测试时长在预设范围内(如正负百分之十的范围内)。
然后,对于每个第一测试用例,基于预测得到的各测试时长和第一测试用例对应的至少一个历史测试时长,确定该第一测试用例所对应的测试平均时长。
通过本申请实施例,若第一测试用例没有在某个测试设备上进行过测试,可以基于在所有的测试设备上均进行过测试的第二测试用例对第一测试用例在该测试设备上所需的测试时长进行预测,得到该第一测试用例在该测试设备上的所需测试时长,采用这种预测方式,能够为后续分配向各个测试用例分配对应的目标测试设备提供参考依据,进而提高服务器的资源利用率。
在一种可选的实施例中,在上述根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备之后,上述方法还包括:对于每个上述测试设备,根据分配至上述测试设备的各测试用例的历史测试时长,预计上述测试设备完成该测试设备所对应的各测试用例所需的第一时长;在测试过程中,获取每个上述测试设备已测试的测试用例所使用的第二时长;若上述第二时长不小于上述第一时长且上述测试设备对应的各测试用例中存在未运行的测试用例,则将上述未运行的测试用例中的至少一个分配至其他测试设备。
可选的,对于每个测试设备,可以基于该测试设备的已经分配到的测试用例估计该测试设备的仿真预计时间,即预计该测试设备完成其对应的各测试用例所需的第一时长,例如,假设测试设备1所分配到的测试用例为测试用例A和测试用例B,可以基于测试用例A在测试设备1上的历史测试时长和测试用例B在测试设备1上的历史测试时长之和,来预估该测试设备1完成测试用例A和测试用例B所需要的第一时长,假设测试用例A在测试设备1上的历史测试时长为6h,假设测试用例B在测试设备1上的历史测试时长为4h,那么该第一时长即为6+4=10h。
在测试过程中,可以实时获取每个测试设备运行其所对应分配到的测试用例所已经使用的第二时长,换言之,可以实时获取每个测试设备已经测试过的测试用例所使用的第二时长,例如,假设测试设备1已经测试过的测试用例为测试用例A和测试用例B,在进行测试的过程中,测试用例A在测试设备1上执行测试已经使用的时间为6.4h,测试用例B在测试设备1上执行测试已经使用的时间为4.2h,那么,该测试设备运行其已测试的测试用例所使用的第二时长即为6.4+4.2=10.6h。
对于每个测试设备,如果该测试设备对应的第二时长大于或等于第一时长,或者,第二时长与第一时长的差值在一定阈值(比0.5h)内,表明该测试设备在执行测试时,超过了预估的第一时长,并且,如果该测试设备对应的各测试用例中还存在未运行的测试用例,此时,可以对未运行的测试用例进行动态调整,将该未运行的测试用例中的至少一个测试用例分配至除了该测试设备之外的其他测试设备。例如,假设测试设备1对应的分配到的测试用例为测试用例A、测试用例B和测试用例C,该测试设备1对应的第一时长为15h,在测试过程中,该测试设备1对应的第二时长为16h。由于第二时长(16h)大于第一时长(15h),并且,测试用例C尚未进行测试,此时可以对测试用例C进行动态调整,可以将该测试用例C调整至已运行完成测试设备对应的所有测试用例的测试设备中的任意一个上进行测试,或者,确定除了测试设备1之外的其他各测试设备还需要运行的测试时长,根据其他各测试设备还需要运行的测试时长确定测试用例C所要分配到的测试设备。例如,除了测试设备1之外,还包括测试设备2和测试设备3,测试设备2还需要运行的测试时长为6h,测试设备3还需要运行的测试时长为1h,其中,测试用例C在测试设备2上的历史测试时长为5h,测试用例C在测试设备3上的历史测试时长为4h,此时,一方面,测试设备3还需要运行的测试时长(1h)小于测试设备2还需要运行的测试时长(6h),另一方面,测试用例C在测试设备3上的历史测试时长(4h)小于测试用例C在测试设备2上的历史测试时长(5h),此时,可以将测试用例C重新分配至测试设备3上进行测试。
通过本申请实施,通过这种灵活的动态调整方式,极大地提高了服务器的资源利用率,从而减少了整体的测试时间,提高了测试效率。
以下结合一具体实施例,对本申请实施例中的测试方法进行详细说明。
在一可选的示例中,如图2所示,本申请实施例中的测试方法的主要过程如下:
步骤S201,对于待测试的测试用例,获取每个测试用例在各个测试设备上的历史测试时长。
步骤S202,对于每个测试用例,基于该测试用例对应的历史测试时长,确定出该测试用例对应的测试平均时长。
步骤S203,根据每个测试用例对应的测试平均时长由长至短的顺序,为每个测试设备分配一个测试用例。其中,测试用例被分配至的服务器即为目标测试设备。
可选的,在为测试用例分配测试设备时,会根据各测试用例对应的测试平均时长对测试用例进行动态调节,可以将耗时更长的测试用例优先提交仿真,耗时较短的测试用例将会被稍后仿真,以避免发生长尾效应。如图3所示,假设测试用例包括测试用例1至测试用例n,可以将测试用例1至测试用例n所分别对应的测试平均时长进行排序,得到排序后的测试用例,然后按照由长至短的顺序,优先为测试平均时长较长的测试用例分配测试设备,以使测试设备优先对排序靠前的测试用例进行仿真。
步骤S204,基于各测试用例对应的测试平均时长,确定由测试设备组完成所有的测试用例的一次测试所需的时长阈值。
步骤S205,确定每个测试设备当前对应的总测试时长,然后对于没有分配测试设备的其他测试用例中的每个测试用例,分别确定该测试用例对应的测试平均时长和每个测试设备当前对应的总测试时长的时长和,若该时长和符合预期,则将符合预期的测试设备确定为该测试用例所要分配至的目标测试设备,其中,符合预期的目标测试设备即各测试设备当前对应的时长和中与时长阈值的差值最小的时长和所对应服务器。
可选的,如图4所示,假设某一测试用例的测试平均时长为T,在测试设备1上的转换系数为0.8,在测试设备2上的转换系数为0.5,在测试服务n上的转换系数为0.3,则可以基于该测试用例在各个测试设备上的转换系数确定第一测试用例的测试时长,并调节该第一测试用例的仿真路径,具体过程参考前文描述,在此不再赘述。
步骤S206,基于每个测试用例所分配至的目标测试设备,对每个测试用例进行仿真。
其中,上述步骤S201至步骤S206的具体过程可参考前文描述,在此不再详述。
以下结合具体示例对本申请中的测试方法进行说明,假设有3个仿真测试用例,分别为测试用例A(记为caseA),测试用例B(记为caseB),测试用例C(记为caseC),假设有2个测试设备,测试设备1(记为server1)和测试设备2(记为server2)。caseA在server1上面的历史测试时长为6h,caseA在在server2上面的历史测试时长为8h,caseB在server1上面的历史测试时长为4h,caseB在server2上面的历史测试时长为6h,caseC在server1上面的历史测试时长为8h,caseC在server2的历史测试时长为10h。
以下确定每个测试用例在各个测试设备上的转换系数。其中,caseA在server1上面的转换系数按照以下方式进行计算:caseA对应的测试平均时长为(6+8)/2=7h,则caseA在server1上面的转换系数为7/6,caseA在server2上面的转换系数为7/8。以此类推,caseB对应的测试平均时长为(4+6)/2=5h,caseB在server1上面的转换系数为5/4,caseB在server2上面的转换系数为5/6。caseC对应的测试平均时长为(8+10)/2=9h,caseC在server1上面的转换系数为9/8,caseC在server2上面的转换系数为9/10。
其中,转换系数是用于估计未在某个测试设备上进行过测试的第一测试用例在该测试设备上所需的测试时长的。举例来说,假设caseA在server1和server2上面执行过测试,那么来了一个新的caseD,在server1上面执行过测试但未在server2上进行过测试,且caseD在server1上的历史测试时长和caseA在server1上的历史测试时长接近,此时可以通过caseA在server1和server2上的转换系数,估计caseD在server2上面的所需的测试时长。
其中,caseA在server1上面的转换系数是7/6,caseA在server2上面的转换系数是7/8。假设caseD在server1上面的历史测试时长为6.5h,则通过7/6*6.5=7/8*x来计算x,其中x为caseD在server2上面的所需的测试时长,可以得出,x等于8.7h。
然后,确定时间阈值。可选的,caseA,caseB和caseC分别对应的测试平均时长为:caseA为7h,caseB为5h,caseC为9h,caseA,caseB和caseC的测试平均时长之和为21h,平均到两台测试设备上,每台测试设备为10.5h,该10.5h即为每台测试设备对于一次回归的理想平均时间(阈值),即上述时间阈值。
然后,将caseA,caseB和caseC分配到测试设备上。首先因为有2台测试设备,可以先将测试平均时长最长的两个case分配到server1和server2,则可以将caseA分配在server1上,将caseC分配在server2上,由于7+5=12h比9+5=14h更加接近时间阈值10.5h,可以将caseB分配在server1上。
然后,对于每个测试设备,可以基于该测试设备的仿真路径初始值(即该测试设备所分配到的测试用例)估计该测试设备的仿真预计时间,例如,server1所分配到的测试用例为caseA和caseB,则该server1的仿真路径初始值为caseA和caseB,server1的仿真预计时间为caseA在sever1上的历史测试时长和caseB在server1上的历史测试时长之和,即6+4=10h,server2的仿真路径初始值为caseC,server2的仿真预计时间为caseC在sever2上的历史测试时长,即10h。
在确定了各测试用例对应的目标测试设备之后,则可以将各所述测试用例在各自对应的目标测试设备进行测试,也就是针对测试用例的仿真开始执行。在实际应用中,测试用例本身可能会发生变化,所以还需要动态调节机制。当server1的第一个caseA执行超过10h以后,可以采取将caseB从server1切换到server2上进行执行的方式,动态调节测试用例的进行测试的测试设备。
最后将本次计算结果,更新到测试设备的数据库中,在下次执行测试时,会将本次的仿真时长作为历史的仿真时长,进行后续的计算。
参见图5,图5是本申请实施例提供的一种测试装置的结构示意图。本申请实施例提供的测试装置1包括:第一获取模块11,用于对于待测试用例中的每个测试用例,获取每个上述测试用例在设定的测试设备组中对应的各测试设备上的历史测试时长,其中,每个上述测试用例至少在该测试设备组的一个测试设备上进行过一次测试;第一确定模块12,用于基于各测试用例各自对应的历史测试时长,确定各测试用例的测试平均时长;第二确定模块13,用于根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值;第一处理模块14,用于根据上述时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,从而完成对各待测试用例的测试。
在一种可选的实施例中,上述第一处理模块14包括:第一处理单元,用于按照各测试用例的测试平均时长由长至短的顺序,依次将对应的测试用例配置到不同的测试设备,作为已分配的测试用例的目标测试设备;第二处理单元,用于对于未分配的其他测试用例的每一个测试用例,通过如下操作来确定该测试用例对应的目标测试设备:确定每个测试设备的总测试时长,上述总测试时长为已经分配至测试设备的各测试用例的测试平均时长之和;分别计算各测试用例的测试平均时长和每个测试设备的总测试时长的时长和,将与上述时长阈值的差值最小的时长和所对应的测试设备,确定为该测试用例对应的目标测试设备。
在一种可选的实施例中,上述装置还包括:记录模块,用于记录各上述测试用例在各自对应的目标测试设备进行测试所用的新的测试时长;第三确定模块,用于基于各测试用例各自对应的历史测试时长和新的测试时长,确定各测试用例对应的新的测试平均时长;第四确定模块,用于根据各上述测试用例各自对应的新的测试平均时长,确定由该设定的测试设备组完成所有上述测试用例的一次测试所需的新的时长阈值。
在一种可选的实施例中,上述第二确定模块13,具体用于:计算各测试用例的测试平均时长之和,根据各测试用例的测试平均时长之和与该设定测试设备组中测试设备的数量,确定由该测试设备组完成所有测试用例的一次测试所需的时长阈值。
在一种可选的实施例中,上述装置还包括第二处理模块,若存在未在所有测试设备上进行过测试的第一测试用例,则通过如下操作来计算该测试用例的测试平均时长:利用第二测试用例在不同测试设备上的历史测试时长,确定不同测试设备之间的测试时长的转换系数,上述第二测试用例为在该测试设备组中的各设备上都测试过的测试用例之一,上述转换系数为同一个测试用例在两个测试设备上进行测试所用的测试时长的比值;据上述第一测试用例在对其测试过的测试设备上的历史测试时长和各测试设备之间的测试时长的转换系数,预测该第一测试用例在未对其测试过的测试设备上的测试时长;根据上述第一测试用例的历史测试时长和预测得到的各测试时长,确定上述第一测试用例的测试平均时长。
在一种可选的实施例中,上述第二测试用例包括:上述第二测试用例包括:与上述第一测试用例在同一测试设备上进行测试所用的历史测试时长之间的差值小于或等于预设时长的测试用例。
在一种可选的实施例中,上述装置还包括:第三处理模块,用于对于每个上述测试设备,根据分配至上述测试设备的各测试用例的历史测试时长,预计上述测试设备完成该测试设备所对应的各测试用例所需的第一时长;第二获取模块,用于在测试过程中,获取每个上述测试设备已测试的测试用例所使用的第二时长;第四处理模块,用于若上述第二时长不小于上述第一时长且上述测试设备对应的各测试用例中存在未运行的测试用例,则将上述未运行的测试用例中的至少一个分配至其他测试设备。
本申请实施例所提供的测试方法、装置、电子设备以及可读存储介质,对于待测试用例中的每个测试用例,获取每个测试用例在设定的测试设备组中对应的各测试设备上的历史测试时长,其中,每个测试用例至少在该测试设备组的一个测试设备上进行过一次测试,基于各测试用例各自对应的历史测试时长,确定各测试用例的测试平均时长;根据各测试用例的测试平均时长,确定由该设定的测试设备组完成所有测试用例的一次测试所需的时长阈值;根据时长阈值和各测试用例的测试平均时长,确定各测试用例在该测试设备组中分配到的目标测试设备,从而完成对各待测试用例的测试。采用上述技术方案,由于能够合理地将各测试用例分配至对应的目标测试设备,并使各测试用例在各自对应的目标测试设备进行测试,减少了测试设备资源的浪费,提高了测试设备的利用率,有效减少了测试的仿真时间,提高了测试效率。
具体实现中,上述测试装置可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上文主要介绍说明了执行主体为硬件,来实施本申请中的测试方法,但是本申请的测试方法的执行主体并不仅限于硬件,本申请中的测试方法的执行主体还可以为软件,上述测试装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该测试装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。
在一些实施例中,本申请实施例提供的测试装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的测试装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的测试方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-ProgrammableGate Array)或其他电子元件。
在另一些实施例中,本申请实施例提供的测试装置可以采用软件方式实现,测试装置可以是程序和插件等形式的软件,并包括一系列的模块,包括第一获取模块11、第一确定模块12、第一确定模块13和第一处理模块14,用于实现本申请实施例提供的测试方法。
参见图6,图6是本申请实施例提供的一种电子设备的结构示意图。如图6所示,本实施例中的电子设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述电子设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图6所示的电子设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的计算机程序。
应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备1000可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图1中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的测试装置的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(randomaccessmemory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种可能的实施方式所提供的方法。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。