一种服务器、策略在线测试的方法及系统的制作方法_2

文档序号:9846566阅读:来源:国知局

【附图说明】
[0042]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0043]图1为现有技术中单层策略测试的示意图;
[0044]图2为现有技术中针对多个策略的单层策略测试的示意图;
[0045]图3为本发明的策略在线测试的方法的一个实施例的流程示意图;
[0046]图4为本发明实施例一中建立多个策略测试层的一个可选实施例的示意图;
[0047]图5为本发明实施例二所述策略在线测试的方法的一个可选实施例的示意图;
[0048]图6为本发明实施例二所述计算哈希值进行每个测试层流量分配的一个可选实施例示意图;
[0049]图7为本发明实施例二中对A、B两个策略进行在线测试的一个可选流量分配方式的不意图;
[0050]图8A为本发明实施例三中对策略进行在线测试的一个可选流量分配方式的示意图;
[0051]图SB为本发明实施例三中对策略进行在线测试时新增策略测试层的一个可选流量分配方式的示意图;
[0052]图9为本发明中一个策略在线测试的系统的一个可选实施例的示意图。
【具体实施方式】
[0053]如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
[0054]实施例1
[0055]如图3所示,为本发明的策略在线测试的方法的一个实施例的流程示意图。在本实施例中,针对每个需要测试的策略设置一个独立的策略层进行测试,各个策略层之间测试流量的分配按照各自预先设置的比例相互独立,使得各个策略层流量分配无依赖,避免了各个策略团队之间沟通流量分配困难的问题,同时降低了策略团队之间的沟通成本。本实施例中策略在线测试的方法包括以下步骤:
[0056]步骤101、接收策略在线测试请求。
[0057]技术人员在线下开发的每一个新策略都需要与原有的策略进行优劣对比后才能确定更有利的策略进行上线。因为在线下很难模拟出变化万千的线上环境,在线下测试中得不出实际更优的策略,因此,在本技术领域中,通常采用AB测试的形式,将线上流量,例如采用cookie作为标识的流量,按照预先设定的比例流经各个测试策略进行测试,通过线上测试的结果数据对比即可反映出新策略与原有策略的优劣,通过这种方式简单、直观、准确地挑选出了更有利的策略进行上线。
[0058]步骤102、按照预先设定的顺序建立各个策略的测试层,并分配各个策略测试层中测试桶的流量比例。
[0059]在本实施例中,每个策略测试层都独立地用于一个策略的测试,预先设定好测试流量从一个策略测试层流向下一个策略测试层的策略分层顺序,例如图4所示,为本实施例中建立多个策略测试层的一个可选实施例的示意图,第一层为A策略测试层、第二层为B策略测试层。
[0060]并且,各个策略测试层中的新策略与原有策略的流量分配比例也是预先确定好的,且相互独立,各个策略团队可以自定义其策略的测试流量比例,做到了各个测试实验之间干扰最小,因为各个策略测试层之间是前后关系,并无父子关系,所以各个策略测试层之间的测试并无依赖性。比如,A策略测试层包括A1、A2、及A3三个测试桶,流量分配比例分别为30%、30%及40%,其中测试桶Al及测试桶A2分别用于进行A的新策略及A的原有策略的在线测试,测试桶A3可以用于A的原有策略的大流量测试,也可以用于剩余的流量通过;B策略测试层包括B1、B2、及B3三个测试桶,流量分配比例分别为40%、40%及20%,其中测试桶BI及测试桶B2分别用于进行B的新策略及B的原有策略的在线测试,测试桶B3可以用于B的原有策略的小流量测试,也可以用于剩余的流量通过。每个策略层中,新策略与相应的原有策略的流量比例设置一致,便于后续对两者测试结果的比较。
[0061]步骤103、将测试流量依次通过各个策略测试层,并按照各个策略测试层中测试桶的流量比例分配到相应的测试桶中进行在线测试。
[0062]优选地,系统的策略测试流量经过各个策略测试层时,随机地按照预定的比例流经各个策略层中的测试桶进行策略测试,每一层测试后的流量又随机地流经下一策略测试层进行在线测试。如此,最初的测试总流量都是作为每一层的测试流量随机按各层预定比例进行测试,当存在较多待测试策略时,按照分层的形式利用总体流量针对各个策略独立进行测试,避免了因为进行较多的实验引起流量分配过细降低实验可信度的问题,保证了在对各个策略进行测试时的准确性。
[0063]步骤104、收集各个策略测试层中测试桶的测试结果进行比较,获取各个策略测试层中最优的策略。
[0064]经过在线测试之后,收集各个策略测试层测试桶中的测试结果,通过结果数据比较确定各个策略层的最优策略。例如,某个策略层有策略1、策略2、策略3及原有策略同时进行测试,结果为:策略2>策略1>策略3>原有策略,则选取策略2为该策略层的最优策略。
[0065]实施例2
[0066]如图5所示,为本发明实施例所述策略在线测试的方法的一个可选实施例。本实施例相对于实施例1所示实施例中的流程,可选地描述了在策略在线测试过程中建立及新增策略测试层、计算并进行各层流量分配的过程。本实施例中所述方法包括以下步骤:
[0067]步骤201、接收策略在线测试请求。
[0068]步骤202、按照预先设定的顺序建立各个策略的测试层,并分配各个策略测试层中测试桶的流量比例。
[0069]步骤203、当有新的策略需要进行测试时,在已有策略层基础上增加新策略的测试层,并按照预先设定分新增加策略测试层中测试桶的流量比例。
[0070]步骤204、在所述测试流量流经各个策略的测试层之前,计算所述测试流量的哈希值(hash值),并根据所述哈希值及该策略测试层的流量比例将所述测试流量分配至该测试层的相应测试桶中进行在线测试。
[0071]其中,哈希,又叫散列,就是把任意长度的输入(又叫做预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间。在理想情况下,哈希函数应该把集合中不相等的实例均匀分布到所有可能的哈希值上,要想达到这种理想情形是非常困难的。本发明采用java语言的字符串String对象的hashcode()函数来实现哈希值的计算,计算公式为:s[0]*31 ~ (n_l )+s[1]*3Γ(η-2) +...+s[n-l],其中s[i]是字符串的第i个字符的ASCII码值,η是字符串的长度,符号■'是指数幂。
[0072]优选地,计算所述测试流量的哈希值时,利用每层的名称标识及流量标识作为计算所述哈希值的种子。通过每一层策略名称标识及流量标识作为种子计算得到的哈希值与该层中测试桶中流量比例比较获得流量的分配方式,计算得到的哈希值落在哪个测试桶的流量比例范围内,该部分的流量就流经该测试桶进行测试。例如,如图6所示为本实施例计算哈希值进行每个测试层流量分配的一个可选实施例示意图,以cookie作为流量标识,在A策略测试层中,包括A1、A2及A3三个测试桶,其中,预先设定测试桶Al的流量比例为30%,测试桶A2的流量比例为30%,测试桶A3的流量比例为40%,当计算到的哈希值大于O而小于30%的流量流经测试桶Al进行测试,当计算到的哈希值大于30%而小于60%的流量流经测试桶A2进行测试,当计算到的哈希值大于60%而小于100%的流量流经测试桶A3进行测试。同样地,第二层包括B1、B2及B3三个测试桶,流量分配比例分别为40%,40%和20%,当流量流经第二层策略测试层之前也通过该层哈希值与其流量比例进行判断分
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1