一种代码性能测试的方法和装置与流程

文档序号:13941034阅读:190来源:国知局

本发明涉及计算机及其软件技术领域,特别地涉及一种代码性能测试的方法和装置。



背景技术:

随着互联网电商的高速发展,对后台系统的性能要求越来越高,大型电商系统一旦出现性能问题,不但给用户购物造成不便,而且会造成直接的经济损失,性能问题对整个电商品牌造成的冲击更是无法衡量的,甚至让用户怀疑公司的技术支撑能力,而性能测试作为评估系统性能的有效手段,也上升到了越来越重要的位置。

传统的性能测试需要更新版本、部署环境、准备性能测试程序、性能压测(即性能压力测试)、性能测试结果数据收集、性能测试结果数据分析等,而这其中的每个环节都是孤立的,需要由人工操作,操作完成之后再进行下一个环节的操作,人力参与程度过高,造成人力浪费和人力操作的风险增大,数据分析困难,不能有效直接地反馈版本之间的差异。此外,版本更新、版本部署、性能测试执行过程中配置项非常多,例如版本更新中的容器配置、数据库配置、缓存配置、集群配置等,如果有一处配置出错,分析定位错误就需要花费大量的时间。并且,性能测试结果数据搜集之后,对结果数据进行分析,需要借助相关的生成工具生成曲线图或者图表之后观察数据趋势和异常,结合趋势和异常分析可能存在的性能问题。

综上所述,现有技术存在如下不足:一是版本是否更新、版本构建、应用部署、测试程序调用、测试数据分析及报表生成等,每个环节之间的衔接切换都需要人力操作参与,耗费人力资源;二是生成测试数据过程繁琐,需要切换不同的脚本程序执行;三是不能自动分析压测完成后的数据,并在分析的基础上形成结论,人力参与环节过多,造成每个环节人为出错的风险增大。

可见,亟需一套能在性能测试的全部环节实现自动化的方案。



技术实现要素:

有鉴于此,本发明提供一种代码性能测试的方法和装置,能够实现各环节的一站式的全流程自动化,实现敏捷项目下的版本迭代自动性能测试,并自动智能分析测试结果数据,智能判断性能测试是否满足需求,可以非常直观地通过图形化界面快速发现不同版本之间的性能差异和异常的数据,并实时通知相关人员处理,让测试人员从繁琐复杂的数据分析中解脱出来,减少人力干预成本,并降低人力参与出错的风险,实现项目高效率迭代性能测试。

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

一种代码性能测试的方法,当满足预定的触发条件,检查被测代码是否有更新,所述被测代码与测试配置文件相关联,所述测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案;当所述被测代码有更新,则启动对所述被测代码的测试,所述测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值;输出所得到的各被测性能指标的测试值。

可选地,所述触发条件包括下述之一:周期性时间点;接收到测试指令。

可选地,每个所述测试方案利用对应的脚本来执行。

可选地,所述测试方案在相应的应用服务器上执行。

可选地,所述测试参数包括应用服务器配置参数、数据库配置参数、缓存配置参数、集群配置参数。

可选地,输出所得到的各被测性能指标的测试值包括对所述测试值进行各种对照展示。

可选地,输出所得到的各被测性能指标的测试值包括把得到的测试值与预定的阈值比较,当超出所述阈值时,发出报警消息。

根据本发明的另一方面,提供了一种代码性能测试的装置。

一种代码性能测试的装置,包括:检查模块,用于当满足预定的触发条件,检查被测代码是否有更新,所述被测代码与测试配置文件相关联,所述测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案;测试模块,用于当所述被测代码有更新时,则启动对所述被测代码的测试,所述测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值;输出模块,用于输出所得到的各被测性能指标的测试值。

可选地,所述触发条件包括下述之一:周期性时间点;接收到测试指令。

可选地,每个所述测试方案利用对应的脚本来执行。

可选地,所述测试模块还用于:在相应的应用服务器上执行所述测试方案。

可选地,所述测试参数包括应用服务器配置参数、数据库配置参数、缓存配置参数、集群配置参数。

可选地,所述输出模块还用于:对所述测试值进行各种对照展示。

可选地,所述输出模块还用于:把得到的测试值与预定的阈值比较,当超出所述阈值时,发出报警消息。

根据本发明的再一方面,提供了一种代码性能测试的装置。

一种代码性能测试的装置,包括:存储器和处理器,其中,所述存储器存储指令;所述处理器执行所述指令用于:当满足预定的触发条件,检查被测代码是否有更新,所述被测代码与测试配置文件相关联,所述测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案;当所述被测代码有更新,则启动对所述被测代码的测试,所述测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值;输出所得到的各被测性能指标的测试值。

根据本发明的技术方案,当满足预定的触发条件,检查被测代码是否有更新,其中,被测代码与测试配置文件相关联,测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案,当被测代码有更新,则启动对被测代码的测试,测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值,最后,输出所得到的各被测性能指标的测试值。使用本发明的技术方案,能够实现版本构建、部署环境、性能压测、性能测试结果数据收集、性能测试结果数据分析、版本性能指标变化、是否满足性能测试需求的一站式各环节的全流程自动化,一键式解决性能测试环境的部署工作。实现敏捷项目下的版本迭代自动性能测试,并自动智能分析测试结果数据,智能判断性能测试是否满足需求,给出性能测试结论,对测试结果数据形成报表,可以非常直观地通过图形化界面快速发现不同版本之间的性能差异和异常的数据,并实时通知相关人员处理,让测试人员从繁琐复杂的数据分析中解脱出来,减少人力干预成本,并降低人力参与出错的风险,实现项目高效率迭代性能测试。

附图说明

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

图1是根据本发明实施例的代码性能测试的方法的主要步骤示意图;

图2是根据本发明实施例的代码性能测试的初始测试配置的流程示意图;

图3是根据本发明实施例的代码性能压力测试服务的流程示意图;

图4是根据本发明实施例的代码性能测试的测试值分析服务的流程示意图;

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

具体实施方式

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

图1是根据本发明实施例的代码性能测试的方法的主要步骤示意图。

如图1所示,本发明实施例的代码性能测试的方法主要包括如下的步骤s11至步骤s13。

步骤s11:当满足预定的触发条件,检查被测代码是否有更新。

其中,触发条件包括如下的其中之一:周期性时间点以及接收到测试指令。

被测代码与测试配置文件相关联,且测试配置文件主要包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案,每个测试方案可利用对应的脚本来执行。测试参数具体可以包括:应用服务器配置参数、数据库配置参数、缓存配置参数、集群配置参数。

步骤s12:当被测代码有更新,则启动对被测代码的测试,该测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值。

其中,测试方案可以在相应的应用服务器上执行。

步骤s13:输出所得到的各被测性能指标的测试值。

其中,输出所得到的各被测性能指标的测试值可以包括对测试值进行各种对照展示,还可以包括把得到的测试值与预定的阈值比较,并在超出该预定的阈值时,发出报警消息。

下面结合图2、图3、图4进一步详细地介绍本发明实施例的代码性能测试的方法的实施流程。

图2是本发明实施例的代码性能测试的初始测试配置的流程示意图。如图2所示,该初始测试配置的流程主要包括步骤s21至步骤s26。

步骤s21:检查被测代码是否有更新,若是,则执行步骤s22,否则执行步骤s26。

可在满足预定的触发条件时开始检查被测代码是否有更新,该触发条件可以是接收到测试指令,或者,达到一个周期性时间点,例如,每天晚上零点(24:00)检测代码是否有更新。

检查被测代码是否有更新包括检查git(代码仓库)中的被测代码的主干及分支代码是否更新,还包括检查被测代码的版本号是否更新,例如检查版本的哈希值(hash值)。

步骤s22:根据被测代码生成用于测试的可执行包。

利用git(代码仓库)从代码服务器获取被测代码,通过版本管理工具(例如maven)将被测代码打包生成用于测试的可执行包。

步骤s23:判断生成可执行包是否成功,若是,则执行步骤s24,否则,执行步骤s26。

步骤s24:生成进行代码性能测试所需的测试配置文件。

生成测试配置文件主要是配置测试参数和配置被测性能指标。其中,测试参数具体可以包括:应用服务器配置参数、数据库配置参数、缓存配置参数、集群配置参数。配置测试参数是根据测试的需要,将可执行包中的应用服务器、数据库、缓存、集群等被测代码的线上配置信息更新为代码性能测试时所需要的配置,然后保存这些配置的参数值。上述测试参数也可以灵活调整,以满足不同时段、不同场景下对测试配置文件的需要。配置被测性能指标可用户需求灵活设置被测性能指标,配置好该指标之后,在后续执行测试方案时将对被测代码中的这些被测性能指标进行测试。应用服务器例如apachetomcat(一种用于部署应用的web容器(服务程序))。

步骤s25:获取各应用服务器的信息,并将可执行包推送到各个应用服务器进行应用实例部署。

对可执行包形式的被测对象执行代码性能测试主要是在各个应用服务器中执行,多个应用服务器构成集群,并且集群的每个节点为一个应用服务器。通过持续集成工具(例如jenkins)调用linux操作系统后台的shell程序,shell程序首先读取被测系统的集群节点的信息(如所对应的应用服务器(如apachetomcat),集群节点数、节点ip、节点路径等),然后会通过循环逻辑使用scp命令(linux中的文件传输命令)将可执行包推送到集群的每个节点(应用服务器),并使用ssh(secureshell,一种安全协议)登录到应用服务器,停止和重启应用服务以完成应用实例的部署。

步骤s26:发送通知消息。

当被测代码无更新或者生成可执行包的操作失败,将以邮件等形式向相关的测试人员发送通知消息,以便尽快进行人工处理。

完成上述的初始测试配置,也就完成了集群性能测试环境的部署,然后在相应的应用服务器中即可进行性能压测服务,并且性能压测服务只需按照上述的初始测试配置进行,无需人工干预。

图3是根据本发明实施例的代码性能压力测试服务的流程示意图。

如图3所示,本发明实施例的代码性能压力测试服务流程主要包括如下的步骤s31至步骤s34。

步骤s31:通过预先编制的脚本来进行探测测试。

在完成了初始测试配置之后,运行被测代码,并调用shell程序来执行预先编制的脚本(例如所有预存的jmeter测试用例脚本)以进行探测测试,探测测试主要是对所有的接口进行一次测试,根据各个接口测试所得到的返回值可确定各个接口的性能是否满足要求。例如,测试接口a,由于接口a所依赖的应用服务器配置参数、数据库配置参数、缓存配置参数、集群配置参数等测试参数已经在初始测试配置的流程中配置好,那么,执行探测测试时,只需从被测代码所属的系统的服务器上请求该接口a的信息,通过接口a的信息就可以得到a所依赖的上述测试参数的信息,然后执行探测测试,根据返回值确定该接口a的相关代码是否能正常运行,例如接口a的关联网页是否能打开等。

步骤s32:分析探测测试的结果,并根据被测性能指标生成对应的测试方案。

分析探测测试的结果主要包括:在探测测试完成后,把通过探测测试用例的用例名和测试结果按照规则写入到临时文件,对该临时文件进行解析。进行上述解析之后,根据被测性能指标抽取出需要的参数数据,重新生成测试用例脚本,例如,性能压测(性能压力测试)是使用jmeter(apachejmeter,为一种性能压测工具)压测,则测试用例脚本需按照jmeter压测的规则(比如命令执行格式,以及压测脚本中的线程数、压测时间、压测数据等),生成性能场景,然后根据预先设置的被测性能指标生成对应的测试方案。测试方案具体包括测试脚本和用于执行测试脚本的命令,还可以包括对并发数等被测性能指标的更改等信息。

步骤s33:执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值。

执行性能测试方案的过程还包括,根据测试方案的执行时间调用一个shell循环脚本对磁盘进行监控,并实时清理大于设定阀值的日志,以防止磁盘空间写满后续测试方案无法正常执行。

步骤s34:将得到的测试值推送到性能分析服务程序所在的物理路径。

得到的每组测试值被实时地重定向到数据文件中,以便在执行完该压力测试之后,将测试值以数据文件的形式推送到测试值分析服务程序所在的物理路径以便进一步地分析处理测试值。

图4是根据本发明实施例的代码性能测试的测试值分析服务的流程示意图。

如图4所示,本发明实施例的代码性能测试的测试值分析服务流程主要包括如下的步骤s41至步骤s42。

步骤s41:保存推送过来的测试值。

具体地,把推送过来的数据文件(其中包含测试值)按照所需要的字段抽取数据,并使用python脚本将抽取的数据存入数据库。

步骤s42:对测试值进行分析预警和对照展示。

对测试值进行分析预警,具体可以包括:设置预定的阈值,并从数据库中抽出测试值的一些指标,例如tps(系统吞吐量)、响应时间等指标,将测试值与预定的阈值比较,并在超出该预定的阈值时,发出报警消息。超出预定的阈值说明所测代码的性能不满足需求,可通过触动报警邮件等方式发出报警消息,以便通知对应的测试人员尽快处理。

对测试值进行对照展示,主要可通过四个维度进行对照展示,具体分为:混合场景、接口方法、多接口汇总、不同代码版本。其中,通过混合场景对照展示,例如对照展示不同接口或不同测试时间的测试值,以便确定测试值之间数据变化、存在的性能问题等,从而得出被测代码性能的差异。通过接口方法进行对照展示主要是展示测试单条接口数据的测试值。通过多接口汇总对照展示主要是展示多接口汇总的数据的测试值。通过不同代码版本对照展示,主要是展示不同被测代码的版本所得的测试值。测试人员可以根据上述对照展示的结果的变化趋势及异常情况,快速分析出可能存在的性能问题。

通过上述图2、图3、图4中的初始测试配置、压力测试服务、测试值分析服务等流程,实现自动打包被测代码、性能测试环境的自动部署、性能测试自动执行、性能测试结果数据(测试值)的智能分析等整个性能测试过程,测试人员只需配置好测试方案的前置条件,方案执行过程中实现了测试人员的零参与。

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

如图5所示,本发明实施例的代码性能测试的装置50主要包括:检查模块51、测试模块52、输出模块53。其中,检查模块51用于当满足预定的触发条件,检查被测代码是否有更新,被测代码与测试配置文件相关联,测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案;测试模块52用于当被测代码有更新时,则启动对被测代码的测试,该测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值;输出模块53用于输出所得到的各被测性能指标的测试值。

其中,触发条件包括下述之一:周期性时间点、接收到测试指令。

测试参数可以包括应用服务器配置参数、数据库配置参数、缓存配置参数、集群配置参数。

每个测试方案利用对应的脚本来执行。

测试模块52还可以用于在相应的应用服务器上执行测试方案。

输出模块53还可以用于对测试值进行各种对照展示,以及,用于把得到的测试值与预定的阈值比较,当超出该阈值时,发出报警消息。

本发明实施例的另一种代码性能测试的装置,主要包括:存储器和处理器,其中,存储器存储指令;处理器执行该指令用于:当满足预定的触发条件,检查被测代码是否有更新,被测代码与测试配置文件相关联,测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案;当被测代码有更新,则启动对被测代码的测试,该测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值;输出所得到的各被测性能指标的测试值。

根据本发明实施例的技术方案,当满足预定的触发条件,检查被测代码是否有更新,其中,被测代码与测试配置文件相关联,测试配置文件包括测试参数和被测性能指标,每个被测性能指标对应预设的测试方案,当被测代码有更新,则启动对被测代码的测试,测试包括执行每个被测性能指标对应的测试方案以得到该被测性能指标的测试值,最后,输出所得到的各被测性能指标的测试值。使用本发明实施例的技术方案,能够实现版本构建、部署环境、性能压测、性能测试结果数据收集、性能测试结果数据分析、版本性能指标变化、是否满足性能测试需求的一站式各环节的全流程自动化,一键式解决性能测试环境的部署工作。实现敏捷项目下的版本迭代自动性能测试,并自动智能分析测试结果数据,智能判断性能测试是否满足需求,给出性能测试结论,对测试结果数据形成报表,可以非常直观地通过图形化界面快速发现不同版本之间的性能差异和异常的数据,并实时通知相关人员处理,让测试人员从繁琐复杂的数据分析中解脱出来,减少人力干预成本,并降低人力参与出错的风险,实现项目高效率迭代性能测试。

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

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