一种分流测试方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种分流测试方法、装置、电子设备及存储介质。
背景技术
为了更好的提高产品质量和用户体验,很多公司在产品设计中通常采用灰度发布或者AB测试技术,具体的AB测试方法(AB测试方案中包含一个或多个子测试方案)确定之后进行产品发布,收集每种子测试方案的数据进行对比,选取最优的子测试方案完善产品。
但是在实现本发明的过程中,发明人发现,现有技术中AB测试方案的测试的功能单一,可变的维度较小,无法对每个用户进行精准的分流等等。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种分流测试方法、装置、电子设备及存储介质。
第一方面,本申请实施例提供了一种分流测试方法,包括:
接收服务请求,所述服务请求携带请求方的特征数据;
获取所述服务请求对应的预设标识;
根据所述特征数据及所述预设标识进行计算得到哈希值;
将所述服务请求分流至所述哈希值对应版本的服务系统。
可选的,所述预设标识包括以下至少一项:
分流策略标识、分类标识或人群标识。
可选的,在根据所述特征数据及所述预设标识进行计算得到哈希值之前,所述方法还包括:
根据所述特征数据查询预先存储的白名单;
当所述特征数据属于所述白名单时,则根据所述特征数据及所述预设标识进行计算得到哈希值。
可选的,在将所述服务请求分流至所述哈希值对应版本的服务系统,之前所述方法还包括:
将所述哈希值对预设值进行取模运算,得到运算结果;
根据所述运算结果确定所述哈希值对应的版本。
可选的,所述方法还包括:
收集各个版本的测试数据;
对所述测试数据进行分析确定各个版本的测试结果。
可选的,所述对所述测试数据进行分析确定各个版本的测试结果,包括:
根据所述测试数据计算测试指标;
对所述测试指标进行统计得到各个版本的测试结果。
其中,所述测试指标包括:点击率,人均点击次数,点击次日留存率,曝光次日留存率,七日点击留存率,七日曝光留存率,停留时长以及访问次数。
第二方面,本申请实施例提供了一种分流测试装置,包括:
接收模块,用于用于接收服务请求,所述服务请求携带请求方的特征数据;
获取模块,用于获取所述服务请求对应的预设标识;
计算模块,用于根据所述请求方的特征数据及所述预设标识进行计算得到哈希值;
处理模块,用于将所述服务请求分流至所述哈希值对应版本的服务系统。
第三方面,本申请实施例提供了一种分流测试系统,包括:服务方,分流测试装置;
所述服务方,用于接收业务请求,并将所述业务请求发送至所述分流测试装置;
所述分流测试装置,用于获取所述业务请求中携带请求方的特征数据,根据所述特征数据进行计算得到散列值,基于所述散列值确定所述特征数据相关联的版本,将所述版本反馈给所述服务方;
所述服务方,还用于将所述版本的测试数据发送至所述分流测试装置;
所述分流测试装置,还用于对所述测试数据进行分析确定各个版本的测试效果。
第四方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
第五方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本实施例公开的方法,确定的参加应用测试的用户是满足预设分流策略的,更加精准的实现了的用户分流,而非现有技术中的随机分配,符合测试人员的测试需求,提高测试结果的准确性和可靠性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分流测试方法的流程图;
图2为本申请另一实施例提供的一种分流测试方法的流程图;
图3为本申请实施例提供的一种分流测试装置的框图;
图4为本申请实施例提供的一种分流测试系统的框图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种分流测试方法、装置、电子设备及存储介质。本发明实施例所提供的方法可以应用于任意需要的电子设备,例如,可以为服务器、终端等电子设备,在此不做具体限定,为描述方便,后续简称为电子设备。
图1为本申请实施例提供的一种分流测试方法的流程图,如图1所示,该方法包括以下步骤:
步骤S11,接收服务请求,服务请求携带请求方的特征数据;
步骤S12,获取服务请求对应的预设标识;
步骤S13,根据请求方的特征数据及预设标识进行计算得到哈希值;
步骤S13,将服务请求分流至哈希值对应版本的服务系统。
现有技术中,一般采用随机分配的原则确定参加应用测试的用户,随机分配会影响到测试结果的准确性,造成测试结果不可靠,影响待测试应用的正常发布。本实施例公开的方法,确定的参加应用测试的用户是满足预设分流策略的,更加精准的实现了的用户分流,而非现有技术中的随机分配,符合测试人员的测试需求,提高测试结果的准确性和可靠性。
当开发出新版本或者开发出不同版本的服务系统时,如果盲目的直接将新版本发布或者从不同版本中选择其中一个发布,都可能存在新发布的版本出现用户体验不好的情况。
所以为了避免这种情况,就需要在发布前分别对服务系统的新旧版本或者服务系统的不同版本进行测试。在本实施例中,将服务系统的各版本下发给对应的用户后,用户访问相应的版本,就会产生相应版本的用户数据。
例如用户使用该服务系统的行为数据。那么就可以通过用户产生的数据完成服务系统的各版本的测试进行应用测试任务时,为了获取到服务系统的各版本对应的用户数据,首先需要确定参加该测试的用户,然后再从参加该测试的用户中进行分配,继而将各版本发布给对应的用户。
具体的,测试人员可以根据测试需求,预先设定用户分流策略,然后按照预设的用户分流策略,从访问该服务系统的用户中确定参加本次测试任务的用户,以便保证确定参加的用户的合理性,然后再将服务系统的多个版本分别发布给对应的参加本次测试任务的用户。
本实施例中,服务请求可以是客户端访问业务系统生成,服务请求中携带请求方的特征数据,其中请求方的特征数据包括:用户ID,客户端ID,用户性别和用户年龄等数据。预设标识包括以下至少一项:分流策略标识、用户分类标识或人群标识。
可选的,基于服务请求携带请求方的特征数据,还可以确定服务请求是否满足预设条件,在服务请求满足预设条件的情况下,确定该服务请求能够参加服务系统各个测试版本的实验。显然,在服务请求未满足预设条件的情况下,说明命中的服务请求不符合测试要求,则可以将将服务请求分流至服务系统的原始版本。
本实施例中,得到请求方的特征数据之后,根据特征数据查询预先存储的白名单,当特征数据属于所述白名单时,则根据特征数据及预设标识进行计算得到哈希值。
作为一个示例,白名单可以存储有:执行测试任务的用户对应的预设ID集合,或者执行测试任务的用户对应的性别,或者执行测试任务的用户对应的预设年龄段。所以特征数据属于白名单,包括以下至少一项:用户ID属于预设ID集合,或用户性别为指定性别,或用户的年龄段属于预设年龄段。
需要说明的是,在本申请实施例中,可对特定的服务请求进行实验,这种情况下需要限定某个特定的用户群体,比如,某个年龄段的用户、某个地区的用户或者使用某种类型设备的用户。当对多个服务请求分流后,可确定各个服务请求命中服务系统的版本。如此,可使得本申请实施例的测试方法适用于某些特定的用户群体进行试验,并可提高AB测试的速度,以加快产品策略的迭代速度,解决了现有技术中由于测试方法不能进行多个试验而导致产品的优化迭代周期长的问题。
同时,本实施例在进行服务系统的各个版本的测试过程中,还保证选择的参加本次测试任务的用户在各维度上均匀分布,尽量按照全面覆盖的原则选择用户,使得测试结果具有可靠性和普适性,而不受某一维度的特例的影响。
本实施例中,在将服务请求分流至哈希值对应版本的服务系统,之前方法还包括:将哈希值对预设值进行取模运算,得到运算结果,根据运算结果确定哈希值对应版本的服务系统。
作为一个示例,预设值可以是预执行应用测试任务的用户的数量,假设该值为100,然后按照设定好的版本比例分配将版本进行切分。将能够确认用户唯一的字段(用户id、用户设备id等)做为分流的key,以此避免实验之间互相干扰,通过key与实验id(实验编号)计算其MD5值,之根据MD5值计算哈希值,其中实验id用于表示当前版本进行分流测试的次数。将每个用户id对应的哈希值对100进行取模运算后得到的值判断是哪一个版本。计算公式如下:
Hash Code(Md5(Id,experiment Id,分流策略))%100。
例如,本次测试任务对服务系统的A版本和B版本进行测试,并确定用户1-用户10是参加本次测试任务的用户,则进一步,通过确定用户1-10中每个用户的用户id,根据每个用户的用户id和本次实验的试验编号进行计算,得到每个用户的MD5值,然后根据MD5值计算哈希值,依据哈希值对100进行取模,最终得到用户1-用户5是参加A版本的测试,用户6-用户10是参加B版本的测试,则将A版本发布给用户1-用户5,将B版本发布给用户6-用户10。
在现有技术中,一般采用按照一定的百分比随机选择用户,作为一个示例,访问服务系统的所有用户的50%参加本次应用测试任务,但这并不能有效的保证测试结果的可靠性和普适性,选择的50%的用户可能只是手机品牌1的用户,而并没有覆盖到手机品牌2的用户,这就会造成测试结果不准确。
而在本申请实施例公开的方案中,测试人员想要重点关注手机品牌是华为和苹果的用户的用户数据,那么就将白名单设定为渠道1:手机品牌为华为和苹果,那么在确定用户时,则将满足该预设条件的用户确定为参加本次应用测试任务的用户,示例性的,当确定参加本次测试的用户数量时,可以将两个品牌的用户数量平均分配,避免出现测试覆盖不全面。
在本实施例中,将服务请求分流至对应版本的服务系统后,还可以对服务请求再次进行分流,通过再次分流可以确定服务请求执行对应版本中的测试任务。比如:当待测试应用存在多个测试子任务时,可以对执行子任务的顺序进行优先级排序,保证测试的全面性。例如,测试任务包括:任务A、任务B、任务C,那么当用户访问该版本的服务系统时,先判断该用户是否满足执行任务A的条件,如果满足,则参加任务A,如果不满足,则将该用户释放;判断是否满足执行任务B的条件,如果满足则参加任务B,如果不满足,则再次释放;判断是否满足执行任务C的条件,如果满足就参加任务C,如果不满足,则该用户不参加任何测试任务。
在本实施例中,当一个用户同时符合多个测试任务的测试条件,那么当该用户在每次访问时,可以根据用户的访问次数更新该用户执行的测试任务。
作为一个示例,在预设时间段内,接收到同一用户发送的第n次服务请求后,确定第n次服务请求在当前实验中对应的版本,以及该版本包括的测试任务,获取该用户未执行的测试任务,并将未执行的测试任务按照预设优先级进行排序,将未执行的测试任务重优先级最高的测试任务分配给该用户,其中n为大于等于1的整数。
如此,本发明实施例的方法通过同时在每次实验中对用户的每个服务请求进行划分(即将每个服务请求执行版本中不同的测试任务),且不同实验之间的用户流量的分流互不影响,同时还能确定每个用户对应的版本以及测试任务,从而可以提高AB测试的速度,以加快产品策略的迭代速度,以解决现有技术中由于测试方法不能进行多个试验而导致产品的优化迭代周期长的问题。
需要说明的是,AB测试方法中的AB可以表示为某一实验测试任务中的不同实验,例如,可将A表示为对照组,B表示为实验组,其中每组数据中还可以包括多个分组,示例性的,对照组A包括:对照分组a1,对照分组组a2,实验组B包括:实验分组b1,实验分组b2。
图2为本申请另一实施例提供的一种分流测试方法的流程图:如图2所示,本申请实施例公开的方法还包括:
步骤S21,收集各个版本的测试数据;
步骤S22,对测试数据进行分析确定各个版本的测试结果。
本实施例中,测试数据可以通过在各个版本的操作系统进行埋点获取,可选的,对测试数据进行分析确定各个版本的测试结果,包括:根据测试数据计算测试指标;其中,测试指标包括但不限于:点击率,人均点击次数,点击次日留存率,曝光次日留存率,七日点击留存率,七日曝光留存率,停留时长以及访问次数等。
示例性地,本实施例中的各指标计算公式,如下:
点击率=点击量/曝光量,次日留存率=次日留存量/当日留存量,七日留存率=七日留存量/当日留存量,用户停留时长=每个用户当日在当前页面的停留时长,用户访问次数=每个用户当日在当前页面的访问次数。
在确定各项测试指标后,可以根据测试指标进行多维度分析,从而确定各个版本的测试结果。具体的,本实施例根据测试指标分析各个版本的样本充足度、变化以及显著性,其中,本实施例以两个版本为例,将收集到的数据分为对照组以及实验组。
(一)样本充足度
(1)最低样本量:
对于点击率、次日留存率、七日留存率,三个指标的最低样本量计算公式相同,均采用Q1表示,如下:
对于用户停留时长、用户访问次数,两个指标最低样本量计算公式相同,均采用Q2表示如下:
其中,Z为显著性水平对应的值,Z可以理解为预设值。
i.95%显著水平时:Z=1.96,ii.99%显著水平时:Z=2.58。
E为显著性水平对应的值,E可以理解为预设值。
i.95%显著水平时:E=0.05,ii.99%显著性水平时:E=0.01。
P的值与检验指标保持一致;Ave的值和Var的值为样本计算出的统计量。
i.点击率检验时:P=点击率,ii.次日留存率检验时:P=次日留存率,iii.七日留存率检验时:P=七日留存率,iv.停留时长检验时:Var=所有用户停留时长的样本方差,v.访问次数检验时:Var=所有用户访问次数的样本方差。
(2)样本充足度
a)点击率检验时:
i.曝光量>最低样本量Q1:显示为充足,ii.曝光量<最低样本量Q1:显示为不充足。
b)次日留存率检验时:
i.当日留存量>最低样本量Q1:显示为充足,ii.当日留存量<最低样本量Q1:显示为不充足。
c)七日留存率检验时:
i.当日留存量>最低样本量Q1:显示为充足,ii.当日留存量<最低样本量Q1:显示为不充足。
d)停留时长检验时:
i.当日用户量>最低样本量Q2:显示为充足,ii.当日用户量<最低样本量Q2:显示为不充足。
e)访问次数检验时:
i.当日用户量>最低样本量Q2:显示为充足,ii.当日用户量<最低样本量Q2:显示为不充足。
(二)变化值分析
对于点击率、次日留存率、七日留存率,三个指标变化值的计算公式相同,如下:
对于用户停留时长、用户访问次数,两个指标的变化值计算公式相同,如下:
P的值与检验指标保持一致。
i.点击率检验时:P=点击率,ii.次日留存率检验时:P=次日留存率,iii.七日留存率检验时:P=七日留存率,iv.用户停留时长检验时:Ave=所有用户停留时长的样本均值,v.用户访问次数检验时:Ave=所有用户访问次数的样本均值。
(三)显著性分析
1、置信区间[F-,F+]计算。
对于点击率、次日留存率、七日留存率,三个指标置信区间的计算公式相同,如下:
对于停留时长、访问次数,两个指标置信区间的计算公式相同,如下:
其中,Z为显著性水平对应的值:
i.95%显著水平时:Z=1.96,ii.99%显著水平时:Z=2.5 8。
P的值与检验指标保持一致;Ave的值和Var的值为样本计算出的统计量
i.点击率检验时:P=点击率,ii.次日留存率检验时:P=次日留存率,iii.七日留存率检验时:P=七日留存率,iv.停留时长检验时:Ave=所有用户停留时长的样本均值;Var=所有用户停留时长的样本方差,v.访问次数检验时:Ave=所有用户访问次数的样本均值;Var=所有用户访问次数的样本方差。
N值与检验指标相对应。
i.点击率检验时:N=曝光量,ii.次日留存率检验时:N=当日留存量,iii.七日留存率检验时:N=当日留存量,iv.用户停留时长检验时:N=当日用户数,v.用户访问次数检验时:N=当日用户数。
2、显著性计算
根据置信区间[F-,F+]判断
a)F-<0且F+<0:显示为显著,b)F->0且F+>0:显示为显著,c)F-F-<0且F+>0:显示为不显著。
本实施例通过上述三个维度进行分析得到分析结果,根据分析结果执行相应的处理操作,例如:当样本充足度显示不充足时,分析结果为:实验不充分,则需要增加实验样本。或者,样本充足度显示为充足,显著性显示为不显著,且变化值大于预设阈值,则需要提升流量。
图3为本申请实施例提供的一种分流测试装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图3所示,该分流测试装置包括:
接收模块31,用于用于接收服务请求,服务请求携带请求方的特征数据;
获取模块32,用于获取服务请求对应的预设标识;
计算模块33,用于根据特征数据及预设标识进行计算得到哈希值;
处理模块34,用于将服务请求分流至哈希值对应版本的服务系统。
本实施例中,预设标识包括以下至少一项:分流策略标识、用户分类标识或人群标识。
本申请实施例中,分流测试装置还包括:查询模块,查询模块用于根据特征数据查询预先存储的白名单,当特征数据属于白名单时,则根据特征数据及预设标识进行计算得到哈希值。
本申请实施例的分流测试装置还包括包括:运算模块,运算模块用于将哈希值对预设值进行取模运算,得到运算结果,根据运算结果确定哈希值对应的版本。
本申请实施例的分流测试装置还包括:分析模块,分析模块用于收集各个版本的测试数据,对测试数据进行分析确定各个版本的测试结果。
分析模块,具体用于根据测试数据计算测试指标,对测试指标进行统计得到各个版本的测试结果。其中,测试指标包括:点击率,人均点击次数,点击次日留存率,曝光次日留存率,七日点击留存率,七日曝光留存率,停留时长以及访问次数。
本申请实施例还提供了一种分流测试系统,如图4所示,分流测试系统包括:服务方41,分流测试装置42;
服务方41,用于接收业务请求,并将业务请求发送至分流测试装置;
分流测试装置42,用于获取业务请求中携带请求方的特征数据,根据特征数据进行计算得到散列值,基于散列值确定特征数据相关联的版本,将版本反馈给服务方;
服务方41,还用于将版本的测试数据发送至分流测试装置;
分流测试装置42,还用于对测试数据进行分析确定各个版本的测试效果。
本申请实施例还提供一种电子设备,如图5所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现上述实施例的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,P C I)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例步骤。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令进行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于进行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上进行、部分地在用户设备上进行、作为一个独立的软件包进行、部分在用户计算设备上部分在远程计算设备上进行、或者完全在远程计算设备或服务器上进行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。