一种测试方法及装置与流程

文档序号:17288002发布日期:2019-04-03 03:43阅读:174来源:国知局
一种测试方法及装置与流程

本申请涉及测试领域,特别是涉及一种测试方法及装置。



背景技术:

面向交易的处理系统(on-linetransactionprocessing,oltp)由前台、应用和数据库组成;oltp系统的基本特征为前台接收的用户数据可以立即传送到计算中心进行处理,并在短时间内给出处理结果。oltp系统性能的高低,直接影响用户使用oltp系统办理业务的速度。而oltp系统性能的高低,最直接的影响来自于oltp系统中sql性能的高低。例如,在实际应用中,可能出现一条sql语句运行缓慢,从而影响整个oltp系统的响应时间。

为了保证用户办理业务的速度,需要保证oltp系统的性能。更进一步的,需要保证oltp系统中的sql性能满足预设性能指标。

因此,需要对oltp系统进行sql性能测试。



技术实现要素:

基于此,本申请提出了一种测试方法,用以测试sql性能。

本申请还提供了一种测试装置,用以保证上述方法在实际中的实现及应用。

本申请提供的技术方案为:

本申请公开了一种测试方法,包括:

获取包含第一目标参数的文件;所述第一目标参数包括:待测sql片段在待测系统中所属的sql命名空间、所述待测sql片段的标识和所述待测sql片段运行所需的初始参数;

从所述文件中解析出所述第一目标参数;

依据所述第一目标参数与第二目标参数,依次对每个所述待测sql片段进行测试;所述第二目标参数包括:预设的所述待测系统所属服务器的ip地址,以及预设的用于模拟测试场景的压力参数。

其中,针对目标待测sql片段,所述目标待测sql片段为所述待测sql片段中的任一待测sql片段;

依据所述第一目标参数与所述第二目标参数,对所述目标待测sql片段进行测试,包括:

获取第三目标参数;所述第三目标参数包括:在所述第一目标参数中,所述目标待测sql片段所属的sql命名空间、所述目标待测sql片段的标识以及所述目标待测sql片段运行所需的初始参数;

生成对所述目标待测sql片段进行测试的测试请求;所述测试请求包括:所述第三目标参数和所述第二目标参数中的所述ip地址;

依据所述测试请求以及所述第二目标参数中的所述压力参数,对所述目标待测sql片段进行测试。

其中,所述依据所述测试请求以及所述第二目标参数中的所述压力参数,对所述目标待测sql片段进行测试,包括:

依据基准测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行基准测试;所述基准测试为对所述目标待测sql片段进行的一种测试种类;

若所述待测系统反馈的基准测试结果满足预设基准测试条件,则依据负载测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行负载测试;所述负载测试为对所述目标待测sql片段进行的一种测试种类;

若所述待测系统反馈的负载测试结果满足预设负载测试条件,则依据极限测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行极限测试;所述极限测试为对所述目标待测sql片段进行的一种测试种类。

其中,所述压力参数包括:并发用户数和测试场景时间;所述并发用户数表示测试场景中需向所述待测系统同时发送所述测试请求的数量;所述测试场景时间表示对所述目标待测sql片段测试的时长;

依据目标测试所需的压力参数,向所述待测系统发送所述测试请求,所述目标测试为所述基准测试、所述负载测试以及所述极限测试中的任意一种测试,包括:

向所述待测系统同时发送第一预设数量个所述测试请求;所述第一预设数量为所述目标测试所需的并发用户数。

记录发送所述测试请求的时刻;

接收所述待测系统反馈的目标测试结果;

记录接收所述目标测试结果的时刻;

判断第一次发送所述测试请求的时刻距离当前时刻的时间间隔,是否小于所述目标测试所需的测试场景时间;

若小于,则向所述待测系统同时发送所述第一预设数量个所述测试请求;并返回执行所述记录发送所述测试请求的时刻的步骤。

其中,在所述判断第一次发送所述测试请求的时刻距离当前时刻的时间间隔,是否小于所述目标测试所需的测试场景时间之后,还包括:

若不小于,则确定目标测试结果的性能指标;

判断所确定的性能指标是否满足预设目标测试条件。

本申请还公开了一种测试装置,包括:

获取单元,用于获取包含第一目标参数的文件;所述第一目标参数包括:待测sql片段在待测系统中所属的sql命名空间、所述待测sql片段的标识和所述待测sql片段运行所需的初始参数;

解析单元,用于从所述文件中解析出所述第一目标参数;

测试单元,用于依据所述第一目标参数与第二目标参数,依次对每个所述待测sql片段进行测试;所述第二目标参数包括:预设的所述待测系统所属服务器的ip地址,以及预设的用于模拟测试场景的压力参数。

其中,所述测试单元包括:

获取子单元,用于获取第三目标参数;所述第三目标参数包括:在所述第一目标参数中,所述目标待测sql片段所属的sql命名空间、所述目标待测sql片段的标识以及所述目标待测sql片段运行所需的初始参数;所述目标待测sql片段为所述待测sql片段中的任一待测sql片段;

生成子单元,用于生成对所述目标待测sql片段进行测试的测试请求;所述测试请求包括:所述第三目标参数和所述第二目标参数中的所述ip地址;

测试子单元,用于依据所述测试请求以及所述第二目标参数中的所述压力参数,对所述目标待测sql片段进行测试。

其中,所述测试子单元包括:

基准测试模块,用于依据基准测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行基准测试;所述基准测试为对所述目标待测sql片段进行的一种测试种类;

负载测试模块,用于若所述待测系统反馈的基准测试结果满足预设基准测试条件,则依据负载测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行负载测试;所述负载测试为对所述目标待测sql片段进行的一种测试种类;

极限测试模块,用于若所述待测系统反馈的负载测试结果满足预设负载测试条件,则依据极限测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行极限测试;所述极限测试为对所述目标待测sql片段进行的一种测试种类。

其中,目标测试模块,所述目标测试模块为所述基准测试模块、所述负载测试模块以及所述极限测试模块中的任意一个模块,包括:

第一发送子模块,用于向所述待测系统同时发送第一预设数量个所述测试请求;所述第一预设数量为所述目标测试所需的并发用户数;所述并发用户数表示测试场景中需向所述待测系统同时发送所述测试请求的数量;

第一记录子模块,用于记录发送所述测试请求的时刻;

接收子模块,用于接收所述待测系统反馈的目标测试结果;

第二记录子模块,用于记录接收所述目标测试结果的时刻;

判断子模块,用于判断第一次发送所述测试请求的时刻距离当前时刻的时间间隔,是否小于所述目标测试所需的测试场景时间;所述测试场景时间表示对所述目标待测sql片段测试的时长;

第二发送子模块,用于在判断子模块得到第一次发送所述测试请求的时刻距离当前时刻的时间间隔,小于所述目标测试所需的测试场景时间时,向所述待测系统同时发送所述第一预设数量个所述测试请求;并返回执行所述第一发送子模块的动作。

其中,所述目标测试模块还包括:

执行子模块,用于在判断子模块得到第一次发送所述测试请求的时刻距离当前时刻的时间间隔,不小于所述目标测试所需的测试场景时间时,则确定目标测试结果的性能指标;判断所确定的性能指标是否满足预设目标测试条件。

本申请的有益效果为:

在本申请实施例中,接收包含第一目标参数的文件,并从文件中解析出第一目标参数;并且在本申请实施例中,预先设置有第二目标参数;第一目标参数包括:待测sql片段在待测系统中所属的sql命名空间、待测sql片段的标识和待测sql片段运行所需的初始参数;第二目标参数包括:待测系统所属服务器的ip地址,以及预先保存的用于模拟测试场景的压力参数;可以看出,第一目标参数与第二目标参数中,待测系统所属服务器的ip地址、待测sql片段在待测系统中所属的sql命名空间和待测sql片段的标识,可以使得待测系统寻找到待测sql片段;待测sql片段运行所需的初始参数以及压力参数,提供了待测系统对待测sql片段进行测试的基础条件;使得本申请实施例可以实现对待测sql片段的测试。

附图说明

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

图1为本申请中一种测试方法实施例的流程图;

图2为本申请中一种对目标待测sql片段进行测试的方法实施例的流程图;

图3为本申请中一种测试装置实施例的结构示意图。

具体实施方式

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

参考图1,为本申请中一种测试方法,可以包括:

步骤101:接收用户输入的包含第一目标参数的文本。

在本实施例中,第一目标参数为待测sql片段的相关参数,第一目标参数可以包括待测sql片段所属的项目组的名称、项目责任人、包含待测sql片段的sql命名空间、待测sql片段的标识、待测sql片段运行所需的初始参数以及备注信息。其中,项目组的名称和项目责任人用于确认待测sql片段的开发项目组和开发人员,以便发现待测sql片段性能问题后,及时找到开发人员进行问题的反馈和确认。

需要说明的是,在本实施例中,待测sql片段为所有的待测sql片段。例如,在实际应用中,假设需要对10个sql片段进行测试,在本步骤中,待测sql片段为该10个sql片段。

在本步骤中,接收文本的方式可以包括:通过一个可供用户操作的可视化的web交互界面,用户将包含第一目标参数的文本输入该web交互界面。

文本的形式可以为表格和页面截图等。以表格形式为例,第一目标参数中任意一个待测sql片段对应的参数,可以如下表所示:

步骤102:从文本中解析出第一目标参数。

步骤103:将解析出的第一目标参数写入数据库。

步骤104:依据第一目标参数和第二目标参数对,依次对每个待测sql片段进行测试。

在本实施例中,第二目标参数、待测系统中包含待测sql片段的sql命名空间、待测sql片段的标识以及待测sql片段运行所需的初始参数。

其中,第二目标参数包括:待测系统所属服务器的地址以及对待测sql片段进行不同种类测试的压力参数。具体的,对待测sql片段进行测试的种类可以包括:基准测试、负载测试和极限测试;每种测试的压力参数包括:并发用户数和测试场景时间。并发用户数为用于模拟测试过程中同时调用待测sql片段的用户数量;测试场景时间表示对一个待测sql片段进行测试的时长。

在本实施例中,第二目标参数由开发人员通过参数配置交互界面,预先配置的。

在本申请实施例中的,依据第一目标参数与第二目标参数,依次对每个待测sql片段进行测试的过程相同,为了描述方便,以一个待测sql片段为例,介绍本申请实施例对一个待测sql片段的具体测试过程;在本申请实施例中,为了描述方便,将待测sql片段中的任意一个sql片段称为目标待测sql片段。

具体的,参考图2,为本实施例对目标待测sql片段进行测试的过程,可以包括:

步骤201:获取第二目标参数和第三目标参数。

在本步骤中,第三目标参数为第一目标参数中,目标待测sql片段的所属的sql命名空间、目标待测sql片段的标识以及目标待测sql片段运行所需的初始参数。

步骤202:生成对所述目标待测sql片段进行测试的测试请求。

在本步骤中,所生成的测试请求包括:待测系统所属服务器的地址、待测系统中包含目标待测sql片段的sql命名空间、目标待测sql片段的标识以及目标待测sql片段运行所需的初始参数。

步骤203:对目标待测sql片段进行基准测试。

具体的,对待测sql片段进行基准测试的过程可以包括步骤a1~步骤a6:

步骤a1:同时向待测系统发送第一预设数量个测试请求。

第一预设数量为基准测试对应的并发用户数。

步骤a2:记录发送测试请求的发送时刻。

具体的,可以将发送时刻保存在数据库。

步骤a3:在接收到待测系统反馈的基准测试结果时,保存接收基准测试结果的接收时刻。

在本步骤中,可以将接收时刻保存在数据库。基准测试结果包括:用于表示待测系统对目标待测sql片段基准测试成功或失败的标志位。

步骤a4:依据基准测试结果中用于表示基准测试成功或者失败的标志位,确定基准测试结果。

若标志位表示测试成功,则测试结果为测试成功;若标志位表示测试失败,则测试结果为测试失败。

步骤a5:保存基准测试结果。

在本步骤中,可以将基准测试结果保存在数据库。

步骤a6:判断第一个发送测试请求时刻到当前时刻的时间间隔,是否小于基准测试对应的测试场景时间。

若小于,则返回执行步骤a1;若不小于,则结束基准测试。

步骤204:依据基准测试结果,确定目标待测sql的基准测试性能指标值。

具体的,本实施例中,基准测试的性能指标可以包括:待测系统完成对目标待测sql片段一次基准测试所需的平均时间和待测系统对目标待测sql片段进行基准测试的测试成功率以及测试失败率等。

其中,测试成功率为基准测试结果为测试成功的次数与基准测试总次数的比值。同理,测试失败率为测试结果为基准测试失败的总次数与基准测试总次数的比值。

步骤205:若目标待测sql片段的基准测试性能指标值满足预设基准测试条件,则对目标待测sql片段进行负载测试。

预设基准测试条件可以包括:预设基准测试时长范围以及预设基准测成功率。在本实施例中,若待测系统完成一次基准测试的平均时长属于预设基准测试时长范围,并且基准测试成功率大于预设基准测试成功率,则对目标待测sql片段进行负载测试。

具体的,对目标待测sql片段进行负载测试的过程,可以包括步骤b1~步骤b6:

步骤b1:同时向待测系统发送第二预设数量个测试请求。

第二预设数量为预先保存的压力参数中负载测试对应的并发用户数。

步骤b2:保存发送测试请求的发送时刻。

具体的,可以将发送时刻保存在数据库。

步骤b3:在接收到待测系统反馈的第二预设数量个负载测试结果时,保存接收负载测试结果的时刻。

在本步骤中,可以将接收时刻保存在数据库。每个负载测试结果包括:用于表示待测系统对目标待测sql片段负载测试成功或失败的标志位。

步骤b4:依据负载测试结果中用于表示负载测试成功或者失败的标志位,确定负载测试结果。

若每个负载测试结果消息中的标志位都表示测试成功,则负载测试结果为测试成功;否则,负载测试结果为测试失败。

步骤b5:保存每个负载测试结果。

在本步骤中,可以将负载测试结果保存在数据库。

步骤b6:判断负载测试过程中,第一个发送测试请求的时刻到当前时刻的时间间隔,是否小于负载测试对应的测试场景时间。

若小于,则返回执行步骤b1;若不小于,则结束负载测试。

步骤206:依据负载测试结果,确定目标待测sql片段的负载测试性能指标值。

具体的,本实施例中,负载测试的性能指标可以包括:待测系统完成一次负载测试所需的平均时间和待测系统的负载测试成功率以及失败率等。

负载测试成功率表示负载测试过程中,负载测试成功的次数与负载测试总次数的比值;负载测试失败率表示:负载测试过程中,负载测试失败的次数与负载测试总次数的比值。

步骤207:若目标待测sql片段的负载测试性能指标值满足预设负载测试条件,则对目标待测sql片段进行极限测试。

预设负载测试条件可以包括:预设负载测试时长范围以及预设负载测成功率。在本实施例中,若待测系统完成一次负载测试的平均时长属于预设负载测试时长范围,并且负载测试成功率大于预设负载测试成功率,则对目标待测sql片段进行极限测试。

具体的,对目标待测sql片段进行极限测试的过程,与对目标待测sql片段进行负载测试的流程相同,具体过程参考负载测试过程,这里不再赘述。

在本申请实施例中,在测试过程中,测试人员只需输入待测sql片段的第一目标参数即可,然后开始测试。在开始测试后,全称无需测试人员参与;当需要对待测sql片段进行不同种类测试时,不同种类测试所需的参数从预先保存的参数中获取;以及本申请实施例可以在待测系统完成基准测试后,基于待测系统反馈的基准测试结果,确定基准测试的性能指标,并判断出在基准测试完成后是否需要继续进行负载测试;以及在负载测试完成后,基于负载测试反馈的负载测试结果,确定负载测试的性能指标,并依据负载测试的性能指标,判断出是否需要进行极限测试。

通过以上实施例,可以看出本申请实施例中,在测试人员输入待测试sql片段的信息后,从本申请实施例中的测试开始到得到各种测试性能指标,都不需要人工参与;并且,在本实施例中,依据测试系统反馈的基准测试结果判断是否需要进行负载测试,以及依据负载测试结果判断是否需要进行极限测试;总之,在本申请实施例中,从测试人员开始测试就不需要人工参与,从而节省人力资源,以及测试过程不受人工限制。

参考图3,示出了本申请中一种测试装置实施例的结构示意图,该装置实施例可以包括:

获取单元301,用于获取包含第一目标参数的文件;所述第一目标参数包括:待测sql片段在待测系统中所属的sql命名空间、所述待测sql片段的标识和所述待测sql片段运行所需的初始参数;

解析单元302,用于从所述文件中解析出所述第一目标参数;

测试单元303,用于依据所述第一目标参数与第二目标参数,依次对每个所述待测sql片段进行测试;所述第二目标参数包括:预设的所述待测系统所属服务器的ip地址,以及预设的用于模拟测试场景的压力参数。

其中,所述测试单元包括:

获取子单元,用于获取第三目标参数;所述第三目标参数包括:在所述第一目标参数中,所述目标待测sql片段所属的sql命名空间、所述目标待测sql片段的标识以及所述目标待测sql片段运行所需的初始参数;所述目标待测sql片段为所述待测sql片段中的任一待测sql片段;

生成子单元,用于生成对所述目标待测sql片段进行测试的测试请求;所述测试请求包括:所述第三目标参数和所述第二目标参数中的所述ip地址;

测试子单元,用于依据所述测试请求以及所述第二目标参数中的所述压力参数,对所述目标待测sql片段进行测试。

其中,所述测试子单元,可以包括:

基准测试模块,用于依据基准测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行基准测试;所述基准测试为对所述目标待测sql片段进行的一种测试种类;

负载测试模块,用于若所述待测系统反馈的基准测试结果满足预设基准测试条件,则依据负载测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行负载测试;所述负载测试为对所述目标待测sql片段进行的一种测试种类;

极限测试模块,用于若所述待测系统反馈的负载测试结果满足预设负载测试条件,则依据极限测试所需的压力参数,向所述待测系统发送所述测试请求,使得所述待测系统对所述目标待测sql片段进行极限测试;所述极限测试为对所述目标待测sql片段进行的一种测试种类。

其中,目标测试模块,所述目标测试模块为所述基准测试模块、所述负载测试模块以及所述极限测试模块中的任意一个模块,包括:

第一发送子模块,用于向所述待测系统同时发送第一预设数量个所述测试请求;所述第一预设数量为所述目标测试所需的并发用户数;所述并发用户数表示测试场景中需向所述待测系统同时发送所述测试请求的数量;

第一记录子模块,用于记录发送所述测试请求的时刻;

接收子模块,用于接收所述待测系统反馈的目标测试结果;

第二记录子模块,用于记录接收所述目标测试结果的时刻;

判断子模块,用于判断第一次发送所述测试请求的时刻距离当前时刻的时间间隔,是否小于所述目标测试所需的测试场景时间;所述测试场景时间表示对所述目标待测sql片段测试的时长;

第二发送子模块,用于在判断子模块得到第一次发送所述测试请求的时刻距离当前时刻的时间间隔,小于所述目标测试所需的测试场景时间时,向所述待测系统同时发送所述第一预设数量个所述测试请求;并返回执行所述第一发送子模块的动作。

其中,所述目标测试模块还包括:

执行子模块,用于在判断子模块得到第一次发送所述测试请求的时刻距离当前时刻的时间间隔,不小于所述目标测试所需的测试场景时间时,则确定目标测试结果的性能指标;判断所确定的性能指标是否满足预设目标测试条件。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。在文中的“包括”、“包含”等词语解释为包含的含义而不是排他或穷举的含义;也就是说,是“包含但不限于”的含义。在不脱离本发明构思的前提下,还可以做出变形、同等替换、改进等,这些都属于本发明的保护范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1