具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到现有的测试用户的确定方法,大多是先将样本用户所包含的多个用户划分为多个桶(即hash bucket),每次在确定参与新的测试实验的用户时,会以桶为单位按照一定的规则进行抽取,将抽取出来的用户作为参与新的测试实验的测试用户进行测试。这种测试用户的确定方法具体实施时,由于事先已经将样本用户划分为到了多个桶中,而同一桶中的不同用户之间势必已经存在了关联,导致基于这种方法确定出的测试用户之间的独立性会遭到破坏,不符合测试要求,影响测试实验最终得到的结果数据的准确度。此外,当线上同时存在多个不同的测试实验并行运行时,基于上述方法往往无法有效,且以低成本地避免在基于同一样本用户的情况,不同测试实验之间的冲突。导致现有具体实施时往往会存在对于基于同一样本用户存在其他线上并行的测试实验的场景中,无法以较低成本,高效、准确地为新发起的测试实验筛选符合测试要求的测试用户的技术问题。
针对产生上述问题的根本原因,本说明书考虑可以利用预设的链表数据按照测试实验时间的先后顺序依次记录下样本用户所参与的各个测试实验、各个测试实验的属性信息,以及分别针对所述各个测试实验的离散因子;在确定新发起的测试实验的测试用户时,可以先根据预设的链表数据所记录的数据,检测确定出线上并行的第二测试实验,即可能与新发起的测试实验存在冲突的实验;以及下线的但与新发起的测试实验属性关联的第三测试实验,即可能会对参阅新发起的测试实验的结果数据造成影响的实验;结合上述测试实验的影响,针对新发起的测试实验,从原有的样本用户中筛选出符合要求的第一类用户;再基于上述第一类用户,生成针对新发起的测试实验的离散因子,并利用新生成的离散因子将第一类用户打散,再来确定并分配参与新发起的测试实验的测试用户,从而可以有效地避免与当前线上其他测试实验发生冲突,以及之前发起但已经下线的属性相关联的测试实验的影响,达到准确、高效地基于样本用户为新发起的测试实验确定出同质可比、符合测试要求的测试用户,以保证基于该测试用户的测试实验所得到的测试结果准确、有效,具有较高的代表性和参考价值,从而解决了现有方法存在的在基于同一样本用户存在其他线上并行的测试实验的场景中,无法以较低成本,高效、准确地为新发起的测试实验筛选符合测试要求的测试用户的技术问题。
本说明书实施例提供了一种测试用户的确定方法,所述方法具体可以应用于包含有服务器和客户端的系统架构中。参阅图1所示,其中,上述服务器和客户端可以通过有线或无线的方式耦合,以便进行数据交互,技术人员可以通过客户端向服务器发起请求以获取服务器所分配的参与测试实验的测试用户。
在本实施例中,客户端具体可以为应用于技术人员一侧的设备。具体实施时,客户端可以用于接收并响应技术人员的指示,向服务器发出针对第一测试实验的测试用户的确定请求。服务器具体可以用于接收针对第一测试实验的测试用户的确定请求,其中,所述第一测试实验包括第一测试对象的多个测试版本的测试,所述测试用户为样本用户中参与针对所述第一测试对象的测试版本测试的用户;响应所述测试用户的确定请求,检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户;生成针对所述第一测试实验的第一离散因子;根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。进而后续在进行具体的用户测试时,可以将第一测试对象的对应的测试版本发送给上述所确定出的测试用户进行用户测试。
在本实施例中,所述服务器可以是一种应用于业务平台一侧,能够实现数据传输、数据处理等功能,用于负责进行用户测试实验的后台业务服务器。具体的,所述服务器可以为一个具有数据运算、存储功能以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施方式中,并不具体限定所述服务器的数量。所述服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
在本实施例中,所述客户端可以是一种应用于技术人员或者用户一侧,能够实现数据采集、数据传输等功能的前端设备。具体地,所述客户端例如可以为台式电脑、平板电脑、笔记本电脑、智能手机、数字助理、智能可穿戴设备、导购终端、具有网络访问功能的电视机等。或者,所述客户端也可以为能够运行于上述电子设备中的软件应用。例如,可以是在手机上运行的某APP等。
在一个场景示例中,参阅图2所示,可以应用本说明书实施例提供的测试用户的确定方法为某网络支付平台待上线的支付APP的两个测试版本,即A版本和B版本确定对应的测试用户,进行关于用户体验的测试实验。
在本场景示例中,该网络支付平台拥有一个包含有多个用户的样本用户资源。该网络支付平台的多个APP的版本测试实验,以及多个网页页面的版本测试实验都可以使用该样本用户进行具体的测试实验。
当前该网络支付平台为改善用户体验,提高用户粘度计划上线新版本的支付APP。该网络支付平台的技术人员为该支付APP准备了两个不同的测试版本,即A版本和B版本。可以参阅图3所示,A版本和B版本所包含的主要业务内容相同,但版本的样式、所使用的图标形状图案、图标的位置布局,以及与用户的交互方式会存在区别。技术人员计划先从样本用户中确定出符合测试要求,具有较好代表性的测试用户,并将上述两种不同版本分别推送至各个测试用户进行关于该支付APP的测试实验。根据测试实验得到的结果数据分析A版本和B版本的用户体验情况,从中确定出用户反馈较好的版本作为最终版本,再将最终版本的支付APP正式投放应用到所有用户中。
在具体进行关于该支付APP版本的测试实验(以下记为第一测试实验)前,需要先从该网络支付平台所拥有总的样本用户中确定出参与该次测试实验的测试用户。由于该网络支付平台相关的多个APP和网页页面的版本测试实验都需要利用该样本用户进行相应的测试实验,导致该样本用户中的用户情况较为复杂。例如,可能当前线上还有几个其他的测试实验(记为第二测试实验)正在进行,上述正在进行的第二测试实验已经占用了该样本用户中的部分用户,导致这部分用户即使被选中,实际上无法参与到第一测试实验。又例如,有的测试实验(记为第三测试实验)虽然已经下线,并已经释放了在进行测试实验时所占用的部分用户,但由于上述第三测试实验与第一测试实验关联性较强(例如版本样式较为接近等),导致之前参与上述第三测试实验的那部分用户如果被选中参与第一测试实验时,往往会受到之前所参与的上述第三测试实验的影响(例如Carryover影响),导致基于该部分用户所得到的测试结果会与基于没有参与过上述第三测试实验的普通用户所得到的测试结果具有明显的差异,进而会使得最终得到的结果数据不够准确、客观的,不能有效地反映、预测普通用户对第一测试实验所涉及的测试版本的使用体验。
基于统计学的原理,为了使得测试实验所得到的测试结果准确、有效,能够较好地反映用户的体验情况,具有较高的参考价值,需要所选中参与测试实验的测试用户满足相关的测试要求,例如,满足均匀性、一致性和独立性,即要求测试用户是同质可比的。而上述样本用户中的用户情况较为复杂,如果不作处理直接从上述样本用户中随机抽取用户作为测试用户显然是不符合测试要求的,会导致最终得到的结果数据不够准确、有效,也无法真实地反映出用户的使用体验,参考价值较低。
而在现有的测试用户的确定方法中,以桶(即hash bucket)为单位的测试用户的确定方法(或者用户的分流方法)由于每一个桶中的不同用户之间必然已经存在了不可避免的关联性,导致基于该方法所确定的测试用户无法真正地符合上述测试要求。此外,现有方法中还有基于RPC调用进行用户集中管理和分流的方法,会导致系统服务器承受大量的数据处理压力,且容易受到网络延时、服务器吞吐量等限制和影响,导致处理效率较低,且处理过程不够稳定。尤其在基于同一样本用户资源的涉及的测试实验数量较多、测试较为频繁的情况下,上述问题会更加凸显。
在本场景示例中,为了能够准确、高效地在样本用户的用户情况较为复杂的情况下,为每个新发起的第一测试实验确定出符合测试要求的测试用户,同时也为了降低服务器的数据处理,保证服务器处理的稳定性,可以以测试实验为单位有针对性地确定出第一测试实验的测试用户。
具体的,当技术人员想要发起针对支付APP的A版本和B版本的测试实验时,可以先向该支付网络平台的业务系统的服务器发送针对该测试实验的测试用户的确定请求。其中,该测试用户的确定请求中具体还可以携带有所请求的测试实验的身份信息(例如测试实验的身份ID或者实验编号等)、测试时实验所包括的测试对象的多个测试版本,以及针对该测试实验的预设比例(例如需要从样本用户中选中多少比例的用户参与本次测试实验、多少比例的用户参与A版本的测试、多少比例的用户参与B版本的测试等等)。
服务器在接收到上述测试用户的确定请求后,可以通过数据解析,确定出所请求确定测试用户所对应的测试实验的身份信息(例如身份ID:NO.12138),该测试实验所包含的测试对象(例如支付APP)的测试版本(例如A版本和B版本),以及对应的预设比例。
服务器在解析得到上述关于测试实验的信息数据后,进一步可以调用预设的链表数据来检测是否存在当前线上正在进行的测试实验,即第二测试实验;并根据上述预设的链表数据的准确、快速地从总的样本用户中确定出参与第二测试实验的用户。
其中,上述预设的链表数据具体可以一种哈希链。具体实施时,服务器会按照时间顺序在上述预设的链表数据中记录下各个测试实验的属性信息(例如测试实验的身份信息、测试实验的开始时间、测试实验的结束时间、测试实验与其他测试实验的依赖关系等等),以及针对各个测试实验所使用的离散因子(一种可以用于打散用户并确定测试实验所对应的测试用户的参数数据,后续将作具体说明)等信息。
按照上述方式,服务器通过预设的链表数据,每次在进行测试实验时,只需要记录下各个测试实验的属性信息,以及所对应的离散因子,而不需要记录下每次参与测试实验的具体用户,相对于现有方法这样可以有效地减少服务器的数据处理量以及计算的复杂度。
服务器具体可以通过查询预设的链表数据中是否存在开始时间为当前时间之前,以及是否已经记录有结束时间的测试实验来检测是否存在上述第二测试实验。
如果查询到预设的链表数据中不存在开始时间为当前时间之前,或者不存在没有记录有结束时间的测试实验,则可以确定不存在当前线上正在进行的测试实验;进而可以判断样本用户中的所有用户当前都是未被占用的。
如果查询到预设的链表数据中存在开始时间为当前时间之前,且没有记录有结束时间的测试实验,则可以确定存在当前线上正在进行的测试实验,即存在第二测试实验;进而可以判断样本用户中存在部分用户是已经被占用的,会与即将发起的针对支付APP的版本测试实验发生冲突,无法参与针对支付APP的版本测试实验。
进一步,在确定存在上述第二测试实验(例如2号实验)后,可以只查询预设的链表数据中与2号实验相关的数据,以获取针对该对2号实验的离散因子(即第二离散因子)和2号实验的属性信息。其中,上述针对2号实验的离散因子为服务器之前为确定2号实验的测试用户所生成并使用的离散因子。上述2号实验的属性信息至少包括2号实验的预设比例。具体的,上述针对2号实验的离散因子可以是一种根据2号实验的身份ID生成的哈希因子。
同时服务器还会获取样本用户中的各个用户的身份信息(例如用户的身份ID),再根据上述2号实验的离散因子,以及样本用户中各个用户的身份信息,按照相应的预设规则进行计算(例如进行数据回放),并结合2号实验的预设比例,确定样本用户中2号实验所命中的用户,即参与2号实验的用户作为第二类用户,这类用户由于所参与的2号实验与即将进行的针对支付APP的版本测试实验时间存在冲突,无法参与针对支付APP的版本测试实验。因此,可以参阅图4所示,可以从样本用户中剔除上述所确定出的第二类用户,将样本用户中剩下的没有被占用的可以参与第一测试实验的用户作为第一类用户。
在确定出第一类用户后,进一步,又考虑到上述用户中可能还会存在部分用户之前参与过与第一测试实验相关联的其他测试实验(例如与第一测试实验中的某个测试版本相近似的版本的测试实验,记为第三测试实验)。而基于这部分用户得到的测试结果数据往往会与基于之前没有参与过相关联的测试实验,没有受之前相关联的测试实验影响的普通用户所得到的测试结果数据存在较大的差异,为了保证最终基于统计得到的总的测试用户的测试结果数据准确、有效,还可以先从上述第一类用户中找到之前参与过第三测试实验的用户,可以记为第三类用户,再根据所确定出的第三类用户,对上述第一类用户作相应的调整。
具体的,服务器可以先获取第一测试实验的属性信息,并从第一测试实验的属性信息中获取表征依赖关系的属性信息,例如得到表征依赖关系的属性标签a。再查询预设的链表数据中开始时间和结束时间都在当前之前的各个测试实验的属性信息,确定是否存在与上述属性标签a匹配的表征依赖关系的属性信息(例如属性标签相同)。
如果确定不存在与上述属性标签a匹配的表征依赖关系的属性信息,则可以确定不存在之前已经下线的但与第一测试实验关联的第三测试实验,进而可以判断第一类用户中的所有用户都是相同的,都没有受到之前测试实验的影响。
如果确定存在与上述属性标签a匹配的表征依赖关系的属性信息,则可以确定存在之前已经下线的但与第一测试实验关联的第三测试实验,进而可以判断第一类用户中可能存在部分用户与普通用户不同,是会受到之前测试实验影响的用户。
进一步,在确定检测结果为存在上述第三测试实验(例如3号实验)的情况下,可以只查询预设的链表数据中与3号实验相关的数据,以获取针对该对3号实验的离散因子(可以记为第三离散因子)和3号实验的预设比例。其中,上述针对3号实验的离散因子为服务器之前为确定3号实验的测试用户所生成并使用的离散因子。具体的,上述针对3号实验的离散因子可以是一种根据3号实验的身份ID生成的哈希因子。
同时服务器还会获取第一类用户中的各个用户的身份信息(例如用户的身份ID),再根据上述3号实验的离散因子,以及第一类用户中的各个用户的身份信息,结合3号实验的预设比例,按照相应的预设规则进行计算,确定第一类用户中3号实验所命中的用户,即第一类用户中之前参与过3号实验的用户作为第三类用户,这类用户由于之前参与过与第一测试实验相关联的3号实验,因此在使用所推送的支付APP版本时会受到之前参与过的3号实验的影响,导致基于这类用户得到的测试结果数据会与普通没有受之前关联实验影响的用户存在差异。
为了减少基于这类受3号实验影响的用户对最终的测试结果的影响,可以根据所确定出上述第三类用户对第一类用户进行进一步的调整,将调整后的第一类用户作为符合要求的,最终使用的第一类用户。
具体的,例如,可以直接从第一类用户中剔除上述第三类用户,从剔除后的第一类用户中抽取参与第一测试实验的测试用户。也可以事先不剔除上述第一类用户中的第三类用户,而只是对第一类用户中所包含的第三类用户进行标记(例如设置指示第三类用户的标签),再将第三类用户和第一类用户中没有受第三测试实验影响的其他普通用户放在一起进行测试用户的抽取,后续进行具体测试实验,可以通过识别指示第三类用户的标签找到测试用户中的基于第三类用户得到的数据,并将这类数据按照一定的权重进行处理后再和基于普通用户得到数据一起进行分析处理等等。当然,上述所列举的调整方法只是一种示意性说明。具体实施时,根据具体的应用场景和精度要求,还可以采用其他合适的方式对上述第一类用户进行相应调整。对此,本说明书不作限定。
在按照上述方式,得到符合要求的第一类用户后,服务器可以先根据第一测试实验的身份信息,对应于所确定出的第一类用户重新生成新的一个离散因子作为第一离散因子。需要说明的是,上述第一离散因子是针对第一测试实验(即针对支付APP的版本测试的测试实验)所生成的,对应于基于第一测试实验从样本用户中所确定出的第一类用户,因此后续可以有效地利用该离散因子将第一类用户打散进行测试用户的抽取,同时也不会对当前线上正在进行的其他测试实验造成影响或冲突。
具体实施时,服务器可以根据第一测试实验的身份ID按照预设的生成规则进行哈希运算,得到一个哈希因子作为第一离散因子。再获取第一类用户中所包含的各个用户的身份信息,同时从第一测试实验的属性信息中读取第一测试实验的预设比例。再根据预设规则,将第一类用户中各个用户的身份信息和第一离散因子进行组合后分别计算对应的md5值。通过md5值表征第一类用户中的各个用户,这样可以将第一类用户中的各个用户映射到对应的md5空间中,从而可以将第一类用户中的用户打散,使得这时基于第一类用户所抽取的测试用户符合均匀性、一致性和独立性等测试要求。进而可以根据预设比例,通过md5值对打散后的第一类用户进行抽取。参阅图2和图4所示,可以从第一类用户中分别抽取得到符合数量要求的参与支付APP的A版本测试的一组测试用户(可以记为A组测试用户,例如包括用户甲、用户乙、用户丙),以及参与支付APP的B版本测试的另一组测试用户(可以记为B组测试用户,例如包括用户丁、用户戊),从而得到了参与该测试实验的所有测试用户。
在确定出上述测试用户后,进一步,服务器可以分别将上述支付APP的A版本发送至A组测试用户中的各个测试用户使用,将上述支付APP的B版本发送至B组测试用户中各个测试用户使用,以开始第一测试实验。在进行第一测试实验的同时,第二测试实验会正常并行执行。可以参阅图3所示,即第一测试实验和第二测试实验不会发生相互干扰或影响。
具体测试时,测试用户在接收到对应测试版本的支付APP时,会基于所得到的测试版本的支付APP进行相关的操作使用。同时内置于上述支付APP中的测试组件会自动采集测试用户的行为数据(例如用针对支付APP中的某个图标的点击操作,或者针对支付APP中的某个输入框的输入操作等等),再将不同测试用户基于所对应的测试版本的支付APP的行为数据发送至服务器,服务器在接收到上述来自不同用户的行为数据后,可以按照相应的评分规则,根据所接收到行为数据对测试用户对A版本和B版本的指标数据进行统计,根据统计结果确定测试用户对A版本和B版本的评价分数,通过该评价分数可以表征出用户对上述两种版本的用户体验情况。通常获得评价分数值越高,说明该版本相对更受用户欢迎,用户使用体验较高。因此,可以比较两种版本的评价分数,选出评价分数最高的版本,即用户体验相对较高、相对更受用户欢迎的版本作为最终版本。例如,A版本的评价分数高于B版本,因此可以确定A版本的用户体验要高于B版本。进而可以将A版本确定为该支付APP的最终版本,并正式向所有用户推送该支付APP的A版本。
在进行第一测试实验的过程中,第二测试实验已经执行完成并下线,这时可以释放第二测试实施测试时所占用的用户,即第二类用户。参阅图4所示。如果在第二测试实验执行完成并下线,且在第一测试实验还未执行完成的情况下,服务器有接收到了新的测试实验的测试用户的确定请求,则服务器可以按照类似的方式将正在线上执行的第一测试实验所占用的测试用户从样本用户中剔除出来,再根据剔除后的样本用户按照类似的方式为新的测试实验确定对应的测试用户,以便可以在第一测试实验执行的同时,并行进行新的测试实验。
在本场景示例中,还需要补充的是,服务器在按照上述方式确定出针对第一测试实验的测试用户,并根据所确定的测试用户,进行第一测试实验时,服务器还将确定测试用户时所生成的第一离散因子及时地记录到预设的链表数据中,同时还会在预设的链表数据中记录下第一测试实验的开始时间、结束时间、依赖关系等属性信息,以便后续确定新的测试实验的测试用户时使用。
由上述场景示例可见,本说明书提供的测试用户的确定方法,由于通过针对新发起的测试实验,先从原有的样本用户中筛选出符合要求的第一类用户;再生成针对新发起的第一测试实验的离散因子,并利用新生成的离散因子将第一类用户打散,再来确定并分配参与新发起的第一测试实验的测试用户,从而可以避免与当前线上其他的测试实验发生冲突,达到准确、高效地基于同一样本用户为新发起的第一测试实验确定出同质可比、符合测试要求的测试用户,以保证基于该测试用户的第一测试实验所得到的测试结果准确、有效,具有较高的参考价值,能准确地代表样本用户整体的使用体验,从而解决了现有方法存在的在基于同一样本用户存在其他线上并行的测试实验的场景中,无法以较低成本,高效、准确地为新发起的测试实验筛选符合测试要求的测试用户的技术问题。
参阅图5所示,本说明书实施例提供了一种测试用户的确定方法,其中,该方法具体应用于服务器一侧。具体实施时,该方法可以包括以下内容:
S51:接收针对第一测试实验的测试用户的确定请求,其中,所述第一测试实验包括第一测试对象的多个测试版本的测试,所述测试用户为样本用户中参与针对所述第一测试对象的测试版本测试的用户。
在本实施例中,上述第一测试实验具体可以理解为当前即将上线进行的新发起的测试实验。其中,第一测试实验具体可以包含有针对第一测试对象的多个测试版本的测试。
上述第一测试对象具体可以为第一测试实验所要测试的产品对象,例如,电脑端的软件应用或者手机端的APP等等;也可以为第一测试实验所要测试的页面对象,例如网页页面或者产品的交互界面等等。当然,需要说明的是,上述所列举的第一测试对象只是为了更好地说明本说明书实施例。具体实施时,根据具体的应用场景还可以引入其他类型的数据对象作为上述第一测试对象。对此,本说明书不作限定。
上述测试版本具体可以理解为预先为第一测试对象所设计的产品版本或者页面版本。具体实施时,根据具体情况,可以预先为第一测试对象准备多个测试版本进行测试。其中,上述多个测试版本中的各个测试版本所包含的主要数据内容相近,但不同测试版本之间可以在外在样式和/或后台处理上存在差异。例如,第一个页面版本与第二页面版本的页面布局、所使用的文字格式不一样。第三个APP版本与第四个APP版本的后台调用逻辑不一样等等。通过对多个测试版本进行用户测试,可以判断出各个测试版本的用户体验情况,以便后续可以根据测试实验从多个测试版本中筛选出用户体验较好的版本。当然,也可以为第一测试对象仅设计一个测试版本,仅对这一个测试版本进行测试实验。
在本实施例中,上述样本用户具体可以理解为一个总的用户资源,该样本用户具体可以包含有多个用户,以及上述多个用户中的各个用户的相关信息,例如用户的身份信息、用户的联系方式等等。
在本实施例中,上述测试用户具体可以理解为从上述样本用户中确定出来符合测试要求(例如满足均匀性、一致性和独立性等要求),具有较好的代表性的,参与第一测试实验所包含的第一测试对象的多个测试版本的测试的用户。后续将会向所确定出的测试用户分别推送第一测试对象的对应测试版本进行用户测试。
在本实施例中,还需要说明的是,除了上述第一测试实验外,还可能存在当前线上正在进行的其他测试实验,即第二测试实验,以及之前进行的,当前已经下线的但与第一测试实验存在属性关联的(例如测试版本与第一测试实验所涉及的测试版本相同或相近的)其他测试实验,即第三测试实验。其中,上述第二测试实验、第三测试实验在进行测试时所选中的测试用户也同样来源于上述样本用户。由于第二测试实验当前还在线上进行,还没有释放该类测试实验所占用的测试用户(即对应第二测试实验的第二类用户),导致与第一测试实验存在冲突,即参与第二测试实验的测试用户无法参与第一测试实验。又由于第三测试实验与待进行的第一测试实验存在属性关联,虽然第三测试实验已经下线,所占用的测试用户(即对应第三测试实验的第三类用户)已经释放回了样本用户中,但这类用户由于之前参与第一测试实验相关联的第三测试实验,导致在参与新发起的第一测试实验时会受到之前参与过的第三测试实验影响,进而使得测试结果会与普通测试用户(即之前没有参与过第三测试实验的测试用户)存在差异,如果直接综合这类用户的测试数据而不作处理,会使得的所得到的最终总的测试结果往往不能真实、准确地反映普通用户的用户体验情况,影响测试结果的参考价值。
在本实施例中,上述针对第一测试实验的测试用户的确定请求具体可以理解为一种请求服务器确定第一测试实验所对应的测试用户的请求数据(或者称请求确定第一测试实验所包含的第一测试对象的测试版本所命中的用户的请求数据)。其中,上述测试用户的确定请求中具体还可以携带有与第一测试实验相关的信息数据。例如,第一测试实验的身份信息(例如包括第一测试实验的身份ID等),第一测试实验所针对的第一测试对象、第一测试对象所包含的测试版本信息,以及第一测试实验测试时的预设比例(例如包括从样本用户中抽取测试用户的比例、测试用户中参与各个测试版本的用户比例等等)。当然,上述所列举的测试用户的确定请求中所携带的信息数据只是一种示意性说明。具体实施时,上述测试用户的确定请求中还可以携带有其他内容和类型的信息数据。对此,本说明书不作限定。
在本实施例中,当用户,例如某网络平台的技术人员想要进行针对第一测试对象的多个测试版本的用户测试时,可以先通过客户端生成并向服务器发送上述针对第一测试实验的测试用户的确定请求,从而服务器可以接收到上述测试用户的确定请求。
S53:响应所述测试用户的确定请求,检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户。
在本实施例中,上述第一类用户具体可以理解为样本用户中没有被当前线上进行的其他测试实验所占用的用户,即样本用户中没有参与第二测试实验,不会与新发起的第一测试实验存在冲突的用户。
在本实施例中,服务器在接收到上述测试用户的确定请求后,可以先解析获取上述测试用户的确定请求所携带的与第一测试实验相关的信息数据,并且获取预设的链表数据,根据预设的链表数据先检测是否存在与新发起的第一测试实验存在冲突的上述第二测试实验。
在本实施例中,上述预设的链表数据具体可以理解为一种按照时间顺序记录下样本用户参与过的各个测试实验的属性信息,以及与各个测试实验对应的离散因子的数据。具体的,例如,可以是一种哈希链。当然,需要说明的是,上述所列举的哈希链只是一种示意性说明。具体实施时,根据具体情况也可以采用其他合适类型的数据作为上述预设的链表数据。对此,本说明书不作限定。
其中,上述测试实验的属性信息具体可以包括:测试实验的开始时间、测试实验的结束时间、表征测试实验的依赖关系的属性信息(例如用于标记不同测试实验存在依赖关系或者具有关联度的标记符号等)、测试实验中使用的预设比例等等。上述与各个测试实验对应的离散因子具体可以理解为在为每一次测试实验确定测试用户时所使用的用于打散用户的参数数据,例如可以是一种与各个测试实验对应的哈希因子等。
服务器每次在进行上述各个测试实验时,都会按照测试时间的时间顺序依次在预设的链表数据上记录上述信息数据,而不会记录下数据量庞大的参与各个测试实验的用户数据。从而可以有效地减少服务器的数据处理量,降低服务器的数据处理压力。后续在需要的情况下,服务器可以根据上述记录在预设的链表数据中信息数据通过数据回放等方式再计算确定出具体参与某个测试实验的用户。
在本实施例中,具体实施时,服务器可以调取上述预设的链表数据,通过查询预设的链表数据中是否存在开始时间为当前时间之前,以及是否已经记录有结束时间的测试实验来检测是否存在上述第二测试实验。
如果查询到预设的链表数据中不存在开始时间为当前时间之前,或者不存在没有记录有结束时间的测试实验,则可以确定不存在当前线上正在进行的第二测试实验,即检测结果为不存在上述第二测试实验。进而可以判断样本用户中的所有用户当前都是未被占用的。这时可以直接将上述样本用户作为第一类用户。
如果查询到预设的链表数据中存在开始时间为当前时间之前,且没有记录有结束时间的测试实验,则可以确定存在当前线上正在进行的测试实验,并将该测试实验确定为第二测试实验,即检测结果为存在上述第二测试实验。进而可以判断样本用户中存在部分用户是已经被第二测试实验占用还未被释放,会与即将发起的第一测试实验发生冲突,无法参与第一测试实验。
在检测结果为存在第二测试实验的情况下,可以根据预设的链表数据进一步从样本用户中确定出参与第二测试实验的用户,作为第二类用户;再从样本用户中剔除上述由于当前正参与第二测试实验,无法参与新发起的第一测试实验的第二类用户,得到符合要求的第一类用户。
在本实施例中,确定存在第二测试实验的情况下,进一步可以通过查询预设的链表数据获取第二测试实验的离散因子,即第二离散因子和第二测试实验的预设比例。同时,还会获取样本用户中的各个用户的身份信息。再根据第二离散因子和样本用户中各个用户的身份信息,结合第二测试实验的预设比例,按照相应的预设规则通过计算进行数据回放(即按照确定第二测试实验的测试用户的方式重新利用第二离散因子将样本用户打散)。例如,可以将各个用户的身份信息分别与第二离散因子先进行组合,再对组合后的数据分别进行哈希运算确定出与各个用户对应的md5值,从而将样本用户的用户映射到md5空间中。再根据与各个用户对应的md5值和第二测试实验的预设比例,确定出被第二测试实验命中的数据,即确定出了参与第二测试实验的第二类用户。
在本实施例中,上述md5值(message-digest algorithm 5,信息摘要算法5)具体可以理解为一种基于文本字符段映射得到的一个数字串,通过该数字串可以唯一表征出所对应的文本字符段,且方便于进行后续的数学运算,例如,哈希运算等。
在本实施例中,考虑到第二类用户正在参与的第二测试实验与第一测试实验冲突,导致该类用户实际上是无法参与新发起的第一测试实验的。因此,可以将样本用户的第二类用户剔除,得到符合要求的第一类用户。
在本实施例中,在按照上述方式得到第一类用户后,为了进一步提高所确定的第一类用户的准确度,还可以根据预设的链表数据检测是否存在之前进行的当前已经下线的,但与第一测试实验属性关联的,会对第一测试实验的用户产生影响的第三测试实验。在确定存在第三测试实验的情况下,可以进一步结合预设的链表数据确定出参与第三测试实验的用户,可以记为第三类用户,并根据第三类用户对上述第一类用户进行进一步的调整,使得调整后的第一类用户更加精确。再将调整后的第一类用户替换上述未调整的第一类用户进行后续处理。
S55:生成针对所述第一测试实验的第一离散因子。
在本实施例中,上述第一离散因子具体可以理解为基于第一类用户针对第一测试实验重新生成的,用于打散第一类用户以确定参与第一测试实验的测试用户的参数数据。
在本实施例中,具体实施时,可以以测试实验为处理单位,根据第一测试实验的身份信息,例如第一测试实验的身份ID或者实验编号等信息通过哈希运算生成对应的哈希因子作为上述第一离散因子。当然,上述所列举的第一离散因子的生成方式只是一种示意性说明。具体实施时,根据具体情况也可以采用其他合适的生成方式生成针对第一测试实验的第一离散因子。对此,本说明书不作限定。
S57:根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。
在本实施例中,可以利用第一离散因子将上述所确定的第一类用户打散来抽取测试用户,从而可以使得所抽取的测试用户能够较好地符合测试要求,具有较好的代表性。
在本实施例中,上述根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户,具体实施时,可以包括以下内容:获取第一类用户所包含的各个用户的身份信息,以及第一测试实验的预设比例。其中,上述预设比例具体可以从测试用户的确定请求中所携带的第一测试实验的信息数据中提取得到。具体的,上述预设比例可以包括参与第一测试实验总的测试用户的比例,以及分别参与第一测试实验所包含的测试对象的各个测试版本测试的测试用户的比例。接着可以根据所述第一类用户所包含的各个用户的身份信息、所述第一离散因子,计算md5值。具体的,可以将第一类用户的用户身份信息和第一离散因子进行组合,再根据组合后的数据通过哈希运算计算对应的指示第一类用户中的各个用户的md5值。再按照所述预设比例,根据所述md5值从所述第一类用户中抽取多个用户分别作为参与第一测试实验所包括的第一测试对象的多个测试版本中的各个测试版本的测试用户。从而完成了针对第一测试实验的测试用户的确定。例如,按照预设比例,根据md5值可以从第一类用户中抽取到甲、乙、丙作为参与A版本测试的用户;抽取到丁和戊作为参与B版本测试的用户。
在本实施例中,在确定出参与第一测试实验所包括的第一测试对象的多个测试版本中的各个测试版本的测试用户后,可以对所确定出上述测试用户进行关于第一测试对象的多个测试版本的用户测试,即第一测试实验。
具体的,可以向上述测试用户分别推送第一测试对象的对应的测试版本。例如,将用户甲、乙、丙推送A版本,向丁和戊推送B版本。再通过内置于第一测试对象中的测试组件采集并获取各个测试用户针对所推送的第一测试对象的对应的测试版本的行为数据。例如用户在对应测试版本中对预设图标的点击操作,或者在输入框中的输入操作等。服务器在获取上述测试用户的行为数据,可以通过统计对不同的版本的测试指标进行评分,进而可以分别确定出所述第一测试对象的多个测试版本中的各个测试版本的用户体验,即得到了第一测试实验的测试结果数据。后续可以根据上述测试结果数据从多个测试版本中挑选中用户体验最好,最受用户欢迎的测试版本最为第一测试对象的最终版本正式进行推广应用。
由上可见,本说明书实施例提供的测试用户的确定方法,由于通过针对新发起的测试实验,先从原有的样本用户中筛选出符合要求的第一类用户;再生成针对新发起的第一测试实验的离散因子,并利用新生成的离散因子将第一类用户打散,再来确定并分配参与新发起的第一测试实验的测试用户,从而可以避免与当前线上其他的测试实验发生冲突,达到准确、高效地基于同一样本用户为新发起的第一测试实验确定出同质可比、符合测试要求的测试用户,以保证基于该测试用户的第一测试实验所得到的测试结果准确、有效,具有较高的参考价值,能准确地代表样本用户整体的使用体验,从而解决了现有方法存在的在基于同一样本用户存在其他线上并行的测试实验的场景中,无法以较低成本,高效、准确地为新发起的测试实验筛选符合测试要求的测试用户的技术问题。
在一个实施例中,在根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户后,所述方法具体实施时,还可以包括以下内容:向参与所述第一测试实验的测试用户分别推送第一测试对象的对应的测试版本;采集所述测试用户针对所推送的第一测试对象的对应的测试版本的行为数据;根据所述测试用户的行为数据,确定所述第一测试对象的测试版本的用户体验。
在本实施例中,服务器可以根据按照上述方式所确定的测试用户所对应的测试版本,分别将各个测试用户所对应的第一测试对象的测试版本发送给对应的测试用户。测试用户可以通过所使用的客户端设备(例如自己所使用的手机或笔记本电脑等)接收并安装使用对应的第一测试对象的测试版本。
在本实施例中,上述行为数据具体可以理解为参与第一测试实验的测试用户在自己的客户端设备上对所推送的第一测试对象的对应测试版本进行具体操作的操作数据。具体的,上述行为数据可以包括:针对所述对应测试版本中的预设图标的点击操作数据(例如点击了收藏图标或者购买图标等操作)、针对所述对应测试版本中的对话框的触发操作数据(例如展开文本描述框或者展示图片框等操作)、针对所述对应测试版本中的输入框的输入操作数据(例如在页面的属性输入框内输入相应属性参数等操作)等等。当然,需要说明的是,上述所列举的行为数据只是为了更好地说明本说明书实施例。具体实施时,根据具体的应用场景和测试方案,还可以引入其他类型的操作数据作为上述行为数据。对此,本说明书不作限定。
在本实施例中,上述第一测试对象的对应的测试版本中可以预先内置有用于采集测试用户行为数据的测试组件。这样测试用户在使用所推送的第一测试对象的对应测试版本,并在该测试版本上进行操作时,上述测试组件会自动采集测试用户的行为数据,并将所采集到的行为数据发送给服务器。服务器可以接收测试组件所采集到的行为数据。当然,上述所列举的采集行为数据的方式只是一种示意性说明。具体实施时,也可以通过调用测试用户所使用的客户端设备中原有的具有采集数据功能的模块单元采集并发送上述行为数据。对此,本说明书不作限定。
在本实施例中,上述根据所述测试用户的行为数据,确定所述第一测试对象的测试版本的用户体验,具体实施时,可以包括以下内容:可以根据预设的评分规则,综合不同测试用户对所对应的测试版本的行为数据,确定出各个测试版本的用户体验分数值。例如,可以将不同用户对同一测试版本的测试用户体验值进行加权求平均得到该测试版本整体的用户体验分数值。其中,上述测试版本整体的用户体验分数值可以按照以下方式生成:根据预设的评分规则,基于所采集的多个测试用户对该测试版本的行为数据进行对应的指标计算,根据指标计算的结果来确定该测试版本的用户体验分数值,并利用上述用户体验分数值来表征测试版本的用户体验。通常一个测试版本的用户体验分数值越高,该测试版本的用户体验相对越好,越受用户欢迎。当然,上述所列举的确定测试版本的用户体验的方式只是一种示意性说明。具体实施时,根据具体情况,也可以采用其他合适的方式来确定测试版本的用户体验。对此,本说明书不作限定。
在本实施例中,在确定出第一测试对象的多个测试版本的用户体验后,所述方法还可以包括以下内容:可以根据第一测试对象的多个测试版本的用户体验,确定上述多个测试版本中的各个测试版本是否符合预设的用户体验要求,为是否推广应用上述测试版本提供参考依据。还可以根据第一测试对象的多个测试版本的用户体验,从上述多个测试版本中选出用户体验最好的测试版本作为最终版本,进而在第一测试对象上述应用并推广该测试版本,从而提高用户对第一测试对象用户体验,达到吸引用户使用的效果等等。
在一个实施例中,上述检测是否存在第二测试实验,具体实施时,可以包括以下内容:获取预设的链表数据(例如预设的哈希链),其中,所述预设的链表数据按时间顺序依次记录有样本用户参与的多个测试实验的属性信息,以及分别针对所述多个测试实验的离散因子;查询所述预设的链表数据,确定是否存在第二测试实验。
在本实施例中,上述第二测试实验具体可以理解为当前线上正在进行还未结束,会与新发起的第一测试实验发生冲突的测试实验。
在一个实施例中,上述根据检测结果,从所述样本用户中确定出第一类用户,具体实施时,可以包括以下内容:在所述检测结果为存在第二测试实验的情况下,获取用户的身份信息,并从所述预设的链表数据中获取与第二测试实验对应的第二离散因子,以及第二测试实验的属性信息;根据所述第二离散因子、所述第二测试实验的属性信息和所述样本用户的身份信息,从所述样本用户中确定出参与第二测试实验的用户作为第二类用户;从所述样本用户中剔除所述第二类用户,得到所述第一类用户。
在本实施例中,上述第二测试实验的属性信息至少包含有第二测试实验的预设比例。相应的,上述根据所述第二离散因子、所述第二测试实验的属性信息和所述样本用户的身份信息,从所述样本用户中确定出参与第二测试实验的用户作为第二类用户,具体实施时,可以包括以下内容:根据第二离散因子和用户的身份信息计算对应第二测试实验的md5值;根据对应第二测试实验的md5值,按照第二测试实验的预设比例,提取多个用户作为上述第二类用户。
在一个实施例中,上述生成针对所述第一测试实验的第一离散因子,具体实施时,可以包括以下内容:获取第一测试实验的身份信息;根据所述第一测试实验的身份信息,生成所述第一离散因子。
在本实施例中,为了不与第二测试实验发生冲突,同时也为了能够将第一类用户打散,以便从第一类用户中获取符合测试要求的测试用户。可以仅基于样本用户中的第一类用户,重新生成对应第一测试还是演的第一离散因子;后续再利用上述重新生成的第一离散因子对第一类用户进行处理,以便从第一类用户抽取符合测试要求的测试用户。
在本实施例中,具体实施时,可以获取第一测试实验的身份信息,例如第一测试实验的身份ID或者实验编号;再根据第一测试实验的身份信息通过哈希运算生成对应的哈希因子,作为上述第一离散因子。
在一个实施例中,上述根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户,具体实施时,可以包括以下内容:获取第一类用户的身份信息,以及第一测试实验的预设比例;根据所述第一类用户的身份信息、所述第一离散因子,计算md5值;根据所述md5值和所述预设比例,从所述第一类用户中抽取多个用户作为参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。
在本实施例中,通过上述方式,可以利用针对第一测试实验重新生成的第一离散因子,将第一类用户映射到md5空间中,再根据md5值,按照预设比例抽取参与第一测试对象的对应测试版本测试的测试用户。从而可以达到利用第一离散因子将第一类用户打散以便获取符合测试要求的测试用户的效果。
在一个实施例中,在检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户后,所述方法具体实施时,还可以包括以下内容:检测是否存在第三测试实验,其中,所述第三测试实验为与第一测试实验存在属性关联的当前下线的测试实验,并根据所述检测结果对所述第一类用户进行调整,得到调整后的第一类用户。
在本实施例中,上述第三测试实验具体可以理解为之前进行的,当前已经下线但与新发起的第一测试实验存在属性关联的测试实验。其中,上述属性关联具体可以理解为第一测试实验与第三测试实验在某些属性特征上存在一定的相关性。例如,第一测试实验和第三测试实验的测试对象是同一个测试对象,或者第一测试实验和第三测试实验所涉及到的测试版本近似相同等等。基于上述属性关联会导致第一测试实验和第三测试实验原本两个应该独立的测试实验存在了一定的依赖关系,并且之前的第三测试实验会对之后的第一测试实验产生一定的影响。
例如,在之前进行的第三测试实验中涉及到了T版本的测试。而之后进行的第一测试实验也涉及了与T版本近似的t版本的测试。这时按照上述方式确定的第一类用户中的用户W正好之前也参与过第三测试实验的T版本的测试。其中,用户W和第一用户中没有参与过第三测试实验没有接触过t版本的普通用户V相比在参与第一测试实验中的t版本测试时所表现的状态显然是不同的。用户W由于之前测试过近似的T版本,因此在测试t版本时会受到之前测试实验的影响,不会认为t版本是全新、没见过的版本,测试时表现出的兴趣会相对较低。而对于用户V而言,由于之前从为测试过近似的T版本,因此在测试t版本时没有之前测试实验的影响,会认为t版本是全新、没见过的版本,因此测试时表现出的兴趣会相对较高。
可见由于这种依赖关系的存在,导致参与过第三测试实验的用户(即第三类用户)在参与第一测试实验时容易受到之前参与过的第三测试实验的影响,使得这类用户的行为数据会与普通测试用户(即之前没有参与过第三测试实验的测试用户)存在差异,进一步又会使得基于第三类用户得到的测试结果数据也会与基于普通测试用户得到的测试结果数据存在差异。因此,基于这两类不同的测试用户所采集的行为数据往往不能不作区分或处理的直接混淆合在一起使用。
在本实施例中,为了使得最终确定的测试结果数据更加准确、有效,具有更高的参考价值,可以先通过查询预设的链表数据确定是否存在上述第三测试实验。在确定存在第三测试实验的情况下,进一步从第一类用户中确定出参与过第三测试实验,会受到第三测试实验影响的第三类用户。进而可以根据所确定出的第三类用户对所确定的第一类用户进行调整,再基于调整后的第一类用户来进行用户测试,以降低第三测试实验对第一测试实验的测试结果数据的影响。
在本实施例中,具体实施时,可以先获取第一测试实验的属性信息,并从第一测试实验的属性信息中获取表征依赖关系的属性信息,例如得到表征依赖关系的属性标签。再查询预设的链表数据中开始时间和结束时间都在当前之前的各个测试实验的属性信息,确定是否存在与上述属性标签匹配的表征依赖关系的属性信息(例如相同的属性标签),以确定是否存在上述第三测试实验。
如果确定不存在与上述属性标签匹配的表征依赖关系的属性信息,则可以确定不存在之前已经下线的但与第一测试实验关联的第三测试实验,进而可以判断第一类用户中的所有用户都是相同的,都没有受到之前测试实验的影响。
如果确定存在与上述属性标签匹配的表征依赖关系的属性信息,则可以确定存在之前已经下线的但与第一测试实验关联的第三测试实验,进而可以判断第一类用户中可能存在部分用户与普通用户不同,由于之前参与过第三测实验,因此会受到之前所参与的测试实验影响的用户。
进一步,在确定检测结果为存在上述第三测试实验的情况下,可以只查询预设的链表数据中与第三测试实验相关的数据,以获取针对该第三测试实验的离散因子(可以记为第三离散因子),以及第三测试实验的属性信息。其中,上述针对第三测试实验的离散因子为服务器之前为确定第三测试实验的测试用户所生成并使用的离散因子。上述第三测试实验的属性信息至少包括第三测试实验的预设比例。同时还会获取第一类用户中的各个用户的身份信息(例如用户的身份ID),再根据上述第三测试实验的离散因子,以及第一类用户中的各个用户的身份信息,结合第三测试实验的预设比例,按照相应的预设规则进行计算,确定第一类用户中被第三测试实验所命中的用户,即第一类用户中之前参与过第三测试实验的用户,作为第三类用户。
在按照上述方式确定出第三类用户后,为了减少基于这类受第三测试实验影响的用户对最终的测试结果的影响,可以根据所确定出上述第三类用户对第一类用户进行进一步的调整,将调整后的第一类用户作为符合要求的,最终使用的第一类用户。
具体的,例如,可以直接从第一类用户中剔除上述第三类用户,从剔除后的第一类用户中抽取参与第一测试实验的测试用户。也可以事先不剔除上述第一类用户中的第三类用户,而只是对第一类用户中所包含的第三类用户进行标记(例如设置指示第三类用户的标签),再将第三类用户和第一类用户中没有受第三测试实验影响的其他普通用户放在一起进行测试用户的抽取,后续进行具体测试实验,可以通过识别指示第三类用户的标签找到测试用户中的基于第三类用户得到的数据,并将这类数据按照一定的权重进行处理后再和基于普通用户得到数据一起进行分析处理等等。当然,上述所列举的调整方法只是一种示意性说明。具体实施时,根据具体的应用场景和精度要求,还可以采用其他合适的方式对上述第一类用户进行相应调整。对此,本说明书不作限定。
在一个实施例中,在获取所述预设比例后,所述方法具体实施时,还可以包括以下内容:确定针对第一测试实验的校正系数;根据所述校正系数,校正所述预设比例。
在本实施例中,进一步考虑到第一测试实验由于可能会受到并行的第二测试实验或者关联的第三测试实验的影响,具体实施,还可以根据按照上述方式检测确定出第二测试实验所涉及到的第二类用户和/或第三测试实验所涉及到的第三类用户与样本用户的比例关系确定针对第一测试实验的测试用户的转换系数,即上述校正系数。再利用上述校正系数对第一测试实验的预设比例进行校正,得到校正后的预设比例。例如将校正系数与预设比例的乘积作为校正后的预设比例。后续可以利用校正后的预设比例替换第一测试实验原本的预设比例来使用。这样可以进一步减少参与第二测试实验和/或第三测试实验的用户对第一测试实验的测试用户在样本用户中比例影响。
在一个实施例中,在生成针对所述第一测试实验的第一离散因子后,所述方法具体实施时,还可以包括以下内容:在所述预设的链表数据中记录针对所述第一测试实验的第一离散因子。
在本实施例中,除了可以在预设的链表数据中记录下针对第一测试实验的第一离散因子外,在发起和进行第一测试实验时,还会按照时间顺序记录下第一测试实验的开始时间、结束时间,以及其他的属性信息等。
在一个实施例中,在根据所述测试用户的行为数据,确定所述第一测试对象的测试版本的用户体验,完成第一测试实验后,第一测试实验下线,进而可以释放测试时所占用的测试用户,以便其他测试实验可以使用上述用户进行用户测试。
在本实施例中,在释放第一测试实验所占用的测试用户后,还可以检测即将新发起的测试实验,确定是否存在与刚下线的第一测试实验存在属性关联的测试实验,如果存在可以对上述所释放的测试用户进行标记,便于后续测试实验可以更加高效、便利地发现样本用户中之前参与过关联的测试实验的用户,减少在下次的测试实验的测试用户确定过程中的数据处理量,提高处理效率。
由上可见,本说明书实施例提供的测试用户的确定方法,由于通过针对新发起的测试实验,先从原有的样本用户中筛选出符合要求的第一类用户;再生成针对新发起的第一测试实验的离散因子,并利用新生成的离散因子将第一类用户打散,再来确定并分配参与新发起的第一测试实验的测试用户,从而可以避免与当前线上其他的测试实验发生冲突,达到准确、高效地基于同一样本用户为新发起的第一测试实验确定出同质可比、符合测试要求的测试用户,以保证基于该测试用户的第一测试实验所得到的测试结果准确、有效,具有较高的参考价值,能准确地代表样本用户整体的使用体验,从而解决了现有方法存在的在基于同一样本用户存在其他线上并行的测试实验的场景中,无法以较低成本,高效、准确地为新发起的测试实验筛选符合测试要求的测试用户的技术问题;还通过利用预设的链表数据按时间顺序依次记录下样本用户所参与的各个测试实验、各个测试实验的属性信息,以及分别针对所述各个测试实验的离散因子;在确定新发起的第一测试实验的测试用户时,可以先根据预设的链表数据高效、便捷地确定出线上并行的第二测试实验,以及已经下线的但与新发起的第一测试实验属性关联的第三测试实验,进而确定出样本用户中参与上述测试实验的用户,以便更好地确定针对新发起的第一测试实验的测试用户,进一步提高了所确定的测试用户的准确性和代表性。
本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:接收针对第一测试实验的测试用户的确定请求,其中,所述第一测试实验包括第一测试对象的多个测试版本的测试,所述测试用户为样本用户中参与针对所述第一测试对象的测试版本测试的用户;响应所述测试用户的确定请求,检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户;生成针对所述第一测试实验的第一离散因子;根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。
为了能够更加准确地完成上述指令,参阅图6所示,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口601、处理器602以及存储器603,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口601,具体可以用于接收针对第一测试实验的测试用户的确定请求,其中,所述第一测试实验包括第一测试对象的多个测试版本的测试,所述测试用户为样本用户中参与针对所述第一测试对象的测试版本测试的用户;
所述处理器602,具体可以用于响应所述测试用户的确定请求,检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户;生成针对所述第一测试实验的第一离散因子;根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户;
所述存储器603,具体可以用于存储处理器602所基于的相应的指令程序。
在本实施例中,所述网络通信端口601可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的80号端口,也可以是负责进行FTP数据通信的21号端口,还可以是负责进行邮件数据通信的25号端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器602可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器603可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述测试用户的确定方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:接收针对第一测试实验的测试用户的确定请求,其中,所述第一测试实验包括第一测试对象的多个测试版本的测试,所述测试用户为样本用户中参与针对所述第一测试对象的测试版本测试的用户;响应所述测试用户的确定请求,检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户;生成针对所述第一测试实验的第一离散因子;根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图7所示,在软件层面上,本说明书实施例还提供了一种测试用户的确定装置,该装置具体可以包括以下的结构模块:
接收模块701,具体可以用于接收针对第一测试实验的测试用户的确定请求,其中,所述第一测试实验包括第一测试对象的多个测试版本的测试,所述测试用户为样本用户中参与针对所述第一测试对象的测试版本测试的用户;
检测模块702,具体可以用于响应所述测试用户的确定请求,检测是否存在第二测试实验,其中,所述第二测试实验为当前线上的测试实验,并根据检测结果,从所述样本用户中确定出第一类用户;
生成模块703,具体可以用于生成针对所述第一测试实验的第一离散因子;
确定模块704,具体可以用于根据所述第一离散因子,从所述第一类用户中确定出参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。
在一个实施例中,所述装置具体还可以包括测试模块,所述测试模块具体可以包括以下结构单元:
推送单元,具体可以用于向参与所述第一测试实验的测试用户分别推送第一测试对象的对应的测试版本;
采集单元,具体可以用于采集所述测试用户针对所推送的第一测试对象的对应的测试版本的行为数据;
第一确定单元,具体可以用于根据所述测试用户的行为数据,确定所述第一测试对象的测试版本的用户体验。
在一个实施例中,所述检测模块702具体可以包括以下结构单元:
第一获取单元,具体可以用于获取预设的链表数据,其中,所述预设的链表数据按时间顺序依次记录有样本用户参与的多个测试实验的属性信息,以及分别针对所述多个测试实验的离散因子;
第二确定单元,具体可以用于查询所述预设的链表数据,确定是否存在第二测试实验。
在一个实施例中,所述检测模块702具体还可以包括以下结构单元:
第二获取单元,具体可以用于在所述检测结果为存在第二测试实验的情况下,获取样本用户的身份信息,并从所述预设的链表数据中获取与第二测试实验对应的第二离散因子,以及第二测试实验的属性信息;
第三确定单元,具体可以用于根据所述第二离散因子、所述第二测试实验的属性信息和所述样本用户的身份信息,从所述样本用户中确定出参与第二测试实验的用户作为第二类用户;
剔除单元,具体可以用于从所述样本用户中剔除所述第二类用户,得到所述第一类用户。
在一个实施例中,所述生成模块703具体可以包括以下结构单元:
第三获取单元,具体可以用于获取第一测试实验的身份信息;
生成单元,具体可以用于根据所述第一测试实验的身份信息,生成所述第一离散因子。
在一个实施例中,所述确定模块704具体可以包括以下结构单元:
第四获取单元,具体可以用于获取第一类用户的身份信息,以及第一测试实验的预设比例;
计算单元,具体可以用于根据所述第一类用户的身份信息、所述第一离散因子,计算md5值;
抽取单元,具体可以用于根据所述md5值和所述预设比例,从所述第一类用户中抽取多个用户作为参与第一测试实验所包括的第一测试对象的测试版本测试的测试用户。
在一个实施例中,所述确定模块704具体还可以包括校正单元,具体可以用于确定针对第一测试实验的校正系数;根据所述校正系数,校正所述预设比例。
在一个实施例中,所述检测模块702具体还可以用于检测是否存在第三测试实验,其中,所述第三测试实验为与第一测试实验存在属性关联的当前下线的测试实验,并根据所述检测结果对所述第一类用户进行调整,得到调整后的第一类用户。
在一个实施例中,所述装置具体还可以包括记录模块,具体可以用于在生成针对所述第一测试实验的第一离散因子后,在所述预设的链表数据中记录针对所述第一测试实验的第一离散因子。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,本说明书实施例提供的测试用户的确定装置,由于通过检测模块针对新发起的测试实验,先从原有的样本用户中筛选出符合要求的第一类用户;再通过生成模块生成针对新发起的第一测试实验的离散因子,并通过确定模块利用新生成的离散因子将第一类用户打散,再来确定并分配参与新发起的第一测试实验的测试用户,从而可以避免与当前线上其他的测试实验发生冲突,达到准确、高效地基于同一样本用户为新发起的第一测试实验确定出同质可比、符合测试要求的测试用户,以保证基于该测试用户的第一测试实验所得到的测试结果准确、有效,具有较高的参考价值,能准确地代表样本用户整体的使用体验,从而解决了现有方法存在的在基于同一样本用户存在其他线上并行的测试实验的场景中,无法以较低成本,高效、准确地为新发起的测试实验筛选符合测试要求的测试用户的技术问题。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。