CN110955449A - 客户端的灰度发布方法及装置 - Google Patents
客户端的灰度发布方法及装置 Download PDFInfo
- Publication number
- CN110955449A CN110955449A CN201911129859.1A CN201911129859A CN110955449A CN 110955449 A CN110955449 A CN 110955449A CN 201911129859 A CN201911129859 A CN 201911129859A CN 110955449 A CN110955449 A CN 110955449A
- Authority
- CN
- China
- Prior art keywords
- item
- current
- test scheme
- experimental
- sdk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000012360 testing method Methods 0.000 claims abstract description 346
- 238000002474 experimental method Methods 0.000 claims abstract description 188
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 8
- 238000012423 maintenance Methods 0.000 abstract description 8
- 238000007726 management method Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 230000006399 behavior Effects 0.000 description 9
- 239000012085 test solution Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000002452 interceptive effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000087 stabilizing effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种客户端的灰度发布方法及装置。其中方法包括:在启动客户端时,SDK读取所述客户端的配置文件,客户端中包括多个实验项,配置文件包括每个实验项的名称和测试方案;SDK根据每个实验项的名称,获取每个实验项的目标测试方案的描述信息;在运行到当前实验项且当前实验项为包含UI选择逻辑的实验项时,SDK根据当前实验项的目标测试方案的描述信息,从当前实验项的测试方案中获取当前实验项的目标测试方案;SDK按照目标测试方案运行当前实验项。本发明实施例可以将A/B测试中与UI相关的选择逻辑代码与客户端自身的业务代码分离,降低客户端的开发和维护难度。
Description
技术领域
本发明涉及软件技术领域,特别是涉及客户端的灰度发布方法及装置。
背景技术
灰度发布是在发布新版本的时候,先切分部分流量给新版本,稳定了之后再切分所有流量到新版本,这种方法可以减少发布风险。A/B测试是灰度发布中经常用到的一种表现形式。A/B测试时将不同的方案分发给不同用户使用,开发者根据用户交互的投递数据分析得到哪种方案最优,逐渐调整流量比例最终全部稳定到最优方案。
客户端为了支持A/B测试,在客户端打包的时候,将该客户端中的实验项包含的全部测试方案都打进同一个版本的包里,在用户终端上安装该客户端。当后台下发目标测试方案的描述信息后,在客户端的代码层实现A/B测试的选择逻辑,选择具体执行后台下发的目标测试方案的描述信息中所指示的一种测试方案。
但是,这种方式会导致A/B测试的选择逻辑代码和客户端自身的业务代码紧耦合,因此代码较为复杂,并且如果客户端的实验项较多,A/B测试的选择逻辑代码就会分布到客户端代码中的多个地方,增加客户端的开发和维护难度。
发明内容
本发明实施例的目的在于提供一种客户端的灰度发布方法及装置,以实现降低客户端的开发和维护难度。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种客户端的灰度发布方法,灰度发布的客户端中集成软件开发工具包SDK;所述方法包括:
在启动所述客户端时,所述SDK读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案;
所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息;
在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案;
所述SDK按照所述目标测试方案运行所述当前实验项。
可选地,所述测试方案包括枚举类型和开放类型;所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案步骤,包括:在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
可选地,所述包含UI选择逻辑的实验项包括以下至少之一:UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。
可选地,在所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息步骤之后,还包括:所述SDK将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
可选地,在所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案步骤之前,还包括:所述SDK获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
可选地,在所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案标识步骤之后,还包括:在运行到当前实验项且所述当前实验项为未包含UI选择逻辑的实验项时,所述SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述描述信息运行所述当前实验项。
在本发明实施的第二方面,还提供了一种客户端的灰度发布装置,灰度发布的客户端中集成软件开发工具包SDK;所述装置应用于所述SDK,所述装置包括:
读取模块,用于在启动所述客户端时,读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案;
信息获取模块,用于根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息;
方案获取模块,用于在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案;
运行模块,用于按照所述目标测试方案运行所述当前实验项。
可选地,所述测试方案包括枚举类型和开放类型;所述方案获取模块包括:选择单元,用于在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;赋值单元,用于在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
可选地,所述包含UI选择逻辑的实验项包括以下至少之一:UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。
可选地,所述装置还包括:缓存模块,用于在所述信息获取模块根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息之后,将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
可选地,所述装置还包括:查找模块,用于在所述方案获取模块根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中选择所述当前实验项的目标测试方案之前,获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
可选地,所述装置还包括:信息传递模块,用于在运行到当前实验项且所述当前实验项为未包含UI选择逻辑的实验项时,所述SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述描述信息运行所述当前实验项。
在本发明实施的又一方面,还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一所述的客户端的灰度发布方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的客户端的灰度发布方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的客户端的灰度发布方法。
本发明实施例提供的客户端的灰度发布方法及装置,在灰度发布的客户端中集成SDK(Software Development Kit,软件开发工具包),在启动所述客户端时,所述SDK读取所述客户端的配置文件,所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案;所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息;在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案;所述SDK按照所述目标测试方案运行所述当前实验项。由此可知,本发明实施例中通过将A/B测试中与UI(User Interface,用户界面)相关的选择逻辑代码下沉到SDK中,由SDK执行对目标测试方案的选择,并按照目标测试方案运行实验项,客户端中无需再布局A/B测试中与UI相关的选择逻辑代码,从而可以将A/B测试中与UI相关的选择逻辑代码与客户端自身的业务代码分离,降低客户端的开发和维护难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中的一种系统架构图。
图2为本发明实施例中的一种客户端的灰度发布方法的步骤流程图。
图3为本发明实施例中的另一种客户端的灰度发布方法的步骤流程图。
图4为本发明实施例中的一种客户端的灰度发布装置的结构框图。
图5为本发明实施例中的另一种客户端的灰度发布装置的结构框图。
图6为本发明实施例中的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
A/B测试可以通过测试平台实现,目前已有多种测试平台可以实现A/B测试。一般来说,这些测试平台包含了提供给前端(客户端)集成的SDK和用于实验配置、决策下发、数据分析的后台管理系统。其中供前端(客户端)集成的SDK中,一般包含了决策获取、数据存储、用户操作投递这三个模块。在实现A/B测试时,后台管理系统进行决策下发,SDK的决策获取模块获取目标测试方案的描述信息,客户端再从SDK的决策获取模块获取目标测试方案的描述信息,然后客户端针对不同的目标测试方案的描述信息执行不同的代码。但是,该种情况下A/B测试的选择逻辑代码布置在客户端中,使其与客户端自身的业务代码紧耦合,并且如果客户端的实验项较多,A/B测试的选择逻辑代码就会分布到客户端代码中的多个地方,增加客户端的开发和维护难度。
为了解决上述问题,本发明实施例中优化客户端集成的SDK的实现方式,通过抽象A/B测试在UI层面可能的需求,提供多粒度的支持A/B测试的UI控件,将A/B测试中与UI相关的选择逻辑代码的具体实现尽量下沉到SDK,从而减少开发和维护的工作量。
图1为本发明实施例中的一种系统架构图。图1中APP(应用程序)即为本发明实施例中灰度发布的客户端,在APP中集成有SDK。由图1可知,SDK在初始化的过程中,通过APP进行配置实验获取配置文件,通过网络请求获取实验决策(也即目标测试方案的描述信息),然后将配置文件和目标测试方案的描述信息保存至SDK的数据层。在APP进行A/B Test(即A/B测试)的过程中,SDK从数据层获取相关数据,能够支持多种不同的A/B测试实验项。实验项可以分为包含UI选择逻辑的实验项和未包含UI选择逻辑的实验项。图1中的①布局区域内UI方案选择、②控件内展示样式选择、③控件属性设置、④控件默认展示行为选择属于包含UI选择逻辑的实验项。图1中的⑤属于未包含UI选择逻辑的实验项,比如对客户端启动后是否向服务器发送验证信息的测试可以为未包含UI选择逻辑的实验项,等等。在A/B测试过程中,还存在用户交互行为,APP将用户交互行为数据传递给SDK,SDK从数据层获取用户交互行为数据对应的目标测试方案的描述信息,然后进行交互数据投递。
下面,对本发明实施例中的客户端的灰度发布进行介绍。
图2为本发明实施例中的一种客户端的灰度发布方法的步骤流程图。
本发明实施例中的客户端的灰度发布方法可以包括以下步骤:
步骤201,在启动所述客户端时,SDK读取所述客户端的配置文件,所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案。
步骤202,SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息。
步骤203,在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案。
步骤204,SDK按照所述目标测试方案运行所述当前实验项。
在步骤201中,客户端可以为各种具有灰度发布需求的APP。测试平台提供客户端集成的SDK,开发者开发灰度发布的客户端时,在客户端中集成SDK,用户在所使用的终端上安装灰度发布的客户端。灰度发布的客户端中包括多个实验项,比如对UI控件的展示方式的测试为一个实验项,对UI控件的文本值这一属性的测试为一个实验项,等等。在客户端中设置有配置文件,配置文件中包括每个实验项的名称和测试方案。比如某个实验项为对UI控件展示方式的测试,该实验项的名称可以为test1等名称,该实验项的测试方案可以为2列和3列两种。在客户端启动的时候SDK从客户端中读取配置文件。
在步骤202中,测试平台的后台管理系统中针对每个实验项,会设置用户执行的目标测试方案,比如一部分用户执行第一种测试方案,另一部分用户执行第二种测试方案。SDK根据客户端的配置文件中的每个实验项的名称,获取每个实验项的目标测试方案的描述信息。目标测试方案的描述信息比如可以为目标测试方案的标识,或者目标测试方案的属性值等。
在步骤203中,APP在启动后开始运行,当运行到一个实验项时,该实验项为当前实验项,要对当前实验项进行测试。当前实验项可能为包含UI选择逻辑的实验项,也可能为未包含UI选择逻辑的实验项。对于包含UI选择逻辑的实验项,SDK可以根据步骤202中获取的目标测试方案的描述信息,从步骤201中获取的配置文件中记录的当前实验项的测试方案中获取当前实验项的目标测试方案。
在步骤204中,SDK获取到当前实验项的目标测试方案后,将该目标测试方案与当前实验项绑定,绑定后即可按照当前实验项的目标测试方案运行当前实验项。因此,在客户端的代码中无需再布局A/B测试中与UI相关的选择逻辑代码实验项,对于目标测试方案的选择由SDK执行,选择后运行目标测试方案即可。
本发明实施例中通过将A/B测试中与UI相关的选择逻辑代码下沉到SDK中,由SDK执行对目标测试方案的选择,并按照目标测试方案运行实验项,客户端中无需再布局A/B测试中与UI相关的选择逻辑代码,从而可以将A/B测试中与UI相关的选择逻辑代码与客户端自身的业务代码分离,降低客户端的开发和维护难度。
图3为本发明实施例中的另一种客户端的灰度发布方法的步骤流程图。
本发明实施例中的客户端的灰度发布方法可以包括以下步骤:
步骤301,在启动所述客户端时,所述SDK读取所述客户端的配置文件,所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案。
步骤302,SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息。
步骤303,SDK将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
步骤304,在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,SDK获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
步骤305,SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案。
步骤306,SDK按照所述目标测试方案运行所述当前实验项。
步骤307,在运行到当前实验项且所述当前实验项为未包含UI选择逻辑的实验项时,SDK获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的目标测试方案的描述信息。
步骤308,SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述当前实验项的目标测试方案的描述信息运行所述当前实验项。
步骤301对应于图1中配置实验的过程。客户端中包括多个实验项,在客户端中预先设置了配置文件,配置文件包括每个实验项的名称和测试方案。测试方案包括枚举类型和开放类型。枚举类型是指列举出全部的测试方案,开放类型是指测试方案的具体取值由后台管理系统指定。与传统的实现方式不同,由于A/B测试中与UI相关的选择逻辑过程由SDK完成,因此SDK需要预先知道进行的所有实验项以及可能的取值(即测试方案)。在启动客户端的过程中,SDK进行初始化,从客户端中读取客户端的配置文件。配置文件可以通过JSON(JavaScript Object Notation,JS对象简谱)的格式表示。
比如,客户端中包括2个实验项。其中一个实验项为对UI控件的展示方式的测试,实验项的名称为test_canary1,测试的展示方式包括2列和3列两种。另一个实验项为对UI控件的文本值这一属性的测试,实验项的名称为test_canary2,测试的文本值由后台管理系统指定。因此,配置文件可以如下表示:
其中,param指定实验项的名称;type的enum为枚举类型,可选值由alternatives列出,open为开放类型,具体值由后台管理系统指定。
步骤302对应于图1中获取实验决策的过程。SDK在获取到客户端的配置文件后,从配置文件中解析出每个实验项的名称,然后根据每个实验项的名称,从后台管理系统中获取每个实验项的目标测试方案的描述信息。
在实现中,如果由SDK与后台管理系统组成的测试平台是用于对外发布商用的,则SDK直接向后台管理系统发起网络请求。如果由SDK与后台管理系统组成的测试平台是内部开发使用的,则SDK可以直接向后台管理系统发起网络请求,SDK也可以先向客户端发起请求,再由客户端向后台管理系统发起网络请求(如图1中的网络请求)。
后台管理系统中配置有不同用户对应的客户端的每个实验项的目标测试方案的描述信息,目标测试方案的描述信息可以为目标测试方案的标识或者为目标测试方案的属性值等。网络请求中携带实验项的名称和使用客户端的用户信息等,后台管理系统根据网络请求,可以获取当前客户端的每个实验项的目标测试方案的描述信息。
比如,按照上述举例,后台管理系统中针对实验项test_canary1的2列和3列两种测试方案,分别设置了标识1和2,SDK将实验项的名称test_canary1和相关的用户信息传递给后台管理系统,后台管理系统确定实验项test_canary1的目标测试方案的描述信息为标识“1”。后台管理系统中针对实验项test_canary2,设置了文本值为“1”,SDK将实验项的名称test_canary2和相关的用户信息传递给后台管理系统,后台管理系统确定实验项test_canary1的目标测试方案的描述信息为文本值“1”。
在步骤303中,SDK将每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地,也即缓存至图1中的数据层。
客户端在启动后开始运行,当客户端运行到一个当前实验项时,SDK开始执行对当前实验项的A/B测试逻辑。实验项可以分为包含UI选择逻辑的实验项和未包含UI选择逻辑的实验项。其中,与UI控件相关的实验项通常为包含UI选择逻辑的实验项。比如,包含UI选择逻辑的实验项可以包括以下至少之一:UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。其他与UI控件不相关的实验项通常为未包含UI选择逻辑的实验项。比如,未包含UI选择逻辑的实验项可以为客户端启动后向服务器发送验证信息的实验项,等等。
在步骤304中,在客户端运行到包含UI选择逻辑的当前实验项时,SDK可以获取当前实验项的名称,然后根据当前实验项的名称从本地数据层中查找当前实验项的测试方案和目标测试方案的描述信息。
在步骤305中,SDK根据当前实验项的目标测试方案的描述信息,从当前实验项的测试方案中获取当前实验项的目标测试方案。在实现中,根据测试方案类型的不同,可以采用不同的方式获取当前实验项的目标测试方案。步骤305可以包括:在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
比如,当前实验项为对UI控件的展示方式的测试,当前实验项的名称为test_canary1,测试方案为枚举类型,测试方案包括2列和3列两种,目标测试方案的描述信息为标识“1”,则SDK从枚举出的2列和3列两种两个测试方案中选择标识“1”对应的测试方案,也即选择2列的测试方案,作为当前实验项的目标测试方案。
比如,当前实验项为对UI控件的文本值这一属性的测试,当前实验项的名称为test_canary2,测试方案为开放类型,测试的文本值由后台管理系统指定,目标测试方案的描述信息为文本值“1”,则SDK将文本值“1”赋值给当前实验项的文本值这一属性,得到当前实验项的目标测试方案。
在步骤306中,SDK将目标测试方案与当前实验项绑定,并按照目标测试方案运行当前实验项。
比如,将UI控件的展示方式为2列的测试方案与当前实验项test_canary1绑定,则运行2列的UI控件。比如,将UI控件的文本值为“1”的测试方案与当前实验项test_canary2绑定,则在UI控件的对应位置显示文本值“1”。
在步骤307中,在客户端运行到未包含UI选择逻辑的当前实验项时,SDK获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的目标测试方案的描述信息。
在步骤308,SDK将在步骤307中查找到的当前实验项的目标测试方案的描述信息传递至客户端,客户端即可按照当前实验项的目标测试方案的描述信息运行当前实验项。比如,目标测试方案的描述信息为目标测试方案的标识,客户端中设置有当前实验项的全部测试方案,则客户端选择目标测试方案的标识对应的目标测试方案,按照目标测试方案运行当前实验项。
在实现中,针对客户端的实验项,可以提供多粒度的A/B测试接入方式。
如图1所示:
①布局区域内UI方案选择:给定一个UI区域,指定实验项的名称,内部可以指定多套UI方案,比如UI方案可以包括图片、列表等。SDK根据实验项的名称对应的目标测试方案的描述信息从全部UI方案中选择并绑定其中一套UI方案。比如,Android(安卓)客户端可以提供一个定制的FrameLayout(帧布局),FrameLayout内部允许嵌入多套UI方案。
②控件内展示样式选择:对于一个确定的UI控件,指定实验项的名称,支持不同的展示样式展示相同的数据,比如展示样式可以包括2列展示、3列展示等。由SDK根据实验项的名称对应的目标测试方案的描述信息从全部的展示样式中选择并绑定其中一套展示样式。比如,Android客户端提供一个定制的RecyclerView(可回收视图),支持设置多种LayoutManager(布局管理器)。
③控件属性设置:对于一个UI控件的某个属性,指定实验项的名称,由SDK根据实验项的名称对应的目标测试方案的描述信息直接设定特定的属性。比如,Android端自定义一个TextView(文本视图)用于显示文案,指定A/B测试的属性为文本值,SDK根据目标测试方案的描述信息可以显示不同的文案。
④控件默认展示行为选择:对于一个确定的UI控件,指定实验项的名称,支持不同的默认展示行为,比如一个控件包括两个页面,默认展示行为可以包括默认展示第1个页面或默认展示第2个页面。由SDK根据实验项的名称对应的目标测试方案的描述信息从全部的默认展示行为中选择并绑定其中一套默认展示行为。比如,Android端自定义一个ViewPager(视图翻页工具),A/B测试决定默认展示哪个页面。
⑤原始目标测试方案的描述信息获取:如有以上UI控件表现形式无法覆盖的情况,或本身不是UI逻辑,而是执行逻辑(比如上述客户端启动后是否向服务器发送验证信息)的情况,SDK可以提供直接获取目标测试方案的描述信息的接口。
如图1所示,本发明实施例中SDK还提供用户交互的交互数据投递接口,收集用户的交互行为,根据数据层缓存的相关数据进行交互数据投递,投递给后台管理平台。后台管理平台根据交互数据确定各种测试方案的测试效果。
A/B测试是一种通用的减少发版风险、提升用户体验的软件灰度发布方式,可用于几乎所有对外发布的软件。本发明实施例中,将UI控件相关的A/B测试实现下沉到SDK,和客户端自身的业务逻辑分离,减少客户端的业务逻辑和A/B测试中与UI相关的选择逻辑代码耦合程度,A/B实验项较多时能显著减少开发维护难度,在软件中实现A/B测试带来效率和可维护性上的提升。SDK可作为公用模块提供给不同软件,通用性更强。
图4为本发明实施例中的一种客户端的灰度发布装置的结构框图。灰度发布的客户端中集成SDK,所述装置应用于所述SDK。所述装置包括:
读取模块401,用于在启动所述客户端时,读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案。
信息获取模块402,用于根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息。
方案获取模块403,用于在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案。
运行模块404,用于按照所述目标测试方案运行所述当前实验项。
本发明实施例中通过将A/B测试中与UI相关的选择逻辑代码下沉到SDK中,由SDK执行对目标测试方案的选择,并按照目标测试方案运行实验项,客户端中无需再布局A/B测试中与UI相关的选择逻辑代码,从而可以将A/B测试中与UI相关的选择逻辑代码与客户端自身的业务代码分离,降低客户端的开发和维护难度。
图5为本发明实施例中的另一种客户端的灰度发布装置的结构框图。
本发明实施例中的客户端的灰度发布装置可以包括以下模块:
读取模块501,用于在启动所述客户端时,读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案。
信息获取模块502,用于根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息。
方案获取模块503,用于在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案。
运行模块504,用于按照所述目标测试方案运行所述当前实验项。
可选地,所述测试方案包括枚举类型和开放类型;所述方案获取模块503包括:选择单元5031,用于在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;赋值单元5032,用于在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
可选地,所述包含UI选择逻辑的实验项包括以下至少之一:UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。
可选地,所述装置还包括:缓存模块505,用于在所述信息获取模块根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息之后,将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
可选地,所述装置还包括:查找模块506,用于在所述方案获取模块根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中选择所述当前实验项的目标测试方案之前,获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
可选地,所述装置还包括:信息传递模块507,用于在运行到当前实验项且所述当前实验项为未包含UI选择逻辑的实验项时,所述SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述当前实验项的目标测试方案的描述信息运行所述当前实验项。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
在启动所述客户端时,所述SDK读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案;
所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息;
在运行到当前实验项且所述当前实验项为包含UI选择逻辑的实验项时,所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案;
所述SDK按照所述目标测试方案运行所述当前实验项。
可选地,所述测试方案包括枚举类型和开放类型;所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案步骤,包括:在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
可选地,所述包含UI选择逻辑的实验项包括以下至少之一:UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。
可选地,在所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息步骤之后,还包括:所述SDK将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
可选地,在所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中选择所述当前实验项的目标测试方案步骤之前,还包括:所述SDK获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
可选地,在所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案标识步骤之后,还包括:在运行到当前实验项且所述当前实验项为未包含UI选择逻辑的实验项时,所述SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述当前实验项的目标测试方案的描述信息运行所述当前实验项。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的客户端的灰度发布方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的客户端的灰度发布方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种客户端的灰度发布方法,其特征在于,灰度发布的客户端中集成软件开发工具包SDK;所述方法包括:
在启动所述客户端时,所述SDK读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案;
所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息;
在运行到当前实验项且所述当前实验项为包含用户界面UI选择逻辑的实验项时,所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案;
所述SDK按照所述目标测试方案运行所述当前实验项。
2.根据权利要求1所述的方法,其特征在于,所述测试方案包括枚举类型和开放类型;所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案步骤,包括:
在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;
在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
3.根据权利要求1所述的方法,其特征在于,所述包含用户界面UI选择逻辑的实验项包括以下至少之一:
UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。
4.根据权利要求1所述的方法,其特征在于,在所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息步骤之后,还包括:
所述SDK将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
5.根据权利要求4所述的方法,其特征在于,在所述SDK根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案步骤之前,还包括:
所述SDK获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
6.根据权利要求1所述的方法,其特征在于,在所述SDK根据所述每个实验项的名称,获取所述每个实验项的目标测试方案标识步骤之后,还包括:
在运行到当前实验项且所述当前实验项为未包含用户界面UI选择逻辑的实验项时,所述SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述描述信息运行所述当前实验项。
7.一种客户端的灰度发布装置,其特征在于,灰度发布的客户端中集成软件开发工具包SDK;所述装置应用于所述SDK,所述装置包括:
读取模块,用于在启动所述客户端时,读取所述客户端的配置文件;所述客户端中包括多个实验项,所述配置文件包括每个实验项的名称和测试方案;
信息获取模块,用于根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息;
方案获取模块,用于在运行到当前实验项且所述当前实验项为包含用户界面UI选择逻辑的实验项时,根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中获取所述当前实验项的目标测试方案;
运行模块,用于按照所述目标测试方案运行所述当前实验项。
8.根据权利要求7所述的装置,其特征在于,所述测试方案包括枚举类型和开放类型;所述方案获取模块包括:
选择单元,用于在所述当前实验项的测试方案为枚举类型时,所述SDK从枚举出的多个测试方案中选择所述描述信息对应的测试方案,作为所述当前实验项的目标测试方案;
赋值单元,用于在所述当前实验项的测试方案为开放类型时,所述SDK将所述描述信息赋值给所述当前实验项的测试方案,得到所述当前实验项的目标测试方案。
9.根据权利要求7所述的装置,其特征在于,所述包含用户界面UI选择逻辑的实验项包括以下至少之一:
UI控件方案实验项、UI控件内展示样式实验项、UI控件属性设置实验项、UI控件默认展示行为实验项。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
缓存模块,用于在所述信息获取模块根据所述每个实验项的名称,获取所述每个实验项的目标测试方案的描述信息之后,将所述每个实验项的名称、测试方案和目标测试方案的描述信息缓存至本地。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
查找模块,用于在所述方案获取模块根据所述当前实验项的目标测试方案的描述信息,从所述当前实验项的测试方案中选择所述当前实验项的目标测试方案之前,获取所述当前实验项的名称,根据所述当前实验项的名称从本地查找所述当前实验项的测试方案和目标测试方案的描述信息。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
信息传递模块,用于在运行到当前实验项且所述当前实验项为未包含用户界面UI选择逻辑的实验项时,所述SDK将所述当前实验项的目标测试方案的描述信息传递至所述客户端,以使所述客户端按照所述描述信息运行所述当前实验项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911129859.1A CN110955449B (zh) | 2019-11-18 | 2019-11-18 | 客户端的灰度发布方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911129859.1A CN110955449B (zh) | 2019-11-18 | 2019-11-18 | 客户端的灰度发布方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955449A true CN110955449A (zh) | 2020-04-03 |
CN110955449B CN110955449B (zh) | 2024-04-12 |
Family
ID=69977775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911129859.1A Active CN110955449B (zh) | 2019-11-18 | 2019-11-18 | 客户端的灰度发布方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955449B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639027A (zh) * | 2020-05-25 | 2020-09-08 | 北京百度网讯科技有限公司 | 一种测试方法、装置及电子设备 |
CN111737144A (zh) * | 2020-07-17 | 2020-10-02 | 北京热云科技有限公司 | 一种智能设备ab测试故障排查方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104966206A (zh) * | 2015-05-12 | 2015-10-07 | 百度在线网络技术(北京)有限公司 | 对移动应用进行灰度发布的方法、装置和系统 |
CN107861871A (zh) * | 2017-11-02 | 2018-03-30 | 百度在线网络技术(北京)有限公司 | 一种灰度发布方法、装置、服务器及存储介质 |
CN110389897A (zh) * | 2019-06-18 | 2019-10-29 | 深圳壹账通智能科技有限公司 | Sdk逻辑测试方法、装置、存储介质及服务器 |
CN110399288A (zh) * | 2019-01-07 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 应用测试方法和装置、存储介质及电子装置 |
-
2019
- 2019-11-18 CN CN201911129859.1A patent/CN110955449B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104966206A (zh) * | 2015-05-12 | 2015-10-07 | 百度在线网络技术(北京)有限公司 | 对移动应用进行灰度发布的方法、装置和系统 |
WO2016179958A1 (zh) * | 2015-05-12 | 2016-11-17 | 百度在线网络技术(北京)有限公司 | 对移动应用进行灰度发布的方法、装置和系统 |
CN107861871A (zh) * | 2017-11-02 | 2018-03-30 | 百度在线网络技术(北京)有限公司 | 一种灰度发布方法、装置、服务器及存储介质 |
CN110399288A (zh) * | 2019-01-07 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 应用测试方法和装置、存储介质及电子装置 |
CN110389897A (zh) * | 2019-06-18 | 2019-10-29 | 深圳壹账通智能科技有限公司 | Sdk逻辑测试方法、装置、存储介质及服务器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639027A (zh) * | 2020-05-25 | 2020-09-08 | 北京百度网讯科技有限公司 | 一种测试方法、装置及电子设备 |
CN111737144A (zh) * | 2020-07-17 | 2020-10-02 | 北京热云科技有限公司 | 一种智能设备ab测试故障排查方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110955449B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387292B2 (en) | Determining application test results using screenshot metadata | |
WO2018223717A1 (zh) | 网页前端测试方法、装置、系统、设备及可读存储介质 | |
CN110221982B (zh) | 业务系统的性能测试方法、装置、设备及可读存储介质 | |
EP3333704A1 (en) | Method and apparatus for repairing kernel vulnerability | |
CN111563032B (zh) | App调试方法、装置、计算机设备及存储介质 | |
CN111045653B (zh) | 系统生成方法、装置、计算机可读介质及电子设备 | |
CN107797918B (zh) | 测试方法和测试装置 | |
CN110825370B (zh) | 移动端应用开发方法、装置及系统 | |
CN113704110B (zh) | 用户界面的自动化测试方法及装置 | |
US20200205001A1 (en) | Electronic apparatus and method of executing application program | |
CN111666201A (zh) | 回归测试方法、装置、介质及电子设备 | |
CN110941779A (zh) | 加载页面的方法、装置、存储介质及电子设备 | |
CN110955449A (zh) | 客户端的灰度发布方法及装置 | |
CN110674023B (zh) | 一种接口测试方法和装置 | |
CN108228611B (zh) | 单据信息抄写方法和装置 | |
CN113760308A (zh) | Dsp系统的构建方法、装置、电子设备及存储介质 | |
CN115913913B (zh) | 网卡预启动执行环境功能故障定位方法及装置 | |
CN116992850A (zh) | 一种企业报告文本的生成方法、装置及电子设备 | |
CN107766228A (zh) | 一种基于多语种的自动化测试方法和装置 | |
KR20130126012A (ko) | 비즈니스 인텔리전스의리포트 제공 방법 및 장치 | |
CN113821430B (zh) | 一种多服务测试方法和装置 | |
CN114564856A (zh) | 一种基于fmea的数据共享方法及电子设备 | |
RU2595763C2 (ru) | Способ и устройство менеджмента загрузки на базе браузера android | |
CN112540747A (zh) | 平台开发方法、装置及计算机可读存储介质 | |
KR101630524B1 (ko) | 다국어 지원을 위한 웹 서비스 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |