1.本技术涉及计算机技术领域,具体涉及一种基于分桶实验的应用发布方法、装置、电子设备及介质。
背景技术:2.分桶实验是在产品应用或页面或流程制作两个(a/b)或多个(a/b/n)版本,在同一个时间维度,从全体用户流量中划分出组成成分相同或相似的访客群组,来随机的访问这些不同的实验版本,为不同的实验版本设置不同的实验方案,收集各个群组的用户体验数据和结果数据,观察分析实验指标效果,通过数据驱动来推进产品的迭代、验证算法效果、获取产出值等等,得到实验结论,最后分析评估出效果较好的版本,并正式采用,此种实验方法被广泛应用在互联网产品中进行产品的迭代优化。
3.但是,在现有技术中,已经发布的应用的功能,一旦全量固化后,再次出现变更需求时,无法进行功能的变更,只能重新对应用进行发布。这种方式存在着很多弊端,如在对应用进行重新发布的过程中,需要重写代码,消耗大量的人力和时间成本;每次更新都要下发到端上,耗费后端存储资源;且端接口每次需要携带大量的实验数据,显著增加了接口的传输时间。
技术实现要素:4.本技术实施例针对上述情况,提出了一种基于分桶实验的应用发布方法、装置、电子设备及介质,该方法通过建立相互关联的测试子母实验,使得固化后的内容仍然能够享有灰度放量能力,在无需重新建立整体测试实验的基础上,实现版本的更替。
5.第一方面,本技术实施例提供了一种基于分桶实验的应用发布方法,包括:
6.在所述应用的测试母实验中构建本次待发布版本的测试子实验,其中,所述测试实验子包括多个分桶,各分桶对应所述本次待发布版本的一个亚版;
7.获取第一固化结果,其中,所述第一固化结果是通过对上次待发布版本的测试子实验进行分桶测试实验得到的;
8.将第一固化结果作为本次待发布版本的测试子实验中一个分桶,以该分桶为所述本次待发布版本的测试子实验的初始值,对所述本次待发布版本的测试子实验进行分桶测试实验,得到第二固化结果;
9.根据所述第一固化结果以及所述第二固化结果,更新所述应用。第二方面,本技术实施例还提供了一种基于分桶实验的应用发布装置,所述装置包括:
10.构建单元,用于在所述应用的测试母实验中构建本次待发布版本的测试子实验,其中,所述测试实验子包括多个分桶,各分桶对应所述本次待发布版本的一个亚版;
11.获取单元,用于获取第一固化结果,其中,所述第一固化结果是通过对上次待发布版本的测试子实验进行分桶测试实验得到的;
12.测试单元,用于将第一固化结果作为本次待发布版本的测试子实验中一个分桶,
以该分桶为所述本次待发布版本的测试子实验的初始值,对所述本次待发布版本的测试子实验进行分桶测试实验,得到第二固化结果;
13.更新单元,用于根据所述第一固化结果以及所述第二固化结果,更新所述应用。
14.第三方面,本技术实施例还提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一的方法。
15.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行上述任一的方法。
16.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:
17.本技术通过构建关联式的子母测试实验,其中关联式的子母测试实验中可以包含若干个测试子实验,每个测试子实验对应一个待发布版本,在每个测试子实验中包含多个分桶,每个分桶对应待发布版本的一个亚版,在测试时,将上次测试子实验中获得的固化结果,作为本次测试子实验的初始值,进行分桶测试实验,并联合上次测试子实验的第一固化结果和本次测试子实验的第二固化结果,对应用进行更新。本技术在不需要改变待发布应用整体架构的情况下,通过建立相互关联的子母测试实验,使得固化后的内容仍然能够享有灰度放量能力,在无需重新建立整体测试实验的基础上,实现版本的更替;且由于已经固化的内容占用存储资源和传输资源少,本技术还极大的减轻了后端的存储压力和传输压力,节约了大量的而后端资源,满足了更高的使用需求。
附图说明
18.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
19.图1示出根据本技术的一个实施例的基于分桶实验的应用发布方法的流程示意图;
20.图2-a示出了根据本技术的一个实施例的应用的测试实验的结构示意图
21.图2-b示出了根据本技术的另一个实施例的应用的测试实验的结构示意图;
22.图3示出了根据本技术的一个实施例的对第二测试子实验的初始值赋值的示意图;
23.图4示出了根据本技术的再一个实施例的应用的测试实验的结构示意图;
24.图5示出根据本技术的另一个实施例的基于分桶实验的应用发布方法的流程示意图;
25.图6示出根据本技术的一个实施例的基于分桶实验的应用发布装置的结构示意图;
26.图7为本技术实施例中一种电子设备的结构示意图。
具体实施方式
27.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一
部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
28.以下结合附图,详细说明本技术各实施例提供的技术方案。
29.本技术的构思在于,通过构建嵌套的关联式的子母测试实验,将应用中已经通过分桶测试实验固化下来的内容,作为新实验的初始值,继续进行实验,使得已经做完实验的需求,可以连续的做下个实验,不用依赖发版项目,使得在对应用进行变更时,无需重新发版,直接通过子母实验的方式,赋予循环灰度变更能力,实验需求的变更。
30.图1示出根据本技术的一个实施例的基于分桶实验的应用发布方法的流程示意图,从图1可以看出,本技术至少包括步骤s110~步骤s140:
31.步骤s110:在所述应用的测试母实验中构建本次待发布版本的测试子实验,其中,所述测试实验子包括多个分桶,各分桶对应所述本次待发布版本的一个亚版。
32.首先简单介绍一下本技术中出现的专业词汇在本领域内的含义。
33.分桶实验,又称ab实验,主要是围绕用户进行的实验,从统计意义上观察用户对不同的产品设计、交互体验、流程的反馈,从而指导产品的改进方向,分桶实验广泛的用于互联网产品的迭代优化。
34.变更,通过一定技术手段,改变原有的用户逻辑或行为。
35.灰度,逐步让用户获取新的变更,比如1%-》2%-》5%-》10%等,即控制线上变更的影响范围。
36.子母实验:通过实验嵌套的方式,实现更多的功能。
37.在现有技术中,在采用分桶实验方式进行一个应用的发布时,通常对分桶实验设定一个有效期,如6个月,在到有效期后,就将得到的分桶实验结果,长期确定为固定的值,这个过程称为固化,被固化的内容后续是不具备灰度变更能力的,即需要出现新的需求,想要修改被固化的内容,只能重新对应用进行发布,即只能全量变更,而不具备灰度放量功能。
38.为此,本技术提出了一种基于分桶实验的应用发布方法,通过子母实验嵌套的方式,使得固化的内容能够再次灰度放量。
39.首先,构建待发布应用的测试实验,当待发布应用出现新的变更时,可以通过构建子母实验的方式,来实现新功能的变更,具体的,在对应用进行首次发布时,需要构建待发布应用的测试母实验和至少一个测试子实验,其中,测试子嵌套在测试母实验中;在对应用进行非首次发布时,可直接在所述应用的测试母实验中构建本次待发布版本的测试子实验。在上述的测试子实验中,包含多个分桶,每个分桶对应着待发布版本的一个亚版,亚版可以理解为对待发布版本平行设计的不同版本。
40.图2-a示出了根据本技术的一个实施例的应用的测试实验的结构示意图,从图2-a可以看出,该应用的测试实验包括应用的测试母实验100,在测试母实验100中包含一个测试子实验,将该测试子实验记为第一测试子实验110,第一测试子实验110对应着应用的第一版本,其中,在第一测试子实验110中包含两个分桶,分别记为分桶111和分桶112,其中,分桶111对应着第一版本的第一亚版,分桶112对应着第一版本的第二亚版,如应用中包含一个网页中的按钮,分桶111对应了该按钮设计为红色,分桶112对应了该按钮设计为绿色。在对应用进行首次发布时,可构建如但不限于图2-a中示出的测试实验。
41.图2-b示出了根据本技术的另一个实施例的应用的测试实验的结构示意图,从图2-b可以看出,该应用的测试实验包括应用的测试母实验100,在测试母实验100中包含两个测试子实验,分别为第一测试子实验110和第二测试子实验120,第一测试子实验110对应应用的第一版本,第二测试子实验120对应应用的第二版本。每个测试子实验均包含两个分桶,第一测试子实验110的两个分桶记为分桶111和分桶112,第二测试子实验120的两个分桶记为分桶121和分桶122。其中,应用的第一版本可以理解为已经发布的现有版本,应用的第二版本可以理解为本次欲发布的待发布版本。
42.需要说明的是,通常情况下,在对一个应用进行发布时,如果是首次发布,则需要建立测试母实验和至少一个测试子实验,在后续对已经发布的应用进行更新,即发布一个新的版本时,在构建测试实验时,则只需要在应用的测试母实验中构建一个测试子实验,以图2-a和图2-b所示的应用的测试实验为例,在第一发布应用时,即发布应用的第一版本时,需要构建测试母实验100和第一测试子实验110(图2-a),而在第二次发布应用时,即发布应用的第二版本时,仅构建第二测试子实验120(图2-b),此时,建测试母实验100的整体架构和第一测试子实验110是已经存在的,无需再次构建。
43.需要说明的是,在本技术的一些实施例中,如果第二版本相对于第一版本改动不是本质性的,则可以使第二测试子实验120与第一测试子实验110具有相同架构,在构建第二测试子实验120时,此时无需对代码进行重新编写,可保持原架构不变,仅将改变的具体内容进行简单替换即可,对于需要替换的内容,可以采用但不限于正则表达式进行识别,然后对应替换即可,这种方式可快速实现测试子实验的构建,极大程度上节省了构建测试实验的人力和时间成本。
44.需要说明的是,本技术中所述的应用是广义的,可以是一个软件、应用程序(app),也可以是前端界面的一个页面或者多个页面的组合等。
45.在本实施例中,以下以待发布版本为第二版本为例进行说明,即在构建过程中,在应用的预测母实验100中,仅需构建预测子实验120。
46.步骤s120:获取第一固化结果,其中,所述第一固化结果是通过对所述上次待发布版本的测试子实验进行分桶测试实验得到的。
47.在发布第二版本时,获取上次待发布版本的测试子实验进行分桶测试实验得到的固化结果,即第一版本对应的第一测试子实验110的分桶测试结果,将该结果记为第一固化结果。
48.对第一测试子实验110进行分桶测试的过程可简述如下:应用的第一版本上线后,可对第一版本对应的第一测试子实验110进行分桶测试实验,如将访问流量按照预定比例引导至第一版本实验中不同的分桶中,进行染色,然后确定哪个分桶的结果更好。具体的流量分配方法,即哪条访问命中哪个分桶可参考现有技术,也可以采用下述推拉结合的方式,每次应用,如一个app,启动,客户端会向服务端请求分桶信息(“拉”的过程,对于服务端而言);每次灰度比例改变,服务端会下发通知,通知客户端拉取响应接口,获得最新的分桶数据(“推”的过程,对于服务端而言);服务端会根据灰度比例,计算出当前客户端命中的分桶,从而实现流量的分配。
49.在确定第一固化结果后,其他的分桶就被淘汰,当再有访问流量到达应用时,所有的流量就会被引导至固化的分桶中。
50.这里需要说明的是,对第一测试子实验110进行分桶测试实验是上一个轮次发生变更时执行的步骤,即第一固化结果是上一个轮次发生变更时已经形成的,在当前轮次的变更中,只需要获取到上一轮次的固化结果即可,这里记为第一固化结果,具体的,获取到上一轮次进行第一测试子实验的第一固化结果时,获取的结果是固化到哪一个分桶即可,这里假设第一固化结果为分桶112。
51.步骤s130:将第一固化结果作为本次待发布版本的测试子实验中一个分桶,以该分桶为所述本次待发布版本的测试子实验的初始值,对所述本次待发布版本的测试子实验进行分桶测试实验,得到第二固化结果。
52.第二测试子实验120可以理解为要发生的变更,为了使已经固化的内容可以再次灰度,将获取到的第一固化结果,作为第二测试子实验120的一个分桶,并将该分桶作为本次测试的初始值,即第二测试子实验120的初始值,并对第二测试子实验120进行分桶测试实验。
53.具体的,在获取到第一固化结果后,可以将第二测试子实验120中的一个分桶设置与第一固化结果中固化的分桶的内容一致,即将分桶121和分桶122中任意一个设置与分桶112一致,请参考图3,图3示出了根据本技术的一个实施例的对第二测试子实验的初始值赋值的示意图,从图3可以看出,对第二测试子实验120的初始值赋值前后,第二测试子实验120中的分桶121转变为上一轮次的固化结果分桶112。
54.需要说明的是,这里所说的对第二测试子实验的初始值赋值,是指将分桶121对应的功能、组件、模块等的设计设置与分桶112对应的功能、组件、模块等的设计相同。
55.在对第二测试子实验120的初始值赋值后,即可进行分桶测试实验,此时,所有的流量均被引流至第二测试子实验的分桶112(也可以记为分桶121),可以逐渐将流量按照预设比例引导至其他分桶中,进行染色,然后确定第二固化结果,其中,第二固化结果可以为分桶112,也可以为分桶122。
56.需要说明的是,分桶122相对于分桶112是要发生的变更,但是不排除分桶122的效果不如分桶112,因此第二固化结果仍然可能是分桶112。
57.步骤s140:根据所述第一固化结果以及所述第二固化结果,更新所述待发布应用。
58.最后,根据第一固化结果以及第二固化结果,对待发布应用的相关功能或者组件或者界面等进行更新。
59.假设第一固化结果为分桶112,第二固化结果也为分桶112,则此时无需对待发布应用更新,将待发布应用固化到分桶112即可,在固化后仍然将流量引导至分桶112。
60.假设第一固化结果为分桶112,第二固化结果也为分桶122,则此时对待发布应用更新,具体的将待发布应用固化到分桶122,在固化后将流量引导至分桶122。
61.当再次有新的变更时,重复执行步骤s110~步骤s114,即可再次实现灰度变更。
62.由图1所示的方法可以看出,本技术通过构建关联式的子母测试实验,其中关联式的子母测试实验中可以包含若干个测试子实验,每个测试子实验对应一个待发布版本,在每个测试子实验中包含多个分桶,每个分桶对应待发布版本的一个亚版,在测试时,将上次测试子实验中获得的固化结果,作为本次测试子实验的初始值,进行分桶测试实验,并联合上次测试子实验的第一固化结果和本次测试子实验的第二固化结果,对应用进行更新。本技术在不需要改变待发布应用整体架构的情况下,通过建立相互关联的子母测试实验,使
得固化后的内容仍然能够享有灰度放量能力,在无需重新建立整体测试实验的基础上,实现版本的更替;且由于已经固化的内容占用存储资源和传输资源少,本技术还极大的减轻了后端的存储压力和传输压力,节约了大量的而后端资源,满足了更高的使用需求。
63.在本技术的一些实施例中,在上述方法中,在首次发布所述应用时,所述方法还包括:构建所述应用的测试母实验以及至少一个测试子实验,其中,所述测试子实验嵌套在所述测试母实验中,且所述测试子实验中包含多个分桶;对所述测试子实验进行分桶测试实验,将得到的固化结果作为所述应用进行发布。
64.请再参考图2-a,在对应用进行次进行发布时,需要构建测试母实验,在测试母实验中可以只构建第一测试子实验110,即只构建一个测试子实验,将该第一测试子实验110嵌套在测试母实验100中。在进行应用发布时,流程先到达测试母实验100,然后流转到第一测试子实验110,执行第一测试子实验110即可。
65.在第一测试子实验110中,可以设置两个或以上的分桶,本实施例中以两个为例,分别为分桶111和分桶112,对第一测试子实验110进行分桶测试实验的方法包括但不限于:将访问流量全部分别引导至第一测试子实验110的一个分桶中;按照预设比例将所述访问流量逐渐分流到第一测试子实验110的其他分桶中;根据第一测试子实验110的各分桶的染色结果,确定第一测试子实验110的固化分桶;将得到的固化分桶,作为第一固化结果。
66.请参考图2,在现有技术中,在进行分桶实验时,通常是将流量分别直接引导至多个分桶中,以第一测试子实验110为例,采用现有技术通常是将流量按照一定比例,如50%和50%的比例直接引导至各个分桶中,这种方式存在着分流不合理,染色不充分的弊端。
67.在对第一测试子实验110进行分桶测试实验时,首先可以将100%的访问流量全部引导至第一测试子实验110的分桶111中,此时分桶111中的流量为100%,分桶112中的流量为0%;然后进行灰度,即逐渐将访问流量按照预设比例在分桶111和分桶112之间分配,使得分桶111中的流量逐渐由100%变为50%,分桶112中的流量逐渐由0%变为50%,然后进行染色,流量分流的过程通常时逐步进行的,如开始的一段时间中,分桶111中的流量为100%,分桶112中的流量为0%,然后使得分桶111中的流量为90%,分桶112中的流量为10%,然后使得分桶111中的流量为80%,分桶112中的流量为20%,依次类推,使得分桶111和分桶112中的流量均达到50%,然后进行效果比较。采用逐渐灰度的方式,使得分流方式更加合理,染色充分,得到的指标更加准确。
68.在服务端设有埋点,客户端会将分桶的实验数据上报到服务端的埋点里,这个过程叫做染色,可以根据染色的结果,看对评估指标的影响,从而确定出哪个分桶的效果更好。如评估指标为转化率,如果分桶111的转化率比分桶112高,则说明分桶111的效果是更优的,其中分桶111就作为第一固化结果。
69.在本技术的另一些实施例中,所述测试子实验的数量为多个,各所述测试子实验对应一个待发布版本;所述方法还包括:响应于对待发布版本的定向指令,执行与所述定向指令对应的待发布版本的测试子实验。
70.在一些场景中,可以根据需要在构建测试实验时,直接在测试母实验中构建多个测试子实验,每个测试子实验对应一个待发布版本,当发布应用时,可以根据对待发布版本的定向指令,执行相应的测试子实验。
71.以图2-b所述的测试实验为例,假设在第一测试子实验110和第二测试子实验120
都是在首次发布应用时构建的,第一测试子实验110对应第一版本,第二测试子实验120对应第二版本,第一版本和第二版本是并列的。在发布应用时,可以指定待发布版本,若想发布第一版本,可直接对第一测试子实验110进行定向指定,流程直接流转到第一测试子实验110,在第一测试子实验110执行完毕后,全量固化到第一测试子实验的一个分桶,将第一测试子实验110记为第一固化结果。若在发布了第一版本后,想要发布第二版本,可以对第二测试子实验120进行定向指定,在执行第二测试子实验120时,具体执行获取第一固化结果,将第一固化结果作为本次待发布版本的测试子实验中一个分桶,以该分桶为所述本次待发布版本的测试子实验初始值,对所述本次待发布版本的测试子实验进行分桶测试实验,得到第二固化结果;根据所述第一固化结果以及所述第二固化结果,更新所述应用。从而使得已经固化的内容再次具备了灰度的能力。
72.同理,若在首次发布应用时,若想直接发布第二版本,可直接对第二测试子实验120进行定向指定,流程直接流转到第二测试子实验120。若在发布了第二版本后,想发布第一版本,可再次对第一测试子实验110进行定向指定。
73.在实际的应用场景中,通常一个待发布应用包含多个功能,因此在本技术的一些实施例中,可以将待发布应用划分为多个组件或者模块,第一测试子实验110和第二测试子实验120中可以分别设置多个组件测试实验,基于各个组件测试实验来分别测试这些组件或者模块。
74.在本技术的一些实施例中,所述在所述应用的测试母实验中构建本次待发布版本的测试子实验包括:将所述应用划分为多个组件;构建待发布版本的各组件的组件测试实验,各所述组件测试实验包括相同数量的多个分桶,且不同组件测试实验的分桶之间具有一一对应关系,具有对应关系的位于不同组件测试实验的多个分桶组成一组分桶。
75.在本技术的一些实施例中,在实际的应用场景中,通过一个应用是由多个组件或者模块组成的,因此,在实验时,通常会将一个应用划分为多个组件,如图4所示,图4示出了根据本技术的另一个实施例的待发布应用的测试实验的结构示意图,从图4可以看出,将应用划分为三个组件,分别记为组件1、组件2和组件3,针对每个组件构建一个组件测试实验,即可在第一测试子实验110中设置三个组件测试实验,第一测试子实验110中包含第一组件测试实验a、第二组件测试实验b和第三组件测试实验c,其中,每一个组件测试实验分别对应应用中的一个组件,第一组件测试实验a对应组件1,第二组件测试实验b对应组件2,第三组件测试实验c对应组件3。在每个组件测试实验中可以设置多个分桶,每个分桶对应该组件的不同亚版,不同亚版可以理解为对一个组件的不同设计,以第一组件测试实验a为例,分桶a1和分桶a2对应着组件1的两个不同亚版。
76.需要说明的是,不同版本之间组件的分割方式是一致的,也就是如果第一版本中,将应用分割为组件1、组件2和组件3组合的形式,那么在第二版本中,仍然是将应用分割为这3个组件,只是出现了新的版本,在第二版本中,仍然可以理解为应用为组件1、组件2和组件3组合的形式。可以理解为,一个应用的不同版本包含一一对应的相同数量的组件,因此不同版本的测试子实验具有相同数量的组件测试实验,不同版本的测试子实验中对应的同一组件中的组件测试实验之间具有一一对应关系。
77.因此,在第一测试子实验110进行如上分割和构建的基础上,在第二测试子实验120中也可以设置三个组件测试实验,分别为第四组件测试实验d、第五组件测试实验e和第
六组件测试实验f。即第一组件测试实验a与第四组件测试实验d具有对应关系,且二者均对应组件1;第二组件实验b和第五组件测试实验e具有对应关系,且二者均对应组件2,第三组件测试实验c和第六组件测试实验f具有对应关系,且二者均对应组件3。第四组件测试实验d可以理解为对第一组件测试实验a的变更,第五组件测试实验e可以理解为对第二组件测试实验b的变更,第六组件测试实验f可以理解为对第三组件测试实验c的变更。
78.且在一个测试子实验中,每个组件测试子实验具有相同数量的分桶,且不同组件测试实验的分桶之间具有一一对应关系,具有对应关系的位于不同组件测试实验的多个分桶组成一组分桶。请再参考图4,以第一测试子实验110为例,其包含三个组件测试实验,每个组件测试实验中分别包含两个分桶,第一组件测试实验a的分桶分别记为分桶a1和分桶a2;第二组件测试实验b的分桶分别记为分桶b1和分桶b2;第三组件测试实验c的分桶分别记为分桶c1和分桶c2;其中,分桶a1、分桶b1和分桶c1组成一组分桶;分桶a2、分桶b2和分桶c2组成一组分桶。再以第二测试子实验120为例,其也包含三个组件测试实验,每个组件测试实验中分别包含三个分桶,第四组件测试实验d的分桶分别记为分桶d1、分桶d2和分桶d3;第五组件测试实验e的分桶分别记为分桶e1、分桶e2和分桶e3;第六组件测试实验f的分桶分别记为分桶f1、分桶f2和分桶f3;其中,分桶d1、分桶e1和分桶f1组成一组分桶;分桶d2、分桶e2和分桶f2组成一组分桶;分桶d3、分桶e3和分桶f3组成一组分桶。在进行变更时,同步对各个组件的组件测试实验进行分桶实验测试即可。
79.在本技术的一些实施例中,在上述方法中,所述将第一固化结果作为本次待发布版本的测试子实验中一个分桶,以该分桶为所述本次待发布版本的测试子实验的初始值,对所述本次待发布版本的测试子实验进行分桶测试实验,得到第二固化结果,包括:将本次待发布版本的测试子实验中不同组件测试实验中的任意一组分桶设置为与所述第一固化结果一致;将访问流量全部引导至与所述第一固化结果一致的一组分桶中;按照预设比例将所述访问流量逐渐分流到所述本次待发布版本的测试子实验的其他组分桶中;根据各组分桶的染色结果,确定所述第二固化结果。
80.请再参考图4,假设本次待发布版本为第二版本,再对第一测试子实验110进行分桶测试,得到固化结果为分桶a1、分桶b1和分桶c1组成的分桶组。在进行第二测试子实验120进行分桶实验时,首先对第二测试子实验120的初始值进行赋值,具体的,是将第二测试子实验120中的任意一组分桶设置与第一固化结果一致,从图4中可以看出,第二测试子实验120设置有3个分同组,可以将其中任意一组设置与第一固化结果一致,即与分桶a1、分桶b1和分桶c1组成的分桶组一致,假设这里将分桶分桶d1、分桶e1和分桶f1组成的分桶组设置与分桶a1、分桶b1和分桶c1组成的分桶组一致,然后即可进行分桶测试实验。
81.在进行分桶测试实验时,首先将100%的访问流量全部引导至与分桶a1、分桶b1和分桶c1组成的分桶组一致的分桶d1、分桶e1和分桶f1组成的分桶组中,也就是说,第二测试子实验120是以第一固化结果为基础进行的,使得已经固化的内容重新具备了灰度变更能力。后续流程同前述的第一测试子110实验的分桶实验流程,即逐渐使得三个分桶组中的流量均达到预设比例,如各三分之一,然后进行效果比较,这里假设经过分桶实验,分桶d2、分桶e2和分桶f2组成的分桶组的效果最好,则将第二版本实验固化到分桶d2、分桶e2和分桶f2组成的分桶组,作为第二测试子实验120的固化结果。需要说明的是,对多个组件测试实验进行分桶测试实验时同步的,但是其效果是可以为同一个分桶组,也可以是跨越分桶组
的,如本实施例中,第二固化结果可以是分桶d1、分桶e2和分桶f3的组合。
82.在本技术的一些实施例中,所述根据所述第一固化结果以及所述第二固化结果,更新所述应用,包括:比对所述第一固化结果中固化分桶与所述第二固化结果中固化分桶的一致性;若一致,则根据所述第一固化结果或所述第二固化结果,对所述应用进行更新;若不一致,则根据所述第二固化结果,对所述应用进行更新。
83.在对应用更新的步骤中,可根据第一固化结果与第二固化结果的一致性进行,具体的,比较第一固化结果中的固化分桶与第二固化结果中的固化分桶是否一致,若二者一致,则说明本次待发布版本的变更的效果不如现有版本,此时无需对应用进行更新,保持现状即可。若第一固化结果中的固化分桶与第二固化结果中的固化分桶不一致,则说明本次待发布版本的变更的效果比现有技术更好些,则根据本次固化结果,即第二固化结果对应用的现有版本进行更新,以实现版本的更替。
84.在本技术的一些实施例中,在上述方法中,所述根据所述第一固化结果以及所述第二固化结果,更新所述应用,包括:比对所述第一固化结果中各固化分桶与所述第二固化结果中各固化分桶的一致性;若所述第一固化结果中的一个固化分桶与所述第二固化结果对应的固化分桶一致,则保持所述应用中与该固化分桶对应的组件不变;若所述第一固化结果中的一个固化分桶与所述第二固化结果对应的固化分桶不一致,则根据所述第二固化结果,对与该固化分桶对应的组件进行更新。
85.在将应用划分为多个组件的情况下,在对第一固化结果与第二固化结果进行比对的过程中,需要按照两个版本的测试子实验中的对应的组件测试实验一一比对,仍然以图4示出的实施例为例,在进行第一固化结果与第二固化结果的比对时,将第一组件测试实验a中得到的固化分桶与第四组件测试实验d中得到的固化分桶进行比对,假设第一组件测试实验a中得到的固化分桶为分桶a1,第四组件测试实验d中得到的固化分桶为与分桶a1设置的一致的分桶d1,则确认对于组件1而言,第一固化结果与第二固化结果一致,无需进行变更;假设第一组件测试实验a中得到的固化分桶为分桶a1,第四组件测试实验d中得到的固化分桶为与分桶d2,由于分桶d2与分桶a1设置不一致,则确认对于组件1而言,第一固化结果与第二固化结果不一致,组件1需要变更,具体的,将现有版本的组件1更新为第二版本的组件1。
86.依次类推,对于组件2和组件3也同上述方法。需要说明的是,各组件的固化结果的比较以及组件的更新过程是可以同步进行的,如多线程并行,也可以异步进行,如单线程串行,对此本技术不作限定,但为了提高效率,推荐采用同步进行的方式。
87.表1示出了根据本技术的一个实施例的应用发布的结果,从表1可以看出,应用包含3个组件,对于组件1,第一组件测试实验a和第四组件测试实验d对应组件1,第一组件测试实验a的第一固化结果为分桶a1,将分桶d1设置与分桶a1一致(分桶d1=分桶a1),进行分桶测试实验后,得到的第二固化结果为分桶d2,则对于组件1而言,其第二固化结果与第一固化结果不一致,需要更新,更新后的结果是,组件1被替换为分桶d2对应的变更。组件3的情况同组件1,不再详细说明。
88.对于组件2,第二组件实验b和第五组件测试实验e对应组件2,第二组件测试实验b的第一固化结果为分桶b2,将分桶e1设置与分桶b2一致(分桶b2=分桶e1),进行分桶测试实验后,得到的第二固化结果为分桶e1,则对于组件2而言,其第二固化结果与第一固化结
果一致,因此,不需要更新。
89.表1
[0090][0091]
图5示出根据本技术的另一个实施例的基于分桶实验的应用发布方法的流程示意图,从图5可以看出,本实施例中,在测试母实验中,涉及的是一个应用发布版本1.0、发布版本2.0以及发布版本3.0的过程,从图5可以看出,针对发布版本1.0、发布版本2.0以及发布版本3.0的过程分别构建了测试子实验a、测试子实验d和测试子实验g,在测试子实验a、测试子实验d和测试子实验g分别设置了两个分桶,每个分桶对应着各自对应版本的不同亚版本。
[0092]
在发布版本1.0时,首先将访问流量100%引导至实验a的分桶a1,然后逐渐分流到实验a的分桶a2中一部分,进行染色后,假设固化到分桶a2。
[0093]
在发布版本2.0时,构建测试子实验d,首先将测试子实验d中的一个分桶设置与实验a的分桶a2一致,将访问流量100%引导至这个分桶(这个分桶可以记为分桶a2也可以称为分桶d1),然后逐渐分流到实验d的分桶d2中一部分,进行染色后,假设固化到分桶d2。
[0094]
同发布版本2.0时,在发布版本3.0时,构建测试子实验g,首先将测试子实验g中的一个分桶设置与实验d的分桶d2一致,将访问流量100%引导至这个分桶(这个分桶可以记为分桶d2也可以称为分桶g1),然后逐渐分流到实验g的分桶g2中一部分,进行染色后,固化到分桶g2。固化后,即可将访问流量100%引导至分桶g2中。
[0095]
图6示出了根据本技术的一个实施例的基于分桶实验的应用发布装置的结构示意图,从图6可以看出,该装置600包括:
[0096]
构建单元610,用于在所述应用的测试母实验中构建本次待发布版本的测试子实验,其中,所述测试实验子包括多个分桶,各分桶对应所述本次待发布版本的一个亚版;
[0097]
获取单元620,用于获取第一固化结果,其中,所述第一固化结果是通过对上次待发布版本的测试子实验进行分桶测试实验得到的;
[0098]
测试单元630,用于将第一固化结果作为本次待发布版本的测试子实验中一个分桶,以该分桶为所述本次待发布版本的测试子实验的初始值,对所述本次待发布版本的测试子实验进行分桶测试实验,得到第二固化结果;
[0099]
更新单元640,用于根据所述第一固化结果以及所述第二固化结果,更新所述应用。
[0100]
在本技术的一些实施例中,在上述装置中,构建单元610,还用于在首次发布所述应用时,构建所述应用的测试母实验以及至少一个测试子实验,其中,所述测试子实验嵌套在所述测试母实验中,且所述测试子实验中包含多个分桶;测试单元630,还用于对所述测试子实验进行分桶测试实验,将得到的固化结果作为所述应用进行发布。
[0101]
在本技术的一些实施例中,在上述装置中,所述测试子实验的数量为多个,各所述测试子实验对应一个待发布版本;测试单元630,还用于响应于对待发布版本的定向指令,执行与所述定向指令对应的待发布版本的测试子实验。
[0102]
在本技术的一些实施例中,在上述装置中,构建单元610,用于将所述应用划分为多个组件;构建待发布版本的各组件的组件测试实验,各所述组件测试实验包括相同数量的多个分桶,且不同组件测试实验的分桶之间具有一一对应关系,具有对应关系的位于不同组件测试实验的多个分桶组成一组分桶。。
[0103]
在本技术的一些实施例中,在上述装置中,测试单元630,用于将本次待发布版本的测试子实验中不同组件测试实验中的任意一组分桶设置为与所述第一固化结果一致;将访问流量全部引导至与所述第一固化结果一致的一组分桶中;按照预设比例将所述访问流量逐渐分流到所述本次待发布版本的测试子实验的其他组分桶中;根据各组分桶的染色结果,确定所述第二固化结果。
[0104]
在本技术的一些实施例中,在上述装置中,更新单元640,用于比对所述第一固化结果中固化分桶与所述第二固化结果中固化分桶的一致性;若一致,则根据所述第一固化结果或所述第二固化结果,对所述应用进行更新;若不一致,则根据所述第二固化结果,对所述应用进行更新。
[0105]
在本技术的一些实施例中,在上述装置中,更新单元640,用于比对所述第一固化结果中各固化分桶与所述第二固化结果中各固化分桶的一致性;若所述第一固化结果中的一个固化分桶与所述第二固化结果对应的固化分桶一致,则保持所述应用中与该固化分桶对应的组件不变;若所述第一固化结果中的一个固化分桶与所述第二固化结果对应的固化分桶不一致,则根据所述第二固化结果,对与该固化分桶对应的组件进行更新。
[0106]
需要说明的是,上述的基于分桶实验的应用发布装置能够一一实现前述的对应的基于分桶实验的应用发布方法,这里不再一一赘述。
[0107]
图7是本技术的一个实施例电子设备的结构示意图。请参考图7,在硬件层面,该电
子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他应用所需要的硬件。
[0108]
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0109]
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
[0110]
处理器从非易失性存储器中获取对应的计算机程序到内存中然后运行,在逻辑层面上形成基于分桶实验的应用发布装置。处理器,执行存储器所存放的程序,并具体用于执行前述任一方法。
[0111]
上述如本技术图6所示实施例揭示的基于分桶实验的应用发布装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programm分桶le gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器获取存储器中的信息,结合其硬件完成上述方法的步骤。
[0112]
该电子设备还可执行图6基于分桶实验的应用发布装置执行的方法,并实现基于分桶实验的应用发布装置在图6所示实施例的功能,本技术实施例在此不再赘述。
[0113]
本技术实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图6所示实施例中基于分桶实验的应用发布装置执行的方法,并具体用于执行前述任一方法。
[0114]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产
品的形式。
[0115]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0116]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0117]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0118]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0119]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0120]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0121]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0122]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0123]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员
来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。