计算;推算;计数设备的制造及其应用技术1.本说明书涉及测试技术领域,尤其涉及一种灰度测试方法、装置、电子设备及可读存储介质。背景技术:2.随着互联网的迅速发展,许多互联网产品的用户规模也达到了极为庞大的程度,倘若在对产品进行功能更新时出现问题,往往会带来灾难性的影响。例如,假如某个具有数亿用户的社交软件,在更新后出现图片无法正常发送的情况,不仅会影响用户的使用体验,甚至会影响用户的日常生活。因此,在产品正式发布新功能之前,除了进行内部测试,还需要进行灰度测试。3.灰度测试,也叫灰度发布、金丝雀发布,是指将应用的新版本代码与旧版本代码同时部署到真实的业务环境中,采用自定义控制,逐步扩大通过运行新版本代码处理的流量,以便及时发现存在的问题,降低新版本发布带来的风险。技术实现要素:4.有鉴于此,本说明书一个或多个实施例提供一种灰度测试方法、装置、电子设备及可读存储介质,以解决相关技术中存在的问题。5.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:6.根据本说明书实施例的第一方面,提供一种灰度测试方法,待灰度测试的应用包括具有调用关系的多个应用;其中,针对所述多个应用的灰度发布阶段包括分批发布阶段;针对所述灰度发布阶段的所述灰度测试包括与所述分批发布阶段对应的数据兼容测试;所述方法包括:7.根据所述调用关系确定所述多个应用进行测试的先后顺序;8.根据所述先后顺序,对所述多个应用依次执行分批发布,并在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试;所述数据兼容测试包括所述应用的新版本代码是否兼容通过运行所述应用的旧版本代码生成的数据的测试,以及,所述应用的旧版本代码是否兼容通过运行所述应用的新版本代码生成的数据的测试。9.根据本说明书实施例的第二方面,提供一种灰度测试装置,待灰度测试的应用包括具有调用关系的多个应用;其中,针对所述多个应用的灰度发布阶段包括分批发布阶段;针对所述灰度发布阶段的所述灰度测试包括与所述分批发布阶段对应的数据兼容测试;所述装置包括:10.顺序确定模块,用于根据所述调用关系确定所述多个应用进行测试的先后顺序;11.兼容性测试模块,用于根据所述先后顺序,对所述多个应用依次执行分批发布,并在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试;所述数据兼容测试包括所述应用的新版本代码是否兼容通过运行所述应用的旧版本代码生成的数据的测试,以及,所述应用的旧版本代码是否兼容通过运行所述应用的新版本代码生成的数据的测试。12.根据本说明书实施例的第三方面,提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;13.所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法。14.根据本说明书实施例的第四方面,提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。15.本说明书的实施例提供的技术方案可以包括以下有益效果:16.在上述过程中,通过针对具有调用关系的多个应用的灰度发布阶段的中间过程进行抽象,将多个应用的灰度发布阶段具体划分为分批发布阶段;进一步的,通过提炼出分批发布阶段的测试要点,为分批发布阶段配置相应的灰度测试的策略。通过以上技术方案,一方面,针对灰度发布阶段的灰度测试的整个过程进行全面覆盖,从而实现对灰度测试的质量保障,有效控制了发布风险,保证应用的新版本代码平稳上线;另一方面,针对灰度发布阶段的灰度测试的各个过程进行专项测试,从而实现对发布过程的有效分析,增强了发现异常的能力,可以在灰度发布阶段通过测试及时发现潜在的问题。同时,上述技术方案还具有通用性,可以适用于测试人员日常的测试分析工作中,提高了测试人员的工作效率。附图说明17.图1是一示例性实施例提供的一种灰度测试方法的流程图;18.图2是一示例性实施例提供的一种灰度测试方法的示意图;19.图3是一示例性实施例提供的一种灰度测试装置所在电子设备的结构示意图;20.图4是一示例性实施例提供的一种灰度测试装置的框图。具体实施方式21.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。22.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。23.随着互联网产品的普及,人们的生活也越来越便利,用户通过互联网产品可以实现自身的个性化需求。同样的,为了更好的为用户服务,互联网产品也需要进行不断的更新迭代,通常包括产品对自身功能的更新,或者业务系统的升级改造。一般来讲,越复杂的产品或者业务系统,在进行更新时,通常会对自身的多个应用进行更新,从而实现对复杂的功能逻辑的支持或对系统能力优化的提升。24.目前,许多互联网产品都有着海量的活跃用户,如果直接进行产品的更新发布,那么产品出现任何的问题都会产生难以估量的影响。并且,互联网产品需要经常进行更新迭代以保持产品的生命力,故而保证产品的发布质量是非常重要的。因此,在产品正式上线之前,可以通过对产品进行测试分析,避免产品出错带来的风险,将影响降到最小,是测试环节的重点。25.由前述可知,采用灰度测试,一方面,可以通过将应用的新版本代码部署到真实的业务环境中,从而在真实的业务环境中对应用的新版本代码进行测试,使测试结果更加真实可信;另一方面,可以控制通过运行新版本代码处理的流量,将流量从零开始逐步扩大测试的范围,直至全量测试,保证在每一步的测试过程中,都可以在出现问题时及时止损,将影响控制在有限的范围内,避免造成大范围的影响。26.通常,大多数灰度测试方法,仅仅是对最终的测试结果进行简单的验证。例如,某视频网站通过测试用户在播放新的视频格式时的成功率和卡顿率等参数,判断测试的效果。27.然而,整个发布过程是极其复杂且漫长的,某些复杂的项目甚至会长达半年之久,为了保证灰度发布的质量,必须要做好充足的灰度验证。显然,目前大多数的灰度测试方法,并不关注测试的中间过程,无法满足对灰度测试过程的质量保障,不能及时发现并定位故障,进行有效的分析。28.有鉴于此,本说明书提供一种通过对具有调用关系的多个应用的灰度发布阶段的中间过程进行抽象,并通过提炼出发布过程中的测试要点,为发布过程配置相应的灰度测试的策略,从而从发布过程的角度实现对灰度发布的全面完整的质量保障的技术方案。29.在实现时,待灰度测试的应用包括具有调用关系的多个应用;其中,针对所述多个应用的灰度发布阶段包括分批发布阶段;针对所述灰度发布阶段的所述灰度测试包括与所述分批发布阶段对应的数据兼容测试;30.然后,可以根据所述调用关系确定所述多个应用进行测试的先后顺序;31.接着,可以根据所述先后顺序,对所述多个应用依次执行分批发布,并在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试;32.其中,所述数据兼容测试包括所述应用的新版本代码是否兼容通过运行所述应用的旧版本代码生成的数据的测试,以及,所述应用的旧版本代码是否兼容通过运行所述应用的新版本代码生成的数据的测试。33.在一个例子中,在进行上述数据兼容性测试时,可以运行所述应用的旧版本代码对所述应用收到的流量进行处理,生成目标数据,并测试所述应用的新版本代码是否兼容所述目标数据;以及,运行所述应用的新版本代码对所述应用收到的流量进行处理,生成目标数据,并测试所述应用的旧版本代码是否兼容所述目标数据。34.在另一个例子中,在进行上述数据兼容性测试时,可以获取通过运行与所述应用具有调用关系的上一级应用的旧版本代码对所述上一级应用收到的流量进行处理生成的目标数据,并测试所述应用的新版本代码是否兼容所述目标数据;以及,获取通过运行与所述应用具有调用关系的上一级应用的新版本代码对所述上一级应用收到的流量进行处理生成的目标数据,并测试所述应用的旧版本代码是否兼容所述目标数据。35.在上述过程中,通过针对具有调用关系的多个应用的灰度发布阶段的中间过程进行抽象,将多个应用的灰度发布阶段具体划分为分批发布阶段;进一步的,通过提炼出分批发布阶段的测试要点,为分批发布阶段配置相应的灰度测试的策略。通过以上技术方案,一方面,针对灰度发布阶段的灰度测试的整个过程进行全面覆盖,从而实现对灰度测试的质量保障,有效控制了发布风险,保证应用的新版本代码平稳上线;另一方面,针对灰度发布阶段的灰度测试的各个过程进行专项测试,从而实现对发布过程的有效分析,增强了发现异常的能力,可以在灰度发布阶段通过测试及时发现潜在的问题。同时,上述技术方案还具有通用性,可以适用于测试人员日常的测试分析工作中,提高了测试人员的工作效率。36.下面结合附图对本说明书的灰度测试方法进行详细说明。37.请参见图1,图1为本说明书一示例性实施例提供的一种灰度测试方法的流程图。其中,待灰度测试的应用包括具有调用关系的多个应用;针对所述多个应用的灰度发布阶段包括分批发布阶段;针对所述灰度发布阶段的所述灰度测试包括与所述分批发布阶段对应的数据兼容测试。如图1所示,所述方法包括如下的执行步骤:38.步骤101,根据所述调用关系确定所述多个应用进行测试的先后顺序;39.步骤102,根据所述先后顺序,对所述多个应用依次执行分批发布,并在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试。40.其中,所述数据兼容测试包括所述应用的新版本代码是否兼容通过运行所述应用的旧版本代码生成的数据的测试,以及,所述应用的旧版本代码是否兼容通过运行所述应用的新版本代码生成的数据的测试。41.需要说明的是,由于在实际应用中,通常涉及具有调用关系的多个应用的灰度测试,故而对于单个应用不做特别说明,可以理解的是,由于在对多个应用进行灰度测试时,包含了对单个应用的灰度测试方法,故而单个应用的灰度发布阶段,也可以执行上述过程,本领域技术人员可以参照本说明书中记载的实施例在测试过程中,无需根据调用关系确定先后顺序,直接对单个应用执行上述灰度发布过程即可。42.在本实施例中,可以根据所述调用关系确定所述多个应用进行测试的先后顺序。43.上述多个应用,可以是产品或业务系统对应的多个应用模块,也可以是测试人员抽象出的应用,本说明书中不进行特别限定,只需要多个应用之间存在调用关系即可。44.在一个例子中,上述多个应用可以是灰度发布涉及的多个应用,并根据业务链路的上下游关系确定出调用关系。45.在另一个例子中,上述多个应用可以是测试人员人为对发布涉及的m个应用进行抽象出的n个应用,其中,m大于n,并且n个应用之间依次存在调用关系。46.通过上述多个应用之间的调用关系,可以确定多个应用进行测试的先后顺序,从而有序的实现业务逻辑的推进,有条不紊的依次对每个应用进行测试,防止出现数据混乱的情况,保证了对复杂的功能逻辑的支持或对系统能力优化的提升。47.在本实施例中,在确定出上述先后顺序之后,可以根据所述先后顺序,对所述多个应用依次执行分批发布,并在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试。48.举例来说,假设根据调用关系,确定出先对应用a进行测试,再对应用b进行测试,最后对应用c进行测试的先后顺序。那么在执行分批发布时,根据上述先后顺序,依次对应用a、应用b和应用c执行分批发布。并且,在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试。49.上述分批发布阶段,是指按预设的批次进行应用部署,在每个批次对应用的一部分实例进行升级,即将应用的新版本代码部署到真实的业务环境中的过程。在分批发布过程中,如果出现故障,可以及时中止分批发布过程,并进行回退,将应用的代码版本恢复到旧版本代码,待问题修复后重新发布。50.继续举例,如果应用a包含9个应用实例,每个应用实例部署的当前版本为1.1版本,现在需要将每个应用实例升级为2.0版本。假设将所有应用实例分3批进行部署,那么可以通过平均分配的方式,在每个批次升级3个应用实例,从而实现对应用a的分批发布。当然,也可以不采用平均分配的方式,本领域技术人员可以根据实际需要确定批次以及每个批次对应的应用实例。51.另外,在上述分批发布过程中,可以设置应用实例间部署的时间间隔,还可以对应用升级情况进行实时跟踪,如果任何一批应用实例升级时出现异常,为了保证业务不受影响,可以进行回滚,将已升级的实例倒回至升级前的版本。52.进一步的,针对上述分批发布阶段,配置了相应的数据兼容测试的策略。其中,所述数据兼容测试包括所述应用的新版本代码是否兼容通过运行所述应用的旧版本代码生成的数据的测试,以及,所述应用的旧版本代码是否兼容通过运行所述应用的新版本代码生成的数据的测试。53.其中,上述数据兼容测试,是指校验新版本代码和旧版本代码是否可以对彼此生成的数据互相兼容。一方面,可以判断所述应用的新版本代码,是否能够正常处理运行所述应用旧版本代码生成的数据;另一方面,可以判断所述应用的旧版本代码,是否能够正常处理运行所述应用新版本代码生成的数据。通过进行数据兼容测试,可以保证应用的平稳升级,避免出现由于兼容性问题导致的故障。54.具体的,在进行数据兼容性测试时,可以分为两种情况进行验证,同样的,这两种情况也分别对应了不同的回滚策略。55.第一种情况,针对单个应用的数据兼容性测试。56.在示出的一种实施方式中,可以运行所述应用的旧版本代码对所述应用收到的流量进行处理,生成目标数据,并测试所述应用的新版本代码是否兼容所述目标数据;以及,运行所述应用的新版本代码对所述应用收到的流量进行处理,生成目标数据,并测试所述应用的旧版本代码是否兼容所述目标数据。57.举例来说,在应用a在分批发布过程中,会产生两种数据,一种是运行所述应用a的旧版本代码对所述应用a收到的流量进行处理,生成的目标数据d1,另一种是运行所述应用a的新版本代码对所述应用a收到的流量进行处理,生成的目标数据d2。为了对新旧版本之间的数据兼容性进行测试,需要基于应用a的新版本代码对目标数据d1的兼容性进行测试,判断是否能够正常处理目标数据d1,还需要基于应用a的旧版本代码对目标数据d2的兼容性进行测试,判断是否能够正常处理目标数据d2。58.进一步的,在示出的一种实施方式中,可以响应于所述应用的新版本代码不能兼容所述目标数据,将所述应用的代码版本倒回至旧版本;以及,响应于所述应用的旧版本代码不能兼容所述目标数据,将所述应用的代码版本倒回至旧版本。59.继续举例,如果应用a的新版本代码不能兼容所述目标数据d1,或者应用a的旧版本代码不能兼容所述目标数据d2,或者应用a的新版本代码不能兼容所述目标数据d1且应用a的旧版本代码不能兼容所述目标数据d2,以上三种情况都需要将应用a的代码版本倒回至旧版本。而如果应用a的新版本代码可以兼容所述目标数据d1,并且应用a的旧版本代码可以兼容所述目标数据d2,那么应用a的数据兼容性测试通过。60.上述针对单个应用的数据兼容性测试,可以在应用按照批次每发布一次之后执行,保障每次分批发布的质量,也可以根据实际需要,由测试人员自行设置测试点,本说明书中不进行特别限定。61.第二种情况,针对多个应用之间的数据兼容性测试。62.在示出的一种实施方式中,可以获取通过运行与所述应用具有调用关系的上一级应用的旧版本代码对所述上一级应用收到的流量进行处理生成的目标数据,并测试所述应用的新版本代码是否兼容所述目标数据;以及,获取通过运行与所述应用具有调用关系的上一级应用的新版本代码对所述上一级应用收到的流量进行处理生成的目标数据,并测试所述应用的旧版本代码是否兼容所述目标数据。63.举例来说,如果应用a调用应用b,那么根据先后顺序,需要先对应用b进行分批发布,再对应用a进行分批发布。64.具体的,在应用b分批发布完成,并且针对应用b的数据兼容性测试也通过校验时,需要对应用a和应用b之间的数据兼容性进行一次测试。此时,可以获取通过运行与应用b具有调用关系的上一级应用a的旧版本代码,对应用a收到的流量进行处理所生产目标数据d1,并测试应用b的新版本代码是否兼容目标数据d1。65.其次,在应用a分批发布完成之后,并且针对应用a的数据兼容性测试也通过校验时,还需要对应用a和应用b之间的数据兼容性进行一次测试。此时,可以获取通过运行与应用b具有调用关系的上一级应用a的新版本代码,对应用a收到的流量进行处理所生产目标数据d2,并测试应用b的旧版本代码是否兼容目标数据d2。66.进一步的,在示出的一种实施方式中,可以响应于所述应用的新版本代码不能兼容所述目标数据,将所述应用的代码版本以及与所述应用具有调用关系的上一级应用的代码版本,分别倒回至旧版本;以及,响应于所述应用的旧版本代码不能兼容所述目标数据,将所述应用的代码版本以及与所述应用具有调用关系的上一级应用的代码版本,分别倒回至旧版本。67.继续举例,如果应用b的新版本代码不能兼容目标数据d1,那么则无需进行应用a的分批发布,直接将应用b的代码版本以及与所述应用b具有调用关系的上一级应用a的代码版本,分别倒回至旧版本;如果应用b的旧版本代码不能兼容目标数据d2,那么中止多个应用的分批发布,将应用b的代码版本以及与所述应用b具有调用关系的上一级应用a的代码版本,分别倒回至旧版本。68.而如果应用b的新版本代码可以兼容目标数据d1,并且应用b的旧版本代码可以兼容目标数据d2,也就是应用a和应用b之间的数据兼容性测试通过,那么继续推进分批发布阶段,如果有应用a的上一级应用,则对应用a的上一级应用执行分批发布,如果没有,则完成应用a和应用b的分批发布阶段。69.另外,在应用a和应用b都执行分批发布之后,测试人员也可以对应用a的新版本代码与应用b的新版本代码之间的兼容性进行校验,具体过程在此不做赘述。70.由上述可知,通过对具有调用关系的多个应用的灰度发布阶段的中间过程进行抽象,可以将多个应用的灰度发布阶段划分为分批发布阶段,并通过提炼出分批发布阶段的测试要点,为分批发布阶段配置相应的灰度测试的策略。71.值得说明的是,在上述具有调用关系的多个应用分批发布完成之后,还可以进行进一步抽象,将分批发布阶段之后的阶段划分为灰度运行阶段,并通过提炼出灰度运行阶段的测试要点,为灰度运行阶段配置相应的灰度测试的策略。72.在示出的一种实施方式中,所述针对所述多个应用的灰度发布阶段还包括灰度运行阶段;所述针对所述灰度发布阶段的所述灰度测试还包括与所述灰度运行阶段对应的灰度运行测试;73.进一步的,可以响应于针对所述多个应用的数据兼容性测试通过,根据所述先后顺序,执行与所述灰度运行测试对应的测试用例,对所述多个应用分别进行所述灰度运行测试。74.例如,假设先后顺序是应用a、应用b和应用c,在对应用a、应用b和应用c之间的数据兼容性测试通过之后,可以根据先后顺序,依次执行与灰度运行测试对应的测试用例,对应用a、应用b和应用c分别进行灰度运行测试。75.在示出的一种实施方式中,可以判断所述灰度运行测试的结果是否达到预期;如果否,将所述应用的代码版本倒回至旧版本。76.例如,可以依据预设的指标,对灰度运行测试的结果进行判断,如果达到了指标,那么继续扩大灰度测试的范围,如果没打到指标,则将应用的代码版本倒回至旧版本。77.上述灰度运行阶段,是指在应用分批发布之后,对已发布的应用进行灰度验证,直至灰度测试结束的过程。在灰度运行阶段,如果出现故障,可以及时中止灰度验证过程,并进行回退,将应用的代码版本恢复到旧版本代码,待问题修复后重新发布,以及发布后的验证。78.举例来说,可以控制流量按照0、30%、60%到100%的顺序逐步扩大灰度测试的范围,最开始新版本收到的流量为0,旧版本收到的流量为100%,然后可以将新版本收到的流量设为30%,剩下70%的流量由旧版本接收,通过验证新版本对30%流量的处理结果,判断新版本代码运行的效果是否满足预期,如果满足,则进一步扩大测试的范围,将新版本收到的流量增加到60%,如果不满足或出现故障,则中止灰度运行测试,并进行回退,将应用的代码版本恢复到旧版本代码,待问题修复后重新发布,以及发布后的验证。79.同样的,针对上述灰度运行阶段,配置了相应的灰度运行测试的策略。本说明书通过对灰度运行阶段的中间过程进行抽象,并通过提炼测试要点,将灰度运行测试的策略划分为两大类。80.第一类,根据流量特征从多个维度进行切流。81.由于应用收到的流量中,通常包含多个维度的特征,通过基于流量特征从多个维度进行切流,可以从实现对流量的细粒度的控制。82.在示出的一种实施方式中,所述流量特征包括用户特征和/或报文特征。83.例如,流量特征可以是用户特征,包括用户特征,如用户的职业、年龄、性别等属性;也可以是报文特征,包括报文的五元组特征等;还可以是用户特征和报文特征的组合。84.在示出的一种实施方式中,所述灰度运行测试包括采用基于流量特征对收到的流量进行切分的灰度规则进行的灰度运行测试;85.进一步的,在进行所述灰度运行测试时,可以获取所述应用对应的所述灰度规则;判断所述应用收到的流量对应的流量特征,是否命中所述灰度规则;如果是,根据命中的所述灰度规则,对所述流量进行切分,并对切分到的流量进行所述灰度运行测试。86.举例来说,上述第一类的灰度运行测试的策略,可以是采用基于流量特征对收到的流量进行切分的灰度规则,例如:87.将收到的流量全部切分至应用的旧版本代码进行处理;88.将包含流量特征a的流量切分至应用的新版本代码进行处理;89.将包含流量特征b的流量切分至应用的新版本代码进行处理;90.将收到的流量全部切分至至应用的新版本代码进行处理。91.需要说明的是,在上述灰度规则中,上述切分至应用的新版本代码进行处理的流量逐步增大。而对于具体选取何种流量特征,测试人员可以根据需要自行设置。92.继续举例,在灰度运行测试过程中,可以获取预先对应用配置的相应灰度规则,首先,可以将收到的流量全部切分至应用的旧版本代码进行处理;然后,判断应用收到的流量对应的流量特征,是否命中所述灰度规则,如果是,根据命中的所述灰度规则,从收到的流量中筛选出包含流量特征a的流量,将这部分流量切分至应用的新版本代码进行处理;后续同理,故不做赘述。93.在上述灰度运行测试的过程中,每次根据命中的灰度规则进行灰度运行测试之后,都可以判断所述灰度运行测试的结果是否达到预期;如果否,则将所述应用的代码版本倒回至旧版本;如果是,则可以继续执行灰度运行测试,直至完整流量的全量测试。94.第二类,通过数据操作的交叉组合控制流量方向。95.上述数据操作包括以下四种:96.基于所述应用的新版本代码进行读数据;97.基于所述应用的新版本代码进行写数据;98.基于所述应用的旧版本代码进行读数据;99.基于所述应用的旧版本代码进行写数据。100.上述交叉组合,则包括上述四种数据操作之间至少两种之间的组合。101.在示出的一种实施方式中,所述交叉组合的方式包括:102.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的旧版本代码进行读数据;103.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据;104.基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据。105.通过上述交叉组合,可以从整体上实现对流量的切换,并且逻辑简单易于实现,方便流量逐步从基于所述应用的旧版本代码进行读数据和基于所述应用的旧版本代码进行写数据,切换到基于所述应用的新版本代码进行读数据和基于所述应用的新版本代码进行写数据。106.在示出的一种实施方式中,所述灰度运行测试包括采用基于所述应用的新版本代码进行读数据、基于所述应用的新版本代码进行写数据、基于所述应用的旧版本代码进行读数据以及基于所述应用的旧版本代码进行写数据之间进行交叉组合的灰度规则进行的灰度运行测试;107.进一步的,在进行所述灰度运行测试时,可以获取所述应用对应的所述灰度规则;根据所述灰度规则对所述应用收到的流量进行所述灰度运行测试。108.举例来说,上述第二类的灰度运行测试的策略,可以是采用基于所述应用的新版本代码进行读数据、基于所述应用的新版本代码进行写数据、基于所述应用的旧版本代码进行读数据以及基于所述应用的旧版本代码进行写数据之间进行交叉组合的灰度规则,例如:109.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的旧版本代码进行读数据;基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据;基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据。110.继续举例,在灰度运行测试过程中,可以获取预先对应用配置的相应灰度规则;然后,可以根据灰度规则,对全部流量分别基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及基于所述应用的旧版本代码进行读数据,从而校验基于所述应用的新版本代码进行写数据得到的数据是否正确;如果正确,则继续执行灰度运行测试,根据灰度规则,对全部流量分别基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据,从而校验基于所述应用的新版本代码进行读数据得到的数据是否正确;如果正确,则继续执行灰度运行测试,根据灰度规则,对全部流量分别基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据,从而得到最终的灰度运行测试结果。111.在上述灰度运行测试的过程中,每次根据灰度规则进行灰度运行测试之后,都可以判断所述灰度运行测试的结果是否达到预期;如果否,则将所述应用的代码版本倒回至旧版本;如果是,则可以继续执行灰度运行测试,直至完全切换至应用新版本的读写逻辑。112.值得说明的是,上述第一类灰度运行测试的策略适用于大多数类型的应用,而对于解决中间件或架构重构等系统级别的灰度,通常可以采用上述第二类灰度运行测试的策略。113.在示出的一种实施方式中,可以获取与所述灰度运行测试对应的测试日志;根据所述测试日志验证所述灰度运行测试是否存在异常;如果是,则进行告警,并所述应用的代码版本倒回至旧版本。114.在一个例子中,在灰度运行测试的过程中,可以基于测试日志记录整个测试过程,通过测试日志可以获取测试中涉及的参数,通过对参数进行验证,可以判断灰度运行测试是否存在异常;如果是,则可以进行告警,通知测试人员进行处理,并将所述应用的代码版本倒回至旧版本。115.在另一个例子中,可以通过对测试日志进行自动化监控,校验业务链路中数据的一致性,并在数据不一致时进行自动告警,通知测试人员进行处理,并将所述应用的代码版本倒回至旧版本。116.上述测试用例,是指为某个特殊目标而编制的一组测试输入、执行条件以及预期结果组成的案例,用来完成测试任务。通过测试用例,可以避免盲目测试,提高测试的效率。通过实际测试结果和预期结果的比较,可以判断测试的软件产品是否满足目标需求。117.在示出的一种实施方式中,所述测试用例包括由测试人员自定义创建的标准化测试用例模板。118.通过创建测试用例模板,不仅可以对灰度测试过程实现标准化,规范灰度测试过程,便于问题的排查和处理;还可以提高测试人员的工作效率,依据测试用例模板快速开展测试工作。119.进一步的,在示出的一种实施方式中,可以接收所述测试人员提交的针对所述测试用例的更新请求;其中,所述更新请求包括针对所述测试用例的更新数据;响应于所述更新请求,基于所述更新数据对所述测试用例进行更新。120.例如,除了根据模板进行测试,测试人员还可以对测试用例进行调整,通过接收测试人员提交的针对测试用例的更新请求,可以基于更新请求中携带的针对所述测试用例的更新数据对所述测试用例进行更新。121.在上述过程中,通过针对具有调用关系的多个应用的灰度发布阶段的中间过程进行抽象,将多个应用的灰度发布阶段具体划分为分批发布阶段;进一步的,通过提炼出分批发布阶段的测试要点,为分批发布阶段配置相应的灰度测试的策略。122.通过以上技术方案,一方面,针对灰度发布阶段的灰度测试的整个过程进行全面覆盖,从而实现对灰度测试的质量保障,有效控制了发布风险,保证应用的新版本代码平稳上线;另一方面,针对灰度发布阶段的灰度测试的各个过程进行专项测试,从而实现对发布过程的有效分析,增强了发现异常的能力,可以在灰度发布阶段通过测试及时发现潜在的问题。同时,上述技术方案还具有通用性,可以适用于测试人员日常的测试分析工作中,提高了测试人员的工作效率。123.请参见图2,图2是一示例性实施例提供的一种灰度测试方法的示意图。其中,待灰度测试的应用包括应用a和应用b,并且应用a调用应用b。124.由前述步骤101可知,根据应用a和应用b之间的调用关系,可以确定出先对应用b进行测试,再对应用a进行测试。125.如图2所示,在分批发布阶段,根据先测试应用b后测试应用a的顺序,先对应用b先执行分批发布,再对应用a执行分批。126.由前述步骤102可知,在应用分批发布的过程中,可以通过执行与数据兼容性测试对应的测试用例,对所发布的应用进行数据兼容性测试。127.具体的,在应用b的分批发布阶段,对于每个批次发布的应用,都执行以下数据兼容性测试:128.运行所述应用b的旧版本代码对所述应用b收到的流量进行处理,生成目标数据d1,并测试所述应用b的新版本代码是否兼容所述目标数据d1;以及,运行所述应用b的新版本代码对所述应用b收到的流量进行处理,生成目标数据d2,并测试所述应用b的旧版本代码是否兼容所述目标数据d2。129.其中,如果当前批次发布的应用通过上述数据兼容性测试,则继续发布下一批次的应用,直至应用b分批发布完成。如果当前批次发布的应用未通过上述数据兼容性测试,则将所述应用b的代码版本倒回至旧版本。130.当应用b分批发布完成之后,可以获取通过运行与应用b具有调用关系的上一级应用a的旧版本代码,对应用a收到的流量进行处理所生产目标数据d1,并测试应用b的新版本代码是否兼容目标数据d1。131.如果兼容,则继续执行对应用a的分批发布过程。对于应用a的分批发布过程,可以参考应用b,在此不做赘述。132.在应用a分批发布完成之后,可以获取通过运行与应用b具有调用关系的上一级应用a的新版本代码,对应用a收到的流量进行处理所生产目标数据d2,并测试应用b的旧版本代码是否兼容目标数据d2。133.如果兼容,则完成应用a和应用b的分批发布阶段。134.需要说明的是,在上述应用的分批发布阶段,如果任何批次出现兼容性问题,都需要将应用的代码版本倒回至旧版本。135.由前述可知,在完成多个应用的分批发布阶段之后,还可以进一步进行灰度运行阶段,执行与灰度运行阶段对应的灰度运行测试。136.如图2所示,在灰度运行阶段,根据先测试应用b后测试应用a的顺序,先对应用b先执行灰度运行测试,再对应用a执行灰度运行测试。137.由前述可知,在灰度运行测试过程中,可以通过执行与所述灰度运行测试对应的测试用例,对发布的应用进行灰度运行测试。138.假设应用b对应的灰度规则为基于流量特征对收到的流量进行切分的灰度规则,应用a对应的灰度规则为用基于所述应用的新版本代码进行读数据、基于所述应用的新版本代码进行写数据、基于所述应用的旧版本代码进行读数据以及基于所述应用的旧版本代码进行写数据之间进行交叉组合的灰度规则。139.那么在对应用b执行灰度运行测试的过程中,可以先获取所述应用b对应的所述灰度规则;再判断所述应用b收到的流量对应的流量特征,是否命中所述灰度规则;如果是,根据命中的所述灰度规则,对所述流量进行切分,并对切分到的流量进行所述灰度运行测试。140.其中,上述流量特征包括用户特征和/或报文特征。141.在每次进行灰度运行测试之后,都可以判断灰度运行测试的结果是否达到预期;如果否,将所述应用b的代码版本倒回至旧版本;如果是,则继续进行针对应用b的灰度运行测试。142.当对应用b的灰度测试范围扩大到全量,完成灰度运行测试之后,可以对应用a执行灰度运行测试,通过获取所述应用a对应的所述灰度规则;根据所述灰度规则对所述应用a收到的流量进行所述灰度运行测试。143.其中,所述交叉组合的方式包括:144.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的旧版本代码进行读数据;145.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据;146.基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据。147.同样的,在应用a每次进行灰度运行测试之后,都可以判断灰度运行测试的结果是否达到预期;如果否,将所述应用a的代码版本倒回至旧版本;如果是,则继续进行针对应用a的灰度运行测试。148.在针对应用a的灰度运行测试完成之后,意味着对应用a和应用b的灰度测试完成。149.需要说明的是,在上述过程中,还可以获取与所述灰度运行测试对应的测试日志;根据所述测试日志验证所述灰度运行测试是否存在异常;如果是,则进行告警,并所述应用的代码版本倒回至旧版本。150.可以理解的是,在上述针对图2描述的过程中,通过针对具有调用关系的多个应用的灰度发布阶段的中间过程进行抽象,划分出两大阶段,即分批发布阶段和灰度运行阶段;进一步的,通过提炼出不同阶段的测试要点,为两大阶段分别配置不同的灰度测试的策略。151.通过以上技术方案,一方面,针对灰度发布阶段的灰度测试的整个过程进行全面覆盖,从而实现对灰度测试的质量保障,有效控制了发布风险,保证应用的新版本代码平稳上线;另一方面,针对灰度发布阶段的灰度测试的各个过程进行专项测试,从而实现对发布过程的有效分析,增强了发现异常的能力,可以在灰度发布阶段通过测试及时发现潜在的问题。同时,上述技术方案还具有通用性,可以适用于测试人员日常的测试分析工作中,提高了测试人员的工作效率。152.图2中示出的各步骤中的技术特征对应的实施过程,在本实施例中不再赘述,本领域技术人员可以参照以上实施例的记载。153.在本说明书的示例性实施例中,还提供了一种能够实现上述方法的设备。154.图3是一示例性实施例提供的一种设备的示意结构图。请参考图3,在硬件层面,该设备包括处理器302、内部总线304、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存309中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。155.请参考图4,在一软件实施方式中,提供了一种灰度测试装置400,待灰度测试的应用包括具有调用关系的多个应用;其中,针对所述多个应用的灰度发布阶段包括分批发布阶段;针对所述灰度发布阶段的所述灰度测试包括与所述分批发布阶段对应的数据兼容测试;所述装置包括:156.顺序确定模块401,用于根据所述调用关系确定所述多个应用进行测试的先后顺序;157.兼容性测试模块402,用于根据所述先后顺序,对所述多个应用依次执行分批发布,并在所述分批发布的过程中,执行与所述数据兼容性测试对应的测试用例,对所发布的应用进行所述数据兼容性测试;所述数据兼容测试包括所述应用的新版本代码是否兼容通过运行所述应用的旧版本代码生成的数据的测试,以及,所述应用的旧版本代码是否兼容通过运行所述应用的新版本代码生成的数据的测试。158.可选的,所述兼容性测试模块402进一步:159.运行所述应用的旧版本代码对所述应用收到的流量进行处理,生成目标数据,并测试所述应用的新版本代码是否兼容所述目标数据;以及,运行所述应用的新版本代码对所述应用收到的流量进行处理,生成目标数据,并测试所述应用的旧版本代码是否兼容所述目标数据。160.可选的,所述装置还包括:161.第一倒回模块403,用于响应于所述应用的新版本代码不能兼容所述目标数据,将所述应用的代码版本倒回至旧版本;以及,响应于所述应用的旧版本代码不能兼容所述目标数据,将所述应用的代码版本倒回至旧版本。162.可选的,所述兼容性测试模块402进一步:163.获取通过运行与所述应用具有调用关系的上一级应用的旧版本代码对所述上一级应用收到的流量进行处理生成的目标数据,并测试所述应用的新版本代码是否兼容所述目标数据;以及,获取通过运行与所述应用具有调用关系的上一级应用的新版本代码对所述上一级应用收到的流量进行处理生成的目标数据,并测试所述应用的旧版本代码是否兼容所述目标数据。164.可选的,所述装置还包括:165.第二倒回模块404,用于响应于所述应用的新版本代码不能兼容所述目标数据,将所述应用的代码版本以及与所述应用具有调用关系的上一级应用的代码版本,分别倒回至旧版本;以及,响应于所述应用的旧版本代码不能兼容所述目标数据,将所述应用的代码版本以及与所述应用具有调用关系的上一级应用的代码版本,分别倒回至旧版本。166.可选的,所述针对所述多个应用的灰度发布阶段还包括灰度运行阶段;所述针对所述灰度发布阶段的所述灰度测试还包括与所述灰度运行阶段对应的灰度运行测试;167.进一步的,所述装置还包括:168.灰度运行测试模块405,用于响应于针对所述多个应用的数据兼容性测试通过,根据所述先后顺序,执行与所述灰度运行测试对应的测试用例,对所述多个应用分别进行所述灰度运行测试。169.可选的,所述灰度运行测试包括采用基于流量特征对收到的流量进行切分的灰度规则进行的灰度运行测试;170.所述灰度运行测试模块405进一步:171.获取所述应用对应的所述灰度规则;172.判断所述应用收到的流量对应的流量特征,是否命中所述灰度规则;173.如果是,根据命中的所述灰度规则,对所述流量进行切分,并对切分到的流量进行所述灰度运行测试。174.可选的,所述流量特征包括用户特征和/或报文特征。175.可选的,所述灰度运行测试包括采用基于所述应用的新版本代码进行读数据、基于所述应用的新版本代码进行写数据、基于所述应用的旧版本代码进行读数据以及基于所述应用的旧版本代码进行写数据之间进行交叉组合的灰度规则进行的灰度运行测试;176.所述灰度运行测试模块405进一步:177.获取所述应用对应的所述灰度规则;178.根据所述灰度规则对所述应用收到的流量进行所述灰度运行测试。179.可选的,所述交叉组合的方式包括:180.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的旧版本代码进行读数据;181.基于所述应用的旧版本代码进行写数据、基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据;182.基于所述应用的新版本代码进行写数据,以及,基于所述应用的新版本代码进行读数据。183.可选的,所述装置还包括:184.第三倒回模块406,用于判断所述灰度运行测试的结果是否达到预期;如果否,将所述应用的代码版本倒回至旧版本。185.可选的,所述装置还包括:186.异常检查模块407,用于获取与所述灰度运行测试对应的测试日志;根据所述测试日志验证所述灰度运行测试是否存在异常;如果是,则进行告警,并所述应用的代码版本倒回至旧版本。187.可选的,所述测试用例包括由测试人员自定义创建的标准化测试用例模板。188.可选的,所述装置还包括:189.测试用例更新模块408,用于接收所述测试人员提交的针对所述测试用例的更新请求;其中,所述更新请求包括针对所述测试用例的更新数据;响应于所述更新请求,基于所述更新数据对所述测试用例进行更新。190.上述装置400中各个模块的功能和作用的实现过程具体详见上述灰度测试方法中对应步骤的实现过程,相关之处参见方法实施方式的部分说明即可,在此不再赘述。191.以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。192.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。193.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。194.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。195.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。196.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。197.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。198.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。199.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。200.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
一种灰度测试方法、装置、电子设备及可读存储介质与流程
作者:admin
2022-07-30 17:39:51
942
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术
- 下一篇: 用于纯化生物过程和细胞群的过滤器设备和方法与流程
- 上一篇: 干式换热器、空调机组的制作方法