分桶测试方法和提供配置信息的方法、装置及系统与流程

文档序号:13703727阅读:738来源:国知局
技术领域本申请涉及分桶测试领域,具体涉及一种用于客户端应用程序的分桶测试方法。本申请同时提供一种用于客户端应用程序的分桶测试装置、一种用于提供分桶测试配置信息的方法和装置、以及一种分桶测试系统。

背景技术:
A/B测试(A/BTest),通常是指对某一个特定的页面或者页面上的一部分,制作两个或两个以上版本,然后将网站的访问流量分发到不同的版本上,继而观察网站该页面或者该部分带来的转化率,或者一些重要指标的变化,从而得出其中的一个版本比另一个版本更好的结论,并以此决定最终上线的版本。分桶测试(BucketTest,也称SplitTest)则是A/BTest概念的扩展,通常是指针对某个应用版本的某个待测试功能类别(也称为功能点或者功能key),例如:网页显示的按钮颜色,同时执行多个A/BTest,即:不是只有一个待测试版本B,而是B1、B2......多个待测试版本(通常也称为与功能类别对应的功能版本),通过做一次分桶测试就可以在多个功能版本中选出一个最优的版本。上述A/B测试或者分桶测试技术,最初都是为网站而设计的,由于网站通常采用B/S架构(浏览器/服务器架构),具有实时发布版本不敏感的特性,只要服务端进行升级,所有客户端访问的功能都是最新的。然而对于基于C/S架构(客户端/服务器架构)的无线客户端应用程序(简称APP)来说,由于客户端用户可以根据自己的意愿决定是否升级或者下载最新版本的客户端应用程序,导致了多个APP应用版本并存的状况,这就要求无线客户端APP的分桶测试需要具备版本隔离的特性,保证各个应用版本之间的分桶测试不会相互干扰,因此传统的分桶测试方式对无线客户端APP而言并不适合。现有技术对于上述无线客户端APP的分桶测试通常采用Beta发布方式,即:针对分桶测试的特定功能点,提供不同功能版本的安装包(非正式发布版本的安装包),并筛选活跃且愿意尝新的用户在其客户端设备上安装上述安装包,对各个功能版本进行小范围测试,并根据测试结果来评估多个功能版本的优劣,确定最终上线发布的功能版本。采用上述在有限的客户群体中安装固定安装包的Beta发布方式,服务端无法对分桶测试过程进行必要的控制与管理,而且在分桶测试结束后,参与分桶测试的用户只能通过重新下载的方式,才能使用正式发布版本的客户端应用程序,影响用户的使用体验。

技术实现要素:
本申请提供的用于客户端应用程序的分桶测试方法和用于提供分桶测试配置信息的方法相互配合,针对客户端应用程序的分桶测试,提出了一种新的技术方案,在满足版本隔离要求的同时,便于服务端对客户端应用程序的分桶测试过程进行控制与管理。本申请另外提供相应的用于客户端应用程序的分桶测试装置和用于提供分桶测试配置信息的装置,以及一种分桶测试系统。本申请提供一种用于客户端应用程序的分桶测试方法,包括:获取服务端提供的对应于所述客户端应用程序版本的分桶测试配置信息;根据所述客户端应用程序代码涉及的分桶测试的功能类别,从所述分桶测试配置信息中获取对应的功能版本标识;根据所述功能版本标识执行对应的代码片段。可选的,对应于所述客户端应用程序版本的分桶测试配置信息包括:对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识。可选的,所述获取服务端提供的对应于所述客户端应用程序版本的分桶测试配置信息,包括:获取所述客户端应用程序的版本信息;判断本地是否未存储对应于所述客户端应用程序版本的分桶测试配置信息,或者,存储了所述分桶测试配置信息但是不具有“最终版本已确定”标识;若是,从所述服务端获取所述分桶测试配置信息。可选的,所述从所述服务端获取所述分桶测试配置信息包括:向所述服务端发送获取分桶测试配置信息的请求,所述请求中携带所述客户端应用程序的版本信息和用于唯一识别其宿主设备的标识,或者,所述客户端应用程序的版本信息、系统类型以及用于唯一识别其宿主设备的标识;接收所述服务端返回的对应于所述客户端应用程序版本的分桶测试配置信息;将所述分桶测试配置信息存储在本地。可选的,所述根据所述功能版本标识执行对应的代码片段是指,通过分支语句执行与所述功能版本对应的代码行。可选的,在获取所述分桶测试配置信息后,执行下述操作:向所述客户端应用程序发送通知消息;相应的,所述客户端应用程序在对应所述通知消息的回调处理函数中,执行所述根据所述客户端应用程序代码涉及的分桶测试的功能类别,从所述分桶测试配置信息中获取对应的功能版本标识,以及根据所述功能版本标识执行对应的代码片段的步骤。可选的,当采用具备反射特性的开发语言实施本方法时,所述根据所述客户端应用程序代码涉及的分桶测试的功能类别,从所述分桶测试配置信息中获取对应的功能版本标识,包括:遍历所述客户端应用程序已注册的每个类,针对每个类中的每个实例方法和成员方法,执行下述操作:判断所述方法的名称是否符合预先设定的分桶测试方法命名规则,所述分桶测试方法命名规则定义如下命名规范:与分桶测试相关的方法名称中至少应包含分桶测试的功能类别、和所述方法的实现逻辑对应的功能版本标识;若是,执行下述操作:按照所述分桶测试方法命名规则,从所述方法名称中提取分桶测试的功能类别;根据所述功能类别,从所述分桶测试配置信息中获取对应的功能版本标识;判断所述客户端应用程序预先设定的、调用所述方法所采用的功能版本标识、与从所述分桶测试配置信息中获取的功能版本标识是否一致;若否,利用所述开发语言的反射特性进行方法实现的动态替换,使所述客户端应用程序在执行阶段执行与所述分桶测试配置信息中的功能版本标识对应的方法实现。可选的,当采用具备反射特性的开发语言实施本方法时,所述根据所述功能版本标识执行对应的代码片段是指,通过所述语言的反射特性动态调用与所述功能版本对应的成员方法。相应的,本申请还提供一种用于客户端应用程序的分桶测试装置,包括:配置信息获取单元,用于获取服务端提供的对应于所述客户端应用程序版本的分桶测试配置信息;功能版本获取单元,用于根据所述客户端应用程序代码涉及的分桶测试的功能类别,从所述分桶测试配置信息中获取对应的功能版本标识;代码片段执行单元,用于根据所述功能版本标识执行对应的代码片段。可选的,所述配置信息获取单元获取的配置信息包括:对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识。可选的,所述配置信息获取单元包括:版本信息获取子单元,用于获取所述客户端应用程序的版本信息;本地存储判断子单元,用于判断本地是否未存储对应于所述客户端应用程序版本的分桶测试配置信息,或者,存储了所述分桶测试配置信息但是不具有“最终版本已确定”标识;服务端信息获取子单元,用于当所述本地存储判断子单元的输出为“是”时,从所述服务端获取所述分桶测试配置信息。可选的,所述服务端信息获取子单元包括:请求发送子单元,用于向所述服务端发送获取分桶测试配置信息的请求,所述请求中携带所述客户端应用程序的版本信息和用于唯一识别其宿主设备的标识,或者,所述客户端应用程序的版本信息、系统类型以及用于唯一识别其宿主设备的标识;信息接收子单元,用于接收所述服务端返回的对应于所述客户端应用程序版本的分桶测试配置信息;信息存储子单元,用于将所述分桶测试配置信息存储在本地。可选的,所述代码片段执行单元具体用于,通过分支语句执行与所述功能版本对应的代码行。可选的,所述装置包括:通知消息发送单元,用于在获取所述分桶测试配置信息后,向所述客户端应用程序发送通知消息;通知消息处理单元,用于当所述客户端应用程序在接收到所述通知消息后,触发所述功能版本获取单元和代码片段执行单元工作。可选的,所述功能版本获取单元包括:遍历控制子单元,用于遍历所述客户端应用程序已注册的每个类,并针对每个类中的每个实例方法和成员方法,触发下列子单元工作;命名判断子单元,用于判断所述方法的名称是否符合预先设定的分桶测试方法命名规则;功能类别提取子单元,用于当所述命名判断子单元的输出为“是”时,按照所述分桶测试方法命名规则,从所述方法名称中提取分桶测试的功能类别;功能版本提取子单元,用于根据所述功能类别,从所述分桶测试配置信息中获取对应的功能版本标识;功能版本判断替换子单元,用于判断所述客户端应用程序预先设定的、调用所述方法所采用的功能版本标识、与从所述分桶测试配置信息中获取的功能版本标识是否一致;若否,利用所述开发语言的反射特性进行方法实现的动态替换,使所述客户端应用程序在执行阶段执行与所述分桶测试配置信息中的功能版本标识对应的方法实现。可选的,所述代码片段执行单元具体用于,通过所述语言的反射特性动态调用与所述功能版本对应的成员方法。此外,本申请还提供一种用于提供分桶测试配置信息的方法,所述方法在负责管理分桶测试的服务端实施,包括:接收客户端应用程序发送的获取分桶测试配置信息的请求,所述请求中至少包含所述客户端应用程序的版本信息和用于唯一识别其宿主设备的标识;根据所述请求中包含的上述信息,获取对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识;将所述功能类别以及所述功能版本标识返回给所述客户端应用程序。可选的,初次接收某客户端应用程序发送的获取分桶测试配置信息的请求时,所述根据所述请求中包含的上述信息,获取对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识,包括:按照预先设定的分桶测试规则,选择对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识,使得参与各功能版本分桶测试的客户端应用程序的数量满足所述分桶测试规则中设定的分桶测试比例;存储所述请求中包含的客户端应用程序的版本信息、用于唯一识别其宿主设备的标识、以及所述功能类别、功能版本标识之间的对应关系。可选的,所述根据所述请求中包含的上述信息,获取对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识是指,在已存储的上述对应关系中,根据所述请求中包含的用于唯一识别宿主设备的标识,查找对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识。可选的,在将所述功能类别以及功能版本标识返回给所述客户端应用程序之前,执行下述操作:判断对应于所述客户端应用程序版本的分桶测试是否已结束;若是,用最终发布版本所采用的功能版本标识替换将要返回给所述客户端应用程序的相应功能版本标识,并添加“最终版本已确定”标识;相应的,所述将所述功能类别以及功能版本标识返回给所述客户端应用程序是指,将上述执行替换操作后的信息以及添加的“最终版本已确定”标识一并发送给所述客户端应用程序。相应的,本申请还提供一种用于提供分桶测试配置信息的装置,所述装置在负责管理分桶测试的服务端设备上部署,包括:请求接收单元,用于接收客户端应用程序发送的获取分桶测试配置信息的请求,所述请求中至少包含所述客户端应用程序的版本信息和用于唯一识别其宿主设备的标识;信息获取单元,用于根据所述请求中包含的上述信息,获取对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识;信息返回单元,用于将所述功能类别以及所述功能版本标识返回给所述客户端应用程序。可选的,当所述请求接收单元接收到的是某客户端应用程序初次发送的获取分桶测试配置信息的请求时,所述信息获取单元包括:配置信息选择子单元,用于按照预先设定的分桶测试规则,选择对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识,使得参与各功能版本分桶测试的客户端应用程序的数量满足所述分桶测试规则中设定的分桶测试比例;配置信息存储子单元,用于存储所述请求中包含的客户端应用程序的版本信息、用于唯一识别其宿主设备的标识、以及所述功能类别、功能版本标识之间的对应关系。可选的,所述信息获取单元具体用于,在所述配置信息存储子单元存储的对应关系中,根据所述请求中包含的用于唯一识别宿主设备的标识,查找对应于所述客户端应用程序版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识。可选的,所述装置包括:测试结束判断单元,用于在触发所述信息返回单元之前,判断对应于所述客户端应用程序版本的分桶测试是否已结束;信息替换单元,用于当所述测试结束判断单元的输出为“是”时,用最终发布版本所采用的功能版本标识替换将要返回给所述客户端应用程序的相应功能版本标识,并添加“最终版本已确定”标识;相应的,所述信息返回单元具体用于,将上述执行替换操作后的信息以及添加的“最终版本已确定”标识一并发送给所述客户端应用程序。此外,本申请还提供一种分桶测试系统,包括:根据上述任意一项所述的用于提供分桶测试配置信息的装置;和根据上述任意一项所述的用于客户端应用程序的分桶测试装置。与现有技术相比,本申请具有以下优点:本申请提供的技术方案,针对客户端应用程序的分桶测试提出了一种新的思路:负责管理分桶测试的服务端根据参与分桶测试的客户端应用程序的请求,提供与其应用版本对应的分桶测试配置信息,所述客户端应用程序则根据代码涉及的分桶测试的功能类别,从所述分桶测试配置信息中获取对应的功能版本标识、并根据所述功能版本标识执行对应的代码片段。采用上述技术方案,不仅可以满足基于C/S架构的分桶测试的版本隔离要求,而且便于服务端对不同版本客户端应用程序的分桶测试进行灵活地管理与控制,特别是在分桶测试结束后,可以通过对分桶测试配置信息的调整,控制客户端应用程序自动切换到正式发布的应用版本(即:执行最终确定的功能版本对应的代码片段),从而用户无需再次下载正式发布版本,有效改善用户的使用体验。附图说明图1是本申请的一种用于客户端应用程序的分桶测试方法的实施例的流程图;图2是本申请实施例提供的获取服务端提供的分桶测试配置信息的处理流程图;图3是本申请实施例提供的向服务端获取分桶测试配置信息的处理流程图;图4是本申请实施例提供的分桶测试配置信息的数据结构示意图;图5是本申请的一种用于客户端应用程序的分桶测试装置的实施例的示意图;图6是本申请的一种用于客户端应用程序的分桶测试方法的另一种实施例的流程图;图7是本申请实施例提供的针对每个实例方法或成员方法进行动态替换的处理流程图;图8是本申请的一种用于客户端应用程序的分桶测试装置的另一种实施例的示意图;图9是本申请的一种用于提供分桶测试配置信息的方法实施例的流程图;图10是本申请的一种用于提供分桶测试配置信息的装置实施例的示意图;图11是本申请的一种分桶测试系统的示意图。具体实施方式在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。在本申请中,分别提供了一种用于客户端应用程序的分桶测试方法和装置、一种用于提供分桶测试配置信息的方法和装置、以及一种分桶测试系统,在后续的实施例中逐一进行详细说明。本申请针对无线APP的分桶测试提出了一种新的解决方案,其核心在于:服务端向客户端应用程序提供与其应用版本对应的分桶测试配置信息,客户端应用程序则从所述分桶测试配置信息中获取与分桶测试功能类别对应的功能版本标识,并执行与所述功能版本标识对应的代码片段。采用该技术方案,不仅可以满足无线APP分桶测试对版本隔离的要求,而且便于服务端对分桶测试过程进行控制与管理。本申请虽然是针对无线APP的分桶测试提出的,但是本申请技术方案的应用场景并不局限于无线APP的分桶测试,只要是基于客户端/服务器架构(C/S架构)的客户端应用程序的分桶测试,就都可以采用本申请提供的技术方案。客户端应用程序根据分桶测试配置信息执行的代码片段,可以是代码行也可以是封装好的方法(method),本文将会通过不同的实施例分别描述这两种情况的具体实施方式。下面对本申请的技术方案进行详细说明。请参考图1,其为本申请的一种用于客户端应用程序的分桶测试方法的实施例的流程图,在本实施例中,采用基于代码行的方式实现客户端应用程序的分桶测试。所述方法包括如下步骤:步骤101:获取服务端提供的对应于所述客户端应用程序版本的分桶测试配置信息。对于基于C/S架构的系统来说,通常存在多个客户端应用程序版本(也称应用版本)并存的情况,而在分桶测试过程中,不同的应用版本可能包含不同的待测试的功能类别(即:功能点或者功能key),每个功能类别又对应不同的功能版本,通过对这些不同功能版本的测试结果的比较,最终可以选择出针对每个功能类别的最优的功能版本,从而确定最终上线发布的应用版本。是否参加分桶测试以及参加哪些功能类别的测试,对于客户端应用程序来说通常是确定的,本申请提供的技术方案,通过服务端提供的分桶测试配置信息,确定客户端应用程序执行待测试功能类别中的具体功能版本,并执行对应的代码片段。为了实现上述功能,客户端应用程序在初始化阶段(运行其业务代码之前)需要获取服务端提供的对应于客户端应用程序版本(以下简称当前应用版本)的分桶测试配置信息,所述分桶测试配置信息包括:对应于当前应用版本的分桶测试的功能类别、以及对应于所述功能类别的功能版本标识(指示客户端应用程序应该执行的功能版本)。获取该信息的过程包括如下所述的步骤101-1至步骤101-4,下面结合附图2作进一步说明。步骤101-1:获取所述客户端应用程序的版本信息;每个客户端应用程序都有自己的版本信息,就是本实施例所述的当前应用版本。运行于不同系统平台上的客户端应用程序,获取该信息的方式不同,通常可以利用系统提供的API函数来实现,例如,对于ios操作系统,可以通过info.plist文件中的bundleversion或者其他方式获取当前应用版本的相关信息。步骤101-2:判断本地是否未存储对应于当前应用版本的分桶测试配置信息,若是,转到步骤101-4执行,若否,执行步骤101-3。本步骤首先判断本地是否存储了对应于当前应用版本的分桶测试配置信息。在具体实施时,如果所述分桶测试配置信息存储在本地数据文件中,则可以通过读取本地数据文件的方式,判断其中是否存储了与当前应用版本对应的分桶测试配置信息,即:是否存储了与当前应用版本对应的分桶测试的功能类型,以及对应于每个功能类型的功能版本标识;如果本地未存储上述信息,则需要转到步骤101-4从服务端获取最新的分桶测试配置信息,否则执行步骤101-3。步骤101-3:判断本地存储的所述分桶测试配置信息是否具有“最终版本已确定”标识,若否,执行步骤101-4。本步骤在本地存储了所述分桶测试配置信息的基础上,继续判断所述分桶测试配置信息是否具有“最终版本已确定”标识,如果有,说明针对当前应用版本的分桶测试已经结束,当前本地存储的分桶测试配置信息就是与最终上线发布版本对应的配置信息,因此客户端应用程序可以直接使用本地存储的对应于当前应用版本的分桶测试配置信息;否则,说明分桶测试尚未结束,仍然需要执行步骤101-3从服务端获取最新的分桶测试配置信息。采用上述方式,在分桶测试结束前,每次客户端应用程序初始化时都向服务端获取最新的分桶测试配置信息,从而为服务端对分桶测试过程进行控制与管理提供了条件,当分桶测试结束后(分桶测试配置信息已经确定),客户端应用程序就可以直接从本地获取分桶测试配置信息,而不必每次都向服务端获取,从而可以节省网络流量。步骤101-4:从所述服务端获取所述分桶测试配置信息。该步骤包括向服务端发送请求、接收服务端返回的分桶测试配置信息以及将该信息存储在本地这样三个子步骤,下面结合附图3对该过程作进一步说明。步骤101-4-1:向所述服务端发送获取分桶测试配置信息的请求。所述请求中携带当前应用版本和用于唯一识别宿主设备的标识,所述宿主设备标识通常是指宿主设备的设备编号,例如:智能手机的IMEI号码等,服务端可以根据该信息唯一识别所述宿主设备,并为其提供与所述当前应用版本相对应的分桶测试配置信息。在具体实施中,服务端如果还需要参考客户端设备的系统类型来确定分桶测试配置信息,那么在所述请求中还可以携带所述客户端应用程序的系统类型,例如:ios或者android。在本实施例的一个具体例子中,根据上述信息拼装出类似下述形式的URL:http://server/abtest.html?系统类型=ios&设备编号=xxx&app版本=xxx,然后通过HTTP协议向服务端发送该请求。步骤101-4-2:接收所述服务端返回的对应于当前应用版本的分桶测试配置信息。服务端接收客户端应用程序发送的上述请求后,根据请求中携带的宿主设备标识,为其选择对应于所述当前应用版本的分桶测试配置信息,并返回该信息。那么客户端就会接收到所述分桶测试配置信息,该信息的形式类似于如下所示:{‘key1’:‘1’,‘key2’:‘1’
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1