发明内容
本申请提出一种AB实验的实现方法、***、设备及存储介质,测试服务器自动确定终端对应的实验组合版本及实验版本标识,通过实验版本标识传递实验配置信息。后续所有请求都携带实验版本标识,实现埋点、报表和指标的自动化统计,提高实验效率。且可以多个实验同时进行,没有明显实验数量的限制,能使更多AB实验落地实施。
本申请第一方面实施例提出了一种AB实验的实现方法,应用于测试服务器,包括:
接收终端发送的请求,所述请求包括所述终端对应的唯一标识;
根据所述唯一标识和当前应用的实验分组信息,确定所述终端对应的实验组合版本;
根据所述实验组合版本分配对应的实验版本标识,并将所述实验版本标识发送给所述终端;
所述终端根据所述实验版本标识访问所述当前应用的所述实验组合版本,并获取当前访问的所述实验组合版本的实验配置信息;
根据所述实验配置信息实现不同的实验测试。
在本申请实施例中,所述实验分组信息包括实验标识信息和/或实验时间信息,根据所述唯一标识和当前应用的实验分组信息,确定所述终端对应的实验组合版本,包括:
据所述唯一标识和所述实验分组信息,确定所述当前应用的所有实验组中所述终端对应的实验;
将所述终端对应的实验构成的集合确定为所述终端对应的实验组合版本。
在本申请实施例中,所所述实验分组信息包括所述实验标识信息,所述实验标识信息包括所述当前应用的实验类型、实验场景的场景标识及所述实验场景中包含的所有实验组的实验组标识;所述根据所述唯一标识和当前应用的实验分组信息,确定所述终端对应的实验组合版本,包括:
若所述实验类型为单场景实验,则根据所述唯一标识、所述实验场景的场景标识及所述实验场景中包含的所有实验组的实验组标识,分别确定所述实验场景包括的每个实验组中所述终端对应的实验;
将所述每个实验组中所述终端对应的实验构成的集合确定为所述终端对应的实验组合版本。
在本申请实施例中,所述方法还包括:
若所述实验类型为多场景实验,则根据所述唯一标识及所述当前应用的所有实验场景的场景标识,从所述所有实验场景中选择所述终端对应的实验场景;
根据所述唯一标识,选择的实验场景的场景标识及选择的实验场景包含的所有实验组的实验组标识,分别从选择的实验场景包括的每个实验组中确定出所述终端对应的实验;
将选择的所述实验场景包括每个实验组中所述终端对应的实验构成的集合确定为所述终端对应的实验组合版本。
在本申请实施例中,根据所述唯一标识、所述实验场景的场景标识及所述实验场景中包含的所有实验组的实验组标识,分别确定所述实验场景包括的每个实验组中所述终端对应的实验,包括:
按照预设拼接顺序将所述唯一标识、所述实验场景的场景标识和所述实验场景包含的第一实验组的实验组标识拼接成第一字符串,所述第一实验组为所述实验场景中的任一实验组;
通过预设算法将所述第一字符串转换为预设数据长度的第二字符串;
利用数字哈希算法计算所述第二字符串的哈希值,确定所述哈希值所属的预设数值区间;
将所述预设数值区间对应的实验确定为所述第一实验组中所述终端对应的实验。
在本申请实施例中,所述将所述实验版本标识发送给所述终端之后,还包括:
接收所述终端每隔预设时长发送的实验版本确认消息,所述实验版本确认消息包括所述唯一标识;
根据所述唯一标识和当前的实验分组信息,确定所述终端当前所需对应的实验版本标识;
若当前所需对应的实验版本标识与上一次发送给所述终端的实验版本标识不同,则将当前所需对应的实验版本标识发送给所述终端,以使所述终端切换到当前所需对应的实验版本标识对应的实验组合版本。
在本申请实施例中,所述方法还包括:
检测到所述当前应用的实验分组信息发生变化;
获取当前访问所述当前应用的所有终端的唯一标识;
根据每个终端的唯一标识及发生变化后的实验分组信息,分别重新确定每个终端对应的实验版本标识;
将重新确定的每个终端对应的实验版本标识分别发送给每个终端,以使当前访问的每个终端均切换到重新确定的实验版本标识对应的实验组合版本。
在本申请实施例中,所述将所述实验版本标识发送给所述终端之后,还包括:
接收所述终端发送的埋点信息,所述埋点信息包括所述实验版本标识;
获取所述实验版本标识对应的实验配置信息;
将所述埋点信息和所述实验配置信息对应存储在预设数据库中。
在本申请实施例中,所述方法还包括:
从所述预设数据库中获取不同实验组合版本的实验配置信息及对应的埋点信息;
根据预设分析指标及不同实验组合版本的实验配置信息及对应的埋点信息,生成实验测试报告。
本申请第二方面的实施例提供了一种AB实验的实现方法,应用于终端,包括:
发送请求给测试服务器,所述请求包括所述终端的唯一标识;
接收所述测试服务器返回的实验版本标识,所述实验版本标识是所述测试服务器根据所述唯一标识确定的所述终端对应的实验组合版本的标识;
根据所述实验版本标识,获取所述实验组合版本的实验配置信息,并显示所述实验组合版本;
根据所述实验配置信息实现不同的实验测试。
在本申请实施例中,所述根据所述实验版本标识,获取所述实验组合版本的实验配置信息,并显示所述实验组合版本,包括:
发送当前应用的加载请求给业务服务器,所述加载请求包括所述实验版本标识;
接收所述业务服务器返回的所述实验版本标识对应的实验配置信息;
根据所述实验配置信息,显示所述当前应用的所述实验组合版本对应的应用界面。
在本申请实施例中,所述方法还包括:
每隔预设时长发送实验版本确认消息给所述测试服务器,所述实验版本确认消息包括所述唯一标识;
接收所述测试服务器在确认所述终端对应的实验组合版本改变时返回的新的实验版本标识;
加载所述新的实验版本标识对应的实验组合版本。
在本申请实施例中,所述方法还包括:
接收所述测试服务器在检测到所述当前应用的实验分组信息发生变化时为所述终端重新确定的实验版本标识;
加载所述重新确定的实验版本标识对应的实验组合版本。
在本申请实施例中,所述方法还包括:
发送埋点信息给所述测试服务器,所述埋点信息包括所述实验版本标识,以使所述测试服务器根据所述埋点信息生成实验测试报告。
本申请第三方面的实施例提供了一种AB实验的实现***,包括:终端和测试服务器;
所述终端,用于发送请求给所述测试服务器,所述请求包括所述终端的唯一标识;
所述测试服务器,用于根据所述唯一标识和当前应用的实验分组信息,确定所述终端对应的实验组合版本;根据所述实验组合版本分配对应的实验版本标识,并将所述实验版本标识发送给所述终端;
所述终端,用于根据所述实验版本标识,获取所述实验组合版本的实验配置信息,并显示所述实验组合版本;根据所述实验配置信息实现不同的实验测试。
本申请第四方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面或第二方面所述的方法。
本申请第五方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现上述第一方面或第二方面所述的方法。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
在本申请实施例中,测试服务器自动根据终端的唯一标识和应用程序的实验分组信息确定终端对应的实验组合版本,并为终端分配对应的实验版本标识,通过该实验版本标识传递实验配置信息。后续用户使用该应用程序所产生的所有请求中都携带该实验版本标识,使得用户使用该应用程序的过程中产生的所有业务数据及用户数据均与该实验版本标识存在关联关系,如此后续生成实验报告时可以根据实验版本标识方便地统计同一个实验组合版本对应的数据,无需定制化开发报表,实现统计埋点、统计报表和统计指标的自动化流程,实验效率大幅提升。而且可以实现多个实验同时进行,没有明显实验数量上的限制,能够使更多AB实验得以落地实施。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本申请的实践了解到。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
下面结合附图来描述根据本申请实施例提出的一种AB实验的实现方法、***、设备及存储介质。
目前在应用程序开发及产品迭代过程中经常采用AB实验来测试不同实验版本,依据不同实验版本的用户数据、业务数据及设定的业务指标评估出最优的实验版本,最终正式采用该最优的实验版本。由于相关技术中的AB实验通常是由不同的研发团队自建AB实验服务,因此会存在多个非正交实验同时执行互相影响的情况,导致最终实验结果的置信度不高。而且AB实验上线之后,相关技术中还需要定制化的开发报表,缺少可以复用的自动化的实验报表,造成人力和计算资源浪费。在需要进行AB实验流量调整或实验上下线等操作时,需要进行定制化开发部署才能实现,效率较低。而产品运营方面的AB实验方案经常因缺少埋点字段、开发流程过长或研发资源不足等情况导致AB实验无法实现。
本申请实施例提供了一种AB实验的实现方法,该方法自动为用户分配实验组合版本,并通过实验版本标识来唯一标识用户对应的实验组合版本,使用实验版本标识传递实验配置信息,可以实现多个实验同时进行,没有明显实验数量上的限制,实现统计埋点、统计报表和统计指标的自动化流程,实验效率大幅提升,能够使更多AB实验得以落地实施。
上述实验组合版本为应用程序对应的所有AB实验的组合情况。例如,假设应用程序中包括两组正交的AB实验,其中一组AB实验中包括实验a和b两个实验,另一组AB实验中包括实验c和d两个实验。则该应用程序的实验组合版本可以包括实验a和c、a和d、b和c、b和d共四个不同的实验组合版本。
参见图1,该方法具体包括以下步骤:
步骤101:终端发送请求给测试服务器,该请求包括终端的唯一标识。
终端上安装有应用程序,该应用程序的提供方可以设计该应用程序对应的一组或多组AB实验,如应用程序首页中某按键的背景颜色为红色或绿色等,应用程序某商品详情页中以图片或视频等不同形式来展示商品信息等。
在用户打开终端上的应用程序并显示该应用程序的页面之前,需要先确定出该用户对应的实验组合版本。当终端检测到用户点击应用程序触发的开启指令时,终端发送请求给测试服务器,并在该请求中携带终端的唯一标识。终端的唯一标识可以为终端的产品序列号、MAC(Media Access Control Address,物理地址)地址或用户标识等,用户标识可以为用户的姓名或昵称等。
步骤102:测试服务器接收终端发送的请求,根据当前应用的实验分组信息和请求包括的唯一标识,确定终端对应的实验组合版本。
实验分组信息包括实验标识信息和/或实验时间信息。其中,实验标识信息可以包括当前应用的实验类型、实验场景的场景标识及实验场景中包含的所有实验组的实验组标识等。其中,实验类型包括单场景实验和多场景实验,单场景实验表示应用程序中仅设置了一个实验场景,该实验场景下包括至少一组实验组,一个实验组中包括至少两个实验。多场景实验表示应用程序中设置了两个或以上的实验场景,每个实验场景下均包括至少一个实验组,每个实验组中均包括至少两个实验。实验时间信息用于表示实验的实施时间,实施时间可以为实施实验的具体日期。对于同一个实验组包括的至少两个实验,每个实验可以在相同的实施时间内分别分配给不同的用户来实现实验测试。也可以在不同的实施时间内分别分配给相同或不同的用户来实现实验测试。
实验场景可以为当前应用中的一个页面或多个页面的组合。场景标识可以为实验场景对应的页面的标识,页面的标识可以为页面的名称或地址等。或者,场景标识也可以是为每个实验场景随机分配的唯一标识实验场景的随机字符串。实验组标识可以是为实验组随机分配的唯一标识该实验组的随机字符串。
测试服务器接收到终端发送的请求后,据当前应用的实验分组信息和该请求携带的终端的唯一标识,确定当前应用的所有实验组中终端对应的实验;将终端对应的实验构成的集合确定为终端对应的实验组合版本。
其中,实验分组信息中可以仅包括上述实验标识信息,在这种应用场景中,测试服务器首先判断当前应用的实验类型是单场景实验还是多场景实验。若当前应用的实验类型为单场景实验,则根据该终端的唯一标识、实验场景的场景标识及实验场景中包含的所有实验组的实验组标识,分别确定每个实验组中终端对应的实验;将每个实验组中终端对应的实验构成的集合确定为终端对应的实验组合版本。
对于实验场景的任一实验组,都按照相同的方式来确定该实验组中终端对应的实验。下面以第一实验组为例来说明如何确定实验组中终端对应的实验,该实验场景中的其他任意实验组都按照与第一实验组相同的方式来确定。其中,第一实验组为实验场景中的任一实验组。
具体地,测试服务器先按照预设拼接顺序将终端的唯一标识、实验场景的场景标识和实验场景包含的第一实验组的实验组标识拼接成第一字符串。预设拼接顺序可以为将唯一标识、场景标识、实验组标识三者的位置排列组合得出的任一拼接顺序,如可以为按照唯一标识、场景标识、实验组标识的顺序,或者按照唯一标识、实验组标识、场景标识的顺序等。
获得上述第一字符串后,通过预设算法将第一字符串转换为预设数据长度的第二字符串。预设算法可以为哈希算法、MD4(Message Digest Algorithm 4)或MD5(MessageDigest Algorithm 5,消息摘要算法)算法等。预设数据长度可以为32位或128位等。通过数字哈希运算计算第二字符串的哈希值。
本申请实施例通过计算的哈希值判断该终端对应的分流区间。对于实验组中的每个实验,预先设置了每个实验对应的预设数值区间。例如,一个实验组中包括实验a和b,预先设置了实验a对应的预设数值区间为[0,500),实验b对应的预设数值区间为[500,+∞)。
通过上述方式计算出该终端对应的哈希值之后,确定该哈希值所属的预设数值区间。将该哈希值所属的预设数值区间对应的实验确定为第一实验组中该终端对应的实验。
如图2所示,对于单场景多层正交实验,即仅包含一个实验场景,这个实验场景中包括相互独立的实验组A至实验组N。测试服务器接收到终端请求,计算终端对应的哈希值,根据该哈希值判断该终端对应的分流区间,从而确定该终端在实验组A中对应的实验。同样地,对于实验组B至实验组N,都按照相同的方式确定该终端在每个实验组中对应的实验。
对于实验场景包括的每个实验组,都按照上述方式分别确定出在每个实验组中该终端所对应的实验。该终端对应的所有实验组成的集合即为该终端对应的实验组合版本。
若当前应用的实验类型为多场景实验,则根据终端的唯一标识及当前应用的所有实验场景的场景标识,从所有实验场景中选择终端对应的实验场景;根据唯一标识、选择的实验场景的场景标识及选择的实验场景包含的所有实验组的实验组标识,分别从选择的实验场景包括的每个实验组中确定出终端对应的实验;将选择的实验场景包括每个实验组中终端对应的实验构成的集合确定为终端对应的实验组合版本。
在多场景实验中,测试服务器接收到终端的请求后,首先根据终端的唯一标识及当前应用中每个实验场景的场景标识来确定该终端需分流至哪些实验场景。具体地,按照预设拼接规则将终端的唯一标识及每个实验场景的场景标识拼接成一个字符串。预设拼接规则规定了唯一标识及每个场景标识的拼接顺序。通过预设算法将该字符串转换为预设数据长度的字符串。通过数字哈希运算计算转换后的字符串的哈希值。
本申请实施例通过计算的哈希值判断该终端需分流至哪些实验场景。对于应用程序中的每个实验场景,预先设置了每个实验场景对应的数值区间。例如,预先设置了实验场景A对应的数值区间为[0,800),实验场景B对应的数值区间为[800,+∞)。通过上述方式计算出哈希值之后,确定该哈希值所属的数值区间。将该哈希值所属的数值区间对应的实验场景确定为该终端对应的实验场景。
对于通过上述方式选择出的任一实验场景,均按照上述单实验场景的方式,通过计算哈希值的方式来分别确定选择出的任一实验场景包括的每个实验组中终端对应的实验。该终端对应的所有实验组成的集合即为该终端对应的实验组合版本。
如图3所示,对于多场景实验,通过计算哈希值的方式来确定终端分流至哪些实验场景,对于确定的实验场景都采用上述图2所示的方式分别确定出每个实验场景包括的每个实验组中该终端对应的实验。
在本申请的另一些实施例中,实验分组信息中也可以同时包括上述实验标识信息和实验时间信息,在这种应用场景中,与上述实验分组信息仅包括实验标识信息的应用场景的处理方式相似,同样区分单场景实验和多场景实验,对于每个实验组同样按照上述哈希运算的方式来确定终端所对应的实验。在本申请的又一些实施例中,实验分组信息中也可以仅包括实验时间信息的应用场景,与上述单场景实验的处理方式相似,对于每个实验组根据实验时间信息进行哈希运算,来确定终端对应的实验。
步骤103:测试服务器根据实验组合版本分配对应的实验版本标识,并将该实验版本标识发送给该终端。
通过上述步骤102确定出该终端对应的实验组合版本后,还为该实验组合版本分配实验版本标识,用于唯一标识该实验组合版本。并获取该实验组合版本对应的实验配置信息,该实验配置信息包括该实验组合版本包括的每个实验的配置信息,实验的配置信息包括实验对应的页面数据、实施时间、所需测试的用户规模等。例如,假设该实验组合版本中包括首页中一个按键的背景颜色为红色或绿色的一组实验,则实验配置信息中包括首页的页面标识以及该按键的标识、位置信息、颜色属性等页面数据,以及包括实施时间“1月1日至1月5日”和所需测试的用户规模为300个用户等。测试服务器还存储该终端的唯一标识、用户的用户标识、该实验版本标识以及该实验组合版本对应的实验配置信息。具体地,测试服务器可以将唯一标识、用户标识、实验版本标识以及对应的实验配置信息对应缓存在Redis(RemoteDictionary Server,远程字典服务)中。进一步地,测试服务器还可以将唯一标识、用户标识、实验版本标识以及对应的实验配置信息对应存储在云端的MySQL(关系型数据管理***)服务器中。
测试服务器将确定的实验组合版本对应的实验版本标识发送给终端,才能使终端登录当前应用的该实验组合版本。终端将该实验版本标识存储在本地。
由于当前应用的提供方可能修改当前应用中的实验组,如添加一些实验组、删除一些实验组或修改一些实验组的配置信息等。对当前应用中的实验组进行修改后,相应地当前应用的实验分组信息也会被修改。在这种情况下终端对应的实验分组版本也应该及时更新。
本申请实施例中,终端可以通过线程定时轮询测试服务器,以确定其对应的实验组合版本是否发生改变,并在发生改变时获得新的实验组合版本对应的实验版本标识。具体地,终端每隔预设时长发送实验版本确认消息给测试服务器,该实验版本确认消息包括终端的唯一标识。测试服务器接收终端每隔预设时长发送的实验版本确认消息,根据该实验版本确认消息包括的唯一标识和当前的实验分组信息,按照步骤102的方式重新确定终端当前所需对应的实验版本标识。若确定出的当前所需对应的实验版本标识与上一次发送给终端的实验版本标识不同,则将当前所需对应的实验版本标识发送给终端。若确定出的当前所需对应的实验版本标识与上一次发送给终端的实验版本标识相同,则表明当前应用的实验分组情况未发生改变。上述预设时长可以为15min、30min或1h等。
在确定出当前所需对应的实验版本标识与上一次发送给终端的实验版本标识不同的情况下,终端接收测试服务器在确认终端对应的实验版本改变时返回的新的实验版本标识,按照下述步骤104的操作加载新的实验版本标识对应的实验组合版本。
在本申请的另一些实施例中,也可以由测试服务器在检测到当前应用的实验分组信息发生变化时主动向终端推送重新确定的实验版本标识。具体地,测试服务器检测到当前应用的实验分组信息发生变化,从存储的唯一标识、用户标识、实验版本标识及对应的实验配置信息中,获取当前访问该当前应用的所有终端的唯一标识。根据每个终端的唯一标识及发生变化后的实验分组信息,按照上述步骤102的操作分别重新确定每个终端对应的实验版本标识。然后测试服务器将重新确定的每个终端对应的实验版本标识分别发送给每个终端。当前正访问该当前应用的每个终端接收测试服务器在检测到当前应用的实验分组信息发生变化时为终端重新确定的实验版本标识,按照以下步骤104的操作加载重新确定的实验版本标识对应的实验组合版本。
步骤104:终端接收测试服务器返回的实验版本标识,根据该实验版本标识,获取对应的实验组合版本的实验配置信息,并显示该实验组合版本,根据该实验配置信息实现不同的实验测试。
终端接收测试服务器发送的实验版本标识,发送当前应用的加载请求给业务服务器,该加载请求包括该实验版本标识及终端的唯一标识等。业务服务器接收到该加载请求后根据该实验版本标识从测试服务器获取该实验版本标识对应的实验配置信息。根据该终端的唯一标识,将获得的实验配置信息发送给该终端。终端接收业务服务器返回的该实验版本标识对应的实验配置信息,根据该实验配置信息进行页面渲染,显示当前应用的实验组合版本对应的应用界面。
通过上述方式终端登录对应的实验组合版本,显示当前应用的应用界面后,用户可以对当前显示的应用界面中的任一接口进行操作,如点击一些按键或播放当前界面中的视频等。本申请实施例中应用程序中应用界面包括的每个接口处都设置了埋点程序,埋点程序用于统计用户的操作数据。终端登录当前应用之后每隔预设时间段综合各埋点程序统计的用户的操作数据,发送埋点信息给测试服务器,该埋点信息包括实验版本标识及统计的用户的操作数据。
测试服务器接收终端发送的埋点信息,根据埋点信息包括的实验版本标识,从缓存或云存储中获取该实验版本标识对应的实验配置信息。将该埋点信息和实验配置信息对应存储在预设数据库中。预设数据库可以为分析型数据库ClickHouse(列式存储分析型数据库)。
在本申请实施例中,终端发送埋点信息给测试服务器,可以先将埋点信息发送到kafka服务器中的消息队列中,再由kafka服务器将埋点信息转发到测试服务器中。
当用户需要查看不同实验组合版本的实验效果时,测试服务器从预设数据库中获取不同实验组合版本的实验配置信息及对应的埋点信息;根据预设分析指标及不同实验组合版本的实验配置信息及对应的埋点信息,生成实验测试报告。其中,预设分析指标可以包括公共指标和/或自定义指标,公共指标可以包括用户留存率、下单数、广告收入等。自定义指标可以为应用程序的提供者根据应用程序的业务特点自定义设置的指标,如短视频应用中的自定义指标可以为播放视频数、点赞数、收藏数等。
本申请实施例在应用程序的所有接口和埋点程序触发的消息传输中都带上了实验版本标识,***一次性开发完成之后,后续新业务做新的AB实验时不需要考虑改动埋点程序。基于公共指标的数据报表也无需定制化开发,直接指定公共指标作为实验数据报表中的指标,内置了数据分析模板,实现了自动化生成AB实验报告。而且通过终端发送的请求中携带的实验版本标识,也可以反查到该终端对应的实验分流情况。
为了便于理解本申请实施例提供的方法,下面结合附图进行说明。如图4所示,APP(即应用程序)启动时或间隔5分钟调用测试服务器,测试服务器返回实验版本标识给客户端,客户端本地存储该实验版本标识。测试服务器将该实验版本标识与对应的实验配置信息对应缓存在Redis数据库中,以及将实验版本标识与对应的实验配置信息永久性地存储在云端的MySQL服务器中。当APP端请求接口时带上该实验版本标识,业务服务器根据该实验版本标识从测试服务器中的Redis数据库或云端的MySQL服务器中获取对应的实验配置信息给APP端。用户在使用应用程序的过程中产生业务数据,由于应用程序的接口处都设置有埋点程序。用户的曝光、点击等均通过埋点程序进行统计,并上传埋点信息,该埋点信息中带有实验版本标识。埋点信息转发给kafka消息队列中。Kafka消息根据埋点信息中包括的实验版本标识,确定该实验版本标识对应的实验配置信息,将埋点信息与对应的实验配置信息对应存储在分析型数据库ClickHouse中。通过对分析型数据库ClickHouse中存储的数据进行分析可以得到实验数据统计报表和效果数据统计报表等。图4中虚线部分表示也可以通过kafka消息队列发送请求日志和返回结果给测试服务器。
在本申请实施例中,测试服务器自动根据终端的唯一标识和应用程序的实验分组信息确定终端对应的实验组合版本,并为终端分配对应的实验版本标识,通过该实验版本标识传递实验配置信息。后续用户使用该应用程序所产生的所有请求中都携带该实验版本标识,使得用户使用该应用程序的过程中产生的所有业务数据及用户数据均与该实验版本标识存在关联关系,如此后续生成实验报告时可以根据实验版本标识方便地统计同一个实验组合版本对应的数据,无需定制化开发报表,实现统计埋点、统计报表和统计指标的自动化流程,实验效率大幅提升。而且可以实现多个实验同时进行,没有明显实验数量上的限制,能够使更多AB实验得以落地实施。
本申请实施例还提供一种AB实验的实现***,参见图5,该***包括终端501和测试服务器502;
终端501,用于发送请求给测试服务器502,请求包括终端的唯一标识;
测试服务器502,用于根据唯一标识和当前应用的实验分组信息,确定终端501对应的实验组合版本;根据实验组合版本分配对应的实验版本标识,并将实验版本标识发送给终端501;
终端501,用于根据实验版本标识,获取实验组合版本的实验配置信息,并显示实验组合版本;根据实验配置信息实现不同的实验测试。
在本申请实施例中,测试服务器所执行的操作均可参照上述任一实施例提供的AB实验的实现方法中测试服务器所执行的操作,在此不再赘述。同样地,本申请实施例中终端所执行的操作均可参照上述任一实施例提供的AB实验的实现方法中终端所执行的操作,在此不再赘述。
本申请的上述实施例提供的AB实验的实现***与本申请实施例提供的AB实验的实现方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
本申请实施例还提供一种AB实验的实现装置,该装置用于执行上述任一实施例提供的AB实验的实现方法中测试服务器所执行的操作。参见图6,该装置包括:
接收模块601,用于接收终端发送的请求,请求包括终端对应的唯一标识;
确定模块602,用于根据唯一标识和当前应用的实验分组信息,确定终端对应的实验组合版本;
发送模块603,用于根据实验组合版本分配对应的实验版本标识,并将实验组合版本对应的实验版本标识发送给终端;
终端根据实验版本标识访问当前应用的实验组合版本,并获取当前访问的实验组合版本的实验配置信息;根据实验配置信息实现不同的实验测试。
在本申请实施例中,实验分组信息包括当前应用的实验类型、实验场景的场景标识及实验场景中包含的所有实验组的实验组标识;确定模块602,用于若实验类型为单场景实验,则根据唯一标识、实验场景的场景标识及实验场景中包含的所有实验组的实验组标识,分别确定实验场景包括的每个实验组中终端对应的实验;将每个实验组中终端对应的实验构成的集合确定为终端对应的实验组合版本;以及,用于若实验类型为多场景实验,则根据唯一标识及当前应用的所有实验场景的场景标识,从所有实验场景中选择终端对应的实验场景;根据唯一标识、选择的实验场景的场景标识及选择的实验场景包含的所有实验组的实验组标识,分别从选择的实验场景包括的每个实验组中确定出终端对应的实验;将选择的实验场景包括每个实验组中终端对应的实验构成的集合确定为终端对应的实验组合版本。
确定模块602,具体用于按照预设拼接顺序将唯一标识、实验场景的场景标识和实验场景包含的第一实验组的实验组标识拼接成第一字符串,第一实验组为实验场景中的任一实验组;通过预设算法将第一字符串转换为预设数据长度的第二字符串;利用数字哈希算法计算第二字符串的哈希值,确定哈希值所属的预设数值区间;将预设数值区间对应的实验确定为第一实验组中终端对应的实验。
该装置还包括:实验版本确定模块,用于接收终端每隔预设时长发送的实验版本确认消息,实验版本确认消息包括唯一标识;根据唯一标识和当前的实验分组信息,确定终端当前所需对应的实验版本标识;若当前所需对应的实验版本标识与上一次发送给终端的实验版本标识不同,则将当前所需对应的实验版本标识发送给终端,以使终端切换到当前所需对应的实验版本标识对应的实验组合版本。
该装置还包括:推送模块,用于检测到当前应用的实验分组信息发生变化;获取当前访问当前应用的所有终端的唯一标识;根据每个终端的唯一标识及发生变化后的实验分组信息,分别重新确定每个终端对应的实验版本标识;将重新确定的每个终端对应的实验版本标识分别发送给每个终端,以使当前访问的每个终端均切换到重新确定的实验版本标识对应的实验组合版本。
该装置还包括:埋点信息接收模块,用于接收终端发送的埋点信息,埋点信息包括实验版本标识;获取实验版本标识对应的实验配置信息;将埋点信息和实验配置信息对应存储在预设数据库中。
该装置包括:报告生成模块,用于从预设数据库中获取不同实验组合版本的实验配置信息及对应的埋点信息;根据预设分析指标及不同实验组合版本的实验配置信息及对应的埋点信息,生成实验测试报告。
本申请的上述实施例提供的AB实验的实现装置与本申请实施例提供的AB实验的实现方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
本申请实施例还提供一种AB实验的实现装置,该装置用于执行上述任一实施例提供的AB实验的实现方法中终端所执行的操作。参见图7,该装置包括:
发送模块701,用于发送请求给测试服务器,请求包括终端的唯一标识;
接收模块702,用于接收测试服务器返回的实验版本标识,实验版本标识是测试服务器根据唯一标识确定的终端对应的实验组合版本的标识;
加载模块703,用于根据实验版本标识,获取实验组合版本的实验配置信息,并显示实验组合版本;根据实验配置信息实现不同的实验测试。
加载模块703,具体用于发送当前应用的加载请求给业务服务器,加载请求包括实验版本标识;接收业务服务器返回的实验版本标识对应的实验配置信息;根据实验配置信息,显示当前应用的实验组合版本对应的应用界面。
该装置还包括:实验版本更新模块,用于每隔预设时长发送实验版本确认消息给测试服务器,实验版本确认消息包括唯一标识;接收测试服务器在确认终端对应的实验版本改变时返回的新的实验版本标识;加载新的实验版本标识对应的实验组合版本。
实验版本更新模块,还用于接收测试服务器在检测到当前应用的实验分组信息发生变化时为终端重新确定的实验版本标识;加载重新确定的实验版本标识对应的实验组合版本。
该装置还包括:埋点上报模块,用于发送埋点信息给测试服务器,埋点信息包括实验版本标识,以使测试服务器根据埋点信息生成实验测试报告。
本申请的上述实施例提供的AB实验的实现装置与本申请实施例提供的AB实验的实现方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种电子设备,以执行上述AB实验的实现方法。请参考图8,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图8所示,电子设备8包括:处理器800,存储器801,总线802和通信接口803,所述处理器800、通信接口803和存储器801通过总线802连接;所述存储器801中存储有可在所述处理器800上运行的计算机程序,所述处理器800运行所述计算机程序时执行本申请前述任一实施方式所提供的AB实验的实现方法。
其中,存储器801可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口803(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线802可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器801用于存储程序,所述处理器800在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的所述AB实验的实现方法可以应用于处理器800中,或者由处理器800实现。
处理器800可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器800中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器800可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器800读取存储器801中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的电子设备与本申请实施例提供的AB实验的实现方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的AB实验的实现方法对应的计算机可读存储介质,请参考图9,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的AB实验的实现方法。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的AB实验的实现方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是:
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下示意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。