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

性能测试方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 13:26:15


性能测试方法、装置、计算机设备和存储介质

技术领域

本申请涉及软件测试领域,具体涉及性能测试方法、装置、计算机设备和存储介质。

背景技术

近年来,随着互联网技术发展,性能测试越来越重要,为了提高测试结果的准确性和可靠性,在一个性能测试过程中常常需要进行多次测试。

然而,每次测试得到的测试结果都只是对当次测试结果的表达,不能用来表征整个性能测试过程的结果,是当前面临的重大技术问题。

发明内容

本申请实施例提供性能测试方法、装置、计算机设备和存储介质,在循环测试过程中,通过获取所有测试用例在每轮测试中的性能状态,可以表征整个性能测试结果,提升每轮测试结果的准确性。

本申请实施例提供一种性能测试方法,包括:获取测试任务信息以及当前测试变量,所述当前测试变量包括初始测试变量;根据所述测试任务信息以及所述当前测试变量,生成测试用例集,所述测试用例集包括至少一个测试用例;根据所述测试用例集对目标设备进行性能测试,确定所述测试用例集中每个所述测试用例的性能状态,所述性能状态包括第一性能状态和第二性能状态;当所述测试用例集中的所有所述测试用例的性能状态均为所述第二性能状态时,更改所述当前测试变量的取值范围,得到下一测试变量;当所述测试用例集中的任意一个所述测试用例的性能状态为所述第一性能状态时,根据所述测试用例集中的所有所述测试用例的性能状态确定所述目标设备的性能测试结果。

本申请实施例还提供一种性能测试装置,包括:获取单元,用于获取测试任务信息以及当前测试变量,所述当前测试变量包括初始测试变量;测试用例生成单元,用于根据所述测试任务信息以及所述当前测试变量,生成测试用例集,所述测试用例集包括至少一个测试用例;性能测试单元,用于根据所述测试用例集对目标设备进行性能测试,确定所述测试用例集中每个所述测试用例的性能状态,所述性能状态包括第一性能状态和第二性能状态;测试变量处理单元,用于当所述测试用例集中的所有所述测试用例的性能状态均为所述第二性能状态时,更改所述当前测试变量的取值范围,得到下一测试变量;性能测试结果确定单元,用于当所述测试用例集中的任意一个所述测试用例的性能状态为所述第一性能状态时,根据所述测试用例集中的所有所述测试用例的性能状态确定所述目标设备的性能测试结果。

本申请实施例还提供一种计算机设备,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例所提供的任一种性能测试方法中的步骤。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种性能测试方法中的步骤。

本申请实施例通过获取测试任务信息以及当前测试变量,所述当前测试变量包括初始测试变量;根据所述测试任务信息以及所述当前测试变量,生成测试用例集,所述测试用例集包括至少一个测试用例;根据所述测试用例集对目标设备进行性能测试,确定所述测试用例集中每个所述测试用例的性能状态,所述性能状态包括第一性能状态和第二性能状态;当所述测试用例集中的所有所述测试用例的性能状态均为所述第二性能状态时,更改所述当前测试变量的取值范围,得到下一测试变量;当所述测试用例集中的任意一个所述测试用例的性能状态为所述第一性能状态时,根据所述测试用例集中的所有所述测试用例的性能状态确定所述目标设备的性能测试结果。以此,本申请通过更改当前测试变量的取值范围,实现对目标设备的循环测试,在循环测试过程中,在性能测试后获取测试用例集中每个测试用例的性能状态,以获得所有测试用例在当前轮次测试中的性能状态,通过获取所有测试用例在每轮测试中的性能状态,使得每轮循环测试的结果都可以表征整个性能测试结果,以提升每轮测试结果的准确性。同时,本申请还根据所有测试用例的性能状态确定目标设备性能测试结果,当性能状态不满足预设条件时,循环执行测试过程,直到获得预期的测试结果,使得测试结束时能获得预期测试结果,大大提升了测试效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的性能测试系统的场景示意图;

图2是本申请实施例提供的性能测试方法的流程示意图;

图3是本申请另一个实施例提供的性能测试方法的流程示意图;

图4是本申请实施例提供的性能测试装置的结构示意图;

图5是本申请实施例提供的计算机设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供性能测试方法、装置、计算机设备和存储介质。

其中,该性能测试装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(Personal Computer,PC)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

在一些实施例中,该性能测试装置还可以集成在多个电子设备中,比如,性能测试装置可以集成在多个服务器中,由多个服务器来实现本申请的性能测试方法。

在一些实施例中,服务器也可以以终端的形式来实现。

例如,参考图1,在一些实施方式中,提供了一种性能测试系统的场景示意图,该性能测试系统可以包括服务器1000以及网络2000。其中,在服务器1000中集成有性能测试装置,服务器1000用于对目标设备3000进行性能测试。网络2000用于服务器1000与目标设备3000之间的数据传输,网络2000可以是无线网络或者有线网络,比如无线网络为无线局域网(WLAN)、局域网(LAN)、蜂窝网络、2G网络、3G网络、4G网络、5G网络等。目标设备3000可以为终端、服务器等设备,服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

其中,服务器1000获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量;根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例;根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态;当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量;当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。

以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。

在本实施例中,提供了一种性能测试方法,如图2所示,该性能测试方法的具体流程可以如下:

110、获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量。

其中,测试任务信息是指用于软件测试任务的信息,测试任务是指对软件功能、性能等进行测试的过程,测试任务信息可以包括测试参数、业务规则、测试策略,等等。测试参数是指目标设备与测试相关的参数,测试参数可以由用户输入,也可以从目标设备获取,也可以从预存的信息中获取,等等。测试参数可以包括主分片数、副本数、请求超时时间,测试类型、目标设备名称以及目标设备版本,等等。业务规则是指用于指导测试任务的策略,每个业务规则可以对应不同的测试环境,业务规则可以由用户预先编写得到。

当前测试变量,是指在当前轮次的测试过程中的测试变量,测试变量可以包括主分片数、副本数、客户端并发数、批量插入数据的测试步长,等等。当前测试变量可以根据测试参数确定,也可以根据业务规则确定,等等。当前测试变量是在当前取值范围内取值的变量,当前取值范围是指测试变量在当前轮次的取值范围。初始测试变量是指在循环执行性能测试过程中第一轮次测试时的测试变量,初始测试变量具有初始的取值范围。当当前测试变量包括多种数据类型时,每种数据类型均对应一个测试变量,每个测试变量的取值范围可以相同,也可以不同。例如,测试变量包括主分片数、客户端并发数以及批量插入数据的测试步长三种数据,主分片数的取值范围为2~6,客户端并发数取值范围为6~30,批量插入数据的取值范围为5000~30000。

需要说明的是,本申请实施例在使用当前测试变量生成测试用例并对目标设备进行测试后,在步骤140(即,当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量)后进入步骤110。其中,下一测试变量会作为下一轮次的当前测试变量执行步骤110,进行下一轮次的测试。因此,本申请实施例的性能测试方式是通过不断更改当前测试变量以实现循环测试的过程。本申请实施例中每次修改当前测试变量进行一次测试即为循环测试过程中的一个轮次。当前测试变量在每一轮次测试中都要重新获取,测试任务信息可以只在第一轮次测试是获取,在其他轮次测试中不再获取,而是直接调用第一轮次获取的测试任务信息,也可以在每一轮次中均重新获取,等等。

在一些实施方式中,测试任务信息包括测试参数和业务规则,步骤110可以包括步骤(1.1)~(1.3),如下:

(1.1)、获取测试参数和业务规则库;

(1.2)、根据测试参数从业务规则库中确定业务规则;

(1.3)、根据业务规则确定当前测试变量。

其中,业务规则库中存储有多个业务规则,多个业务规则分别对应不同的测试环境。

在一些实施方式中,步骤(1.3)可以包括步骤(1.3.1)~(1.3.2),如下:

(1.3.1)、根据业务规则确定客户端并发数以及批量插入数据的测试步长;

(1.3.2)、根据客户端并发数以及批量插入数据的测试步长确定当前测试变量。

其中,由于客户端并发数以及批量插入数据与目标设备性能强关联,因此选取客户端并发数以及批量插入数据作为确定当前测试变量的要素,使得当前测试变量的取值直接影响性能测试结果,以使得获得的测试用例集中的测试用例能获得不同性能场景下的目标设备的测试结果。

在一些实施方式中,当前测试变量包括客户端并发数以及批量插入数据的测试步长。

其中,客户端并发数以及批量插入数据的测试步长均为具有取值范围的变量。客户端并发数以及批量插入数据的测试步长的取值范围可以由用户预设,也可以随机获取,两者的取值范围可以相同,也可以不同。

120、根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例。

其中,测试用例集是指测试用例的集合,测试用例是对目标设备进行测试任务的描述,体现了测试方案、方法、技术和策略,现有技术中测试用例的生成与测试相关参数相关联,通过对测试相关参数赋予不同的值能获得多个不同的测试用例。步骤120中根据测试任务信息以及当前测试变量生成测试用例集,可以为在当前测试变量的取值范围内对当前测试变量进行取值生成不同的测试用例,也可以对测试任务信息中数据赋值并在当前测试变量的取值范围内对当前测试变量进行取值生成不同的测试用例,等等。生成测试用例集的测试用例集与当前测试变量的取值范围对应,一个测试用例与当前测试变量取值范围内的值对应。

在一些实施方式中,步骤120包括根据业务规则确定客户端并发数、批量插入数据的测试步长、批量插入数据的测试起点以及批量插入数据的测试终点。

在一些实施方式中,通过在当前测试变量取值范围内对当前测试变量取不同的值得到测试用例集中的测试用例。

在一些实施方式中,步骤120可以包括步骤(2.1)~(2.2),如下:

(2.1)、在当前测试变量的取值范围内进行取值得到多个当前测试变量值;

(2.2)、根据测试任务信息以及多个当前测试变量值,生成测试用例集。

其中,取值范围是指当前取值范围,即当前测试变量的取值范围是指测试变量当前测试变量在当前轮次的取值范围。取值方式可以为按等差数列取值,也可以为按等比数列取值,也可以为随机取值,等等。

通过对当前测试变量取值,赋予当前测试变量定值,使获得的测试用例集中的不同测试用例可以与不同的当前测试变量值对应,能获得不同性能场景下的目标设备的测试结果。

在一些实施方式中,当前测试变量包括客户端并发数以及批量插入数据的测试步长,步骤(2.1)包括:在客户端并发数的取值范围内按等差数列取值得到多个客户端并发数值,在批量插入数据的取值范围内按等比数列取值得到多个批量插入数据值。例如:客户端并发数的取值范围为8~128,取值为8、16、32、64、96、128,批量插入数据的测试步长的取值范围为5000~30000,取值为5000、10000、15000、20000、25000、30000。

在一些实施方式中,步骤(2.2)包括:对客户端并发数值以及批量插入数据值进行组合得到多个取值组合,根据测试任务信息以及多个取值组合,生成测试用例集。例如:在步骤(2.1)中得到了m个客户端并发数值,n个批量插入数据值,组合后得到m×n个取值组合,每个取值组合能对应生成一个测试用例,能获得m×n个测试用例,即测试用例集中包括36个测试用例。

130、根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态。

其中,性能状态是指测试用例的测试结果与预期测试结果的匹配程度,第一性能状态是指测试用例的测试结果与预期测试结果匹配,第二性能状态是指测试用例的测试结果与预期测试结果不匹配。

目标设备是性能测试的对象,可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

步骤130可以包括步骤(3.1)~(3.3),如下:

(3.1)、获取测试策略文件。

其中,测试策略文件是描述测试项目和测试任务之间的关系,可以用来说明要测什么、如何测、何协调测试资源和测试时间,等等。获取测试策略文件可以为获取系统中已有的测试策略文件,也可以通过步骤(3.1.1)~(3.1.4)生成,等等。

需要说明的是,步骤(3.1)可以与步骤110同时进行,也可以在步骤110之前进行,还可以在步骤110之后进行,等等。

在一些实施方式中,步骤(3.1)可以包括步骤(3.1.1)~(3.1.4),如下:

(3.1.1)、获取测试策略模板库;

(3.1.2)、根据测试参数从测试策略模板库中确定测试策略模板;

(3.1.3)、获取测试策略信息;

(3.1.4)、根据测试策略模板以及测试策略信息生成测试策略文件。

其中,测试策略模板库中存储有多个测试策略文件模板,多个测试策略文件模板分别对应不同的测试环境,测试策略文件模板可以由用户预先编写得到。测试策略信息可以包括待生成的测试策略文件名称、待生成测试策略文件的索引名称、待生成测试策略文件的地址,等等数据信息。测试策略信息可以从测试参数中获取。通过测试参数、测试策略模板以及测试策略信息自动生成测试策略文件,提高测试效率。

在一些实施方式中,步骤(3.1.4)包括将测试策略信息加入测试策略模板中,得到测试策略文件。

(3.2)、根据测试用例集以及测试策略文件对目标设备进行性能测试,确定测试用例的测试结果。

其中,测试结果是指通过对目标设备进行性能测试获得的,测试结果可以包括多个性能指标,例如错误率、点击率、吞吐量、响应时间、CPU使用率、物理内存使用、网络流量使用,等等,测试结果还可以包括根据性能指标确定的性能指标的分数,例如吞吐量分数、响应时间分数,等等。

在测试过程中,可以根据测试用例集中所有测试用例以及测试策略文件对目标设备进行性能测试,得到所有测试用例集的测试结果,也可以根据测试用例集中未被测试的测试用例以及测试策略文件对目标设备进行性能测试,等等。

在一些实施方式中,步骤(3.2)包括步骤(i)~(ii),如下:

(i)、将测试用例集中未被用于性能测试的测试用例确定为第一目标测试用例,将测试用例集中已被用于性能测试的测试用例确定为第二目标测试用例;

(ii)、根据第一目标测试用例以及测试策略文件对目标设备进行性能测试,确定第一目标测试用例的测试结果。

其中,第一目标测试用例是指在循环测试过程中,在当前时刻性能测试集中未进行性能测试的测试用例,未进行性能测试是指在循环测试过程的历史测试轮次中未进行性能测试,历史测试轮次是指在当前测试轮次之前的所有轮次。第二目标测试用例是测试用例集中已在循环测试过程的历史测试轮次中进行性能测试的测试用例。由于本申请实施例的测试过程是循环测试过程,每一轮次都会将未测试的测试用例作为第一目标测试用例进行测试,即测试集中第二目标测试用例都会在当前轮次之前的轮次被测试,因此在测试完成后,测试用例集中的所有测试用例均已测试。

通过按是否已测试的规则将测试用例集中的测试用例进行区分,并在测试过程中只测试未测试的测试用例,节省了测试过程中的算力,提升了测试效率。

在一些实施方式中,步骤(3.2)可以包括步骤(3.2.1)~(3.2.3),如下:

(3.2.1)、根据测试用例集以及测试策略文件,确定测试用例的主分片数、客户端并发数以及批量插入数据的测试步长;

(3.2.2)、根据测试用例的主分片数、客户端并发数以及批量插入数据的测试步长,确定测试用例的测试序列编号;

(3.2.3)、根据测试序列编号以及测试用例对目标设备进行性能测试,确定测试用例的测试结果。

在一些实施方式中,步骤(3.2.2)包括将每个测试用例的主分片数、客户端并发数以及批量插入数据的测试步长的数值进行取值,得到一组取值组,对所有测试用例的取值组进行排序,得到取值组序列,将每个取值组在取值组序列中的序列编号作为该取值组对应的测试用例的序列编号。

在一些实施方式中,步骤(3.2)可以包括步骤(i)以及步骤(3.2.1)~(3.2.3),其中(3.2.1)~(3.2.3)中的测试用例为第一目标测试用例。通过将测试用例集中未被测试的测试用例进行编号并测试,使得所有测试用例能依序全部遍历,避免缺漏或重复,并节省了测试过程中的算力,提升了测试效率。

在一些实施方式中,对所有测试用例的取值组进行排序的方法包括:按照主分片数从小到大的顺序对所有取值组进行排序,得到第一排序结果,对第一排序结果中主分片数相同的取值组按照批量插入数据的测试步长从小到大的顺序进行排序,得到第二排序结果,对第二排序结果中批量插入数据的测试步长相同的取值组按照客户端并发数从小到大的顺序进行排序,得到取值组序列。其中,第一排序结果、第二排序结果以及取值组序列均包括所有测试用例的取值组的排序结果。

例如:如表1所示,测试用例集中包括五个测试用例,如下:

表1

其中,测试用例A~测试用例E的取值组分别为:2-5000-8、3-10000-16、2-10000-8、2-5000-16、2-10000-16,排序后得到取值组序列为:2-5000-8、2-5000-16、2-10000-8、2-10000-16、3-10000-16。因此得到测试用例A序列编号为1,测试用例D序列编号为2、测试用例C序列编号为3、测试用例E序列编号为4、测试用例B序列编号为5。测试过程中,按照序列编号顺序将五个测试用例进行性能测试。

通过对测试用例进行编号,使得在测试过程中可以按照编号对测试用例进行测试,使得所有测试用例能依序全部遍历,避免缺漏或重复。此外,进一步将测试用例按主分片数、批量插入数据的测试步长、客户端并发数的大小进行排序,使得测试用例能够按照客户端并发数大小、批量插入数据的测试步长以及主分片数的三层循环进行遍历,由此在后续对测试结果的分析过程中,能按照测试结果得到的顺序确定其对应的客户端并发数大小、批量插入数据的测试步长以及主分片数在所有测试用例中是否为最大或最小,以提高测试效率。

(3.3)、根据所有测试用例的测试结果,确定测试用例集中每个测试用例的性能状态。

其中,所有测试用例为测试用例集中的所有测试用例,测试用例可以在当前轮次测试中测试,也可以在当前轮次之前测试,等等。

将每个测试用例的性能状态与所有测试用例相关联,使得每个测试用例的性能状态能够部分或全部表征整个性能测试的结果。

在一些实施方式中,测试结果可以包括错误率以及吞吐量分数,步骤(3.3)可以包括步骤A1~A2,如下:

A1、当测试用例的错误率大于预设的阈值时,将测试用例的性能状态确定为第二性能状态;

A2、当测试用例的错误率小于等于预设的阈值时,根据吞吐量分数确定测试用例的性能状态。

其中,错误率是指预设时间段内出错的请求在总请求数中的占比。预设的阈值可以由用户预先设置,也可以由系统获取历史错误率得到,等等。

吞吐量是指单位时间内成功地传送数据的数量,吞吐量分数可以为平均吞吐量的值、也可以为最大吞吐量的值,也可为通过用户自定义的计算方式对吞吐量计算得到的分值,等等。例如,将测试得到的吞吐量与预设的标准吞吐量进行比较得到吞吐量分数,如吞吐量分数=测试得到的吞吐量/预设的标准吞吐量,其中预设的标准吞吐量可以由用户设置。或,例如采用区间打分机制,吞吐量分数分为n分值档,每一档对应一个分值,n档对应n个连续的吞吐量取值区间,通过确定吞吐量所在的吞吐量取值区间,确定其对应的分值为吞吐量分数。吞吐量分数越大表示目标设备单位时间内能够处理的任务数量应该越多。

在一些实施方式中,测试结果还包括响应时间分数,步骤A2可以包括步骤B1~B3,如下:

B1、根据吞吐量分数确定最大吞吐量分数;

B2、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数小于最大吞吐量分数时,将测试用例的性能状态确定为第二性能状态;

B3、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,根据响应时间分数确定测试用例的性能状态。

其中,最大吞吐量分数可以为测试用例集所有测试用例的吞吐量分数中分数值最大的一个,也可以为测试用例集中除错误率大于预设的阈值的测试用例以外的所有测试用例,等等。其中,测试用例可以在当前轮次测试中测试,也可以在当前轮次之前测试,等等。

其中,响应时间是指执行一个操作所需的时间,包括从发出请求开始到最后收到响应所需要的时间,响应时间分数可以为通过用户自定义的计算方式对响应时间的值计算得到的分值,等等。例如,将测试得到的响应时间与预设的标准响应时间进行比较得到响应时间分数,如响应时间分数=1-测试得到的响应时间/预设的标准响应时间,其中预设的标准响应时间可以由用户设置。或,例如采用区间打分机制,具体方案与吞吐量分数采用区间打分机制相同,在此不再赘述。响应时间分数越大代表响应时间越短,目标设备单位时间内能够处理的任务数量应该越多。

在一些实施方式中,步骤B1包括:将测试用例集中错误率小于等于预设的阈值的所有测试用例作为第一子测试用例集;在第一子测试用例集中,将所有吞吐量分数中的最大分数值确定为最大吞吐量分数。

在一些实施方式中,步骤B3可以包括步骤C1~C3,如下:

C1、根据响应时间分数确定最大响应时间分数;

C2、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数,且当响应时间分数小于最大响应时间分数时,将测试用例的性能状态确定为第二性能状态;

C3、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,且当响应时间分数等于最大响应时间分数时,根据当前测试变量确定测试用例的性能状态。

其中,最大响应时间分数可以为测试用例集所有测试用例的响应时间分数中分数值最大的一个,也可以为测试用例集中除错误率大于预设的阈值的测试用例以及除吞吐量分数小于最大吞吐量分数的测试用例以外的所有测试用例,等等。其中,测试用例可以在当前轮次测试中测试,也可以在当前轮次之前测试,等等。

在一些实施方式中,步骤C1包括:将第一子测试用例集中吞吐量分数等于最大吞吐量分数的所有测试用例作为第二子测试用例集;在第二子测试用例集中,将所有响应时间分数中的最大分数值确定为最大响应时间分数。

在一些实施方式中,步骤C3可以包括步骤D1~D3,如下:

D1、根据当前测试变量确定当前测试变量最大值;

D2、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,且当响应时间分数等于最大响应时间分数时,且当测试用例的当前测试变量值等于当前测试变量最大值时,将测试用例的性能状态确定为第二性能状态;

D3、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,且当响应时间分数等于最大响应时间分数时,且当测试用例的当前测试变量值小于当前测试变量最大值时,将测试用例的性能状态确定为第一性能状态。

其中,当前测试变量最大值可以为将取值范围中的最大值作为当前测试变量的最大值,也可以为从所有测试用例对应的当前测试变量的值中确定最大值作为当前测试变量的最大值,还可以为测试用例集中除错误率大于预设的阈值的测试用例以及除吞吐量分数小于最大吞吐量分数的测试用例以外以及除响应时间分数小于最大响应时间分数的测试用例以外的所有测试用例,等等。其中,测试用例可以在当前轮次测试中测试,也可以在当前轮次之前测试,等等。

测试用例集是根据测试任务信息以及当前测试变量生成的,测试用例集的任意一个测试用例中包括当前测试变量的一个取值。

在一些实施方式中,当当前测试变量包括多种数据类型时,测试用例集的任意一个测试用例中包括当前测试变量每种数据类型的一个取值。

在一些实施方式中,步骤C1包括:确定测试用例对应的当前测试变量值;从所有测试用例对应的当前测试变量值中确定当前测试变量最大值。

在一些实施方式中,步骤C1包括:将第二子测试用例集中响应时间分数等于最大响应时间分数的测试用例作为第三子测试用例集;确定第三子测试用例集中测试用例对应的当前测试变量值,得到当前测试变量值集合,将当前测试变量值集合中的最大值确定为当前测试变量最大值。

在一些实施方式中,当测试用例对应的当前测试变量值包括多种数据类型时,确定每种数据类型对应的当前测试变量最大值。在一些实施方式中,当测试用例对应的当前测试变量值包括多种数据类型时,将测试用例的每种数据类型对应的当前测试变量值与当前测试变量最大值进行比较,当测试用例的任一种数据类型对应的当前测试变量值等于当前测试变量最大值时,将测试用例的性能状态确定为第二性能状态;当测试用例的所有数据类型对应的当前测试变量值小于当前测试变量最大值时,将测试用例的性能状态确定为第一性能状态。

在上述步骤A1~A2、B1~B3、C1~C3、D1~D3中,本申请对根据错误率、吞吐量分数、响应时间分数以及当前测试变量值确定测试用例的性能状态的判断顺序不作限制,可以根据实际的需要进行设置或调整。

在一些实施方式中,可以先获取错误率与预设阈值,吞吐量分数与最大吞吐量分数,以及响应时间分数与最大响应时间分数、当前测试变量值与当前测试变量最大值关系后(确定的先后顺序不作限制,可以根据实际的需要进行设置或调整,例如同时进行),再将获取的关系结果按步骤A1~A2、B1~B3、C1~C3、D1~D3的方法确定测试用例的性能状态。其中,关系结果包括错误率大于预设的阈值,错误率小于等于预设的阈值,吞吐量分数小于最大吞吐量分数,吞吐量分数等于最大吞吐量分数,响应时间分数小于最大响应时间分数,响应时间分数等于最大响应时间分数,当前测试变量值等于当前测试变量最大值以及当前测试变量值小于当前测试变量最大值,等等。

其中,在将获取的关系结果按步骤A1~A2、B1~B3、C1~C3、D1~D3的方法确定测试用例的性能状态的过程中,在将多个关系结果作为判断依据时,对多个关系结果获取的先后顺序不作限制。例如,步骤D3中,可以先获取当测试用例的吞吐量分数等于最大吞吐量分数这一关系结果,再依次获取当测试用例的吞吐量分数等于最大吞吐量分数以及当测试用例的当前测试变量值小于当前测试变量最大值这两个关系结果,也可以同时获取三个关系结果,再将测试用例的性能状态确定为第一性能状态。

在一些实施方式中,步骤A1~A2、B1~B3、C1~C3、D1~D3中确定测试用例的性能状态的过程包括判断并获取关系结果的步骤,例如,步骤A2和B2中当测试用例的错误率小于等于预设的阈值时包括如下步骤:确定判断测试用例的错误率与预设的预设大小关系,获取判断的关系结果(错误率小于等于预设的阈值)。

在一些实施方式中,步骤A2中根据吞吐量分数确定测试用例的性能状态中的测试用例可以为第一子测试用例集中的测试用例,第一子测试用例集为测试用例中错误率小于等于预设的阈值的测试用例的集合。步骤B3中根据响应时间分数确定测试用例的性能状态中的测试用例可以为第二子测试用例集中的测试用例,第二子测试用例集为第一子测试用例中吞吐量时间分数等于最大吞吐量分数的测试用例的集合。步骤C3中根据当前测试变量确定测试用例的性能状态中的测试用例可以为第三子测试用例集中的测试用例,第三子测试用例集为第二子测试用例中响应时间分数等于最大响应时间分数的测试用例的集合。

其中,在确定测试用例的性能状态时,先根据错误率进行确定,将错误率过高的测试用例确定为第二性能状态,由此,在后续过程中只对错误率满足预期值的测试用例进行确定性能状态,以此一步步将不满足第一性能状态的测试用例排除,避免冗余的计算过程,大大提高了测试效率。此外,通过将最大吞吐量分数、当前测试变量最大值以及最大响应时间分数作为预期值,使得在确定过程中是将测试用例的吞吐量分数与所有的测试用例吞吐量分数进行比较,将测试用例的当前测试变量值与所有的测试用例当前测试变量值进行比较,将测试用例的响应时间分数与所有的测试用例的响应时间分数进行比较,使得测试用例的性能状态能够表征该测试用例的与所有测试用例相比的结果,即能表征整个性能测试的结果。

在一些实施方式中,步骤130还包括步骤(3.4)~(3.5),如下:

(3.4)、将测试用例集中未被用于性能测试的测试用例确定为第一目标测试用例,将测试用例集中已被用于性能测试的测试用例确定为第二目标测试用例;

(3.5)、获取测试结果集,测试结果集包括第二目标测试用例的测试结果;

步骤(3.2)可以包括步骤E1~E2,如下:

E1、根据测试用例集中的第一目标测试用例以及测试策略文件对目标设备进行性能测试,得到第一目标测试用例的测试结果。

E2、将第一目标测试用例的测试结果加入测试结果集。

测试结果集是指测试结果的集合,测试结果集可以为在测试开始前预先建立的测试结果集,也可以为在执行第一轮次测试时建立的测试结果集,也可以为在开始测试时,执行第一轮次测试前建立的测试结果集,等等。当在测试开始前以及第一轮次测试前建立测试结果集时,测试结果集为空集,在执行第一轮次测试时建立的测试结果集可以为空集,也可以为包含第一轮次测试结果的测试结果集。在每轮次测试完成后,测试结果集中包含测试用例集中所有测试用例的测试结果。通过建立测试结果集,将所有轮次的测试结果都存储在测试结果集中,避免已获得的测试结果影响后续的测试过程,也避免测试结果丢失,此外,也便于在后续对测试结果判断过程中能从测试结果集中一次调用所有测试结果。

在一些实施方式中,步骤130还包括步骤(3.7),如下:

(3.7)、将第一目标测试用例的测试用例参数加入测试结果集。

其中,测试用例参数可以包括主分片数、副本数、请求超时时间,测试类型、目标设备名称以及目标设备版本,等等。

在一些实施方式中,在步骤(3.3)之前还可以包括步骤:从测试结果集获取测试用例集中所有测试用例的测试结果。

140、当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量。

其中,更改当前测试变量的取值范围可以为扩大当前测试变量的取值范围,也可以为重新确定当前测试变量的新取值范围,使得原取值范围的部分取值在新取值范围内,或原取值范围的全部取值不在新取值范围内,等等。例如,原取值范围为6~36,新取值范围可以为0~50,也可以为7~50,也可以为50~70,也可以为30~40,等等。在扩大得到下一测试变量后,当当前测试变量与下一测试变量取值范围有重合时,重合的取值范围内可以生成相同的测试用例,在未重合的取值范围内当前测试变量与下一测试变量取值范围生成的测试用例不同。

下一测试变量是指用于下一轮次测试的测试变量。在获得下一测试变量后会返回执行步骤110~150进入下一轮次测试,此时下一测试变量作为下一轮次测试中的当前测试变量参与步骤110~150。

在一些实施方式中,步骤140可以包括如下步骤:

当测试用例集中的所有测试用例的性能状态均为第二性能状态时,扩大当前测试变量的取值范围,得到下一测试变量。

其中,通过扩大测试变量的取值范围,获得与已测试测试用例关联性强的新的测试用例,并执行循环测试过程直到获得预期的测试结果,使得在测试结束时能获得预期测试结果,大大提升了测试效率。

150、当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。

其中,目标设备的性能测试结果是指通过测试用例集的所有测试用例对目标设备性能测试后得到的测试结果。目标设备的性能测试结果可以包括测试用例集的所有测试用例的测试结果,测试用例集的所有测试用例的性能状态,性能状态为第一性能状态的测试用例,等等。

在一些实施方式中,目标设备的性能测试结果包括性能状态为第一性能状态的测试用例。在一些实施方式中,将性能状态为第一性能状态的测试用例标记为最优性能点。

在一些实施方式中,根据测试结果集确定目标设备的性能测试结果。

在一些实施方式中,步骤150可以包括步骤(5.1)~(5.2),如下:

(5.1)、当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,将性能状态为第一性能状态的测试用例加入测试结果集;

(5.2)、根据测试结果集确定目标设备的性能测试结果。

其中,根据测试结果集确定目标设备的性能测试结果,可以为从测试结果集中获取所有测试用例的测试结果作为目标设备的性能测试结果,也可以为性能状态为第一性能状态的测试用例作为性能测试结果,还可以为获取所有测试用例的测试结果以及第一性能状态的测试用例作为性能测试结果,等等。测试结果集可以存储在目标设备,也可以存储在本申请实施例方案集成在的电子设备上,还可以存储在其他设备上,例如服务器、服务器集群,等等。

在一些实施方式中,步骤150还包括步骤(5.3),如下:

(5.3)、将性能状态为第一性能状态的测试用例的测试用例参数加入测试结果集。

其中,测试用例参数可以包括主分片数、副本数、请求超时时间,测试类型、目标设备名称以及目标设备版本,等等。

需说明的是,本申请所有实施例中的步骤标号不作为对步骤的顺序限定,可以根据实际的需要进行设置或调整,本申请所有实施例可以不按照标号以及撰写的先后顺序进行,可以存在并发执行的可能。

本申请实施例提供的性能测试方案可以应用在各种性能测试场景中。比如,以对服务器进行性能测试为例,获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量;根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例;根据测试用例集对服务器进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态;当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量;当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定服务器的性能测试结果。采用本申请实施例提供的方案能够通过更改当前测试变量的取值范围,实现对目标设备的循环测试,在循环测试过程中,在性能测试后获取测试用例集中每个测试用例的性能状态,以获得所有测试用例在当前轮次测试中的性能状态,通过获取所有测试用例在每轮测试中的性能状态,使得每轮循环测试的结果都可以表征整个性能测试结果,以提升每轮测试结果的准确性。同时,本申请实施例还根据所有测试用例的性能状态确定目标设备性能测试结果,当性能状态不满足预设条件时,循环执行测试过程,直到获得预期的测试结果,使得测试结束时能获得预期测试结果,大大提升了测试效率。

根据上述实施例所描述的方法,以下将作进一步详细说明。

在本实施例中,将以对ELasticSearch(简称ES)服务器集群为目标设备,对ES服务器集群进行性能测试为例,对本申请实施例的方法进行详细说明。本申请实施例性能测试方法的载体可以为ES服务器集群中的一个或多个服务器。

如图3所示,一种性能测试方法具体流程如下:

210、获取测试参数、业务规则以及当前测试变量,生成测试用例集;

其中,ES服务器是一个基于Lucene(一种全文检索引擎的架构,提供了完整的查询引擎和索引引擎)的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎。集群是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像只有一个服务器在对外提供统一的服务。在一些实施方式中,步骤210可以包括步骤(6.1)~(6.4),如下:

(6.1)获取测试参数以及业务规则库;

(6.2)根据测试参数从业务规则库中确定业务规则;

(6.3)根据业务规则确定当前测试变量;

(6.4)根据测试参数、业务规则以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例。

其中,测试参数可以包括主分片数、副本数、请求超时时间,测试类型、服务器集群名称以及服务器集群版本,等等。当前测试变量可以包括客户端并发数以及批量插入数据的测试步长。业务规则可以用来确定客户端并发数、批量插入数据的测试步长、批量插入数据的测试起点以及批量插入数据的测试终点,等等,其中客户端并发数以及批量插入数据的测试步长为当前测试变量。例如,通过对业务规则的积累,对不同的服务器集群使用不同的服务器集群配置起点,如在节点配置相同时,三个节点的集群配置起点肯定比六个节点的集群配置低,因此可以将这一业务规则保存在业务规则库,在获取到业务规则时,也能获取到业务规则对应的当前测试变量取值范围的起点。

在生成测试用例集的时候,测试用例集中每个测试用例可以通过对当前测试变量取不同的值得到,例如,在对ES服务器进行性能测试的过程中,根据用户输入的测试参数确定主分片数、副本数、请求超时时间、测试类型、服务器集群版本,等等,再根据业务规则确定客户端并发数、批量插入数据的测试步长、批量插入数据的测试起点以及批量插入数据的测试终点,等等,根据这些数据生成测试用例。如,比如用户输入主分片数=3,副本数=1,请求超时时间=180s,测试类型是只写、集群版本是6.8.10,生成的测试用例是当批量插入数据的测试步长分别为5000、10000、15000、20000、25000、30000时,客户端并发数分别为8、16、32、64、96、128的性能表现,总计36个用例,每个测试用例的测试类型都是只写、每个测试用例的请求超时时间都是180s。

220、获取测试策略文件;

在一些实施方式中,步骤220可以包括步骤(7.1)~(7.4),如下:

(7.1)、获取测试策略模板库;

(7.2)、根据测试参数从测试策略模板库中确定测试策略模板;

(7.3)、获取测试策略信息;

(7.4)、根据测试策略模板以及测试策略信息生成测试策略文件。

在对ES服务器集群进行性能测试时,测试策略文件可以为track.json文件,测试策略信息可以包括:待生成的track名称、待生成track的索引名称、待生成track的服务器集群地址,等等。获取测试策略文件可以为获取系统中已有的测试策略文件,也可以通过测试策略模板生成,等等。例如,在获取到用户输入的测试参数后,可以从预存的track.json文件中选择适用的track.json文件选,如果没有适用的track.json文件,则从测试策略模板库中获取track模板,将track模板复制到track/track名称目录下,并从用户输入的测试参数获取测试策略信息生成track_tmp.json文件,解析track模板和track_tmp.json文件,并从track_tmp.json文件中提取字段填充到track模板,生成track.json文件。其中提取的字段可以包括、indices对象(索引对象)相关信息、documents对象(ES服务器中的数据对象)相关信息等等相关的字段。

由于现有应用于ES服务器集群的track模板一般只对应只读场景,而在ES服务器集群测试中还会遇到读写混合场景,因此当测试场景为读写混合场景时,步骤220还包括获取DSL、与DSL对应的索引以及DSL的目标吞吐量;步骤(7.4)可以包括:根据测试策略模板、测试策略信息、DSL、与DSL对应的索引以及DSL的目标吞吐量生成测试策略文件。例如:用户在输入测试参数时,同时输入DSL、与DSL对应的索引以及DSL的目标吞吐量,在上述生成track.json文件时,将DSL、与DSL对应的索引以及DSL的目标吞吐量信息加入track模板。

230、根据测试用例集以及测试策略文件对目标设备进行性能测试,确定测试用例的测试结果。

在一些实施方式中,步骤230包括步骤(8.1)~(8.3),如下:

(8.1)、根据测试用例集以及测试策略文件,确定测试用例的主分片数、客户端并发数以及批量插入数据的测试步长;

(8.2)、将每个测试用例的主分片数、客户端并发数以及批量插入数据的测试步长的数值进行取值,得到一组取值组,对所有测试用例的取值组进行排序,得到取值组序列,将每个取值组在取值组序列中的序列编号作为该取值组对应的测试用例的序列编号。

(8.3)、根据测试序列编号以及测试用例对目标设备进行性能测试,确定测试用例的测试结果。

在一些实施方式中,对所有测试用例的取值组进行排序的方法包括:按照主分片数从小到大的顺序对所有取值组进行排序得到第一排序结果,对第一排序结果中主分片数相同的取值组按照批量插入数据从小到大的顺序进行排序得到第二排序结果,对第二排序结果中批量插入数据相同的取值组按照客户端并发数从小到大的顺序进行排序得到取值组序列。

240、获取测试结果集,将测试用例的测试结果加入测试结果集。

在对ES服务器集群进行性能测试时,测试结果集可以为测试结果集群,例如在测试开始前建立ES集群A和ES集群B,ES集群A即为目标设备,ES集群A用于被测试,ES集群B即为测试结果集群,ES集群B用于存储测试结果以及相关信息。可以将每个测试结果和每个测试用例的重要信息比如客户端并发数、批量插入数据量、主分片数、副本数、测试类型、集群名称和集群版本等都会存入测试结果集群。通过建立两个服务器集群,一个用来测试,一个用来存储测试结果,避免将测试结果保存在测试集群中影响测试结果,同时还避免了测试集群在性能测试过程中压力过大而保存不了测试结果,导致测试结果丢失。

250、从测试结果集获取测试用例集中所有测试用例的测试结果。

260、根据所有测试用例的测试结果,确定是否有性能状态为第一性能状态的测试用例,若是则执行步骤280以及步骤290,若否则执行步骤270。

测试结果包括:错误率、吞吐量分数以及响应时间分数。步骤280可以包括步骤E1~E7,如下:

E1、将测试用例集中错误率小于等于预设的阈值的所有测试用例作为第一子测试用例集;

E2、在第一子测试用例集中,将所有吞吐量分数中的最大分数值确定为最大吞吐量分数;

E3、将第一子测试用例集中吞吐量分数等于最大吞吐量分数的所有测试用例作为第二子测试用例集合;

E4、在第二子测试用例集中,将所有响应时间分数中的最大分数值确定为最大响应时间分数;

E5、将第二子测试用例集中响应时间分数等于最大吞吐量分数的测试用例作为第三子测试用例集。

E6、确定测试用例对应的当前测试变量值;从所有测试用例对应的当前测试变量值中确定当前测试变量最大值。

E7、在第三子测试用例集中,当测试用例的当前测试变量值小于当前测试变量最大值时,将测试用例的性能状态确定为第一性能状态;

E8、当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,执行步骤280以及步骤290,当测试用例集中测试用例的性能状态均不为第一性能状态时,执行步骤270。

其中,可以将性能状态为第一性能状态的测试用例标记为最优性能点,最优性能点可以为一个,也可以为多个,与确定性能状态的规则相关。例如:在计算吞吐量分数以及响应时间分数时,采用区间打分机制,如两个测试用例的error都是0,两个测试用例的吞吐量分数和响应时间分数都满足最大吞吐量分数和最大响应时间分数的区间内,则两个测试用例均为最优性能点。

270、扩大当前测试变量的取值范围,得到下一测试变量。

其中,在得到下一测试变量后,返回执行步骤210。例如,在对ES服务器集群进行性能测试时,当前测试变量包括客户端并发数以及批量插入数据的测试步长。在对ES服务器集群进行性能测试时,在按照230中方法对所有测试用例都遍历后,通过DSL查询语句在测试结果集群中查询最大吞吐量分数和最大响应时间分数对应的客户端并发数和批量插入数据的测试步长,如果最大吞吐量分数和最大响应时间分数对应的是最大的客户端并发数或最大的批量插入数据的测试步长,则扩大相应的客户端并发数或批量插入数据的取值范围生成新的测试用例,则返回执行步骤210。

280、将性能状态为第一性能状态的测试用例加入测试结果集。

其中,在获得最优性能点后,将最优性能点的测试用例加入测试结果集群,还可以将最优性能点对应的服务器集群配置等配置参数加入测试结果集群。

290、根据测试结果集确定目标设备的性能测试结果。

在对ES服务器集群进行性能测试时,可以从测试结果集群中获取最优性能点对应的测试用例作为ES服务器集群的性能测试结果。

本申请实施例提供的性能测试方案在获取测试参数、业务规则以及当前测试变量后,生成测试用例集,获取测试策略文件,根据测试用例集以及测试策略文件对目标设备进行性能测试,确定测试用例的测试结果,获取测试结果集,将测试用例的测试结果加入测试结果集,测试结果集获取测试用例集中所有测试用例的测试结果,根据所有测试用例的测试结果,确定是否有性能状态满足第一性能状态的测试用例,扩大当前测试变量的取值范围,得到下一测试变量,将性能状态为第一性能状态的测试用例加入测试结果集,根据测试结果集确定目标设备的性能测试结果。采用本申请实施例提供的方案能够实现对ES服务器集群的循环性能测试,并在循环过程中不断改变当前测试变量的取值范围,获得不同的测试用例,实现对循环测试过程的不断调整,直至获得预期测试结果,大大提升了测试效率。

为了更好地实施以上方法,本申请实施例还提供一种性能测试装置,该性能测试装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

比如,在本实施例中,将以性能测试装置具体集成在电子设备为例,对本申请实施例的方法进行详细说明。

例如,如图4所示,该性能测试装置可以包括获取单元310、测试用例生成单元320、性能测试单元330、测试变量处理单元340以及性能测试结果确定单元350,其中:

(一)获取单元310:

用于获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量。

在一些实施方式中,测试任务信息包括测试参数和业务规则,获取单元310还可以用于(9.1)~(9.3),如下:

(9.1)、获取测试参数和业务规则库;

(9.2)、根据测试参数从业务规则库中确定业务规则;

(9.3)、根据业务规则确定当前测试变量。

在一些实施方式中,步骤(9.3)可以包括步骤(9.3.1)~(9.3.2),如下:

(9.3.1)、根据业务规则确定客户端并发数以及批量插入数据的测试步长;

(9.3.2)、根据客户端并发数以及批量插入数据的测试步长确定当前测试变量。

(二)测试用例生成单元320:

用于根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例。

在一些实施方式中,测试用例生成单元320还可以用于(10.1)~(10.2),如下:

(10.1)、在当前测试变量的取值范围内进行取值得到多个当前测试变量值;

(10.2)、根据测试任务信息以及多个当前测试变量值,生成测试用例集。

(三)性能测试单元330:

用于根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态。

性能测试单元330还可以用于(11.1)~(11.3),如下:

(11.1)、获取测试策略文件。

在一些实施方式中,步骤(11.1)可以包括步骤(11.1.1)~(11.1.4),如下:

(11.1.1)、获取测试策略模板库;

(11.1.2)、根据测试参数从测试策略模板库中确定测试策略模板;

(11.1.3)、获取测试策略信息;

(11.1.4)、根据测试策略模板以及测试策略信息生成测试策略文件。

(11.2)、根据测试用例集以及测试策略文件对目标设备进行性能测试,确定测试用例的测试结果。

在一些实施方式中,步骤(11.2)可以包括步骤(11.2.1)~(11.2.3),如下:

(11.2.1)、根据测试用例集以及测试策略文件,确定测试用例的主分片数、客户端并发数以及批量插入数据的测试步长;

(11.2.2)、根据测试用例的主分片数、客户端并发数以及批量插入数据的测试步长,确定测试用例的测试序列编号;

(11.2.3)、根据测试序列编号以及测试用例对目标设备进行性能测试,确定测试用例的测试结果。

(11.3)、根据所有测试用例的测试结果,确定测试用例集中每个测试用例的性能状态。

在一些实施方式中,测试结果可以包括错误率以及吞吐量分数,步骤(11.3)可以包括步骤a1~a2,如下:

a1、当测试用例的错误率大于预设的阈值时,将测试用例的性能状态确定为第二性能状态;

a2、当测试用例的错误率小于等于预设的阈值时,根据吞吐量分数确定测试用例的性能状态。

在一些实施方式中,测试结果还包括响应时间分数,步骤a2可以包括步骤b1~b3,如下:

b1根据吞吐量分数确定最大吞吐量分数;

b2、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数小于最大吞吐量分数时,将测试用例的性能状态确定为第二性能状态;

b3、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,根据响应时间分数确定测试用例的性能状态。

在一些实施方式中,步骤b3可以包括步骤c1~c3,如下:

c1、根据响应时间分数确定最大响应时间分数;

c2、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数,且当响应时间分数小于最大响应时间分数时,将测试用例的性能状态确定为第二性能状态;

c3、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,且当响应时间分数等于最大响应时间分数时,根据当前测试变量确定测试用例的性能状态。

在一些实施方式中,步骤c3可以包括步骤d1~d3,如下:

d1、根据当前测试变量确定当前测试变量最大值;

d2、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,且当响应时间分数等于最大响应时间分数时,且当测试用例的当前测试变量值等于当前测试变量最大值时,将测试用例的性能状态确定为第二性能状态;

d3、当测试用例的错误率小于等于预设的阈值时,且当测试用例的吞吐量分数等于最大吞吐量分数时,且当响应时间分数等于最大响应时间分数时,且当测试用例的当前测试变量值小于当前测试变量最大值时,将测试用例的性能状态确定为第一性能状态。

在一些实施方式中,性能测试单元330还可以用于(11.4)~(11.5),如下:

(11.4)、将测试用例集中未被用于性能测试的测试用例确定为第一目标测试用例,将测试用例集中已被用于性能测试的测试用例确定为第二目标测试用例;

(11.5)、获取测试结果集,测试结果集包括第二目标测试用例的测试结果;

步骤(11.2)可以包括步骤e1~e2,如下:

e1、根据所述测试用例集中的第一目标测试用例以及所述测试策略文件对目标设备进行性能测试,得到所述第一目标测试用例的测试结果。

e2、将第一目标测试用例的测试结果加入测试结果集。

在一些实施方式中,在步骤(11.3)之前还可以包括步骤:从测试结果集获取测试用例集中所有测试用例的测试结果。

(四)测试变量处理单元340:

用于当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量。

在一些实施方式中,测试变量处理单元340可以用于:

当测试用例集中的所有测试用例的性能状态均为第二性能状态时,扩大当前测试变量的取值范围,得到下一测试变量。

(五)性能测试结果确定单元350

用于当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。

在一些实施方式中,性能测试结果确定单元350可以用于(12.1)~(12.2),如下:

(12.1)、当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,将性能状态为第一性能状态的测试用例加入测试结果集;

(12.2)、根据测试结果集确定目标设备的性能测试结果。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

由上可知,本实施例的性能测试装置可以通过获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量;根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例;根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态;当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量;当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。以此,本申请实施例通过更改当前测试变量的取值范围,实现对目标设备的循环测试,在循环测试过程中,在性能测试后获取测试用例集中每个测试用例的性能状态,以获得所有测试用例在当前轮次测试中的性能状态,通过获取所有测试用例在每轮测试中的性能状态,使得每轮循环测试的结果都可以表征整个性能测试结果,以提升每轮测试结果的准确性。

相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端或服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机、个人数字助理(Personal Digital Assistant,PDA)等终端设备。

如图5所示,图5为本申请实施例提供的计算机设备的结构示意图,该计算机设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

处理器401是计算机设备400的控制中心,利用各种接口和线路连接整个计算机设备400的各个部分,通过运行或加载存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备400的各种功能和处理数据,从而对计算机设备400进行整体监控。

在本申请实施例中,计算机设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:

获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量;根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例;根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态;当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量;当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

可选的,如图5所示,计算机设备400还包括:触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407。其中,处理器401分别与触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407电性连接。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

触控显示屏403可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏403可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏403而实现输入和输出功能。但是在某些实施例中,触控面板与显示面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏403也可以作为输入单元406的一部分实现输入功能。

在本申请实施例中,通过处理器401执行应用程序在触控显示屏403上生成图形用户界面。该触控显示屏403用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令。

射频电路404可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。

音频电路405可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路405可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路405接收后转换为音频数据,再将音频数据输出处理器401处理后,经射频电路404以发送给比如另一计算机设备,或者将音频数据输出至存储器402以便进一步处理。音频电路405还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。

输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

电源407用于给计算机设备400的各个部件供电。可选的,电源407可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源407还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管图5中未示出,计算机设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

由上可知,本实施例提供的计算机设备可以获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量;根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例;根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态;当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量;当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种性能测试方法中的步骤。例如,该计算机程序可以执行如下步骤:

获取测试任务信息以及当前测试变量,当前测试变量包括初始测试变量;根据测试任务信息以及当前测试变量,生成测试用例集,测试用例集包括至少一个测试用例;根据测试用例集对目标设备进行性能测试,确定测试用例集中每个测试用例的性能状态,性能状态包括第一性能状态和第二性能状态;当测试用例集中的所有测试用例的性能状态均为第二性能状态时,更改当前测试变量的取值范围,得到下一测试变量;当测试用例集中的任意一个测试用例的性能状态为第一性能状态时,根据测试用例集中的所有测试用例的性能状态确定目标设备的性能测试结果。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种性能测试方法中的步骤,因此,可以实现本申请实施例所提供的任一种性能测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种性能测试方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120113678572