基于生产环境的系统容量测试方法及装置与流程

文档序号:21638122发布日期:2020-07-29 02:48阅读:362来源:国知局
基于生产环境的系统容量测试方法及装置与流程

本发明涉及系统测试领域,尤其涉及一种基于生产环境的系统容量测试方法及装置。



背景技术:

本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在当前信息化的背景下,大量业务可通过互联网提供服务。随着业务的不断推广,系统需要承受的业务量也越来越大。只有准确地提前评估出系统能够支撑的最大业务量,才能对系统有效地进行提前扩容,进而确保业务平稳运行且最大限度的合理利用系统资源。

目前,为了实现对系统容量的压力测试,现有技术采用的手段是建立一套与生产相对应的测试环境,其中,部署单元种类和个数等均参考生产环境(考虑到设备成本,测试环境的机器配置比生产环境略低),并按照如下步骤获取测试环境下系统的最大性能容量值:

①在测试环境部署与生产环境相同的应用版本;在数据库中预埋足量的数据,数据量级需与生产环境数据量级相同;

②对于不纳入测试范围的外部系统,部署外部系统模拟器,用于模拟应用访问外部系统服务时返回特定的响应报文;

③使用压力测试工具模拟生产业务场景发起交易请求以进行容量测试;

④收集测试结果,评估系统能够支撑的最大容量。

经分析,利用上述步骤获取的测试环境下的系统容量反映生产环境系统的真实系统容量,存在如下问题:由于测试环境的机器配置一般比生产环境小,使得测试环境的各个部署单元与生产环境不成比例,导致在测试环境对系统容量测试的结果无法同比例放大到生产环境,以评估生产环境系统真实的容量。而如果在测试环境采用与生产环境相同的机器配置,设备投入成本会很高。另外,由于测试环境与生产环境的网络拓扑结构和带宽的差异,都会使得测试环境得到的测试结果与生产环境真实系统容量存在较大偏差。

可见,测试环境的测试结果只能作为生产环境的参考,不能完全确定生产环境真实的性能容量值。由于这种误差的存在,若生产环境的交易量徒增,超过系统的真实性能容量,且没有对生产环境进行及时扩容,会导致生产环境的系统面临无法提供服务的风险。

为解决上述问题,现有技术采用如下两种方式来获取系统真实的性能容量:

第一种方式,将生产环境的流量导入测试环境进行流量回放。具体地,将生产环境上已经执行过的业务请求进行复制保存,拷贝至测试环境,当数据库中的相关测试数据就绪后,重新发起这部分业务请求,观察系统的性能表现。

第二种方式,在生产环境部署一个单独用于测试的单元。具体地,通过一个前置单元对交易的业务请求复制分流,将业务请求复制到该测试单元,观察该测试单元的表现。

经分析,上述第一种方式,由于发起的是真实交易的业务请求,能够模拟真实的业务环境,测试结果比较准确,但是,由于测试环境与生成环境的资源差异(例如,机器配置不同)导致测试环境的测试结果,无法反映系统在生产环境真实的性能容量。上述第二种方式,由于仅仅部分单元参与业务处理,仍然无法系统在生产环境真实的性能容量。

针对上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例中提供了一种基于生产环境的系统容量测试方法,用以解决现有的系统容量测试方法,是在测试环境部署一套与生产环境相同的应用系统来进行的,由于测试环境与生产环境的机器配置存在差异,使得在测试环境获得的测试结果无法反映真实生产环境的技术问题,该方法包括:对被测系统接收到的业务请求进行识别,其中,业务请求包括:真实的业务请求和压力测试请求;根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域;监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

本发明实施例中还提供了一种基于生产环境的系统容量测试装置,用以解决现有的系统容量测试方法,是在测试环境部署一套与生产环境相同的应用系统来进行的,由于测试环境与生产环境的机器配置存在差异,使得在测试环境获得的测试结果无法反映真实生产环境的技术问题,该装置包括:流量识别模块,用于对被测系统接收到的业务请求进行识别,其中,业务请求包括:真实的业务请求和压力测试请求;数据读取路由模块,用于根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域;系统容量测试模块,用于监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

本发明实施例中还提供了一种计算机设备,用以解决现有的系统容量测试方法,是在测试环境部署一套与生产环境相同的应用系统来进行的,由于测试环境与生产环境的机器配置存在差异,使得在测试环境获得的测试结果无法反映真实生产环境的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于生产环境的系统容量测试方法。

本发明实施例中还提供了一种计算机可读存储介质,用以解决现有的系统容量测试方法,是在测试环境部署一套与生产环境相同的应用系统来进行的,由于测试环境与生产环境的机器配置存在差异,使得在测试环境获得的测试结果无法反映真实生产环境的技术问题,该计算机可读存储介质存储有执行上述基于生产环境的系统容量测试方法的计算机程序。

本发明实施例中,基于生产环境对被测系统进行系统容量测试,通过在测试请求中添加标志的方式,在被测系统接收到业务请求后,对被测系统接收到的业务请求进行识别,以识别出真实的业务请求和压力测试请求,进而根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域,最后通过监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

通过本发明实施例,实现了在生产环境对被测试系统进行容量测试,获取的测试结果能够反映真实的系统容量,且通过将生产数据和测试数据进行隔离存储,避免了生产环境测试对正常业务的影响,在获取系统真实系统容量的同时,确保生产环境正常业务的平稳运行。

附图说明

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

图1为本发明实施例中提供的一种基于生产环境的系统容量测试方法流程图;

图2为本发明实施例中提供的一种基于生产环境对系统容量进行测试的具体实现流程图;

图3a为本发明实施例中提供的生产压测改造前某交易的响应时间示意图;

图3b为本发明实施例中提供的生产压测改造后某交易的响应时间示意图;

图4a为本发明实施例中提供的改造前压测时机器的cpu资源使用率示意图;

图4b为本发明实施例中提供的改造后压测时机器的cpu资源使用率示意图;

图5为本发明实施例中提供的一种基于生产环境的系统容量测试装置示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。

本发明实施例中提供了一种基于生产环境的系统容量测试方法,图1为本发明实施例中提供的一种基于生产环境的系统容量测试方法流程图,如图1所示,该方法可以包括如下步骤:

s101,对被测系统接收到的业务请求进行识别,其中,业务请求包括:真实的业务请求和压力测试请求。

需要说明的是,本发明实施例中被测系统可以是基于客户端访问的应用系统,也可以是基于浏览器访问的应用系统,且本发明实施例中被测系统是指真实对外提供服务的应用系统,也即生产环境的应用系统。

需要注意的是,本发明实施例旨在通过上述s101实现对业务请求的识别,以识别出哪些业务请求是真实的业务请求,哪些业务请求是压力测试请求。关于真实的业务请求与压力测试请求,可根据具体场景采用不同的识别方式。

通常,由于测试请求是有测试人员发送的,因而,对测试请求进行处理,实现起来更加容易,因而,可在应用系统对测试流量预先进行标记,以便根据测试流量的标记来识别应用系统中的测试流量。可选地,对测试流量添加的标记,也可以用于应用系统对测试流量进行传递。

一个实施例中,上述s101可以通过如下步骤来实现:对被测系统接收到的业务请求进行识别,包括:判断被测系统接收到的业务请求中是否包含httpheader自定义标签字段;如果被测系统接收到的业务请求中包含httpheader自定义标签字段,则确定被测系统接收到的业务请求为压力测试请求;如果被测系统接收到的业务请求中未包含httpheader自定义标签字段,则确定被测系统接收到的业务请求为真实的业务请求。

s102,根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域。

需要说明的是,由于本发明实施例中提供的系统容量测试方法,直接在生产环境进行,为了确保测试不会影响到正常业务,可将测试数据和生产数据隔离存储,在识别出测试请求和真实的业务请求后,将测试请求和和真实的业务请求分别路由至各自的数据存储区域。

具体地,上述s102可以通过如下步骤来实现:如果被测系统接收到的业务请求为真实的业务请求,则将被测系统接收到的业务请求路由至第一数据存储区域,其中,第一数据存储区域用于存储被测系统的生产数据;如果被测系统接收到业务请求为压力测试请求,则将被测系统接收到的业务请求路由至第二数据存储区域,其中,第二数据存储区域用于存储被测系统的测试数据。

可选地,本发明实施例在对业务请求进行识别后,可以采用设置标志位的方式,标识测试流量和生产流量,以便系统后续根据设置的标志位,将测试流量路由至测试数据存储区域(即第二数据存储区域),将生产流量路由至生产数据存储区域(即第一数据存储区域)。本发明实施例中,通过数据读取路由,确保测试流量和生产流量能够分别访问测试数据和生产数据。

s103,监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

需要说明的是,由于本发明实施例中,除了不参与测试的外部系统外,将生产环境被测系统所有部署单元均纳入测试中,且在对系统的压力测试过程中,测试请求的处理流程与生产环境真实的业务请求的处理流程几乎一致,因而,提供的测试结果能够反映真实的系统容量,克服了现有技术在测试环境实现系统容量测试时带来的多种弊端,进而为生产资源的扩容提供参考建议,最大效率地利用现有资源,保证生产系统平稳运行。且本发明实施例提供的基于生产环境的系统容量测试方法,能够使得随时对系统进行压力测试,无需部署测试环境,降低了企业的人力和资金成本。

由上可知,本发明实施例中提供的基于生产环境的系统容量测试方法,基于生产环境对被测系统进行系统容量测试,通过在测试请求中添加标志的方式,在被测系统接收到业务请求后,对被测系统接收到的业务请求进行识别,以识别出真实的业务请求和压力测试请求;进而根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域;最后通过监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

通过本发明实施例中提供的基于生产环境的系统容量测试方法,实现了在生产环境对被测试系统进行容量测试,获取的测试结果能够反映真实的系统容量,且通过将生产数据和测试数据进行隔离存储,避免了生产环境测试对正常业务的影响,在获取系统真实系统容量的同时,确保生产环境正常业务的平稳运行。

可选地,本发明实施例中提供的基于生产环境的系统容量测试方法还可以包括如下步骤:采用影子表的方式,对被测系统的生产数据和测试数据进行隔离存储。具体地,在创建一个生产数据表的同时,创建一个内容一致的影子表,作为测试数据表,通过这种方式,能够保证在生产环境进行测试的同时,测试数据与生产数据不会发生混淆。

图2为本发明实施例中提供的一种基于生产环境对系统容量进行测试的具体实现流程图,如图2所示,本发明实施例中提供的基于生产环境的系统容量测试方法主要包括如下三部分:流量识别、数据读取路由、数据隔离存储。其中,流量识别一般在应用系统的请求接入层工作,数据读取路由在应用层工作,数据隔离存储在存储层进行工作。下面分别对各个功能部分的实现进行说明:

①流量识别:

本发明实施例中的流量识别是指被测系统对接收到的业务请求进行识别,以识别出接收到的业务请求是真实的业务请求,还是测试人员发起的压力测试请求。

可选地,在对业务请求识别完成后,可以在系统中设置一个标志位,以便系统的后续处理均能够参考这个标志位,特别是为数据读取路由提供依据。

需要注意的是,为了使得被测系统能够对业务请求进行识别,往往需要对被测系统进行应用改造,使应用系统具备流量识别的功能,一般可是在接入层对被测系统进行应用改造。在对被测系统进行应用改造的时候,可尽量在协议层进行,在协议层进行改造的优势是,当后续业务系统优化升级时,不会对现有的改造内容造成影响,使改造内容持续有效。

可选地,本发明实施例中,采用的改造方案是在测试请求中添加httpheader自定义标签字段,使得应用版本在框架改造中对httpheader标签字段进行识别即可。

②数据读取路由:

本发明实施例中的数据读取路由是指在识别出真实的业务请求和压力测试请求后,将真实的业务请求路由至生产数据存储区域,以及将压力测试请求路由至测试数据存储区域。可选地,当系统对业务请求识别并设置标志位后,系统可根据设置的标志位将不同的业务请求路由至不同的数据存储区域。

需要注意的是,不同的数据读取框架,均需要进行不同的应用改造,本发明实施例通过开发特定的数据读取插件,可使得应用系统能够根据流量识别标志,将不同的业务请求路由至不同的数据存储区域。

③数据隔离存储:

本发明实施例中的数据隔离存储是指在生产环境中将真实的业务数据(即生产数据)与测试数据隔离存储。

可选地,本发明实施例采用创建影子表的方式来实现生产数据与测试数据的隔离存储。影子表指的是假设生产环境存在一个表a,则新建一个表a_test,将表a_test称为a的影子表,表a_test的数据内容与表a保持一致。

在数据读取路由时,通过数据读取路由使得测试流量访问影子表a_test,生产流量访问表a,从而达到生产数据与测试数据隔离存储的目的。

图3a和图3b分别示出了生产压测改造前、后某交易的响应时间,由图3a和图3b可以看出,生产压测改造前后,系统响应时间相差很小,可忽略不计。图4a和图4b分别示出了改造前、后压测时机器的cpu资源使用率,由图4a和图4b可以看出,生产压测改造前后,系统资源消耗相差很小,也可忽略不计。可见,采用本发明实施例中提供的基于生产环境的系统容量测试方法,对被测系统进行的压力测试,被测系统的真实用户交易响应时间与压力测试用户交易响应时间差别很小,对系统资源的消耗也几乎无差别,因而,本发明实施例中提供的基于生产环境的系统容量测试方法对生产环境的业务性能影响可忽略不计,使得测试结果是有效且可靠的。

基于同一发明构思,本发明实施例中还提供了一种基于生产环境的系统容量测试装置,如下面的实施例所述。由于该装置实施例解决问题的原理与基于生产环境的系统容量测试方法相似,因此该装置实施例的实施可以参见方法的实施,重复之处不再赘述。

图5为本发明实施例中提供的一种基于生产环境的系统容量测试装置示意图,如图5所示,该装置可以包括:流量识别模块51、数据读取路由模块52和系统容量测试模块53。

其中,流量识别模块51,用于对被测系统接收到的业务请求进行识别,其中,业务请求包括:真实的业务请求和压力测试请求;数据读取路由模块52,用于根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域;系统容量测试模块53,用于监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

由上可知,本发明实施例中提供的基于生产环境的系统容量测试装置中,基于生产环境对被测系统进行系统容量测试,通过在测试请求中添加标志的方式,在被测系统接收到业务请求后,通过流量识别模块51对被测系统接收到的业务请求进行识别,以识别出真实的业务请求和压力测试请求;通过数据读取路由模块52根据识别结果,将被测系统接收到的业务请求,路由至不同的数据存储区域;通过系统容量测试模块53监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

通过本发明实施例中提供的基于生产环境的系统容量测试装置,实现了在生产环境对被测试系统进行容量测试,获取的测试结果能够反映真实的系统容量,且通过将生产数据和测试数据进行隔离存储,避免了生产环境测试对正常业务的影响,在获取系统真实系统容量的同时,确保生产环境正常业务的平稳运行。

在一个实施例中,上述数据读取路由模块52可以具体包括:第一路由子模块,用于如果被测系统接收到的业务请求为真实的业务请求,则将被测系统接收到的业务请求路由至第一数据存储区域,其中,第一数据存储区域用于存储被测系统的生产数据;第二路由子模块,用于如果被测系统接收到业务请求为压力测试请求,则将被测系统接收到的业务请求路由至第二数据存储区域,其中,第二数据存储区域用于存储被测系统的测试数据。

在一个实施例中,上述流量识别模块51可以具体包括:标志识别子模块,用于判断被测系统接收到的业务请求中是否包含httpheader自定义标签字段;第一执行子模块,用于如果被测系统接收到的业务请求中包含httpheader自定义标签字段,则确定被测系统接收到的业务请求为压力测试请求;第二执行子模块,用于如果被测系统接收到的业务请求中未包含httpheader自定义标签字段,则确定被测系统接收到的业务请求为真实的业务请求。

可选地,本发明实施例提供的基于生产环境的系统容量测试装置还可以包括:数据隔离存储模块54,用于采用影子表的方式,对被测系统的生产数据和测试数据进行隔离存储。

基于同一发明构思,本发明实施例中还提供了一种计算机设备,用以解决现有的系统容量测试方法,是在测试环境部署一套与生产环境相同的应用系统来进行的,由于测试环境与生产环境的机器配置存在差异,使得在测试环境获得的测试结果无法反映真实生产环境的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于生产环境的系统容量测试方法。

基于同一发明构思,本发明实施例中还提供了一种计算机可读存储介质,用以解决现有的系统容量测试方法,是在测试环境部署一套与生产环境相同的应用系统来进行的,由于测试环境与生产环境的机器配置存在差异,使得在测试环境获得的测试结果无法反映真实生产环境的技术问题,该计算机可读存储介质存储有执行上述基于生产环境的系统容量测试方法的计算机程序。

综上所述,本发明实施例中提供了一种基于生产环境的系统容量测试方法、装置、计算机设备及计算机可读存储介质,通过在压力测试请求中添加httpheader自定义标签字段,实现对被测试系统接收到的业务请求进行识别,以区分出真实的业务请求和压力测试请求,进而将被测系统接收到的压力测试请求路由至测试数据存储区域,将真实的业务请求路由至生产数据存储区域,最后通过监控被测系统对压力测试请求的响应数据,根据监控结果对被测系统进行系统容量测试。

通过本发明实施例,实现了在生产环境对被测试系统进行容量测试,获取的测试结果能够反映真实的系统容量,且通过将生产数据和测试数据进行隔离存储,避免了生产环境测试对正常业务的影响,在获取系统真实系统容量的同时,确保生产环境正常业务的平稳运行。

本发明实施例中提供的基于生产环境的系统容量测试方法,能够使得随时对系统进行压力测试,无需部署测试环境,降低了企业的人力和资金成本。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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