自动化性能测试的方法、装置及系统与流程

文档序号:14325802阅读:278来源:国知局

本发明涉及计算机技术及软件领域,尤其涉及一种自动化性能测试的方法、装置及系统。



背景技术:

随着互联网用户逐渐增多,以及各种特殊事件引起的访问高峰,网络服务对性能的要求越来越高。其中,各类服务系统能够承受瞬间的高并发并且具有较高的响应速度是用户体验的关键,因此,对各服务系统的性能测试变得尤为重要。性能测试过程中会占用大量压力机(即测试资源,如物理服务器、docker等)。

通常情况下,测试人员接收到测试任务后,首先会去申请压力机,如果没有足够的测试资源,测试任务将不能执行。现有技术中性能测试的具体流程大致如下:

如图1所示,传统手工执行性能测试的过程一般需要如下步骤。申请压力机后,测试人员得到压力机的ip列表,测试时将ip输入到性能测试工具中执行。这些压力机从被申请,一直到测试计划全部完成才可释放,期间有大量的时间压力机处于空闲状态,这就会造成测试资源的浪费,从而导致其他项目没有足够的压力机。

当前,还有一些云测试或多人共享的自动化测试平台,可以实现在测试执行时才分配测试用压力机。在性能测试时,通常需要多台压力机。当存在某一台机器执行异常时,会造成测试失败(所发送的测试压力不足以达到测试效果),处于长时间的失败状态也会造成资源浪费。

此外,在发压时需要较多压力机作为资源池,目前缺乏一种自动择优分配压力机的策略。通常是按照测试任务申请的时间顺序分配压力机。当下一个待执行的测试任务申请不到压力机时,会阻塞测试进程,导致其它测试任务不能继续执行,造成资源浪费,如此,压力机集群cpu利用率依然处于较低水平。特别是在夜间无人值守时,有多个定时任务需要进行性能测试,如何有效的对测试任务进行调度才能按时完成测试任务是任务调度策略的关键。

综上所述,现有技术的性能测试存在如下缺陷:

1、手工执行性能测试过程中长期占用压力机,资源浪费;如果通过大量购买压力机来解决,则会造成资金浪费;

2、自动化平台自动执行性能测试时,容易造成测试错误不易发现、无效占用压力机情形的发生;

3、缺少一种测试任务的协调机制,导致压力机集群cpu使用率低。

如何防止压力机闲置,在有限的压力机资源下完成更多的性能测试任务,提高压力机集群cpu使用率,是提高性能测试效率的关键。



技术实现要素:

有鉴于此,本发明提供一种自动化性能测试的方法、装置及系统,能够避免压力机空闲占用,提高压力机集群的cpu使用率,减少因压力机不足而延误测试的时间,有效提高性能测试执行效率。

为实现上述目的,根据本发明的一个方面,提供了一种自动化性能测试的方法。

本发明的一种自动化性能测试的方法包括:将压力机加入资源池,将测试任务加入任务队列,并获取各测试任务需要的压力机台数;根据调度策略从任务队列中选择测试任务作为待测试任务,从资源池中选择相应台数的压力机分配给所述待测试任务,执行所述待测试任务的性能测试;当所述性能测试执行完毕后,释放压力机,分析所述性能测试结果,若所述性能测试结果正常,则所述待测试任务完成,若所述性能测试结果异常,则将脚本调试后的所述待测试任务重新加入到任务队列,等待执行;其中,在执行待测试任务的性能测试的过程中,对执行情况进行实时监控。

可选地,所述方法还包括:在执行所述待测试任务的性能测试之前,采用自动分发的形式将所述待测试任务的测试脚本分发到执行所述待测试任务的性能测试的压力机的设定路径下,以供所述压力机调用执行。

可选地,所述方法还包括:在执行所述待测试任务的性能测试之前,对所述待测试任务进行预测试。

可选地,根据调度策略从任务队列中选择测试任务作为待测试任务还包括:在先到先服务的顺序的基础上,利用贪心算法从任务队列中选择测试任务作为待测试任务,以保证尽可能多的压力机被用来执行待测试任务的性能测试。

可选地,利用贪心算法从任务队列中选择测试任务作为待测试任务还包括:若选择完成后,得到多组最优方案,则优先选用包括需要压力机台数多的单个测试任务的方案;以及若选择完成后,有顺序在先的测试任务未被选择,则下次选择前,增加所述测试任务权重,以便优先被选择。

为实现上述目的,根据本发明的另一方面,提供了一种自动化性能测试的装置。

本发明的一种自动化性能测试的装置包括:准备模块,用于将压力机加入资源池,将测试任务加入任务队列,并获取各测试任务需要的压力机台数;分配执行模块,用于根据调度策略从任务队列中选择测试任务作为待测试任务,从资源池中选择相应台数的压力机分配给所述待测试任务,执行所述待测试任务的性能测试;释放模块,用于当所述性能测试执行完毕后,释放压力机,分析所述性能测试结果,若所述性能测试结果正常,则所述待测试任务完成,若所述性能测试结果异常,则将脚本调试后的所述待测试任务重新加入到任务队列,等待执行;监控模块,用于在分配执行模块执行待测试任务的性能测试的过程中,对执行情况进行实时监控。

可选地,所述分配执行模块还用于:在执行所述待测试任务的性能测试之前,采用自动分发的形式将所述待测试任务的测试脚本分发到执行所述待测试任务的性能测试的压力机的设定路径下,以供所述压力机调用执行。

可选地,所述分配执行模块还用于:在执行所述待测试任务的性能测试之前,对所述待测试任务进行预测试。

可选地,所述分配执行模块还用于:在先到先服务的顺序的基础上,利用贪心算法从任务队列中选择测试任务作为待测试任务,以保证尽可能多的压力机被用来执行待测试任务的性能测试。

可选地,所述分配执行模块还用于:若选择完成后,得到多组最优方案,则优先选用包括需要压力机台数多的单个测试任务的方案;以及若选择完成后,有顺序在先的测试任务未被选择,则下次选择前,增加所述测试任务权重,以便优先被选择。

为实现上述目的,根据本发明的再一方面,提供了一种自动化性能测试的系统。

本发明的一种自动化性能测试的系统包括:存储器和处理器,其中,所述存储器用于存储指令;所述处理器被配置为根据所述指令执行下列动作:将压力机加入资源池,将测试任务加入任务队列,并获取各测试任务需要的压力机台数;根据调度策略从任务队列中选择测试任务作为待测试任务,从资源池中选择相应台数的压力机分配给所述待测试任务,执行所述待测试任务的性能测试;当所述性能测试执行完毕后,释放压力机,分析所述性能测试结果,若所述性能测试结果正常,则所述待测试任务完成,若所述性能测试结果异常,则将脚本调试后的所述待测试任务重新加入到任务队列,等待执行;其中,在执行待测试任务的性能测试的过程中,对执行情况进行实时监控。

根据本发明的技术方案,在性能测试的过程中,通过在测试任务执行时自动分配压力机,并且在测试任务执行完毕后即刻自动释放压力机,从而可以达到促进压力机的周转效率,提高压力机使用率,间接提高测试效率的目的;通过利用性能测试执行“耗时”、“分布式”的特性,增加测试脚本自动分发以及预测试、实时监控等的自动化检测机制,从而可以保障性能测试处于正常工作状态,提高自动化性能测试的准确率,减少压力机资源浪费;通过利用调度策略调度测试任务,从而可以提高压力机集群cpu利用率,并有效提高性能测试执行效率。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是现有技术手动执行性能测试的过程示意图;

图2是根据本发明实施例的自动化性能测试的方法的主要步骤的示意图;

图3是根据本发明实施例的自动化性能测试的方法的主要流程的示意图;

图4是根据本发明实施例的自动化性能测试的方法中向测试任务分配压力机的示意图;

图5是根据本发明实施例的自动化性能测试的装置的主要模块的示意图;

图6是根据本发明实施例的自动化性能测试的系统的主要部分的示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本发明实施例提出一种自动化性能测试的方法、装置及系统,可以:

1、动态分配压力机,防止压力机被一个测试任务长期空闲占用;

2、在自动化测试前和性能测试中增加监控,保证测试任务正常进行;

3、当同一时刻有多个性能测试需要执行时,自动做出筛选,选择压力机利用率最高的方案执行。

利用本发明实施例的技术方案执行性能测试可以有效地防止压力机闲置,在有限的压力机资源下完成更多的性能测试任务,提高压力机集群cpu使用率,减少资源浪费。用于自动化测试中,还可减少人为干预,节约人力成本。

图2是根据本发明实施例自动化性能测试的方法的主要步骤的示意图。

如图2所示,本发明实施例的自动化性能测试的方法主要包括如下步骤:

步骤s21:将压力机加入资源池,将测试任务加入任务队列,并获取各测试任务需要的压力机台数。

步骤s22:根据调度策略从任务队列中选择测试任务作为待测试任务,从资源池中选择相应台数的压力机分配给所述待测试任务,执行所述待测试任务的性能测试。

步骤s23:当所述性能测试执行完毕后,释放压力机,分析所述性能测试结果,若所述性能测试结果正常,则所述待测试任务完成,若所述性能测试结果异常,则将脚本调试后的所述待测试任务重新加入到任务队列,等待执行。

其中,在执行待测试任务的性能测试的过程中,对执行情况进行实时监控。

本发明实施例中,测试人员在执行测试前不需要申请测试压力机,只需要告知测试进程需要多少台压力机,而测试进程在执行测试时从压力机资源池中选取相应台数的压力机给当前测试任务独占使用。此时,其它测试任务不能再申请这些压力机。当测试任务执行结束后,测试进程回传log等测试信息。确保压力机再无遗留测试信息后,测试进程自动回收压力机,准备分配给其它测试任务。

采用此方法,当测试人员调试脚本或分析测试结果时,压力机可以被其他测试任务使用,提高压力机的占用率。

图3是根据本发明实施例的自动化性能测试的方法的主要流程的示意图。如图3所示,由于性能测试自身特点:相同测试点重复执行、多台测试压力机并发执行,因此,本发明实施例中,相比较一般自动化测试方案,除自动分配压力机外还包括:自动化测试前的自动分发脚本、预测试以及性能测试中的实时监控等监控机制。

其中,自动分发脚本实现过程如下:在性能测试前,通过tcp网络通信将脚本分发到压力机的设定路径下。当性能测试开始时,调用该脚本实现多台压力机并发的效果。

预测试实现过程如下:为保证性能测试脚本在多台压力机并发执行时,可以正常运行,需要提供预测试功能。其功能包括:分发脚本到预测试压力机上、执行并发测试、监控有无异常信息。预测试仅作为功能性验证,不会占用大量资源,因此可多个任务共享预测试压力机。

此外,测试过程中的实时监控为:当测试执行阶段,监控模块检查是否发生异常,当出现异常时向测试人员发送警告信息。发送方式包括不限于邮件、短信、即时通讯消息。监控内容包括不限于:被测对象工作状态、压力机系统资源占用情况、测试脚本内的断言和脚本运行情况。

通过预测试和实时监控,可以防止因脚本异常或者系统异常造成的无效性能测试占用压力机问题。

本发明实施例的自动化性能测试的方法实现过程中,除了性能测试执行时分配压力机之外,压力机如何动态分配也是本发明的核心点。压力机动态分配是指根据调度策略,采用一系列调度算法,灵活选择要执行的测试任务,并为测试任务分配压力机,以保证压力机集群的高占用率。其中,实现过程中包含监控压力机worker类以及任务监控worker类的两个重要脚本。

图4是根据本发明实施例的自动化性能测试的方法中向测试任务分配压力机的示意图。如图4所示,监控压力机worker用于从资源池中选择执行测试的压力机,并且定时检查是否有新的压力机空闲可用;任务监控worker用于从任务队列中选择要执行的任务,并且实时检查是否有新任务需要执行。

本发明实施例中,调度策略大致如下:采用贪心机制,在对测试任务进行先到先得分配压力机的基础上,对选择执行的顺序进行优化。具体包括:

1、如果在一次调度时,有多个任务申请压力机,则进行任务选择,保证尽可能多的压力机有测试任务执行,减少资源浪费。此过程有可能导致先申请的测试任务不能立即被执行,但在长时间的分配过程中,总执行时间有所减少,压力机集群的cpu使用率提升。

2、为了避免有测试任务长时间未分配压力机,调度策略还包括加权机制,即:如果首次调度时因为策略问题未分配压力机,则下一次选择时增加其权重保证优先分配压力机。

3、为了避免需要较多压力机的测试任务因策略2产生高优先级而阻塞分配队列,在策略1中,如果有多组最优方案,尽量优先执行包括需要压力机台数多的单个测试任务的方案。

其中,策略1中选择策略可转化为0-1背包问题来解决。即有n个任务和总个数为v的压力机资源池,第i个任务所占用压力机数为c[i],其价值权重为w[i]。首次选择时,w[i]=c[i],若一次选择未分配压力机,则其权重为w[i]=2*c[i]。

若第二次调度仍未分配到压力机,则启动阻塞机制,不再筛选,直到该任务分配到足够的压力机并执行测试。动态选择的问题转化为求解选择哪些任务分配压力机,可使得分配压力机个数不超过资源池总数v,并且价值权重最大(即所分配压力机最多,闲置最少)。

其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]},其中,f[i][v]表示前i个任务针对v个压力机所能达到的最大占用量。由此,可实现价值最大的压力机分配方案。根据策略3,当分配方案不唯一时,尽量选择c[i]较大的任务优先执行。

因为性能测试的执行时间不能确定,因此在先到先服务fcfs的基础上做了部分改进。此方法在有些特殊场景可能没有优化效果,但经过长时间的执行,压力机集群总体效果改善明显。

根据本发明实施例的自动化性能测试的方法可以看出,在性能测试的过程中,通过在测试任务执行时自动分配压力机,并且在测试任务执行完毕后即刻自动释放压力机,从而可以达到促进压力机的周转效率,提高压力机使用率,间接提高测试效率的目的;通过利用性能测试执行“耗时”、“分布式”的特性,增加测试脚本自动分发以及预测试、实时监控等的自动化检测机制,从而可以保障性能测试处于正常工作状态,提高自动化性能测试的准确率,减少压力机资源浪费;通过利用调度策略调度测试任务,从而可以提高压力机集群cpu利用率,并有效提高性能测试执行效率。

图5是根据本发明实施例的自动化性能测试的装置的主要模块的示意图。

如图5所示,本发明实施例的一种自动化性能测试的装置50主要包括如下模块:准备模块501、分配执行模块502、释放模块503以及监控模块504,其中,

准备模块501用于将压力机加入资源池,将测试任务加入任务队列,并获取各测试任务需要的压力机台数;分配执行模块502用于根据调度策略从任务队列中选择测试任务作为待测试任务,从资源池中选择相应台数的压力机分配给所述待测试任务,执行所述待测试任务的性能测试;释放模块503用于当所述性能测试执行完毕后,释放压力机,分析所述性能测试结果,若所述性能测试结果正常,则所述待测试任务完成,若所述性能测试结果异常,则将脚本调试后的所述待测试任务重新加入到任务队列,等待执行;监控模块504,用于在分配执行模块502执行待测试任务的性能测试的过程中,对执行情况进行实时监控。

其中,分配执行模块502还可用于在执行所述待测试任务的性能测试之前,采用自动分发的形式将所述待测试任务的测试脚本分发到执行所述待测试任务的性能测试的压力机的设定路径下,以供所述压力机调用执行。

分配执行模块502还可用于在执行所述待测试任务的性能测试之前,对所述待测试任务进行预测试。此外,分配执行模块502还用于在先到先服务的顺序的基础上,利用贪心算法从任务队列中选择测试任务作为待测试任务,以保证尽可能多的压力机被用来执行待测试任务的性能测试。

另外,分配执行模块502还可用于若选择完成后,得到多组最优方案,则优先选用包括需要压力机台数多的单个测试任务的方案;以及若选择完成后,有顺序在先的测试任务未被选择,则下次选择前,增加所述测试任务权重,以便优先被选择。

图6是根据本发明实施例的自动化性能测试的系统的主要部分的示意图。

如图6所示,本发明实施例的一种自动化性能测试的系统60包括:存储器601和处理器602,其中,所述存储器601用于存储指令;所述处理器602被配置为根据所述指令执行下列动作:将压力机加入资源池,将测试任务加入任务队列,并获取各测试任务需要的压力机台数;根据调度策略从任务队列中选择测试任务作为待测试任务,从资源池中选择相应台数的压力机分配给所述待测试任务,执行所述待测试任务的性能测试;当所述性能测试执行完毕后,释放压力机,分析所述性能测试结果,若所述性能测试结果正常,则所述待测试任务完成,若所述性能测试结果异常,则将脚本调试后的所述待测试任务重新加入到任务队列,等待执行;其中,在执行待测试任务的性能测试的过程中,对执行情况进行实时监控。

从以上描述可以看出,在性能测试的过程中,通过在测试任务执行时自动分配压力机,并且在测试任务执行完毕后即刻自动释放压力机,从而可以达到促进压力机的周转效率,提高压力机使用率,间接提高测试效率的目的;通过利用性能测试执行“耗时”、“分布式”的特性,增加测试脚本自动分发以及预测试、实时监控等的自动化检测机制,从而可以保障性能测试处于正常工作状态,提高自动化性能测试的准确率,减少压力机资源浪费;通过利用调度策略调度测试任务,从而可以提高压力机集群cpu利用率,并有效提高性能测试执行效率。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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