CN110007921A - 一种代码发布方法及装置 - Google Patents

一种代码发布方法及装置 Download PDF

Info

Publication number
CN110007921A
CN110007921A CN201811474295.0A CN201811474295A CN110007921A CN 110007921 A CN110007921 A CN 110007921A CN 201811474295 A CN201811474295 A CN 201811474295A CN 110007921 A CN110007921 A CN 110007921A
Authority
CN
China
Prior art keywords
code
released
environment
test data
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811474295.0A
Other languages
English (en)
Other versions
CN110007921B (zh
Inventor
王婷婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811474295.0A priority Critical patent/CN110007921B/zh
Publication of CN110007921A publication Critical patent/CN110007921A/zh
Application granted granted Critical
Publication of CN110007921B publication Critical patent/CN110007921B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

公开了一种代码发布方法及装置。一种代码发布方法,应用于服务端设备,在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立,该方法包括:当接收到代码发布指令时,获取待发布代码;在仿真环境中执行以下操作:确定所述待发布代码为灰度代码;按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;运行所述灰度代码,对所述测试数据进行处理;监测对所述测试数据的处理结果是否满足预设的第一要求;若是,在线上环境发布所述待发布代码。

Description

一种代码发布方法及装置
技术领域
本说明书实施例涉及计算机技术领域,尤其涉及一种代码发布方法及装置。
背景技术
开发人员根据项目需要进行功能代码的编写,功能代码可以为软件编译代码、网页编译代码、运维功能模块编译代码等。在代码编写完成之后需要部署到服务端设备上运行,运行之后间接为终端用户提供服务,这个过程称之为代码发布。
当下在代码发布的过程中,一般需要对代码先进行测试,待测试通过之后人工部署到服务端设备上以完成代码发布,大多数情况下,由人工进行功能性测试,以及人工使用具有代表性的数据对代码进行测试等。
这种代码发布的方法,需要消耗一定人力成本,并且人工测试具有片面性,代码测试的质量较低。
发明内容
针对上述技术问题,本说明书实施例提供一种代码发布方法及装置,技术方案如下:
一种代码发布方法,应用于服务端设备,在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立,该方法包括:
当接收到代码发布指令时,获取待发布代码;
在仿真环境中执行以下步骤:
确定所述待发布代码为灰度代码;
按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
运行所述灰度代码,对所述测试数据进行处理;
监测对所述测试数据的处理结果是否满足预设的第一要求;
若是,在线上环境发布所述待发布代码。
一种代码发布装置,应用于服务端设备,该装置包括:
环境模拟模块,用于在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立;
代码获取模块,用于当接收到代码发布指令时,获取待发布代码;
代码确定模块,用于在仿真环境中确定所述待发布代码为灰度代码;
数据组成模块,用于在仿真环境中按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
数据处理模块,用于在仿真环境中运行所述灰度代码,对所述测试数据进行处理;
监测模块,用于在仿真环境中监测对所述测试数据的处理结果是否满足预设的第一要求;
代码发布模块,用于若是,在线上环境发布所述待发布代码。
本说明书实施例所提供的技术方案,通过在服务端设备上模拟出与服务端设备的线上环境对应的仿真环境,当接收到代码发布指令时,获取待发布代码,在仿真环境中执行以下操作:确定待发布代码为灰度代码,按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据,运行灰度代码,对该测试数据进行处理,监测对该测试数据的处理结果是否满足预设的第一要求,若是,则在线上环境中发布待发布代码。如此一来,可以自动实现对代码的测试,自动实现代码发布,节省了人力成本,并且使用线上环境中的业务数据与预先配置的异常业务数据对代码进行测试,可以提高测试质量,基本上可以保证对代码进行全面的测试。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例的一种应用场景示意图;
图2是本说明书实施例的代码发布方法的流程示意图;
图3是本说明书实施例的代码发布装置的结构示意图;
图4是用于配置本说明书实施例装置的一种设备的结构示意图。
具体实施方式
当前根据项目需要,开发人员进行功能代码的编写,功能代码是为了实现某个特定的功能,例如功能代码可以是软件编译代码、网页编译代码、运维功能模块编译代码等。在整个开发过程中,代码编写只是其中部分工作,代码发布为整个开发过程中的最终环节,也是最终对用户呈现开发成果的一个重要环节。
当下在代码发布的过程中,一般需要对代码进行测试,而且一般是在线下环境进行测试,待代码测试通过之后人工部署到服务端设备上以完成代码发布。大多数情况下,在线下环境由人工进行功能性测试,而且为了加快测试进度,经常使用具有代表性的数据对代码进行测试。如此可以看出,这种代码发布的方法,需要消耗一定人力成本,并且在线下环境人工测试具有片面性,代码测试的质量较低,并不能保证对代码进行全面的测试。
针对上述技术问题,本说明实施例提供一种技术方案,如图1所示,示出了一示例性应用场景示意图,在该应用场景示意图中,包括:代码仓库、用于发布代码并提供服务的服务端设备以及用户设备,代码开发完成后可被存放到代码仓库中,该代码仓库用以管理不同版本的代码。此后,在代码发布阶段,服务端设备接收到代码发布指令,可以从代码仓库中获取所需要发布的代码,即待发布代码,在仿真环境中执行以下操作:确定所需要发布的代码为灰度代码,按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据,运行该灰度代码,对该测试数据进行处理,监测对该测试数据的处理结果是否满足预设的第一要求,若是,在线上环境发布所需要发布的代码。如此一来,可以自动实现对代码的测试,自动实现代码发布,节省了人力成本,并且使用线上环境中的业务数据与预先配置的异常业务数据对代码进行测试,可以提高测试质量,基本上可以保证对代码进行全面的测试。
具体的,本说明书实施例提供的技术方案如下:
当接收到代码发布指令时,获取待发布代码;在仿真环境中执行以下操作:确定所述待发布代码为灰度代码;按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;运行所述灰度代码,对所述测试数据进行处理;监测对所述测试数据的处理结果是否满足预设的第一要求;若是,在线上环境发布所述待发布代码。
在本说明书中,服务端设备是提供服务的设备,例如可以是服务器,也可以以集群形式存在。在服务端设备上模拟出与服务端设备的线上环境对应的仿真环境,仿真环境与线上环境相互独立,相互隔离,并且共享服务端设备上的硬件资源,在仿真环境中的数据与线上环境中的数据相互隔离。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
如图2所示,为本说明书实施例提供的代码发布方法的实施流程图,其具体可以包括以下步骤:
S201,当接收到代码发布指令时,获取待发布代码;
在本说明书中,代码开发完之后可以存放到代码仓库中,且不同的代码有不同的版本,代码仓库可以管理不同版本的代码,开发人员可以通过发布指令的方式来发布代码。对于服务端设备,当接收到代码发布指令时,可以从代码仓库中获取待发布代码。
优选的,当接收到代码发布指令时,解析该代码发布指令中携带的待发布代码的标识,该标识可以是代码版本号、代码名称等,根据该待发布代码的标识,从代码仓库中获取相应的待发布代码。例如,当接收到代码发布指令时,解析该代码发布指令中携带的待发布代码的版本号1.0以及代码名称A,根据该待发布代码的版本号1.0以及代码名称A,可以从代码仓库中获取相应的待发布代码。
在仿真环境中执行以下操作:
S202,确定所述待发布代码为灰度代码;
当从代码仓库获取到相应的待发布代码之后,在仿真环境中确定该待发布代码为灰度代码,该灰度代码是一种在仿真环境中运行的代码,具体可以通过如下实现方式得到灰度代码:
在仿真环境中利用预设的输入参数字段以及输出参数字段替换该待发布代码中的输入参数字段以及输出参数字段,确定经过字段替换的待发布代码为灰度代码。其中对输入参数字段以及输出参数字段进行替换,并不涉及代码逻辑的改变,从本质上讲灰度代码与待发布代码还是一样,只是使用的参数名称不一致。
例如待发布代码的输入参数字段以及输出参数字段分别为:calFee-A、admFee-B,预先设置的输入参数字段以及输出参数字段分别为:calFee-a、admFee-b,利用预先设置的输入参数字段calFee-a、输出参数字段admFee-b替换待发布代码中的输入参数字段calFee-A、输出参数字段admFee-B,经过字段替换之后即可以得到灰度代码。
S203,按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
抽样选取线上环境中的业务数据进入仿真环境,可以按照一定的抽样规则进行抽取。由于线上环境中的业务数据可能均为正常业务数据,无法验证异常场景待发布代码逻辑处理是否符合预期,因此可以预先设置一些异常业务数据,将从线上环境中抽取的业务数据与预先配置的异常业务数据进行整合,可以组成测试数据。其中,异常业务数据为超出正常业务范围的数据,例如该待发布代码为收入计提代码,该异常业务数据可以是超出合约时间的数据。
抽样规则可以是从线上环境中抽取预设数量的业务数据,例如抽样选取线上环境中10%业务数据进入仿真环境,与预先设置的异常业务数据进行整合,组合成测试数据。抽样规则还可以是从线上环境中随机抽取预设数量的业务数据,例如随机抽样选取线上环境中5%业务数据进入仿真环境,与预先设置的异常业务数据进行整合,组合成测试数据。抽样规则还可以是从线上环境中有目的性的抽取预设数量的业务数据,例如可以以时间维度,在一段时间内,从线上环境中抽取这段时间内10%业务数据进入仿真环境,与预先设置的异常业务数据进行整合,组合成测试数据。具体的抽样规则存在很多种,可以根据实际需求进行设定,本说明书实施例在此不再一一赘述。
S204,运行所述灰度代码,对所述测试数据进行处理;
在确定灰度代码以及测试数据之后,可以在仿真环境中运行该灰度代码,对该测试数据进行处理,即进行业务处理,需要关注对测试数据处理之后的数据合理性,例如一般对测试数据进行处理会产出报表,监测某个关键字段的字段值是否为空,或者监测某个关键字段的字段值是否为某个值,或者监测某个关键字段的字段值是否在某个区间范围内,或者监测对某条数据是否重复处理,或者监测处理完之后数据的数据量是否等于测试数据的数据量等等。
S205,监测对所述测试数据的处理结果是否满足预设的第一要求;
在该灰度代码运行过程中,对测试数据进行处理,对测试数据的处理结果包括:中间处理结果以及最终处理结果,监测对测试数据的处理结果是否满足预设的第一要求,可以从以下几个维度进行考量:
监测目标字段的字段值是否为空,或者目标字段的字段值是否为目标值(一般为经验值),或者目标字段的字段值是否在预设区间范围内,若目标字段的字段值不为空,或者为某个目标值,或者在预设区间范围内,则表明字段维度验证通过。
监测对测试数据是否存在重复处理,若不存在,则表明重复处理维度验证通过。
监测处理完之后数据的数据量是否等于测试数据的数据量,若等于,则表明数据量级维度验证通过。
监测对测试数据的处理结果是否满足以上三个维度,若以上三个维度验证都通过,则表明满足预设的第一要求。当然,本说明书仅仅对数据合理性的实例举例说明,具体体现数据合理性的维度还有很多种,本说明书在此不再一一赘述。
S206,若是,在线上环境发布所述待发布代码。
经过上述步骤,若对所述测试数据的处理结果满足预设的第一要求,则表示灰度代码在仿真环境中运行无问题,可以推进到线上环境,在线上环境发布该待发布代码,后续可以为用户提供服务。
另外,若对所述测试数据的处理结果未满足预设的第一要求,则表示灰度代码在仿真环境中运行出现异常,不会在线上环境发布该待发布代码,并且会提示开发人员代码运行失败,以使开发人员进行问题定位,进而修改该待发布代码。
理论上,在经过上述步骤之后,可以将待发布代码发布到线上环境,但是为了进一步提高测试质量,还可以从以下几个方面进行考量:
优选的,若对测试数据的处理结果满足预设的第一要求,可以对灰度代码继续进行测试,计算该灰度代码运行过程中代码覆盖率,判断该灰度代码运行过程中代码覆盖率是否超过对应的预设阈值,若灰度代码运行过程中代码覆盖率超过对应的预设阈值,则在线上环境发布待发布代码,若灰度代码运行过程中代码覆盖率未超过对应的预设阈值,则不会发布待发布代码。其中代码覆盖率指的是有效代码的占比,例如待发布代码共有10000行代码,在灰度代码运行过程中,共有9500行代码被执行,则可能存在的情况是500行代码为无效代码或者代码逻辑存在错误,这时代码覆盖率为95%,通过对代码的覆盖率进行验证,有可能找出无效代码或者代码逻辑存在错误的情况。
优选的,若对测试数据的处理结果满足预设的第一要求,计算对测试数据的处理成功率,判断对测试数据的处理成功率是否超过对应的预设阈值,若对测试数据的处理成功率超过对应的预设阈值,则在线上环境发布所述待发布代码,若对测试数据的处理成功率未超过对应的预设阈值,则不会发布待发布代码。数据处理成功率即数据通过率,这里数据处理成功率针对的是抽取的线上环境业务数据的处理成功率,一般异常业务数据用来验证异常场景待发布代码逻辑处理是否符合预期。
优选的,若对测试数据的处理结果满足预设的第一要求,则统计该灰度代码运行过程中各节点对应的多维度信息,判断该灰度代码运行过程中各节点对应的多维度信息是否满足预设的第二要求,若灰度代码运行过程中各节点对应的多维度信息满足预设的第二要求,则在线上环境中发布待发布代码,若灰度代码运行过程中各节点对应的多维度信息未满足预设的第二要求,则进行告警提示,可以生成告警日志。其中,该多维度信息至少包括以下之一:节点数据处理耗时、节点数据处理成功率、节点数据处理量级、节点运行失败次数。
一般地,待发布代码分为多个节点,每个节点对应一小段代码,每个节点可以实现一个小功能(例如查询、插入、删除)。对待发布代码的测试其实可以看作是对每个节点的测试,可以从上述所说的多个维度去衡量节点性能:
节点数据处理耗时,对于每个节点,会接收到上一节点下发的数据,对数据处理的耗时可以反映出代码逻辑的合理性,例如对于节点而言,处理数据的耗时可以是几秒钟,如果是几分钟或者几十分钟,则代码逻辑可能存在问题,因此需要监测每个节点的数据处理耗时,在每个节点的数据处理耗时未超过预设阈值的情况下,则表明节点数据处理耗时这个维度验证通过,否则进行告警提示。
节点数据处理成功率,对于每个节点,会接收到上一节点下发的数据,监测每个节点的数据处理成功率是否超过预设阈值,若是,则表明节点数据处理成功率这个维度验证通过,否则进行告警提示。
节点数据处理量级,对于每个节点,会接收到上一节点下发的数据,监测每个节点的数据处理量级是否超过预设阈值,若是,则表明节点数据处理量级这个维度验证通过,否则进行告警提示。
节点运行失败次数,对于每个节点,由于网络波动、服务端设备不稳定、代码逻辑不合理等因素,可能存在运行失败的情况,监测每个节点的运行失败次数是否超过预设阈值,若否,则表明节点运行失败次数这个维度验证通过,意味着节点运行失败可能是由于网络波动、服务端设备不稳定等因素造成的,若是,则进行告警提示,此时节点运行失败可能是由于代码本身逻辑不合理造成的。
值得注意的是,可以从上述一个方面或多个方面对灰度代码进行测试,优选的是选取上述所有方面,待上述所有方面都验证通过之后,在线上环境发布待发布代码。
另外,在发布待发布代码之前还可以进行连续测试,在仿真环境中连续运行该灰度代码,例如连续运行一个月,每天按照抽样规则从线上环境抽取业务数据,例如每天从线上环境抽取数量相等(10%)的业务数据,建立同环比监控,根据上述步骤可以得到每天的量值(上述每个步骤中对应的数值),比较这些量值的波动情况,若这些量值的波动情况在一个区间范围内,则可以正式在线上环境发布待发布代码。
通过上述对本说明书实施例提供的技术方案的描述,通过在服务端设备上模拟出与服务端设备的线上环境对应的仿真环境,当接收到代码发布指令时,获取待发布代码,在仿真环境中执行以下操作:确定待发布代码为灰度代码,按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据,运行灰度代码,对该测试数据进行处理,监测对该测试数据的处理结果是否满足预设的第一要求,若是,则在线上环境中发布待发布代码。如此一来,可以自动实现对代码的测试,自动实现代码发布,节省了人力成本,并且使用线上环境中的业务数据与预先配置的异常业务数据对代码进行测试,可以提高测试质量,基本上可以保证对代码进行全面的测试。
相对于上述方法实施例,本说明书实施例还提供一种代码发布装置,参见图3所示,该装置可以包括:环境模拟模块310、代码获取模块320、代码确定模块330、数据组成模块340、数据处理模块350、监测模块360、代码发布模块370。
环境模拟模块310,用于在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立;
代码获取模块320,用于当接收到代码发布指令时,获取待发布代码;
代码确定模块330,用于在仿真环境中确定所述待发布代码为灰度代码;
数据组成模块340,用于在仿真环境中按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
数据处理模块350,用于在仿真环境中运行所述灰度代码,对所述测试数据进行处理;
监测模块360,用于在仿真环境中监测对所述测试数据的处理结果是否满足预设的第一要求;
代码发布模块370,用于若是,在线上环境发布所述待发布代码。
在本说明书的一种具体实施方式中,所述代码获取模块320具体用于:
当接收到代码发布指令时,解析所述代码发布指令中待发布代码的标识;
根据所述待发布代码的标识,获取待发布代码。
在本说明书的一种具体实施方式中,所述代码确定模块330具体用于:
利用预设的输入参数字段以及输出参数字段替换所述待发布代码中的输入参数字段以及输出参数字段;
确定经过字段替换的待发布代码为灰度代码。
在本说明书的一种具体实施方式中,所述代码发布模块370具体用于:
若对所述测试数据的处理结果满足预设的第一要求,则计算所述灰度代码运行过程中代码覆盖率;
判断所述灰度代码运行过程中代码覆盖率是否超过对应的预设阈值;
若所述灰度代码运行过程中代码覆盖率超过对应的预设阈值,则在线上环境发布所述待发布代码。
在本说明书的一种具体实施方式中,所述代码发布模块370具体用于:
若对所述测试数据的处理结果满足预设的第一要求,则计算对所述测试数据的处理成功率;
判断对所述测试数据的处理成功率是否超过对应的预设阈值;
若对所述测试数据的处理成功率超过对应的预设阈值,则在线上环境发布所述待发布代码。
在本说明书的一种具体实施方式中,所述代码发布模块370具体用于:
若对所述测试数据的处理结果满足预设的第一要求,则统计所述灰度代码运行过程中各节点对应的多维度信息;
判断所述灰度代码运行过程中各节点对应的多维度信息是否满足预设的第二要求;
若所述灰度代码运行过程中各节点对应的多维度信息满足预设的第二要求,则在线上环境发布所述待发布代码。
在本说明书的一种具体实施方式中,所述多维度信息至少包括以下之一:
节点数据处理耗时、节点数据处理成功率、节点数据处理量级、节点运行失败次数。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
通过上述对本说明书实施例提供的技术方案的描述,通过在服务端设备上模拟出与服务端设备的线上环境对应的仿真环境,当接收到代码发布指令时,获取待发布代码,在仿真环境中执行以下操作:确定待发布代码为灰度代码,按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据,运行灰度代码,对该测试数据进行处理,监测对该测试数据的处理结果是否满足预设的第一要求,若是,则在线上环境中发布待发布代码。如此一来,可以自动实现对代码的测试,自动实现代码发布,节省了人力成本,并且使用线上环境中的业务数据与预先配置的异常业务数据对代码进行测试,可以提高测试质量,基本上可以保证对代码进行全面的测试。
本说明书实施例还提供一种计算机设备,如图4所示,该设备可以包括:处理器410、存储器420、输入/输出接口430、通信接口440和总线450。其中处理器410、存储器420、输入/输出接口430和通信接口440通过总线450实现彼此之间在设备内部的通信连接。
处理器410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器420中,并由处理器410来调用执行。
输入/输出接口430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线450包括一通路,在设备的各个组件(例如处理器410、存储器420、输入/输出接口430和通信接口440)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器410、存储器420、输入/输出接口430、通信接口440以及总线450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的代码发布方法。该方法至少包括:
一种代码发布方法,应用于服务端设备,在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立,该方法包括:
当接收到代码发布指令时,获取待发布代码;
在仿真环境中执行以下步骤:
确定所述待发布代码为灰度代码;
按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
运行所述灰度代码,对所述测试数据进行处理;
监测对所述测试数据的处理结果是否满足预设的第一要求;
若是,在线上环境发布所述待发布代码。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

Claims (15)

1.一种代码发布方法,应用于服务端设备,在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立,该方法包括:
当接收到代码发布指令时,获取待发布代码;
在仿真环境中执行以下操作:
确定所述待发布代码为灰度代码;
按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
运行所述灰度代码,对所述测试数据进行处理;
监测对所述测试数据的处理结果是否满足预设的第一要求;
若是,在线上环境发布所述待发布代码。
2.根据权利要求1所述的方法,所述当接收到代码发布指令时,获取待发布代码,包括:
当接收到代码发布指令时,解析所述代码发布指令中待发布代码的标识;
根据所述待发布代码的标识,获取待发布代码。
3.根据权利要求1所述的方法,所述确定所述待发布代码为灰度代码,包括:
利用预设的输入参数字段以及输出参数字段替换所述待发布代码中的输入参数字段以及输出参数字段;
确定经过字段替换的待发布代码为灰度代码。
4.根据权利要求1所述的方法,所述若是,在线上环境发布所述待发布代码,包括:
若对所述测试数据的处理结果满足预设的第一要求,则计算所述灰度代码运行过程中代码覆盖率;
判断所述灰度代码运行过程中代码覆盖率是否超过对应的预设阈值;
若所述灰度代码运行过程中代码覆盖率超过对应的预设阈值,则在线上环境发布所述待发布代码。
5.根据权利要求1所述的方法,所述若是,在线上环境发布所述待发布代码,包括:
若对所述测试数据的处理结果满足预设的第一要求,则计算对所述测试数据的处理成功率;
判断对所述测试数据的处理成功率是否超过对应的预设阈值;
若对所述测试数据的处理成功率超过对应的预设阈值,则在线上环境发布所述待发布代码。
6.根据权利要求1所述的方法,所述若是,在线上环境发布所述待发布代码,包括:
若对所述测试数据的处理结果满足预设的第一要求,则统计所述灰度代码运行过程中各节点对应的多维度信息;
判断所述灰度代码运行过程中各节点对应的多维度信息是否满足预设的第二要求;
若所述灰度代码运行过程中各节点对应的多维度信息满足预设的第二要求,则在线上环境发布所述待发布代码。
7.根据权利要求6所述的方法,所述多维度信息至少包括以下之一:
节点数据处理耗时、节点数据处理成功率、节点数据处理量级、节点运行失败次数。
8.一种代码发布装置,应用于服务端设备,该装置包括:
环境模拟模块,用于在所述服务端设备上模拟出与所述服务端设备的线上环境对应的仿真环境,所述线上环境与所述仿真环境相互独立;
代码获取模块,用于当接收到代码发布指令时,获取待发布代码;
代码确定模块,用于在仿真环境中确定所述待发布代码为灰度代码;
数据组成模块,用于在仿真环境中按照预设的抽样规则抽取线上环境中的业务数据,与预先配置的异常业务数据组成测试数据;
数据处理模块,用于在仿真环境中运行所述灰度代码,对所述测试数据进行处理;
监测模块,用于在仿真环境中监测对所述测试数据的处理结果是否满足预设的第一要求;
代码发布模块,用于若是,在线上环境发布所述待发布代码。
9.根据权利要求8所述的装置,所述代码获取模块具体用于:
当接收到代码发布指令时,解析所述代码发布指令中待发布代码的标识;
根据所述待发布代码的标识,获取待发布代码。
10.根据权利要求8所述的装置,所述代码确定模块具体用于:
利用预设的输入参数字段以及输出参数字段替换所述待发布代码中的输入参数字段以及输出参数字段;
确定经过字段替换的待发布代码为灰度代码。
11.根据权利要求8所述的装置,所述代码发布模块具体用于:
若对所述测试数据的处理结果满足预设的第一要求,则计算所述灰度代码运行过程中代码覆盖率;
判断所述灰度代码运行过程中代码覆盖率是否超过对应的预设阈值;
若所述灰度代码运行过程中代码覆盖率超过对应的预设阈值,则在线上环境发布所述待发布代码。
12.根据权利要求8所述的装置,所述代码发布模块具体用于:
若对所述测试数据的处理结果满足预设的第一要求,则计算对所述测试数据的处理成功率;
判断对所述测试数据的处理成功率是否超过对应的预设阈值;
若对所述测试数据的处理成功率超过对应的预设阈值,则在线上环境发布所述待发布代码。
13.根据权利要求8所述的装置,所述代码发布模块具体用于:
若对所述测试数据的处理结果满足预设的第一要求,则统计所述灰度代码运行过程中各节点对应的多维度信息;
判断所述灰度代码运行过程中各节点对应的多维度信息是否满足预设的第二要求;
若所述灰度代码运行过程中各节点对应的多维度信息满足预设的第二要求,则在线上环境发布所述待发布代码。
14.根据权利要求13所述的装置,所述多维度信息至少包括以下之一:
节点数据处理耗时、节点数据处理成功率、节点数据处理量级、节点运行失败次数。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至7任一项所述的方法。
CN201811474295.0A 2018-12-04 2018-12-04 一种代码发布方法及装置 Active CN110007921B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811474295.0A CN110007921B (zh) 2018-12-04 2018-12-04 一种代码发布方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811474295.0A CN110007921B (zh) 2018-12-04 2018-12-04 一种代码发布方法及装置

Publications (2)

Publication Number Publication Date
CN110007921A true CN110007921A (zh) 2019-07-12
CN110007921B CN110007921B (zh) 2022-07-15

Family

ID=67165043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811474295.0A Active CN110007921B (zh) 2018-12-04 2018-12-04 一种代码发布方法及装置

Country Status (1)

Country Link
CN (1) CN110007921B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443923A (zh) * 2020-03-26 2020-07-24 北京房天下嘉居网络技术有限公司 服务发布方法及装置
CN112000443A (zh) * 2020-09-14 2020-11-27 支付宝(杭州)信息技术有限公司 一种业务数据处理方法、装置及电子设备
CN112100055A (zh) * 2020-08-13 2020-12-18 浙江大学 一种基于代码覆盖率的灰度发布度量方法
CN112559030A (zh) * 2021-01-18 2021-03-26 杭银消费金融股份有限公司 代码发布的告警监控方法及系统
CN116382660A (zh) * 2023-06-06 2023-07-04 天津金城银行股份有限公司 平台化开发方法、系统、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101656640A (zh) * 2009-09-16 2010-02-24 中兴通讯股份有限公司 一种确定测试数据的方法和设备
CN103095743A (zh) * 2011-10-28 2013-05-08 阿里巴巴集团控股有限公司 一种灰度发布的处理方法及系统
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN104410542A (zh) * 2014-11-18 2015-03-11 小米科技有限责任公司 模拟测试方法及装置
CN107360010A (zh) * 2016-05-09 2017-11-17 阿里巴巴集团控股有限公司 一种网站灰度发布方法及装置
CN108595207A (zh) * 2018-03-23 2018-09-28 深圳乐信软件技术有限公司 一种灰度发布方法、规则引擎、系统、终端和存储介质
US20180329807A1 (en) * 2017-05-15 2018-11-15 International Business Machines Corporation Focus area integration test heuristics

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101656640A (zh) * 2009-09-16 2010-02-24 中兴通讯股份有限公司 一种确定测试数据的方法和设备
CN103095743A (zh) * 2011-10-28 2013-05-08 阿里巴巴集团控股有限公司 一种灰度发布的处理方法及系统
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN104410542A (zh) * 2014-11-18 2015-03-11 小米科技有限责任公司 模拟测试方法及装置
CN107360010A (zh) * 2016-05-09 2017-11-17 阿里巴巴集团控股有限公司 一种网站灰度发布方法及装置
US20180329807A1 (en) * 2017-05-15 2018-11-15 International Business Machines Corporation Focus area integration test heuristics
CN108595207A (zh) * 2018-03-23 2018-09-28 深圳乐信软件技术有限公司 一种灰度发布方法、规则引擎、系统、终端和存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443923A (zh) * 2020-03-26 2020-07-24 北京房天下嘉居网络技术有限公司 服务发布方法及装置
CN112100055A (zh) * 2020-08-13 2020-12-18 浙江大学 一种基于代码覆盖率的灰度发布度量方法
CN112000443A (zh) * 2020-09-14 2020-11-27 支付宝(杭州)信息技术有限公司 一种业务数据处理方法、装置及电子设备
CN112559030A (zh) * 2021-01-18 2021-03-26 杭银消费金融股份有限公司 代码发布的告警监控方法及系统
CN112559030B (zh) * 2021-01-18 2021-10-08 杭银消费金融股份有限公司 代码发布的告警监控方法及系统
CN116382660A (zh) * 2023-06-06 2023-07-04 天津金城银行股份有限公司 平台化开发方法、系统、计算机设备及存储介质

Also Published As

Publication number Publication date
CN110007921B (zh) 2022-07-15

Similar Documents

Publication Publication Date Title
CN110007921A (zh) 一种代码发布方法及装置
CN110568838B (zh) 一种车辆静态电流获取方法、系统、电子设备及存储介质
US8433554B2 (en) Predicting system performance and capacity using software module performance statistics
US10120783B2 (en) Determining test case efficiency
CN109302522A (zh) 测试方法、装置以及计算机系统和介质
CN111506511A (zh) 一种测试用例生成方法、装置、电子设备及介质
CN109901968A (zh) 一种自动化页面数据校验方法和装置
CN113204451B (zh) 一种对Redis集群的压力测试方法、系统、存储介质及终端
CN106487603A (zh) 一种响应测试方法及装置
CN109117143A (zh) 一种应用部署方法及系统
CN110147685A (zh) 数据验证方法、系统、装置及设备
CN109254914A (zh) 软件开发包测试方法、系统、计算机装置及可读存储介质
CN109302423A (zh) 一种漏洞扫描能力测试方法和装置
CN106681867A (zh) 一种测试方法及装置
CN115987570A (zh) 一种供应链管理系统的安全检测方法及装置
CN114168471A (zh) 测试方法、装置、电子设备及存储介质
CN112035350A (zh) 针对区块链系统的测试方法、装置及计算机设备
CN112306857A (zh) 用于测试应用的方法和装置
CN112561690B (zh) 信用卡分期业务接口的测试方法、系统、设备及存储介质
CN115705190A (zh) 依赖程度的确定方法及装置
CN110032750A (zh) 一种模型构建、数据生命周期预测方法、装置及设备
CN111984519B (zh) 一种用于业务系统的测试方法及其装置
CN109656825A (zh) 美术资源处理的方法及装置、电子设备、存储介质
CN116382697A (zh) 版本一致性检查方法、项目构建方法、设备及介质
CN112379967B (zh) 模拟器检测方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant