用于微服务架构的测试方法、装置和电子设备与流程

文档序号:26192919发布日期:2021-08-06 18:46阅读:86来源:国知局
用于微服务架构的测试方法、装置和电子设备与流程

本公开涉及云计算技术领域,进一步涉及分布式系统技术领域。本公开提供了一种用于微服务架构的测试方法、一种用于微服务架构的测试装置、一种电子设备、一种存储有计算机指令的非瞬时计算机可读存储介质、一种计算机程序产品。



背景技术:

微服务架构中的业务模块在变更后、上线前需要进行测试。在传统的测试场景中,可以提供一套与生产环境类似的线下环境进行测试。测试用的数据可以是人工构造的或线上引流产生的。



技术实现要素:

本公开提供了一种用于微服务架构的测试方法、装置、设备、计算机可读存储介质以及计算机程序产品。

根据第一方面,提供了一种用于微服务架构的测试方法,包括:获取线上产生的流量数据;识别所获取的流量数据中由读操作产生的读流量数据;滤除所获取的流量数据中读流量数据以外的流量数据,得到测试数据集;以及使用测试数据集对上述微服务架构中的业务模块进行测试。

根据第二方面,提供了一种用于微服务架构的测试装置,包括:获取模块,用于获取线上产生的流量数据作为测试数据集;识别模块,用于识别所获取的流量数据中由读操作产生的读流量数据;滤除模块,用于滤除所获取的流量数据中读流量数据以外的流量数据,得到测试数据;以及测试模块,用于使用测试数据对上述微服务架构中的业务模块进行测试。

根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器;其中,上述存储器存储有可被上述至少一个处理器执行的指令,上述指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行上述的方法。

根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行上述的方法。

根据第五方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现上述的方法。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本公开的限定。其中:

图1是根据本公开的一个实施例的可以应用用于微服务架构的测试方法的示例性系统架构示意图;

图2是根据本公开一个实施例的用于微服务架构的测试方法的流程图;

图3是根据本公开另一实施例的用于对业务模块进行测试的方法的流程图;

图4a和图4b是根据本公开一个实施例的用于微服务架构的测试方法的原理图;

图5是根据本公开一个实施例的用于微服务架构的测试装置的框图;

图6是根据本公开的一个实施例的用于微服务架构的测试方法的电子设备的框图。

具体实施方式

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

本公开的技术方案中,所涉及的相关数据(如流量数据)的记录、存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。

应用微服务架构的在线系统中包含的业务模块可以达到数百个。业务模块的变更以天为单位级别。变更后的模块在上线前,需要对其进行性能测试和回归测试,以降低模块变更对线上系统带来可能的稳定性和速度风险,其中回归测试是指针对变更后的新版本模块,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。性能测试或者回归测试需要将测试数据提供给变更后的业务模块,然后令变更后的业务模块在测试环境中执行相应的操作以得到测试结果。

在传统的测试场景中,测试环境可以是一套与生产环境类似的线下环境,存在仿真不充分、维护成本高等问题。

在传统的测试场景中,可选择人工构造或线上引流的方式来生成测试数据。人工构造的数据有很大的弊端,例如维护成本较高,且数据多样性不足以反映线上真实使用场景。此外,采用线上引流的方式,则需隔离写入操作,避免污染生产环境数据。

本公开的实施例提供了一种用于微服务架构的测试方法。通过获取线上产生的真实流量数据作为测试数据集,并对测试数据集中的数据加标签,以滤除由于写操作产生的写流量数据,由此提高测试数据的准确性,从而提高测试的准确性。

图1是根据本公开的一个实施例的可以应用用于微服务架构的测试方法的示例性系统架构示意图。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

如图1所示,根据该实施例的系统架构100可以包括微服务架构110和测试管理平台120。

微服务架构110包括服务层111,服务层111内包括多个业务模块,例如业务模块1111和业务模块1112。业务模块运行的环境可以称为生产环境。微服务架构110还可以包括访问层、接口层和存储层(图1中未示出)。微服务架构可以是云原生架构,因此微服务架构具有云原生应用下资源隔离、容器化的特点。

示例性地,微服务架构110可以是提供各种服务的服务架构,例如对用户利用终端设备所浏览的网站或客户端应用提供支持的后台管理服务架构。该服务架构可以布局在云服务器。云服务器又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(″virtualprivateserver″,虚拟专用服务器,或简称″vps″)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。

测试管理平台120可以从生产环境中获取线上数据,并根据线上数据生成测试数据集,也可以获取人工构造的数据生成测试数据集。当业务模块需要被测试时,测试管理平台120可以将待测试的业务模块部署在生产环境,例如服务层111中,也可以将待测试的业务模块部署在模拟生产环境搭建的仿真环境中。部署完成后,使用上述测试数据集对待测试的业务模块进行测试,得到测试结果。当待测试的业务模块被部署到微服务架构时,由于微服务架构可以是云原生架构,待测试的业务模块在执行相应操作时是与其它业务模块隔离的,因此待测试的业务模块在生产环境测试不会影响原系统的稳定性。

图2是根据本公开一个实施例的用于微服务架构的测试方法的流程图。

如图2所示,该用于微服务架构的测试方法200可以包括操作s210~s240。接下来将参考图2详细描述根据本公开一个实施例的用于微服务架构的测试方法的流程图。

在操作s210,获取线上产生的流量数据。

例如,可以录制一定时间(例如0.5小时或1小时)内的线上生产环境中产生的流量数据,也可以录制线上生产环境产生的全部数据。

例如,流量数据中可以包括业务模块的历史流量峰值。该历史流量峰值可以作为测试业务模块的流量qps(〞queries-per-second″,每秒查询率)。

应该理解,从生产环境中录制的数据可以是经过脱敏后的数据,是去除了用户敏感信息的数据。

在操作s220,识别所获取的流量数据中由读操作产生的读流量数据。

流量数据中可以具有读操作产生的读流量数据和写操作产生的写流量数据。读操作产生的流量数据被多次处理不会对生产环境产生影响。写操作产生的流量数据被多次处理会影响生产环境的稳定性,可能导致系统报错。

例如,用户搜索商品,相应业务模块返回商品列表和商品介绍,此时生产环境中产生的流量数据即读流量数据。用户购买商品并结算时,相应业务模块从用户余额中扣除相应费用,此时生产环境中产生的流量数据即写流量数据。

在操作s230,滤除所获取的流量数据中读流量数据以外的流量数据,得到测试数据集。

依据读流量数据执行操作不会影响系统的稳定性,因此可以滤除读流量数据以外的数据,将读流量数据的集合作为测试数据集。

例如,可以滤除生产环境中相应业务模块在用户购买商品并结算时从用户余额中扣除相应费用产生的流量数据,只保留生产环境中相应业务模块在用户搜索商品时返回商品列表和商品介绍产生的流量数据。

在操作s240,使用测试数据集对上述微服务架构中的业务模块进行测试。

例如,将仅包含读流量数据的测试数据集输入业务模块中,得到业务模块根据测试数据集执行相应操作得到的测试结果。例如,将仅包含读流量数据的测试数据集输入业务模块中,同时按照上述流量qps对业务模块进行测试,得到在一定的流量qps条件下,业务模块根据测试数据集执行相应操作得到的测试结果。

通过本公开实施例,以线上产生的真实流量数据作为测试数据集,并滤除由于写操作产生的写流量数据,由此提高测试数据的准确性,从而提高测试的准确性。

作为本公开的一种可选实施例,识别所获取的流量数据中由读操作产生的读流量数据包括给识别出的读流量数据加标签。

例如,可以在用户搜索商品时录制数据,相应业务模块返回商品列表和商品介绍后,可以给此时录制的生产环境中产生的流量数据增加标签。

为读流量数据增加标签,可以快速的滤除没有标签的写流量数据,提高测试数据集的生成效率。

作为本公开的一种可选实施例,上述获取线上产生的流量数据作为测试数据集包括周期性地获取线上产生的流量数据。

例如,可以以一定的时间间隔录制生产环境中产生的流量数据。例如,以0.5小时为时间间隔,或者以1小时为时间间隔。例如,每隔0.5小时录制0.5小时内生产环境中产生的流量数据,或者每隔1小时录制1小时内生产环境中产生的流量数据。

图3是根据本公开另一实施例的用于对业务模块进行测试的方法的流程图。

如图3所示,该用于微服务架构的测试方法340包括可以包括操作s341~s346。本领域技术人员可以理解,操作s341~s346是例如参考图2所述的测试方法中操作s240的一种示例实现方式,以便使用测试数据集对上述微服务架构中的业务模块进行测试。接下来将参考图3来详细描述根据本公开另一实施例的对业务模块进行测试的方法的流程图。

在操作s341,响应于业务模块发生变更,部署发生变更的变更后业务模块和变更前业务模块,分别作为变更业务模块和原业务模块。

业务模块的变更可以以天为单位。响应于业务模块发生变更,测试管理平台将变更后的业务模块和变更前的业务模块部署到生产环境中,例如部署到服务层中。完成部署后,变更后的业务模块为变更业务模块,变更前的业务模块为原业务模块。

例如,业务模块的线上版本为v1(即业务模块v1),在开发人员对业务模块进行功能升级后,迭代到版本v2(即业务模块v2)。测试管理平台响应于业务模块发生变更,将业务模块v1和业务模块v2部署到微服务架构的服务层中,业务模块v1即原业务模块,业务模块v2即变更业务模块。

在操作s342,使用上述测试数据集对上述变更业务模块和上述原业务模块进行测试,得到测试结果。

变更业务模块和原业务模块根据测试数据集执行相关操作,分别得到变更业务模块的输出(测试结果)和原业务模块的输出(原输出结果)。

例如,变更业务模块和原业务模块根据测试数据集执行商品搜索操作。测试数据集内包括一定时间内被搜索的商品的关键词。变更业务模块和原业务模块执行商品搜索操作后,分别返回测试结果和原输出结果。测试结果和原输出结果中都包含搜索到的商品列表和商品介绍。

例如,变更业务模块和原业务模块根据测试数据集执行商品搜索操作。同时,按照上述流量qps对变更业务模块和原业务模块进行测试。测试数据集内包括被搜索的商品的关键词,以及该测试数据集内的数据量与上述流量qps相适应。变更业务模块和原业务模块执行商品搜索操作后,分别返回测试结果和原输出结果。测试结果和原输出结果中都包含搜索到的商品列表和商品介绍。

例如,测试结果可以被存储入测试管理平台的指定位置,供开发人员通过测试管理平台查看测试的详细信息。

在操作s343,判断上述测试结果是否符合预定条件,确定上述变更业务模块是否通过测试。

上述预定条件可以包括以下中的至少一个:变更业务模块对于请求的响应内容与原业务模块对于上述请求的响应内容之间的差异在预定范围内;变更业务模块对于请求的响应时间小于等于原业务模块对于上述请求的响应时间;变更业务模块没有出现异常资源占用;以及变更业务模块没有出现处理中断。

例如,当测试数据集中包含用户搜索商品的关键字时,变更业务模块和原业务模块响应商品搜索请求,并根据用户搜索商品的关键字执行商品搜索操作,经过各自的响应时间后,分别返回测试结果和原输出结果。测试结果和原输出结果均包含商品列表和商品介绍。例如,预定条件可以为测试结果与原输出结果中商品列表的差异在预定的范围内。例如,预定条件可以为变更业务模块响应商品搜索请求的时间小于原业务模块响应商品搜索请求的时间。例如,预定条件为变更业务模块在响应商品搜索操作后对系统资源的占用情况正常。例如,预定条件为变更业务模块响应商品搜索操作后,执行的商品搜索操作中各处理过程完整连续,未出现中断现象。

例如,测试时,变更业务模块和原业务模块可以在一定的流量qps条件下执行测试操作。例如,变更业务模块和原业务模块响应商品搜索请求,在一定的流量qps条件下,根据用户搜索商品的关键字执行商品搜索操作,经过各自的响应时间后,分别返回测试结果和原输出结果。例如,预定条件可以为:在该流量qps条件下,变更业务模块响应商品搜索操作后对系统资源的占用情况正常。例如,预定条件可以为:在该流量qps条件下,变更业务模块响应商品搜索操作后,执行的商品搜索操作中各处理过程完整连续,未出现中断现象或崩溃现象。例如,预定条件可以为:在该流量qps条件下,测试结果与原输出结果中商品列表的差异在预定的范围内。例如,预定条件可以为:在该流量qps条件下,变更业务模块响应商品搜索请求的时间小于原业务模块响应商品搜索请求的时间。按一定的流量qps对变更业务模块和原业务模块进行测试,是为了考察变更业务模块能否适应一定的访问压力。

进一步,例如,在确定上述测试结果符合预定条件的情况下,确定上述变更业务模块通过测试。

进一步,例如,在确定上述测试结果不符合预定条件的情况下,确定上述变更业务模块未通过测试。更进一步,例如,确定上述变更业务模块未通过测试时,可以阻止未通过测试的变更业务模块上线。

在操作s346,在得到测试结果之后,删除变更业务模块和原业务模块。

例如,根据变更业务模块和原业务模块的输出结果得到测试结果后,测试管理平台将变更业务模块和原业务模块从服务层删除。可以释放微服务架构的被占用的空间,提高资源利用效率。

需要说明的是,在本公开的实施例中,上述操作可以顺序执行,也可以并行执行,也可以不同的次序执行。例如,操作s346还可以在操作s342之后且在操作s343之前执行;或者,操作s346还可以与操作s343~s345并行执行。

图4a和图4b是根据本公开一个实施例的用于微服务架构的测试方法的示意原理图。接下来将参考图4a和图4b来详细描述根据本公开一个实施例的用于微服务架构的测试方法的原理。

如图4a所示,微服务架构110包括服务层111,服务层111内运行有多个业务模块,例如业务模块1111和业务模块1112。业务模块运行的环境为生产环境,业务模块运行过程中,生产环境中会产生流量数据。

测试管理平台120包括测试数据层121和测试部署层122,测试数据层121包括流量录制模块1211、流量过滤模块1212和测试数据集存储模块1213。流量录制模块1211从生产环境录制流量数据。录制的流量数据经过流量过滤模块1212时,读流量数据被增加标签,然后流量数据中的读流量数据被保留,写流量数据被滤除。测试数据集存储模块1213存储具有标签的读流量数据,形成测试数据集。

如图4b所示,测试管理平台120响应于业务模块发生变更,测试部署层122部署变更业务模块1221和原业务模块1222到服务层111。变更业务模块1221和原业务模块1222分别从测试数据集存储模块1213获取测试数据集,并根据测试数据集执行相关操作。操作执行结束后,变更业务模块1221生成测试结果,原业务模块1222生成原输出结果。测试管理平台120根据测试结果判断测试是否通过。得到测试结果后,测试部署层122可以删除服务层111内部署的变更业务模块1221和原业务模块1222。

图5是根据本公开一个实施例的用于微服务架构的测试装置的框图。

如图5所示,用于微服务架构的测试装置500可以包括获取模块510、识别模块520、滤除模块530以及测试模块540。

获取模块510,用于获取线上产生的流量数据作为测试数据集。

识别模块520,用于识别所获取的流量数据中由读操作产生的读流量数据。

滤除模块530,用于滤除所获取的流量数据中读流量数据以外的流量数据,得到测试数据。

测试模块540,用于使用测试数据对上述微服务架构中的业务模块进行测试。

作为本公开的一种可选实施例,上述识别模块包括:加标签单元,用于给识别出的读流量数据加标签。

作为本公开的一种可选实施例,上述测试模块包括:部署单元,用于响应于业务模块发生变更,部署发生变更的变更后业务模块和变更前业务模块,分别作为变更业务模块和原业务模块;以及测试单元,用于使用上述测试数据集对上述变更业务模块和上述原业务模块进行测试,得到测试结果。

作为本公开的一种可选实施例,还包括确定模块,用于在上述测试结果符合预定条件的情况下,确定上述变更业务模块通过测试;上述预定条件包括以下中的至少一个:变更业务模块对于请求的响应内容与原业务模块对于上述请求的响应内容之间的差异在预定范围内;变更业务模块对于请求的响应时间小于等于原业务模块对于上述请求的响应时间;变更业务模块没有出现异常资源占用;以及变更业务模块没有出现处理中断。

作为本公开的一种可选实施例,还包括删除模块,用于在得到测试结果之后,删除变更业务模块和原业务模块。

作为本公开的一种可选实施例,上述获取模块包括周期性获取单元,用于周期性地获取线上产生的流量数据。

应该理解,本公开装置部分的实施例与本公开方法部分的实施例对应相同或类似,所解决的技术问题和所达到的技术效果也对应相同或者类似,本公开在此不再赘述。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

如图6所示,图6是根据本公开的一个实施例的用于微服务架构的测试方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元608加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

设备600中的多个部件连接至i/o接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如用于微服务架构的测试方法。例如,在一些实施例中,用于微服务架构的测试方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由rom602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到ram603并由计算单元601执行时,可以执行上文描述的用于微服务架构的测试方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行用于微服务架构的测试方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本公开实施例的技术方案,通过获取线上产生的真实流量数据作为测试数据集,并对测试数据集中的数据加标签,以滤除由于写操作产生的写流量数据;由此提高测试数据的准确性,从而提高测试的准确性。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

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

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