CN113064820A - 更新a/b实验sdk的方法、设备和计算机可读存储介质 - Google Patents
更新a/b实验sdk的方法、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113064820A CN113064820A CN202110330924.8A CN202110330924A CN113064820A CN 113064820 A CN113064820 A CN 113064820A CN 202110330924 A CN202110330924 A CN 202110330924A CN 113064820 A CN113064820 A CN 113064820A
- Authority
- CN
- China
- Prior art keywords
- experiment
- configuration
- test
- sdk
- hit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及计算机软件领域,提供了更新A/B实验SDK的方法、设备和计算机可读存储介质,以降低更新A/B测试SDK时各方的成本,所述方法包括:当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据;解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息;根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件;将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。本申请的技术方案降低了更新A/B测试SDK时各方的成本。
Description
技术领域
本发明涉及计算机软件领域,特别涉及一种更新A/B实验SDK的方法、设备和计算机可读存储介质。
背景技术
A/B测试(A/B Test)又称A/B实验,其基本原理是为Web(网页)或App(应用程序)的界面或流程制作两个(A/B)或多个(A/B/n)版本。在同一时间维度,分别让属性相同或相似的访客群组随机访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最佳版本正式采用。
A/B测试离不开A/B测试软件开发工具箱(Software Development Kit,SDK),其主要实现A/B实验配置数据的解析、流量过滤和分组等功能。通常而言,A/B测试SDK会集成至待测试软件并结合A/B测试配置平台使用,因此,当待测试软件和/或A/B测试配置平台更新或升级时,A/B测试SDK需要同步更新或升级。
然而,伴随着软件或互联网产品更新换代的加快,按照上述现有更新A/B实验SDK的方法,不仅待测试软件的商家必须频繁升级其A/B测试SDK,A/B测试配置平台也需要维护数量庞大、版本各异的A/B测试SDK。因此,无论对哪一方而言,现有更新A/B实验SDK的方法都会导致成本的高企。
发明内容
本申请提供一种更新A/B实验SDK的方法、装置、设备和计算机可读存储介质,以降低更新A/B测试SDK时各方的成本。
一方面,本申请提供了一种更新A/B实验SDK的方法,包括:
当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,所述配置中心连接于A/B测试配置平台,所述A/B测试配置平台用于对A/B实验配置进行编码形成所述A/B实验配置更新数据以及将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件;
解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件;
将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
另一方面,本申请提供了一种更新A/B实验SDK的方法,包括:
当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;
对所述A/B实验配置进行编码形成A/B实验配置更新数据;
将所述A/B实验配置更新数据发送至配置中心,以使集成于所述待A/B测试软件的A/B测试SDK从所述配置中心接收所述A/B实验配置更新数据并解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件,所述待A/B测试软件的A/B测试SDK根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件,将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
第三方面,本申请提供了一种更新A/B实验SDK的装置,包括:
第一接收模块,用于当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,所述配置中心连接于A/B测试配置平台,所述A/B测试配置平台用于对A/B实验配置进行编码形成所述A/B实验配置更新数据以及将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件;
解析模块,用于解析所述A/B实验配置更新数据,确定流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
获取模块,用于根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件;
更新模块,用于将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
第四方面,本申请提供了一种更新A/B实验SDK的装置,包括:
第二接收模块,用于当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;
编码模块,用于对所述A/B实验配置进行编码形成A/B实验配置更新数据;
第一发送模块,用于将所述A/B实验配置更新数据发送至配置中心,以使集成于所述待A/B测试软件的A/B测试SDK从所述配置中心接收所述A/B实验配置更新数据并解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
第二发送模块,用于将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件,所述待A/B测试软件的A/B测试SDK根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件,将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
第五方面,本申请提供了一种设备,所述设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述更新A/B实验SDK的方法的技术方案的步骤。
第六方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述更新A/B实验SDK的方法的技术方案的步骤。
从上述本申请提供的技术方案可知,一方面,当A/B实验配置发生变化时,将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,由字节码生成服务模块生成分流算法代码对应的字节码文件,即,只需要待A/B测试软件的开发商在A/B测试配置平台进行A/B测试的配置,无需进行相应分流算法代码的编译、打包等发布新版本的常规操作,降低了待A/B测试软件的开发商的成本;另一方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK即可完成对A/B测试SDK的更新,意味着A/B测试配置平台只需要维护一个A/B测试SDK的版本,既降低了待A/B测试软件的开发商的成本,又降低了A/B测试配置平台一方的成本;第三方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK时,待A/B测试软件可以正在运行,因而不影响待A/B测试软件的开发商提供的服务,相当于是对A/B测试SDK进行动态更新,避免了现有技术因为升级A/B测试SDK而停运待A/B测试软件带来的损失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的更新A/B实验SDK的方法的流程图;
图2是本申请实施例提供的更新A/B实验SDK的方法中主要主体及其之间的连接示意图;
图3是本申请另一实施例提供的更新A/B实验SDK的方法的流程图
图4是本申请实施例提供的更新A/B实验SDK的装置的结构示意图;
图5是本申请另一实施例提供的更新A/B实验SDK的装置的结构示意图;
图6是本申请实施例提供的设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
在本说明书中,为了便于描述,附图中所示的各个部分的尺寸并不是按照实际的比例关系绘制的。
本申请提出了一种更新A/B实验SDK的方法,如附图1所示,是以A/B测试SDK为执行主体来进行说明,其主要包括步骤S101至S104,详述如下:
步骤S101:当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,其中,配置中心连接于A/B测试配置平台,A/B测试配置平台用于对A/B实验配置进行编码形成A/B实验配置更新数据以及将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件。
首先说明本申请实施例涉及到的配置中心、A/B测试配置平台、对象存储系统(Object Storage System,OSS)、字节码生成服务模块和A/B测试SDK等几个主体及其之间的连接关系,如附图2所示,其中,A/B测试SDK是集成在待A/B测试软件的SDK,A/B测试配置平台分别与字节码生成服务模块和配置中心电连接,而字节码生成服务模块与OSS电连接,A/B测试SDK分别与配置中心和OSS电连接。上述实施例中,配置中心主要用于存储一些诸如配置信息之类的轻量化文本,例如,几行命令等,当配置信息变化时,自动将这些变化的配置信息下发(推送)给订阅者,电连接可以理解为信号或数据能够在主体之间流通,OSS例如可以是百度网盘等。与配置中心相比,OSS属于大型存储系统,其通常具有几百G、甚至几千上万G的存储空间,用于存储电影、MP3、图片等大型文件,因此,本申请实施例的字节码文件选择存储至OSS。
在本申请实施例中,当集成了A/B测试SDK的待A/B测试软件的开发商即业务方,由于业务需求发生变化或者其他原因,对A/B实验配置有新的要求,此时,业务方将通过A/B测试配置平台提供的Web网页输入新的A/B实验配置。A/B测试配置平台按照标准语法格式或与A/B测试SDK约定的语法格式对这些新的A/B实验配置进行编码,形成A/B实验配置更新数据。通过如图2示例的A/B测试配置平台与配置中心之间的电连接,这些A/B实验配置更新数据被上传至配置中心。当A/B实验配置更新数据被A/B测试配置平台上传至配置中心,配置中心能够监听到这种A/B实验配置的变化。由于A/B测试SDK相当于配置中心的订阅者,因此,配置中心将A/B实验配置更新数据向A/B测试SDK推送,A/B测试SDK接收下发的A/B实验配置更新数据。
上述实施例提及的A/B测试配置平台对A/B实验配置进行编码,其形成的A/B实验配置更新数据主要包括流量属性标签配置和字节码加载配置,其中,流量属性标签配置的编码格式为:
属性名称 | , | 类型 | , | 属性值 | , | 算术表达式 | , | 关系运算符 | , | 逻辑运算符 | , | 关联关系 | ; |
字节码加载配置的编码格式为:
实验分组的标识 | , | 字节码文件路径信息 | , | 待执行脚本 | ; |
其中,上述流量属性标签配置的编码格式中,属性名称是对配置数据的唯一性标识,类型分为基本类型、引用类型和集合类型,属性值是对属性名称的属性描述,需要与类型对应,算术表达式是使用中缀表达式表示的表达式,关系运算符主要包括==、!=、>、<、>=和<=等几种,逻辑运算符包括&&(逻辑“与”)和||(逻辑“或”),关联关系包括1-1、1-N、N-N和N-1等,分别表示流量属性标签的属性值和A/B实验配置中属性值都是1个、流量属性标签的属性值和A/B实验配置中属性值分别为1个和N个、流量属性标签的属性值和A/B实验配置中属性值分别为N个和N个以及流量属性标签的属性值和A/B实验配置中属性值分别为N个和1个。
需要进一步说明的是,图2中的A/B测试配置平台不仅对业务方通过A/B测试配置平台提供的Web网页输入的A/B实验配置进行编码,以形成A/B实验配置更新数据,还可以将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,由字节码生成服务模块生成分流算法代码对应的字节码文件。在本申请实施例中,A/B实验配置更新数据的分流算法代码是针对A/B实验配置发生变化而对旧有分流算法代码所做的修改,由于这些修改的分流算法代码无需由业务方去编译生成字节码文件,因此,省去了代码编译、版本发布等诸多成本。
步骤S102:解析A/B实验配置更新数据,确定当前流量所命中实验和对应于所命中实验的字节码文件的路径信息。
如前所述,由于A/B测试配置平台是按照标准语法格式或与A/B测试SDK约定的语法格式对A/B实验配置进行编码,而对A/B实验配置更新数据进行解析是对A/B实验配置进行编码的逆过程,因此,在收到配置中心下发的A/B实验配置更新数据后,A/B测试SDK能够对A/B实验配置更新数据顺利解析;进一步地,按照前述对字节码加载配置的编码格式的描述,A/B实验配置更新数据包含实验的标识和对应于所命中实验的字节码文件的路径信息,因此,通过解析A/B实验配置更新数据,可以确定当前流量所命中实验和对应于所命中实验的字节码文件的路径信息。作为本申请一个实施例,解析A/B实验配置更新数据,确定当前流量所命中实验和对应于所命中实验的字节码文件的路径信息可通过步骤S1021至步骤S1024实现,说明如下:
步骤S1021:解析A/B实验配置更新数据,得到若干条数的流量属性标签配置和对应于若干条数的流量属性标签配置的一条字节码加载配置,其中,字节码加载配置携带实验的标识和对应于实验的字节码文件的路径信息。
对于一个A/B实验,必然对应若干条数的流量属性标签配置和对应于若干条数的流量属性标签配置的一条字节码加载配置,即,若一个A/B实验对应于n-1条流量属性标签配置(n为大于或等于2的自然数),则还对应于一条字节码加载配置,换言之,一个A/B实验对应的n个配置中,其中的n-1条是流量属性标签配置,另一条是与该A/B实验或这n-1条流量属性标签配置对应的字节码加载配置,这一条字节码加载配置携带实验的标识和对应于实验的字节码文件的路径信息。
步骤S1022:根据流量属性标签配置,创建与流量属性标签配置的条数相等数目的流量过滤器。
即根据步骤S1021,解析出多少条流量属性标签配置,则创建多少个流量过滤器。实际上,从前述对流量属性标签配置和字节码加载配置的编码格式的阐释可知,由于每一条流量属性标签配置或每一条字节码加载配置均以分号(即;)结束,因此,在对A/B实验配置更新数据解析时,当解析结果中含有n个分号(即;),则表明A/B实验配置更新数据中有n-1条流量属性标签配置,于是创建n-1个流量过滤器。在本申请一个实施例中,根据流量属性标签配置,创建与流量属性标签配置的条数相等数目的流量过滤器可以是:按照每一条流量属性标签配置的属性标签,创建一个过滤规则与流量属性标签配置的属性标签相应的流量过滤器,此处的过滤规则,实际是前述流量属性标签配置的编码格式中,由算术表达式、关系运算符和逻辑运算符等确定的对属性标签进行计算的过程,其计算的结果就是流量过滤的结果。
步骤S1023:使用与流量属性标签配置的条数相等数目的流量过滤器中每一个流量过滤器对当前流量进行过滤。
具体地,步骤S1023的实现可以是将当前流量的属性标签与每一个流量过滤器设置的属性标签对比,若按照过滤规则,当前流量的属性标签与每一个流量过滤器的属性标签相符,则当前流量通过每一个流量过滤器。换言之,当且仅当当前流量的属性标签经过一个流量过滤器中的算术表达式运算之后,与流量过滤器的属性值进行关系运算,若满足该流量过滤器的逻辑运算表达式要求,则当前流量通过该流量过滤器。以下举例说明上述过滤原理:
假设目前一项标识为“区域女性团购者”的A/B实验只想获取深圳市或广州市、下单用户的性别为女性、年龄大于等于18岁且小于等于28岁的流量,因此,流量属性标签总共具有城市(city)、性别(gender)和年龄(age)这3个属性,这3个属性对应3个属性名称,相应地,对应3条流量属性标签配置。按照上述实施例对步骤S1022的阐释,将创建3个流量过滤器,3个流量过滤器分别表示如下:
city | , | List-String | , | Shenzhen Guangzhou | , | , | == | , | || | , | N-1 | ; |
gender | , | String | , | Female | , | , | == | , | && | , | 1-1 | ; |
age | , | List-Integer | , | 18 28 | , | , | >=<= | , | || | , | N-1 | ; |
上述3个流量过滤器的标签属性及其对当前流量的过滤原理说明如下:
1)属性名称为city的流量过滤器:由于其关联关系为N-1,因此表示该流量过滤器中属性名称为city的属性值有多个,当前流量中属性名称为city的属性值仅有一个;再依次考察关系运算符和逻辑运算符,由于该流量过滤器的关系运算符是“==”即“等于”,逻辑运算符是“||”即逻辑“或”,因此,其过滤原理可以阐释为:若当前流量中属性名称为city的属性值与该项A/B实验配置的属性名称为city的多个属性值中的任意一个相等,则可以通过属性名称为city的流量过滤器,换言之,若当前流量中属性名称为city的属性值是Shenzhen或Guangzhou,则当前流量可以通过属性名称为city、属性值为Shenzhen或Guangzhou的流量过滤器。
2)属性名称为gender的流量过滤器:由于其关联关系为1-1,因此表示该流量过滤器中属性名称为city的属性值仅有一个,当前流量中属性名称为city的属性值仅有一个;再依次考察关系运算符和逻辑运算符,由于该流量过滤器的关系运算符是“==”即“等于”,逻辑运算符是“&&”即逻辑“与”,因此,其过滤原理可以阐释为:若当前流量中属性名称为gender仅有的一个属性值与该项A/B实验配置的属性名称为gender仅有的一个属性值相等,则可以通过属性名称为gender的流量过滤器,换言之,若当前流量中属性名称为gender的属性值是Female,则当前流量可以通过属性名称为gender、属性值为Female的流量过滤器。
3)属性名称为age的流量过滤器:由于其关联关系为N-1,因此表示该流量过滤器中属性名称为age的属性值有多个,当前流量中属性名称为age的属性值仅有一个;再依次考察关系运算符和逻辑运算符,由于该流量过滤器的关系运算符是“>=<=”即“大于或等于”以及“小于或等于”,逻辑运算符是“&&”即逻辑“与”,因此,其过滤原理可以阐释为:若当前流量中属性名称为age的属性值大于或等于该项A/B实验配置的属性名称为age的第一个属性值,并且小于或等于该项A/B实验配置的属性名称为age的第二个属性值,则可以通过属性名称为age的流量过滤器,换言之,若当前流量中属性名称为age的属性值介于18与28之间(即大于或等于18且小于或等于28),则当前流量可以通过属性名称为age、属性值大于或等于18且小于或等于28的流量过滤器。
只有当一条发过来的当前流量全部通过上述三个流量过滤器,才命中标识为“区域女性团购者”的A/B实验,反之,只要无法通过上述三个流量过滤器中的任意一个,则不能命中标识为“区域女性团购者”的A/B实验。例如,一条属于北京地区的流量,尽管也是女性群体并且年龄都是介于18与28岁之间,由于其无法通过属性名称为city、属性值为Shenzhen或Guangzhou的流量过滤器,因此,该条流量就没有命中标识为“区域女性团购者”的A/B实验。
步骤S1024:若当前流量中的流量F通过全部数目的流量过滤器,则确定流量F命中标识对应的实验。
若当前流量中的流量F通过全部数目的流量过滤器,则确定流量F命中标识对应的实验,即,该流量为待A/B测试软件进行测试需要的流量。例如,上述步骤S1023的示例中,若当前流量中有一条流量,其是一批来自深圳或广州的女性群体,并且年龄都是介于18与28岁之间,则确定该条流量命中标识为“区域女性团购者”的A/B实验这一实验。
步骤S103:根据所命中实验的字节码文件的路径信息,获取所命中实验的字节码文件。
在本申请实施例中,字节码文件的路径信息表明了字节码文件的下载路径,而在图2示例的主体连接关系中,由字节码生成服务模块生成的分流算法代码对应的字节码文件被发送至OSS存储,字节码文件从OSS下载至本地磁盘的路径即字节码文件的路径信息;另一方面,如前述实施例对字节码加载配置的编码格式的说明,经步骤S102对A/B实验配置更新数据的解析,其解析所得字节码加载配置包含字节码文件的路径信息和实验的标识。在当前流量中的流量F命中该标识对应的实验后,即可根据流量F所命中的实验的字节码文件的路径信息,从OSS下载流量F所命中的实验的字节码文件至本地磁盘,从本地磁盘获取这些字节码文件。
现有技术中,每当A/B测试配置平台进行版本升级时,必须同步搭配一个新版本的A/B测试SDK,并且发布到Maven仓库。若频繁发布新版本的A/B测试SDK(例如,业务方某个小功能具有定制化的特征,A/B测试配置平台却依旧必须重新发布一个新的版本),例如,每两周发布一个版本,则一年将有24个版本,而在极端情况下,有些业务方出于稳定性的考虑,可能1至2年都不会升级版本,但A/B测试配置平台仍然需要持续维护这些老旧版本的A/B测试SDK,维护成本巨大。正是由于A/B测试SDK能够获取所命中实验的字节码文件,A/B测试配置平台只需发布一个版本的A/B测试SDK至Maven仓库中,业务方也只需将这个版本的A/B测试SDK集成至待A/B测试软件。后续若业务方需要启用新功能或者自定义一些新的分流算法之类,只需在A/B测试配置平台进行A/B实验的配置,与这些行的A/B实验配置相应的新的分流算法代码成为当前流量所命中实验的字节码文件。
步骤S104:将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。
一般而言,对于软件程序,若改变了其中的部分源代码,整份代码都需要重新编译,编译后就形成多个字节码文件,多个字节码文件再最终形成一个可运行的应用程序。正是考虑到变化的只是部分字节码文件以及它依赖的与其相关的文件,而整份源代码都需要重新编译,因此,在本申请实施例中,通过将变化的部分分流算法代码交由字节码生成服务模块生成新的字节码文件,然后通过脚本命令去替换掉老旧的字节码文件。虽然在本申请实施例中,被嵌入了字节码文件的A/B测试SDK,其待A/B测试软件可以是集成了该A/B测试SDK且正在运行的软件,但是,将字节码文件嵌入A/B测试SDK可在几百毫秒之间完成,这个过程并不影响业务方的待A/B测试软件(或者说服务)本身的运行。在本申请一个实施例中,步骤S104的实现过程可以是执行A/B实验配置更新数据配置的待执行脚本,例如shell脚本,在A/B测试SDK指定位置将旧有版本字节码文件替换为当前流量所命中实验的字节码文件。
从上述附图1示例的更新A/B实验SDK的方法可知,一方面,当A/B实验配置发生变化时,将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,由字节码生成服务模块生成分流算法代码对应的字节码文件,即,只需要待A/B测试软件的开发商在A/B测试配置平台进行A/B测试的配置,无需进行相应分流算法代码的编译、打包等发布新版本的常规操作,降低了待A/B测试软件的开发商的成本;另一方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK即可完成对A/B测试SDK的更新,意味着A/B测试配置平台只需要维护一个A/B测试SDK的版本,既降低了待A/B测试软件的开发商的成本,又降低了A/B测试配置平台一方的成本;第三方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK时,待A/B测试软件可以正在运行,因而不影响待A/B测试软件的开发商提供的服务,相当于是对A/B测试SDK进行动态更新,避免了现有技术因为升级A/B测试SDK而停运待A/B测试软件带来的损失。
请参阅附图3,是本申请另一实施例提供的更新A/B实验SDK的方法,该方法是以图2示例的A/B测试配置平台为执行主体来进行说明,其主要包括步骤S301至S304,详述如下:
步骤S301:当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置。
步骤S302:对A/B实验配置进行编码形成A/B实验配置更新数据。
步骤S303:将A/B实验配置更新数据发送至配置中心,以使集成于待A/B测试软件的A/B测试SDK从配置中心接收A/B实验配置更新数据并解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息。
步骤S304:将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件,其中,待A/B测试软件的A/B测试SDK根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件,将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。
从上述附图3示例的更新A/B实验SDK的方法可知,,一方面,当A/B实验配置发生变化时,将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,由字节码生成服务模块生成分流算法代码对应的字节码文件,即,只需要待A/B测试软件的开发商在A/B测试配置平台进行A/B测试的配置,无需进行相应分流算法代码的编译、打包等发布新版本的常规操作,降低了待A/B测试软件的开发商的成本;另一方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK即可完成对A/B测试SDK的更新,意味着A/B测试配置平台只需要维护一个A/B测试SDK的版本,既降低了待A/B测试软件的开发商的成本,又降低了A/B测试配置平台一方的成本;第三方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK时,待A/B测试软件可以正在运行,因而不影响待A/B测试软件的开发商提供的服务,相当于是对A/B测试SDK进行动态更新,避免了现有技术因为升级A/B测试SDK而停运待A/B测试软件带来的损失。
请参阅附图4,是本申请实施例提供的一种更新A/B实验SDK的装置,该装置可以是A/B测试SDK或者其中的功能模块。附图4示例的装置可以包括第一接收模块401、解析模块402、获取模块403和更新模块404,详述如下:
第一接收模块401,用于当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,其中,配置中心连接于A/B测试配置平台,A/B测试配置平台用于对A/B实验配置进行编码形成A/B实验配置更新数据以及将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件;
解析模块402,用于解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息;
获取模块403,用于根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件;
更新模块404,用于将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。
可选地,附图4示例的解析模块402可以包括配置数据解析单元、过滤器创建单元、过滤单元和第一确定单元,其中:
配置数据解析单元,用于解析A/B实验配置更新数据,得到若干条数的流量属性标签配置和对应于若干条数的流量属性标签配置的一条字节码加载配置,其中,字节码加载配置携带实验的标识和对应于该标识的实验的字节码文件的路径信息;
过滤器创建单元,用于根据流量属性标签配置,创建与流量属性标签配置的条数相等数目的流量过滤器;
过滤单元,用于使用与流量属性标签配置的条数相等数目的流量过滤器中每一个流量过滤器对当前流量进行过滤;
第一确定单元,用于若当前流量中的流量F通过全部数目的流量过滤器,则确定流量F命中标识对应的实验。
可选地,上述示例的过滤器创建单元具体用于按照每一条流量属性标签配置的属性标签,创建一个过滤规则与流量属性标签配置的属性标签相应的流量过滤器。
可选地,上述示例的过滤单元具体用于将当前流量的属性标签与每一个流量过滤器设置的属性标签对比,若按照过滤规则,当前流量的属性标签与每一个流量过滤器的属性标签相符,则当前流量通过每一个流量过滤器。
可选地,附图4示例的更新模块404具体用于执行A/B实验配置更新数据配置的待执行脚本,在A/B测试SDK指定位置将旧有版本字节码文件替换为所命中实验的字节码文件。
从上述附图4示例的更新A/B实验SDK的装置可知,一方面,当A/B实验配置发生变化时,将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,由字节码生成服务模块生成分流算法代码对应的字节码文件,即,只需要待A/B测试软件的开发商在A/B测试配置平台进行A/B测试的配置,无需进行相应分流算法代码的编译、打包等发布新版本的常规操作,降低了待A/B测试软件的开发商的成本;另一方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK即可完成对A/B测试SDK的更新,意味着A/B测试配置平台只需要维护一个A/B测试SDK的版本,既降低了待A/B测试软件的开发商的成本,又降低了A/B测试配置平台一方的成本;第三方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK时,待A/B测试软件可以正在运行,因而不影响待A/B测试软件的开发商提供的服务,相当于是对A/B测试SDK进行动态更新,避免了现有技术因为升级A/B测试SDK而停运待A/B测试软件带来的损失。
请参阅附图5,是本申请实施例提供的一种更新A/B实验SDK的装置,该装置可以是A/B测试配置平台或者其中的功能模块。附图5示例的装置可以包括第二接收模块501、编码模块502、第一发送模块503和第二发送模块504,详述如下:
第二接收模块501,用于当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;
编码模块502,用于对A/B实验配置进行编码形成A/B实验配置更新数据;
第一发送模块503,用于将A/B实验配置更新数据发送至配置中心,以使集成于待A/B测试软件的A/B测试SDK从配置中心接收A/B实验配置更新数据并解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验所命中实验的字节码文件的路径信息;
第二发送模块504,用于将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件,其中,待A/B测试软件的A/B测试SDK根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件,将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。
从上述附图5示例的更新A/B实验SDK的装置可知,一方面,当A/B实验配置发生变化时,将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,由字节码生成服务模块生成分流算法代码对应的字节码文件,即,只需要待A/B测试软件的开发商在A/B测试配置平台进行A/B测试的配置,无需进行相应分流算法代码的编译、打包等发布新版本的常规操作,降低了待A/B测试软件的开发商的成本;另一方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK即可完成对A/B测试SDK的更新,意味着A/B测试配置平台只需要维护一个A/B测试SDK的版本,既降低了待A/B测试软件的开发商的成本,又降低了A/B测试配置平台一方的成本;第三方面,将所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK时,待A/B测试软件可以正在运行,因而不影响待A/B测试软件的开发商提供的服务,相当于是对A/B测试SDK进行动态更新,避免了现有技术因为升级A/B测试SDK而停运待A/B测试软件带来的损失。
图6是本申请一实施例提供的设备的结构示意图。如图6所示,该实施例的设备6主要包括:处理器60、存储器61以及存储在存储器61中并可在处理器60上运行的计算机程序62,例如更新A/B实验SDK的方法的程序。处理器60执行计算机程序62时实现上述更新A/B实验SDK的方法实施例中的步骤,例如图1所示的步骤S101至S104或者图3所示的步骤S301至S304。或者,处理器60执行计算机程序62时实现上述各装置实施例中各模块/单元的功能,例如图4所示第一接收模块401、解析模块402、获取模块403和更新模块404的功能或者图5所示第二接收模块501、编码模块502、第一发送模块503和第二发送模块504的功能。
示例性地,更新A/B实验SDK的方法的计算机程序62主要包括:当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,其中,配置中心连接于A/B测试配置平台,A/B测试配置平台用于对A/B实验配置进行编码形成A/B实验配置更新数据以及将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件;解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息;根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件;将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。或者,更新A/B实验SDK的方法的计算机程序62主要包括:当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;对A/B实验配置进行编码形成A/B实验配置更新数据;将A/B实验配置更新数据发送至配置中心,以使集成于待A/B测试软件的A/B测试SDK从配置中心接收A/B实验配置更新数据并解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验所命中实验的字节码文件的路径信息;将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件,其中,待A/B测试软件的A/B测试SDK根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件,将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。
计算机程序62可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器61中,并由处理器60执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序62在设备6中的执行过程。例如,计算机程序62可以被分割成第一接收模块401、解析模块402、获取模块403和更新模块404(虚拟装置中的模块)的功能,各模块具体功能如下:第一接收模块401,用于当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,其中,配置中心连接于A/B测试配置平台,A/B测试配置平台用于对A/B实验配置进行编码形成A/B实验配置更新数据以及将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件;解析模块402,用于解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息;获取模块403,用于根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件;更新模块404,用于将当前流量所命中实验分组的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。或者,计算机程序62可以被分割成第二接收模块501、编码模块502、第一发送模块503和第二发送模块504(虚拟装置中的模块)的功能,各模块具体功能如下:第二接收模块501,用于当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;编码模块502,用于对A/B实验配置进行编码形成A/B实验配置更新数据;第一发送模块503,用于将A/B实验配置更新数据发送至配置中心,以使集成于待A/B测试软件的A/B测试SDK从配置中心接收A/B实验配置更新数据并解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息;第二发送模块504,用于将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件,其中,待A/B测试软件的A/B测试SDK根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件,将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。
设备6可包括但不仅限于处理器60、存储器61。本领域技术人员可以理解,图6仅仅是设备6的示例,并不构成对设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器61可以是设备6的内部存储单元,例如设备6的硬盘或内存。存储器61也可以是设备6的外部存储设备,例如设备6上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器61还可以既包括设备6的内部存储单元也包括外部存储设备。存储器61用于存储计算机程序以及设备所需的其他程序和数据。存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即,将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,更新A/B实验SDK的方法的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤,即,当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,其中,配置中心连接于A/B测试配置平台,A/B测试配置平台用于对A/B实验配置进行编码形成A/B实验配置更新数据以及将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件;解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验的字节码文件的路径信息;根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件;将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。或者,更新A/B实验SDK的方法的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤:当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;对A/B实验配置进行编码形成A/B实验配置更新数据;将A/B实验配置更新数据发送至配置中心,以使集成于待A/B测试软件的A/B测试SDK从配置中心接收A/B实验配置更新数据并解析A/B实验配置更新数据,确定当前流量所命中实验和对应于当前流量所命中实验所命中实验的字节码文件的路径信息;将对应于A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使字节码生成服务模块生成分流算法代码对应的字节码文件,其中,待A/B测试软件的A/B测试SDK根据当前流量所命中实验的字节码文件的路径信息,获取当前流量所命中实验的字节码文件,将当前流量所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对A/B测试SDK的更新。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。非临时性计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读内存(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,非临时性计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,非临时性计算机可读介质不包括电载波信号和电信信号。以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种更新A/B实验SDK的方法,其特征在于,所述方法包括:
当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,所述配置中心连接于A/B测试配置平台,所述A/B测试配置平台用于对A/B实验配置进行编码形成所述A/B实验配置更新数据以及将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件;
解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件;
将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
2.如权利要求1所述更新A/B实验SDK的方法,其特征在于,所述解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息,包括:
解析所述A/B实验配置更新数据,得到若干条数的流量属性标签配置和对应于所述若干条数的流量属性标签配置的一条字节码加载配置,所述字节码加载配置携带实验的标识和对应于所述实验的字节码文件的路径信息;
根据所述流量属性标签配置,创建与所述条数相等数目的流量过滤器;
使用与所述条数相等数目的流量过滤器中每一个流量过滤器对所述当前流量进行过滤;
若所述当前流量中的流量F通过全部所述数目的流量过滤器,则确定所述流量F命中所述标识对应的实验。
3.如权利要求2所述更新A/B实验SDK的方法,其特征在于,所述根据所述流量属性标签配置,创建与所述条数相等数目的流量过滤器,包括:按照每一条所述流量属性标签配置的属性标签,创建一个过滤规则与所述流量属性标签配置的属性标签相应的流量过滤器。
4.如权利要求3所述更新A/B实验SDK的方法,其特征在于,所述使用与所述条数相等数目的流量过滤器中的每一个流量过滤器对所述当前流量进行过滤,包括:
将所述当前流量的属性标签与所述每一个流量过滤器设置的属性标签对比;
若按照所述过滤规则,所述当前流量的属性标签与所述每一个流量过滤器的属性标签相符,则所述当前流量通过所述每一个流量过滤器。
5.如权利要求1所述更新A/B实验SDK的方法,其特征在于,所述将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新,包括:
执行所述A/B实验配置更新数据配置的待执行脚本,在所述A/B测试SDK指定位置将旧有版本字节码文件替换为所述所命中实验分组的字节码文件。
6.一种更新A/B实验SDK的方法,其特征在于,所述方法包括:
当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;
对所述A/B实验配置进行编码形成A/B实验配置更新数据;
将所述A/B实验配置更新数据发送至配置中心,以使集成于所述待A/B测试软件的A/B测试SDK从所述配置中心接收所述A/B实验配置更新数据并解析所述A/B实验配置更新数据,确定流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件,所述待A/B测试软件的A/B测试SDK根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件,将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
7.一种更新A/B实验SDK的装置,其特征在于,所述装置包括:
第一接收模块,用于当A/B实验配置发生变化时,接收配置中心下发的A/B实验配置更新数据,所述配置中心连接于A/B测试配置平台,所述A/B测试配置平台用于对A/B实验配置进行编码形成所述A/B实验配置更新数据以及将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件;
解析模块,用于解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
获取模块,用于根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件;
更新模块,用于将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
8.一种更新A/B实验SDK的装置,其特征在于,所述装置包括:
第二接收模块,用于当A/B实验配置发生变化时,接收待A/B测试软件的开发商输入的A/B实验配置;
编码模块,用于对所述A/B实验配置进行编码形成A/B实验配置更新数据;
第一发送模块,用于将所述A/B实验配置更新数据发送至配置中心,以使集成于所述待A/B测试软件的A/B测试SDK从所述配置中心接收所述A/B实验配置更新数据并解析所述A/B实验配置更新数据,确定当前流量所命中实验和对应于所述所命中实验的字节码文件的路径信息;
第二发送模块,用于将对应于所述A/B实验配置更新数据的分流算法代码发送至字节码生成服务模块,以使所述字节码生成服务模块生成所述分流算法代码对应的字节码文件,所述待A/B测试软件的A/B测试SDK根据所述所命中实验的字节码文件的路径信息,获取所述所命中实验的字节码文件,将所述所命中实验的字节码文件嵌入至集成于待A/B测试软件的A/B测试SDK,以完成对所述A/B测试SDK的更新。
9.一种设备,所述设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110330924.8A CN113064820B (zh) | 2021-03-26 | 2021-03-26 | 更新a/b实验sdk的方法、设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110330924.8A CN113064820B (zh) | 2021-03-26 | 2021-03-26 | 更新a/b实验sdk的方法、设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113064820A true CN113064820A (zh) | 2021-07-02 |
CN113064820B CN113064820B (zh) | 2022-09-16 |
Family
ID=76564023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110330924.8A Active CN113064820B (zh) | 2021-03-26 | 2021-03-26 | 更新a/b实验sdk的方法、设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113064820B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114817369A (zh) * | 2022-05-09 | 2022-07-29 | 深圳依时货拉拉科技有限公司 | 处理ab测试的命中分组数据的方法和系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052809A (zh) * | 2014-06-17 | 2014-09-17 | 北京京东尚科信息技术有限公司 | 一种网站测试的分流控制方法和装置 |
CN109032954A (zh) * | 2018-08-16 | 2018-12-18 | 五八有限公司 | 一种a/b测试的用户选取方法、装置、存储介质及终端 |
CN109947643A (zh) * | 2019-03-01 | 2019-06-28 | 广州华多网络科技有限公司 | 一种基于a/b测试的实验方案的配置方法、装置及设备 |
CN109976761A (zh) * | 2019-02-27 | 2019-07-05 | 平安科技(深圳)有限公司 | 软件开发工具包的生成方法、装置及终端设备 |
CN110008131A (zh) * | 2019-04-12 | 2019-07-12 | 重庆天蓬网络有限公司 | 一种基于算法实现的区域ab实验管理的方法及装置 |
CN110046092A (zh) * | 2019-03-12 | 2019-07-23 | 北京创鑫旅程网络技术有限公司 | 实验分流方法、装置、电子设备和计算机可读存储介质 |
US10761835B1 (en) * | 2014-05-30 | 2020-09-01 | Apptimize Llc | Run-time application modification |
CN111654495A (zh) * | 2020-06-03 | 2020-09-11 | 百度在线网络技术(北京)有限公司 | 用于确定流量产生来源的方法、装置、设备及存储介质 |
CN111752548A (zh) * | 2020-05-22 | 2020-10-09 | 网宿科技股份有限公司 | 一种sdk嵌入方法及装置、计算机可读存储介质 |
CN112087335A (zh) * | 2020-09-10 | 2020-12-15 | 广州酷狗计算机科技有限公司 | 流量实验方法、装置及存储介质 |
CN112269743A (zh) * | 2020-10-30 | 2021-01-26 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种a/b测试方法及装置 |
-
2021
- 2021-03-26 CN CN202110330924.8A patent/CN113064820B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761835B1 (en) * | 2014-05-30 | 2020-09-01 | Apptimize Llc | Run-time application modification |
CN104052809A (zh) * | 2014-06-17 | 2014-09-17 | 北京京东尚科信息技术有限公司 | 一种网站测试的分流控制方法和装置 |
CN109032954A (zh) * | 2018-08-16 | 2018-12-18 | 五八有限公司 | 一种a/b测试的用户选取方法、装置、存储介质及终端 |
CN109976761A (zh) * | 2019-02-27 | 2019-07-05 | 平安科技(深圳)有限公司 | 软件开发工具包的生成方法、装置及终端设备 |
CN109947643A (zh) * | 2019-03-01 | 2019-06-28 | 广州华多网络科技有限公司 | 一种基于a/b测试的实验方案的配置方法、装置及设备 |
CN110046092A (zh) * | 2019-03-12 | 2019-07-23 | 北京创鑫旅程网络技术有限公司 | 实验分流方法、装置、电子设备和计算机可读存储介质 |
CN110008131A (zh) * | 2019-04-12 | 2019-07-12 | 重庆天蓬网络有限公司 | 一种基于算法实现的区域ab实验管理的方法及装置 |
CN111752548A (zh) * | 2020-05-22 | 2020-10-09 | 网宿科技股份有限公司 | 一种sdk嵌入方法及装置、计算机可读存储介质 |
CN111654495A (zh) * | 2020-06-03 | 2020-09-11 | 百度在线网络技术(北京)有限公司 | 用于确定流量产生来源的方法、装置、设备及存储介质 |
CN112087335A (zh) * | 2020-09-10 | 2020-12-15 | 广州酷狗计算机科技有限公司 | 流量实验方法、装置及存储介质 |
CN112269743A (zh) * | 2020-10-30 | 2021-01-26 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种a/b测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
朱绪利等: "基于Soot控制流图的函数调用路径分析", 《数据通信》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114817369A (zh) * | 2022-05-09 | 2022-07-29 | 深圳依时货拉拉科技有限公司 | 处理ab测试的命中分组数据的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113064820B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108958714B (zh) | 业务组件式开发方法、装置、计算机设备及存储介质 | |
CN107797823B (zh) | 业务规则管理方法、装置、存储介质和计算机设备 | |
CN107632827B (zh) | 应用的安装包的生成方法及装置 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN112052013A (zh) | 软件包的生成方法及装置、存储介质、电子装置 | |
CN111176717A (zh) | 生成安装包的方法、装置及电子设备 | |
CN104020994A (zh) | 基于流系统的流过程定义装置和流过程定义方法 | |
CN113064820B (zh) | 更新a/b实验sdk的方法、设备和计算机可读存储介质 | |
CN106933591A (zh) | 代码合并的方法及装置 | |
CN112256670A (zh) | 数据迁移方法、终端设备及可读存储介质 | |
CN117492803B (zh) | 一种智能门锁pcba软件升级方法及系统 | |
CN117251139A (zh) | 业务流程配置管理方法、装置、设备及存储介质 | |
CN116204428A (zh) | 一种测试用例生成方法和装置 | |
CN105204937B (zh) | 内核函数调用方法、装置及操作系统 | |
CN112817953B (zh) | 一种数据校验的方法、装置、计算机设备及计算机可读存储介质 | |
CN115586939A (zh) | 页面管理方法及管理装置、电子设备、存储介质 | |
CN115543460A (zh) | 服务器主板的初始化方法及装置 | |
CN115048359A (zh) | 一种多类型接入数据源的通用数据处理架构设计方法 | |
CN114003210A (zh) | 基于sdk的多应用程序适配方法、装置、设备及介质 | |
CN114356379A (zh) | 基于备份的服务升级方法、装置、设备及存储介质 | |
CN112579250A (zh) | 中间件的管理方法及装置、修复引擎系统 | |
CN111142965A (zh) | 语言配置方法、装置、电子设备及存储介质 | |
CN111221787A (zh) | 一种文件处理方法及装置 | |
CN111444057A (zh) | 页面性能数据采集方法、装置及计算设备 | |
CN112433743B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |