一种基于nginx智能容错路由的多版本同步测试方法及系统与流程
未命名
08-26
阅读:156
评论:0
1.本发明属于微前端技术领域,尤其涉及一种基于nginx智能容错路由的多版本同步测试方法及系统。
背景技术:
2.近年来,随着信息技术的发展,互联网产品规模不断扩大,软件工程的测试模式势必需要满足日益增长的用户获取产品提供功能的需求。因此,合理的测试方式以及测试效率突显出其重要的位置。
3.通常情况下,一个大体量的软件工程的接口更新迭代将会同时开发多个版本,在开发一定阶段、新版本开发完成后测试人员会进行测试,选出用户体验好,可操作性强,容错率高的版本。测试分为功能测试和性能测试,其中性能测试又分为一般性能测试、稳定性测试、负载测试和压力测试。由此可见性能测试着重于该工程接口版本的容错,即高容错率的工程接口,稳定性越高,在性能测试中表现更好。在这个场景下,目前普遍有两种测试方式:
4.1.测试人员按序分别对不用的版本进行测试;
5.2.测试人员对不同版本进行并行测试;
6.对于第一种测试方式,操作较为简单,但由于测试人员需要对所有接口版本都测一遍,存在版本测试冗余,重复性劳动过多,工时过长的问题,且因为测试时间不同,可能会存在不确定因素的影响。对于第二种测试方式,不同接口版本在测试过程中互不干涉,且减少了时间因素的影响,但由于同步测试,在较多接口版本的场景下,需要大量的测试人员参与到测试工作中,同样也耗费了大量资源。
7.专利文献cn111224873a公开了一种基于nginx路由分发式的微前端系统及其开发、部署方法,该系统包括若干相互独立的相同或不同的前端框架工程,所述的工程之间基于路由通过nginx进行应用跳转。但该发明仅限于解决前端工程开发部署测试中遇到的难题,并未解决其他大体量的软件工程,尤其是多版本接口测试过程中遇到的版本管理、筛选以及效率问题。
8.专利文献cn112788103a公开了一种基于nginx+lua解决同应用多实例web代理访问冲突的方法,包括两个阶段,第一个阶段:ngnix通过lua模块对代理请求各阶段进行更细粒度的控制;第二个阶段:ngnix利用lua模块在请求转发和返回之间对请求进行修改。但该发明仅限于解决前端工程访问应用中遇到的难题,并未解决前端工程以及其他大体量软件工程在测试过程中遇到的接口版本筛选难题。
技术实现要素:
9.本发明的目的是提供一种基于nginx智能容错路由的多版本同步测试方法及系统,该方法可以有效解决实际测试环节中来回切换接口版本环节导致测试效率低下的问题,从而节省了资源以及工时,同时也可以减少外界场景不确定因素的干扰。
10.为了实现上述的目的,本发明提供了一种基于nginx智能容错路由的多版本同步测试方法,包括以下步骤:
11.s1、将正式工程和所有测试工程布置在容器集群中,并获取正式工程和不同版本测试工程的配置参数,所述容器集群包括用于正常运行的正式容器和带有多个版本接口的测试容器,所述配置参数包括工程参数和本地ip地址。
12.在nginx反向代理的服务器中,基于测试工程的本地ip地址设置对应的路由标。
13.s2、在测试过程中,根据预设的自适应分配权重对测试请求进行随机路由标的分配,并根据分配所得的路由标将测试请求下发至对应本地ip地址的测试工程中,以获得包含各版本接口容错率和平均响应时间的测试结果;
14.基于版本接口容错率和平均响应时间对版本接口进行评估,并基于评估得分对所述自适应分配权重进行更新,以获得更新后的自适应分配权重。
15.s3、基于修正后的自适应分配权重,对所述测试请求的路由标进行重新分配,并根据新的路由标对将测试请求下发至对应本地ip地址的测试工程中进行测试。
16.s4、重复s2至s3直至迭代次数满足终止条件,以最新一次评估得分最高的版本接口作为最佳版本接口输出。
17.本发明通过在nginx反向代理的服务器中部署测试工程的容器集群,同时规定路由标的生成与更新规则,从而实现在同一个环境内实现多个版本接口的测试。
18.具体的,终止条件为接口测试总次数或单个接口测试总次数达到最大预设次数。
19.具体的,所述工程参数包括测试工程的版本接口,容器配置以及用于执行自动部署多版本测试工程容器的部署脚本。
20.具体的,所述测试请求通过url做正则化处理对输入的请求进行识别生成。
21.具体的,所述url做正则化处理的具体过程如下:
22.当接口识别为非测试工程的接口,则将当前请求转发至正式工程中执行;
23.当接口识别为测试工程的接口,则根据自适应分配权重对当前请求的路由标进行分配。
24.具体的,在s2中,根据自适应分配权重在测试请求中的请求头request-header中分配随机路由标。
25.具体的,其特征在于,在s2中,所述版本接口容错率的表达式如下:
[0026][0027]
式中,表示版本接口x在测试工程n的测试成功次数,test
nx
表示版本接口x在测试工程n的测试总数,re
nx
表示版本接口x在测试工程n的版本接口容错率。
[0028]
具体的,在s2中,所述更新的频率包括单批次更新和多批次更新。
[0029]
具体的,所述单批次更新为测一次版本接口就更新一次的评估得分。
[0030]
所述多批次更新为测n次版本接口就更新一次的评估得分。
[0031]
具体的,所述自适应分配权重基于各版本接口的评估得分采用归一化处理获得。
[0032]
具体的,所述自适应分配权重的表达式如下:
[0033][0034][0035]
式中,r
nx
表示版本接口x在测试工程n的评估得分,t
x-average
表示版本接口x在所有测试工程中平均响应时间的平均值,t
nx
表示版本接口x在测试工程n的平均响应时间,w
nx
表示版本接口x在测试工程n的自适应分配权重,m表示测试工程的总数,a和b均为大于零的权重参数。
[0036]
本发明还提供了一种版本同步测试系统,通过上述的基于nginx智能容错路由的多版本同步测试方法实现,包括版本管理模块,智能路由模块,容错统计模块以及可视化模块。
[0037]
所述版本管理模块,用于将测试工程部署在容器集群中,并记录工程参数和本地ip地址。
[0038]
所述智能路由模块,用于设置测试工程的路由标,并根据分配的路由标进行请求发送。
[0039]
所述容错统计模块,用于对各版本接口的容错率,平均响应时间的统计以及版本接口的评估,并基于评估得分对自适应分配权重进行自适应的更新。
[0040]
所述可视化模块,用于记录与展示各版本接口容错率,版本接口的评估得分,以及平均响应时间的变化情况,为筛选最佳版本接口提供有效的指导。
[0041]
与现有技术相比,本发明的有益效果:
[0042]
通过将测试与实际应用的工程运行环境、工程内部端口号、接口保持一致的形式,保证了系统接口接口版本更迭的安全性和灵活性,同时通过容错率以及平均响应时间的反馈,合理随机分配路由标的形式合理优化部分测试版本接口测试次数、时间,缩短多版本接口同步测试整体时间,提高本系统效率。
附图说明
[0043]
图1为本实施例提供的一种基于nginx智能容错路由的多版本同步测试方法的示意图;
[0044]
图2为本实施例提供的一种版本同步测试系统的示意图;
[0045]
图3为本实施例提供的自适应分配权重的更新流程图;
[0046]
图4为本实施例提供的可视化模块界面的展示示意图。
具体实施方式
[0047]
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
[0048]
本技术使用的术语是仅仅出于描述特征实施例的目的,而非旨在限制本技术。在
本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多种形式,除非上下文清楚地表明其含义。应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种部位,但这些参数不应限于这些术语。这些术语仅使用来将同一类型的参数彼此分开。例如,在不脱离本技术范围的情况下,第一容器也是可以被称为第二容器,类似地,第二容器也可以称为第一容器。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0049]
如图1和图2所示,一种基于nginx智能容错路由的多版本同步测试方法,包括以下步骤:
[0050]
s1、将正式工程和所有测试工程布置在容器集群中,并获取正式工程和不同版本测试工程的配置参数,所述容器集群包括用于正常运行的正式容器和带有多个版本接口的测试容器,所述配置参数包括工程参数和本地ip地址。
[0051]
在nginx反向代理的服务器中,基于测试工程的本地ip地址设置对应的路由标。
[0052]
s2、在测试过程中,根据预设的自适应分配权重对测试请求进行随机路由标的分配,并根据分配所得的路由标将测试请求下发至对应本地ip地址的测试工程中,以获得包含各版本接口容错率和平均响应时间的测试结果。
[0053]
基于版本接口容错率和平均响应时间对版本接口进行评估,并基于评估得分对所述自适应分配权重进行更新,以获得更新后的自适应分配权重。
[0054]
s3、基于修正后的自适应分配权重,对所述测试请求的路由标进行重新分配,并根据新的路由标对将测试请求下发至对应本地ip地址的测试工程中进行测试。
[0055]
s4、重复s2至s3直至迭代次数满足终止条件,以最新一次评估得分最高的版本接口作为最佳版本接口输出。
[0056]
更具体地,本实施例提供的更新包括以下过程:
[0057]
将各个测试工程对各个接口的容错设置为初始收到接口的请求1次,成功一次,即为100%。
[0058]
版本接口容错率的表达式如下:
[0059][0060]
式中,表示版本接口x在测试工程n的测试成功次数,test
nx
表示版本接口x在测试工程n的测试总数,re
nx
表示版本接口x在测试工程n的版本接口容错率。
[0061]
更新的频率包括单批次更新和多批次更新,而本实施例采用单批次更新为测一次版本接口就更新一次的自适应分配权重,多批次更新为测n次版本接口就更新一次的自适应分配权重。
[0062]
每次更新时,自适应分配权重基于各版本接口的评估得分采用归一化处理获得,其表达式如下:
[0063]
[0064][0065]
式中,r
nx
表示版本接口x在测试工程n的评估得分,t
x-average
表示版本接口x在所有测试工程中平均响应时间的平均值,t
nx
表示版本接口x在测试工程n的平均响应时间,w
nx
表示版本接口x在测试工程n的自适应分配权重,m表示测试工程的总数,a和b均为大于零的权重参数。
[0066]
如图3所示,本实施例还提供了一种版本同步测试系统,该系统通过上述实施例提出的多版本同步测试方法实现,包括版本管理模块,智能路由模块,容错统计模块以及可视化模块。
[0067]
所述版本管理模块,用于将测试工程部署在容器集群中,并记录工程参数和本地ip地址。
[0068]
所述智能路由模块,用于设置测试工程的路由标,并根据分配的路由标进行请求发送。
[0069]
所述容错统计模块,用于对各版本接口的容错率,平均响应时间的统计以及版本接口的评估,并基于评估得分对自适应分配权重进行自适应的更新。
[0070]
所述可视化模块,用于记录与展示各版本接口容错率,版本接口的评估得分,以及平均响应时间的变化情况,为筛选最佳版本接口提供有效的指导。
[0071]
更具体地,通过版本管理模块将待测试工程部署在容器集群中,并记录工程参数、本地ip地址。
[0072]
部署智能路由模块中的nginx反向代理web服务器,设置路由规则,使路由标能和第一步的本地ip地址一一对应。
[0073]
测试人员开始对该工程进行正式版本与测试工程同步测试,通过对请求的url做正则化处理,读取端口、特殊符号(“:”、“/”、“&”、“=”等)以及特殊字符串,识别当前请求的接口,通过接口字典、接口列表等方式,判断当前请求是否进入测试版本。
[0074]
如果不需要,则将请求转发给正式版本接口所在的实际应用工程容器。如果需要测试,则根据容错统计模块传递的自适应分配权重在请求头request-header中分配随机路由标。
[0075]
nginx读取请求头request-header中的路由标,并做路由判断,将请求向下转发,转发到统一物理机的各个测试工程所在的容器中。
[0076]
各个测试工程在收到接口请求后进行处理,得到接口响应时间以及请求结果:请求成功/请求失败。并将当前版本接口响应时间、请求结果反馈给容错统计模块,容错统计模块统计各个测试工程各个版本接口平均响应时间、容错率。容错率计算例如:测试工程1一共收到过接口a的请求4次,成功2次,测试工程1的接口a当前版本为1.0,则1.0版本的接口a的版本接口容错率为60%;测试工程2工程一共收到过接口b的请求9次,成功6次,测试工程2的接口b当前版本为2.0,则2.0版本的接b的版本接口容错率为70%;为了避免初始测试版本接口请求为0次的情况,本方法默认将各个测试工程对各个版本接口容错率设置为初始收到接口的请求1次,成功一次,即为100%。
[0077]
容错统计模块在得到版本接口容错率和平均响应时间后,计算各版本接口的评估得分。例如:测试工程1接口a的接口容错率为60%、平均响应时间为0.4秒,接口a在所有测
试工程中平均响应时间的平均值为0.5秒,则测试工程1接口a的评估得分a*0.6+b*1.25;测试工程2接口b的容错率为70%、平均响应时间为1.2秒,接口b在所有测试工程中平均响应时间的平均值为0.8秒,则测试工程2接口b的评估得分为a*0.7+b*0.667。
[0078]
容错统计模块在得到版本接口的自适应分配值后,再进行归一化处理,重新计算各版本接口的自适应分配权重。
[0079]
例如:测试工程1对于接口a的当前版本接口的评估得分为1.6,测试工程1的接口a当前版本为1.0。
[0080]
测试工程2对于接口a的当前版本接口的评估得分为2.4,测试工程2的接口a当前版本为2.0。
[0081]
测试工程3对于接口a的当前版本接口的评估得分为0.8,测试工程3的接口a当前版本为3.0。
[0082]
测试工程4对于接口a的当前版本接口的评估得分为3.2,测试工程4的接口a当前版本为4.0。
[0083]
则归一化后接口a对于测试版本1.0所在的测试工程1的自适应分配权重为20%,对于测试版本2.0所在的测试工程2的自适应分配权重为30%,对于测试版本3.0所在的测试工程3的自适应分配权重为10%,对于测试版本4.0所在的测试工程4的自适应分配权重为40%。
[0084]
容错统计模块将自适应分配权重传递给智能路由模块。
[0085]
循环版本接口容错率的计算和自适应分配权重的更新,直到该工程的正式版本与测试工程同步测试完毕或者接口测试总次数满足预测最大测试次数。
[0086]
以最新一次评估得分最高的版本接口作为最佳版本接口输出,例如:例如:测试工程1接口a的接口容错率为70%、平均响应时间为0.5秒,接口a在所有测试工程中平均响应时间的平均值为1.5秒,则测试工程1接口a的评估得分a*0.7+b*3;测试工程2接口b的容错率为60%、平均响应时间为1.2秒,接口b在所有测试工程中平均响应时间的平均值为0.8秒,则测试工程2接口b的评估得分为a*0.6+b*0.667。
[0087]
如图4所示,操作员根据可视化模块可全程看到各个测试工程不同版本接口平均响应时间、容错率的变化统计结果,以及最终数值,也可结合实际情况考虑筛选可行的测试接口版本。
[0088]
本发明的一种基于nginx智能容错路由的多版本接口同步测试的方法与系统,涵盖了版本管理、容器集群管理、智能路由以及容错统计处理的功能。规范了多版本接口同步测试过程中的一切测试接口版本信息,以及工程配置信息,部署信息。
[0089]
通过将测试与实际应用的工程运行环境、工程内部端口号、接口保持一致的形式,保证了系统接口接口版本更迭的安全性,灵活性。通过接口平均响应时间、容错率反馈,合理随机分配路由标的形式合理优化部分测试版本接口测试次数、时间,缩短多版本接口同步测试整体时间,提高本系统效率。
[0090]
最后应说明的是,以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士了解本发明的内容并加以实施,并不能以此限制本发明的保护范围。本领域的普通技术人员应当理解:前述各实施例所记载的技术方案依然可以进行修改,或者等同替换部分技术特征;这些修改及替换,并不使相应技术方案的脱离本发明各实施例
的技术方案的范围。
技术特征:
1.一种基于nginx智能容错路由的多版本同步测试方法,其特征在于,包括以下步骤:s1、将正式工程和所有测试工程布置在容器集群中,并获取正式工程和不同版本测试工程的配置参数,所述容器集群包括用于正常运行的正式容器和带有多个版本接口的测试容器,所述配置参数包括工程参数和本地ip地址;在nginx反向代理的服务器中,基于测试工程的本地ip地址设置对应的路由标;s2、在测试过程中,根据预设的自适应分配权重对测试请求进行随机路由标的分配,并根据分配所得的路由标将测试请求下发至对应本地ip地址的测试工程中,以获得包含各版本接口容错率和平均响应时间的测试结果;基于版本接口容错率和平均响应时间对版本接口进行评估,并基于评估得分对所述自适应分配权重进行更新,以获得更新后的自适应分配权重;s3、基于修正后的自适应分配权重,对所述测试请求的路由标进行重新分配,并根据新的路由标对将测试请求下发至对应本地ip地址的测试工程中进行测试;s4、重复s2至s3直至迭代次数满足终止条件,以最新一次评估得分最高的版本接口作为最佳版本接口输出。2.根据权利要求1所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,所述工程参数包括测试工程的版本接口,容器配置以及用于自动部署多版本测试工程容器的部署脚本。3.根据权利要求1所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,所述测试请求通过url做正则化处理对输入的请求进行识别生成。4.根据权利要求3所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,所述url做正则化处理的具体过程如下:通过读取端口、特殊符号以及特殊字符串,识别当前请求的接口;当接口识别为非测试工程的接口,则将当前请求转发至正式工程中执行;当接口识别为测试工程的接口,则根据自适应分配权重对当前请求的路由标进行分配。5.根据权利要求1所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,在s2中,根据自适应分配权重在测试请求中的请求头request-header中分配随机路由标。6.根据权利要求1所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,在s2中,所述版本接口容错率的表达式如下:式中,表示版本接口x在测试工程n的测试成功次数,test
nx
表示版本接口x在测试工程n的测试总数,re
nx
表示版本接口x在测试工程n的版本接口容错率。7.根据权利要求1所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,在s2中,所述更新的频率包括单批次更新和多批次更新。8.根据权利要求1所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,所述自适应分配权重基于各版本接口的评估得分,采用归一化处理获得。
9.根据权利要求8所述的基于nginx智能容错路由的多版本同步测试方法,其特征在于,其特征在于,所述自适应分配权重的表达式如下:于,其特征在于,所述自适应分配权重的表达式如下:式中,r
nx
表示版本接口x在测试工程n的评估得分,t
x-average
表示版本接口x在所有测试工程中平均响应时间的平均值,t
nx
表示版本接口x在测试工程n的平均响应时间,w
nx
表示版本接口x在测试工程n的自适应分配权重,m表示测试工程的总数,a和b均为大于零的权重参数。10.一种版本同步测试系统,其特征在于,通过如权利要求1~9任一项所述的基于nginx智能容错路由的多版本同步测试方法实现,包括版本管理模块,智能路由模块,容错统计模块以及可视化模块;所述版本管理模块,用于将测试工程部署在容器集群中,并记录工程参数和本地ip地址;所述智能路由模块,用于设置测试工程的路由标,并根据分配的路由标进行请求发送;所述容错统计模块,用于对各版本接口的容错率,平均响应时间的统计以及版本接口的评估,并基于评估得分对自适应分配权重进行自适应的更新;所述可视化模块,用于记录与展示各版本接口容错率,版本接口的评估得分,以及平均响应时间的变化情况,为筛选最佳版本接口提供有效的指导。
技术总结
本发明提供的一种基于nginx智能容错路由的多版本同步测试方法,包括以下步骤:S1、将正式工程和所有测试工程布置在容器集群中,并获取正式工程和不同版本测试工程的配置参数;S2、根据预设的自适应分配权重对测试请求进行随机路由标的分配,以获得包含各版本接口容错率和平均响应时间的测试结果;对所述自适应分配权重进行更新,以获得更新后的自适应分配权重;S3、基于更新后的自适应分配权重,对所述测试请求的路由标进行重新分配;S4、重复S2至S3直至迭代次数满足终止条件,以最新一次评估得分最高的版本接口作为最佳版本接口输出。本发明还提供了一种版本同步测试系统。本发明提供的方法节省测试过程中的资源消耗和工时。的方法节省测试过程中的资源消耗和工时。的方法节省测试过程中的资源消耗和工时。
技术研发人员:倪鸿仪 李劲松 李卓信 文君 周天舒
受保护的技术使用者:之江实验室
技术研发日:2023.05.15
技术公布日:2023/8/23
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
