一种混合接口性能测试方法和装置的制造方法

文档序号:10654413阅读:193来源:国知局
一种混合接口性能测试方法和装置的制造方法
【专利摘要】本发明公开了一种混合接口性能测试方法和装置,包括接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中;根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中;当监听到所述消息队列中的所述测试消息时,提取所述测试消息;根据所述测试消息在所述测试数据库中查找到对应的测试数据;读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。因此,所述混合接口性能测试方法和装置解决现有性能测试工具无法实现对线上服务的各个接口按照实际访问量占比压测的问题。
【专利说明】
一种混合接口性能测试方法和装置
技术领域
[0001]本发明涉及计算机技术领域,特别是指一种混合接口性能测试方法和装置。
【背景技术】
[0002]目前,性能测试小工具采用python的gevent网络库框架,实现了混合接口指定并发次数的性能测试。其中,gevent实现了的一种协线程机制,多个事物在一个线程完成,可以设置协程的切换点,协程也可以自行切换,不需要等待10。
[0003]但在现有技术中,针对线上接口服务在一时间段内各个接口按照访问量占比压测需求,只能按照固定比例压测混合接口服务,测试结果接口压测占比不能完全和线上真正压测比例对应。

【发明内容】

[0004]有鉴于此,本发明的目的在于提出一种混合接口性能测试方法和装置,解决现有性能测试工具无法实现对线上服务的各个接口按照实际访问量占比压测的问题。
[0005]基于上述目的本发明提供混合接口性能测试方法,包括步骤:
[0006]接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中;根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中;其中,所述测试指令包括向至少两个接口的测试数据;
[0007]当监听到所述消息队列中的所述测试消息时,提取所述测试消息;
[0008]根据所述测试消息在所述测试数据库中查找到对应的测试数据;
[0009]读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。
[0010]在一些实施例中,读取所述测试数据之后,还包括:
[0011]将所述测试数据进行拆分,获得至少两个接口的测试请求,并且每个接口的测试请求包括接口的地址、并发数以及循环次数;
[0012]根据所述至少两个接口的测试请求,分别向指定的接口发送测试请求。
[0013]在一些实施例中,根据所述测试消息在所述测试数据库中查找到对应的测试数据之后,还包括:
[0014]根据测试数据的字段,判断所述测试数据是否完整;
[0015]根据判断结果,若完整则读取所述测试数据;若不完整则将所述测试数据库中的所述测试数据标记为无法测试,不执行所述测试指令。
[0016]在一些实施例中,获取所述指定接口返回的数据之后,还包括:
[0017]将所述测试数据库中的所述测试数据标记为完成测试;
[0018]将所述返回的数据存储到预设的结果数据库中;其中,所述结果数据库中存储有测试指令信息与执行所述测试指令返回的数据的对应关系。
[0019]在一些实施例中,所述测试消息包括测试指令名称、开始时间以及完成时间;提取所述测试消息之后,还包括:
[0020]获取所述测试消息中的开始时间,启动监测进程;
[0021]当监测到当前时间为所述的开始时间时,获取完成时间,并按照所述完成时间执行所述测试消息。
[0022]在另一方面,本发明还提供了一种混合接口性能测试装置,包括:
[0023]消息生成单元,用于接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中;根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中;其中,所述测试指令包括向至少两个接口的测试数据;
[0024]测试数据获取单元,用于当监听到所述消息队列中的所述测试消息时,提取所述测试消息;根据所述测试消息在所述测试数据库中查找到对应的测试数据;
[0025]测试执行单元,用于读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。
[0026]在一些实施例中,所述测试执行单元读取所述测试数据之后,还用于:
[0027]将所述测试数据进行拆分,获得至少两个接口的测试请求,并且每个接口的测试请求包括接口的地址、并发数以及循环次数;
[0028]根据所述至少两个接口的测试请求,分别向指定的接口发送测试请求。
[0029]在一些实施例中,所述测试执行单元根据所述测试消息在所述测试数据库中查找到对应的测试数据之后,还用于:
[0030]根据测试数据的字段,判断所述测试数据是否完整;
[0031]根据判断结果,若完整则读取所述测试数据;若不完整则将所述测试数据库中的所述测试数据标记为无法测试,不执行所述测试指令。
[0032]在一些实施例中,所述测试执行单元获取所述指定接口返回的数据之后,还用于:
[0033]将所述测试数据库中的所述测试数据标记为完成测试;
[0034]将所述返回的数据存储到预设的结果数据库中;其中,所述结果数据库中存储有测试指令信息与执行所述测试指令返回的数据的对应关系。
[0035]在一些实施例中,所述测试消息包括测试指令名称、开始时间以及完成时间;所述测试执行单元提取所述测试消息之后,还用于:
[0036]获取所述测试消息中的开始时间,启动监测进程;
[0037]当监测到当前时间为所述的开始时间时,获取完成时间,并按照所述完成时间执行所述测试消息。
[0038]从上面所述可以看出,本发明提供的混合接口性能测试方法和装置,通过接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中;根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中。当监听到所述消息队列中的所述测试消息时,根据所述测试消息在所述测试数据库中查找到对应的测试数据。之后,读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。从而,本发明能够实现按照实际线上接口服务的需求进行测试,做到混合接口的压测占比基本符合线上服务真实请求比例。
【附图说明】
[0039]图1为本发明第一实施例中混合接口性能测试方法流程示意图;
[0040]图2为本发明可参考实施例中混合接口性能测试方法流程示意图;
[0041]图3为本发明实施例中混合接口性能测试装置的结构示意图。
【具体实施方式】
[0042]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0043]需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一” “第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0044]参阅图1所示,为本发明第一实施例中混合接口性能测试方法流程示意图,可以应用于服务器端,所述混合接口性能测试方法包括:
[0045]步骤101,接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中。
[0046]在实施例中,可以接收各个终端发送的测试指令。其中,所述的测试指令包括向至少两个接口的测试数据,即一个测试指令可以包括混合接口的测试任务。较佳地,通过解析测试指令可以获得注册成功的用户通过终端设置的测试数据。可以看出,在实施例中的测试数据是由用户动态设置的,不是预设、固有的。因此,根据接口的不同服务情况,可以动态设置其测试的数据。
[0047]优选地,可以将所述测试指令的名称以及解析得到的测试数据一起存储到预设的测试数据库中。其中,所述的测试数据库为预先设置,并专门存储每个测试指令的测试数据。
[0048]步骤102,根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中。
[0049]作为一个实施例,可以根据所述的测试指令生成测试消息,而所述的测试消息可以包括测试指令名称、开始时间以及完成时间。其中,所述测试指令具有唯一的测试指令名称。所述的开始时间为执行所述测试消息的开始时间,而所述的完成时间是规定了必须在到达该完成时间点之前执行完所述测试指令。较佳地,所述的开始时间和完成时间从测试指令中获得,即可以由用户自己设置。当然,也可以预先设置好的,例如:所述开始时间可以为获得测试指令的时间点延时两分钟之后的时间点,所述结束时间可以为开始时间延时三分钟之后的时间点。因此,本发明可以设置测试数据的执行情况,使得整个测试过程更具灵活性。
[0050]另外,所述的测试消息还可以包括该测试指令是第几次运行。也就是说,所述的测试指令还可以多次反复运行,而次数可以根据实际需要任意设置。
[0051 ]步骤103,当监听到所述消息队列中的所述测试消息时,提取所述测试消息。
[0052]在一个较佳地实施例中,提取所述测试消息之后,可以获取所述测试消息中的开始时间,然后启动监测进程。当监测到当前时间为所述的开始时间时,则获取完成时间,并按照所述完成时间执行所述测试消息。因此,该实施例可以严格执行设置的测试过程,保证测试的准确性。
[0053]其中,可以当监测到当前时间为所述的开始时间时,按照所述完成时间执行步骤104和步骤105。另外,也可以先执行步骤104,当监测到当前时间为所述的开始时间时,按照所述完成时间执行步骤105。即,一种是将为测试做准备的步骤104包括到从开始时间到完成时间内,一种是将为测试做准备的步骤104不包括到从开始时间到完成时间内。两种方式在实施该方法时都可以,根据实际需要选择其一。
[0054]步骤104,根据所述测试消息在所述测试数据库中查找到对应的测试数据。
[0055]在一个实施例中,可以通过所述测试消息中的测试指令名称在所述测试数据库中查找对应的测试数据。较佳地,可以对获得的测试数据进行检测,判断是否符合测试规则,通过这种方式可以将恶意降低测试效果的测试指令排出之外,且提高本发明测试方法的效率。具体的实施过程包括:
[0056]获取测试数据的字段,然后判断所述测试数据的字段是否完整。根据判断结果,若所述测试数据的字段完整,则执行步骤105。若所述测试数据的字段不完整,则将所述测试数据库中的所述测试数据标记为无法测试(其中,为了标记简便,可以将无法测试标记为“O”),并且退出该流程。
[0057]优选地,所述的测试数据包括至少两个接口的地址、并发数以及循环次数,字段设置规则为接口的地址、并发数、循环次数、接口的地址、并发数、循环次数等等连续排列。例如:www.1e.com、3、100、www.tv.1e.com、5、100。而判断所述测试数据的字段是否完整时,只要判断字段的数量是否是3的倍数即可。
[0058]步骤105,读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。
[0059]在实施例中,由于所述测试数据中包括至少两个接口的测试数据,所以可以对读取的所述测试数据进行拆分,获得至少两个接口的测试请求。其中,每个接口的测试请求包括该接口的地址、并发数以及循环次数。然后,根据每个测试请求,分别向指定的接口发送测试请求,即实现了同时可以执行该测试指令中的至少两个接口(混合接口)的测试请求。
[0060]较佳地,当接收到所述指定接口返回的数据之后,可以将所述测试数据库中的对应的测试数据标记为完成测试。其中,为了标记简便,可以将完成测试标记为“I”。因此,在执行完一个本发明的流程之后可以对所述测试数据库中的一个测试数据进行标记(无论是标记“O”还是“I” ),从而可以记录该条测试数据已经被执行,以防重复读取测试数据进行测试。
[0061]另外,还可以将所述返回的数据存储到预设的结果数据库中,以便调取所述返回数据进行展示或进一步分析处理。其中,所述的结果数据库可以存储有测试指令信息与执行所述测试指令返回的数据的对应关系。优选地,所述的测试指令信息可以为测试指令的名称,即一个测试指令名称对应有至少两组返回数据。
[0062]还需要说明的是,为了使返回的数据可以更为直接的展示给用户,可以针对返回的数据进行分析,并制作成图表等等容易理解的形式。
[0063]作为一个可参考的实施例,参阅图2所示,所述混合接口性能测试方法具体可采用如下步骤:
[0064]步骤201,接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中。其中,所述测试指令包括向至少两个接口的测试数据。
[0065]步骤202,根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中。
[0066]步骤203,当监听到所述消息队列中的所述测试消息时,提取所述测试消息。
[0067]步骤204,根据所述测试消息在所述测试数据库中查找到对应的测试数据。
[0068]步骤205,根据测试数据的字段,判断所述测试数据是否完整,若完整则进行步骤207,否则进行步骤206。
[0069 ]步骤206,将所述测试数据库中的所述测试数据标记为无法测试,退出该流程。
[0070]步骤207,读取所述测试数据,进行步骤208。
[0071]步骤208,将所述测试数据进行拆分,获得至少两个接口的测试请求。其中,每个接口的测试请求包括接口的地址、并发数以及循环次数。
[0072]步骤209,根据所述至少两个接口的测试请求,分别向指定的接口发送测试请求。
[0073]步骤210,获取所述指定接口返回的数据。
[0074]步骤211,将所述测试数据库中的所述测试数据标记为完成测试,并将所述返回的数据存储到预设的结果数据库中。
[0075]其中,所述结果数据库中存储有测试指令信息与执行所述测试指令返回的数据的对应关系。
[0076]作为另一个可参考的实施例,所述的测试消息可以包括测试指令名称、开始时间以及完成时间。而为了严格执行设置的测试过程,保证测试的准确性。在执行步骤203之后还可以获取所述测试消息中的开始时间,启动监测进程。然后,当监测到当前时间为所述的开始时间时,获取完成时间,并按照所述完成时间执行所述测试消息。其中,执行所述测试消息的过程可以包括步骤204至步骤211。还可以在监测到当前时间为所述的开始时间之前完成步骤204至步骤208,当监测到当前时间为所述的开始时间之后执行步骤209至步骤211。还可以在监测到当前时间为所述的开始时间之前完成步骤204至步骤206,当监测到当前时间为所述的开始时间之后执行步骤207至步骤211。因此,可以根据实际测试情况,进行设置。
[0077]在本发明的另一方面,还提供了一种混合接口性能测试装置,如图3所示,所述混合接口性能测试装置包括依次连接的消息生成单元301、测试数据获取单元302和测试执行单元303。其中,消息生成单元301接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中。根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中。测试数据获取单元302当监听到所述消息队列中的所述测试消息时,提取所述测试消息,根据所述测试消息在所述测试数据库中查找到对应的测试数据。然后,测试执行单元303读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。
[0078]在一个较佳地实施例中,由于所述测试数据中包括至少两个接口的测试数据,所述测试执行单元303可以对读取的所述测试数据进行拆分,获得至少两个接口的测试请求。其中,每个接口的测试请求包括该接口的地址、并发数以及循环次数。然后,根据每个测试请求,分别向指定的接口发送测试请求,即实现了同时可以执行该测试指令中的至少两个接口(混合接口)的测试请求。
[0079]在一个优选地实施例中,所述测试执行单元303可以对获得的测试数据进行检测,判断是否符合测试规则,通过这种方式可以将恶意降低测试效果的测试指令排出之外,且提高本发明测试方法的效率。具体的实施过程包括:
[0080]获取测试数据的字段,然后判断所述测试数据的字段是否完整。根据判断结果,若所述测试数据的字段完整,则继续进行测试任务。若所述测试数据的字段不完整,则将所述测试数据库中的所述测试数据标记为无法测试(其中,为了标记简便,可以将无法测试标记为“O”),不再进行测试任务。
[0081]更进一步地,所述的测试数据包括至少两个接口的地址、并发数以及循环次数,字段设置规则为接口的地址、并发数、循环次数、接口的地址、并发数、循环次数等等连续排列。例如:www.le.com、3、100、www.tv.1e.com、5、100。而判断所述测试数据的字段是否完整时,只要判断字段的数量是否是3的倍数即可。
[0082]另外,所述测试执行单元303当接收到所述指定接口返回的数据之后,可以将所述测试数据库中的对应的测试数据标记为完成测试。其中,为了标记简便,可以将完成测试标记为“I”。因此,在执行完一个本发明的流程之后可以对所述测试数据库中的一个测试数据进行标记(无论是标记“O”还是“I”),从而可以记录该条测试数据已经被执行,以防重复读取测试数据进行测试。
[0083]作为本装置的另一个实施例,所述测试消息可以包括测试指令名称、开始时间以及完成时间。其中,所述测试指令具有唯一的测试指令名称。所述的开始时间为执行所述测试消息的开始时间,而所述的完成时间是规定了必须在到达该完成时间点之前执行完所述测试指令。较佳地,所述的开始时间和完成时间从测试指令中获得,即可以由用户自己设置。当然,也可以预先设置好的。
[0084]另外,所述的测试消息还可以包括该测试指令是第几次运行。也就是说,所述的测试指令还可以多次反复运行,而次数可以根据实际需要任意设置。
[0085]较佳地,所述测试执行单元303提取所述测试消息之后,可以获取所述测试消息中的开始时间,然后启动监测进程。当监测到当前时间为所述的开始时间时,则获取完成时间,并按照所述完成时间执行所述测试消息。因此,该实施例可以严格执行设置的测试过程,保证测试的准确性。
[0086]需要说明的是,在本发明所述的混合接口性能测试装置的具体实施内容,在上面所述的混合接口性能测试方法中已经详细说明了,故在此重复内容不再说明。
[0087]综上所述,本发明提供的混合接口性能测试方法和装置,创造性地提供了根据线上接口服务的实际情况,获得接口的压测占比;同时,接口的压测占比更接近线上真实服务接收的请求比例;而且,能同时完成混合接口的压测任务;从而,本发明具有广泛、重大的推广意义;最后,整个所述混合接口性能测试方法和装置紧凑,易于控制。
[0088]所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0089]另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
[0090]尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0091]本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种混合接口性能测试方法,其特征在于,包括步骤: 接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中;根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中;其中,所述测试指令包括向至少两个接口的测试数据; 当监听到所述消息队列中的所述测试消息时,提取所述测试消息; 根据所述测试消息在所述测试数据库中查找到对应的测试数据; 读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。2.根据权利要求1所述的方法,其特征在于,读取所述测试数据之后,还包括: 将所述测试数据进行拆分,获得至少两个接口的测试请求,并且每个接口的测试请求包括接口的地址、并发数以及循环次数; 根据所述至少两个接口的测试请求,分别向指定的接口发送测试请求。3.根据权利要求1所述的方法,其特征在于,根据所述测试消息在所述测试数据库中查找到对应的测试数据之后,还包括: 根据测试数据的字段,判断所述测试数据是否完整; 根据判断结果,若完整则读取所述测试数据;若不完整则将所述测试数据库中的所述测试数据标记为无法测试,不执行所述测试指令。4.根据权利要求3所述的方法,其特征在于,获取所述指定接口返回的数据之后,还包括: 将所述测试数据库中的所述测试数据标记为完成测试; 将所述返回的数据存储到预设的结果数据库中;其中,所述结果数据库中存储有测试指令信息与执行所述测试指令返回的数据的对应关系。5.根据权利要求1至4任意一项所述的方法,其特征在于,所述测试消息包括测试指令名称、开始时间以及完成时间;提取所述测试消息之后,还包括: 获取所述测试消息中的开始时间,启动监测进程; 当监测到当前时间为所述的开始时间时,获取完成时间,并按照所述完成时间执行所述测试消息。6.一种混合接口性能测试装置,其特征在于,包括: 消息生成单元,用于接收测试指令,将从所述测试指令中解析的测试数据存储到预设的测试数据库中;根据所述测试指令生成测试消息,将所述测试消息添加到预设的消息队列中;其中,所述测试指令包括向至少两个接口的测试数据; 测试数据获取单元,用于当监听到所述消息队列中的所述测试消息时,提取所述测试消息;根据所述测试消息在所述测试数据库中查找到对应的测试数据; 测试执行单元,用于读取所述测试数据生成测试请求,向所述测试请求指定的接口发送所述测试请求,获取所述指定接口返回的数据。7.根据权利要求6所述的装置,其特征在于,所述测试执行单元读取所述测试数据之后,还用于: 将所述测试数据进行拆分,获得至少两个接口的测试请求,并且每个接口的测试请求包括接口的地址、并发数以及循环次数; 根据所述至少两个接口的测试请求,分别向指定的接口发送测试请求。8.根据权利要求6所述的装置,其特征在于,所述测试执行单元根据所述测试消息在所述测试数据库中查找到对应的测试数据之后,还用于: 根据测试数据的字段,判断所述测试数据是否完整; 根据判断结果,若完整则读取所述测试数据;若不完整则将所述测试数据库中的所述测试数据标记为无法测试,不执行所述测试指令。9.根据权利要求8所述的装置,其特征在于,所述测试执行单元获取所述指定接口返回的数据之后,还用于: 将所述测试数据库中的所述测试数据标记为完成测试; 将所述返回的数据存储到预设的结果数据库中;其中,所述结果数据库中存储有测试指令信息与执行所述测试指令返回的数据的对应关系。10.根据权利要求6至9任意一项所述的装置,其特征在于,所述测试消息包括测试指令名称、开始时间以及完成时间;所述测试执行单元提取所述测试消息之后,还用于: 获取所述测试消息中的开始时间,启动监测进程; 当监测到当前时间为所述的开始时间时,获取完成时间,并按照所述完成时间执行所述测试消息。
【文档编号】G06F11/26GK106021055SQ201610352942
【公开日】2016年10月12日
【申请日】2016年5月25日
【发明人】康丽敏
【申请人】乐视控股(北京)有限公司, 乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1