CN113377659A - 灰度测试方法、装置、电子设备及计算机可读存储介质 - Google Patents
灰度测试方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113377659A CN113377659A CN202110696149.8A CN202110696149A CN113377659A CN 113377659 A CN113377659 A CN 113377659A CN 202110696149 A CN202110696149 A CN 202110696149A CN 113377659 A CN113377659 A CN 113377659A
- Authority
- CN
- China
- Prior art keywords
- function
- test
- gray
- original
- gray scale
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
Abstract
本公开提供一种灰度测试方法、装置、电子设备及计算机可读存储介质;涉及计算机技术领域。所述灰度测试方法包括:接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符;执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符;在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。本公开可以降低灰度测试开发工作的复杂度。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及基于计算机技术的一种灰度测试方法、灰度测试装置、电子设备以及计算机可读存储介质。
背景技术
随着互联网的发展和普及,越来越多的用于客户端的应用程序在发布新版本程序前,采用灰度测试的方式来检验产品的成熟度以及发现和纠正新版本产品中存在的问题。
以游戏产品为例,当前通常采用的灰度测试的方法是,在玩家群体中选择一部分的玩家,并将待测试版本的程序外放给这部分玩家,通过收集这部分玩家的测试数据,确定后续是继续改进新版本产品的功能和算法还是扩大灰度测试的范围和规模。
但在上述的测试方法中,涉及复杂的客户端判断逻辑和更新逻辑,使得针对客户端的灰度测试开发工作的复杂度高、难度大。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种灰度测试方法、灰度测试装置、电子设备以及计算机可读存储介质,从而至少在一定程度上降低游戏客户端灰度测试的难度和逻辑复杂度。
根据本公开的一个方面,提供一种灰度测试方法,包括:
接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符;
执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符;
在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。
在本公开的一种示例性实施例中,所述原始修饰符包括所述原始函数所属的原始功能的名称和所述原始函数的名称,所述灰度测试修饰符包括所述灰度测试函数所属的灰度测试功能的名称和所述灰度测试函数的名称;
所述检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符,包括:检测所述原始功能的名称与所述灰度测试功能的名称是否对应,以及检测所述原始函数的名称与所述灰度测试函数的名称是否对应。
在本公开的一种示例性实施例中,所述执行与所述灰度测试修饰符对应的灰度测试函数,包括:根据服务端下发的所述灰度测试函数的地址执行所述灰度测试函数。
在本公开的一种示例性实施例中,当具有至少一个版本的灰度测试函数时,所述灰度测试修饰符还包括所述灰度测试函数的灰度测试版本号;
所述执行与所述灰度测试修饰符对应的灰度测试函数,包括:根据所述灰度测试版本号确定所执行的灰度测试函数。
在本公开的一种示例性实施例中,所述原始函数所属的原始功能具有原始功能标识,所述灰度测试函数所属的灰度测试功能具有灰度测试功能标识,所述方法还包括:
执行所述待测试应用程序,并在执行到所述原始功能时检测是否存在与所述原始功能标识对应的灰度测试功能标识;
在存在与所述原始功能标识对应的灰度测试功能标识时,执行对应的灰度测试功能并取消执行所述原始功能。
在本公开的一种示例性实施例中,当具有至少一个版本的灰度测试功能时,所述方法还包括:接收查找表,所述查找表包括所述灰度测试功能的灰度测试功能版本号;
所述执行对应的灰度测试功能,包括:根据所述灰度测试功能版本号确定所执行的灰度测试功能。
在本公开的一种示例性实施例中,所述执行与所述灰度测试修饰符对应的灰度测试函数,还包括:根据用户的输入指令,并基于所述灰度测试版本号确定所执行的灰度测试函数。
在本公开的一种示例性实施例中,所述方法还包括:向服务端发送包括灰度测试数据的反馈信息。
根据本公开的一个方面,提供一种灰度测试装置,包括:
收发模块,用于接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符;处理模块,用于执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符,以及在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。
根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在公开示例实施方式所提供的灰度测试方法中,所接收的待测试应用程序的原始函数以及灰度测试函数分别具有原始修饰符和与原始修饰符对应的灰度测试修饰符;在执行待测试应用程序的过程中,在执行到原始函数时检测是否存在与原始函数的原始修饰符对应的灰度测试修饰符;如果存在,则执行与灰度测试修饰符对应的灰度测试函数并取消执行原始函数。一方面,使得无需针对参与灰度测试的客户端采用复杂的判断逻辑和更新逻辑以提供灰度测试的环境,从而降低了客户端的灰度测试开发工作的难度。另一方面,由于无需删除原始版本的函数或功能,因此可以最大程度的确保执行应用程序的稳定性,从而减少由于测试版函数或功能存在缺陷而可能带来的用户体验降低。再一方面,多个版本的测试版函数或功能可以并存,因此可以对不同的客户试用群体同时发布多个版本的函数或功能,从而提高灰度测试的覆盖率和效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的一种灰度测试方法及装置的示例性系统架构的示意图;
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;
图3示意性示出了根据本公开的一个实施例的灰度测试方法的流程图;
图4示出了根据本公开的一个实施例中用户端可操作图文界面的示意图;
图5示意性示出了根据本公开实施例的基于函数的灰度测试方法的总体流程图;
图6示意性示出了根据本公开的一个实施例的灰度测试装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本公开涉及一种灰度测试方法及装置。灰度测试是一种允许用户参与产品测试的互动式测试方法,通常应用在应用程序产品即将推出全新的功能或者做重大的版本更新之前;常用的方式是将测试版产品发布给小部分目标人群进行试用,通过收集使用结果和反馈来改进产品的功能和修正产品的缺陷,并通过迭代的方式将更新后的试用版产品逐步发布给更大部分的目标人群,从而以不断完善产品并提高成熟度的方式实现提高产品质量,以及减少受产品升级影响的用户范围。
图1示出了可以应用本公开实施例的灰度测试方法及装置的示例性系统架构的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个、网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路。可以以各种类型的连接接入网络104,例如以有线、无线通信链路或者光纤电缆等方式。终端设备101、102、103可以是各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实际需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
举例而言,在一种示例性实施例中,可以是用户在终端设备101、102、103上通过网络104从服务器105接收待测试应用程序(APP)的具有原始修饰符的原始函数和具有灰度测试修饰符的灰度测试函数;之后在终端设备101、102、103上执行所述待测试应用程序,并且在执行到原始函数时检测是否存在与原始函数的原始修饰符对应的灰度测试修饰符;如果存在与原始修饰符对应的灰度测试修饰符,则执行与该灰度测试修饰符对应的灰度测试函数并且取消执行原始函数;最后在终端设备101、102、103完成执行待测试应用程序后将包括灰度测试数据的反馈信息通过网络104发送给服务器105。但本领域技术人员容易理解的是,上述应用场景仅是用于举例,本示例性实施例中并不以此为限。
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有系统操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)显示器、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的方法和装置中限定的各种功能。
以下对本公开实施例的技术方案进行详细阐述:
本示例实施方式提供了一种灰度测试方法。该灰度测试方法可以应用于上述终端设备101、102、103中的一个或多个,本示例性实施例中对此不做特殊限定。
参考图3所示,该灰度测试方法可以包括以下步骤:
步骤S310.接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符;
步骤S320.执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符;
步骤S330.在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。
在本示例实施方式所提供的灰度测试方法中,一方面,使得无需针对参与灰度测试的客户端采用复杂的判断逻辑和更新逻辑以提供灰度测试的环境,从而降低了客户端的灰度测试开发工作的难度。另一方面,由于无需删除原始版本的功能函数,因此可以最大程度的确保执行应用程序的稳定性,从而减少由于测试版功能函数存在缺陷而可能带来的用户体验降低。再一方面,由于多个版本的测试版功能函数可以并存,因此可以对不同的客户试用群体同时发布多个版本的功能函数,提高灰度测试的覆盖率和效率。
下面,在另一实施例中,对上述步骤进行更加详细的说明。
在步骤S310中,接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符。
在本示例实施方式中,待测试应用程序为游戏应用程序。举例而言,游戏应用程序可以由多个功能模块构成,例如,可以包括技能功能模块、移动功能模块、环境互动功能模块、光影功能模块等等。而各个功能模块又由多个函数构成,例如,可以包括位图输出函数、时间延迟函数、I/O设备接口函数、设置指针函数等等。因此,在待测试游戏应用程序中,实际可存在彼此相对应的多个原始功能或原始函数以及多个灰度测试功能或灰度测试函数。其中,灰度测试功能或函数是对对应的原始功能或函数进行更新后得到的待测试功能或函数。在本公开实施方式中,可以将功能作为灰度测试的控制单位,以及将具体的函数作为灰度测试的基本替换单位;但也可以将功能作为灰度测试的替换单位。本示例性实施例中对此不做特殊限定。
在本示例实施方式中,客户端可以载有待测试游戏应用程序的原始函数,例如,客户端对应的用户可以是旧版本游戏应用程序的原始用户;在这种情况下,客户端仅需从服务端接收待测试游戏应用程序的灰度测试函数即可。此外,客户端也可以未装载待测试游戏应用程序的原始函数,例如,客户端对应的用户可以是在灰度测试阶段确定的新增的目标群体;在这种情况下,客户端需要从服务端接收待测试游戏应用程序的原始函数以及灰度测试函数。
在本示例实施方式中,原始函数可以具有原始修饰符,而相对应的灰度测试函数可以具有与该原始修饰符对应的灰度测试修饰符。其中,原始修饰符和灰度测试修饰符可以是用于区分或指示各原始函数和各灰度测试函数的标识信息,并且例如可以以预设的方式写在各原始函数和各灰度测试函数的预定字段中。
在一个具体示例中,原始修饰符可以包括原始函数所属的原始功能的名称和原始函数的名称,而灰度测试修饰符可以包括灰度测试函数所属的灰度测试功能的名称和灰度测试函数的名称。举例来说,对于名为NotifyMgrDoNotify的函数及其所属的名为notify_mgr的功能而言,可以将原始函数的原始修饰符配置为GrayRawFunc(‘notify_mgr’,‘NotifyMgrDoNotify’)的形式,而将灰度测试函数的灰度测试修饰符配置为GrayNewFunc(‘notify_mgr’,‘NotifyMgrDoNotify’,‘1.0’)的形式;其中,原始修饰符和灰度测试修饰符中的“notify_mgr”和“NotifyMgrDoNotify”字段分别为相应的功能名称和函数名称,并且例如可以起到用于指示原始函数和灰度测试函数的标识信息的作用。除这种方式外,还可以设置成使原始修饰符与灰度测试修饰符之间存在某种对应关系,例如,原始位图输出函数的原始修饰符通过映射计算可以得到相应的灰度测试位图输出函数的灰度测试修饰符。本示例性实施例中对此不做特殊限定。
在步骤S320中,执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始标识对应的灰度测试标识。
在本示例实施方式中,为了进行灰度测试,客户端需要启动并且运行游戏应用程序,以便执行游戏应用程序的各个功能和相应的函数。举例而言,在执行到不存在对应的灰度测试函数的原始函数时,由于在本次灰度测试阶段未对该原始函数进行更新,因此该原始函数不属于灰度测试的目标对象,只需对该原始函数进行正常的执行操作即可,并且在完成执行该原始函数之后跳转到下一条原始函数。而在执行到存在对应的灰度测试函数的原始函数时,由于对该原始函数进行了更新,因此需要执行相应的灰度测试函数以便进行灰度测试。
在本示例实施方式中,通过原始函数的原始修饰符和灰度测试函数的灰度测试修饰符来检测是否存在与原始函数对应的灰度测试函数。在一个具体示例中,原始修饰符包括原始函数所属的原始功能的名称和原始函数的名称,灰度测试修饰符包括灰度测试函数所属的灰度测试功能的名称和灰度测试函数的名称。客户端在执行到某一原始函数时,可先检测是否存在与原始功能的名称对应的灰度测试功能的名称;在检测到对应的灰度测试功能的名称后,可以进一步检测是否存在与原始函数的名称对应的灰度测试函数的名称;如果也检测到对应的灰度测试函数的名称,则确定对应的灰度测试函数是对相应的原始函数进行了更新的待测试函数。
例如,上述的原始修饰符GrayRawFunc(‘notify_mgr’,‘NotifyMgrDoNotify’)和灰度测试修饰符GrayNewFunc(‘notify_mgr’,‘NotifyMgrDoNotify’,‘1.0’),当在原始修饰符和灰度测试修饰符中均检测到功能名称notify_mgr和函数名称NotifyMgrDoNotify时,则确定存在对应的灰度测试函数。
替选地,也可以根据原始修饰符与灰度测试修饰符之间的对应关系进行检测,例如对原始修饰符进行预设的映射计算,如果能得到相应的特定灰度测试修饰符,则确定存在与该原始函数对应的灰度测试函数。本示例性实施例中对此不做特殊限定。
在步骤S330中,在存在与所述原始标识对应的灰度测试标识时,执行与所述灰度测试标识对应的灰度测试函数并取消执行所述原始函数。
在本示例实施方式中,如上所述,在存在对应的灰度测试标识时,则可以确定待测试的灰度测试函数。在这种情况下,需要执行该灰度测试函数以便进行灰度测试;同时,由于执行原始函数的结果或输出不属于本次灰度测试的关注对象,因此取消执行该原始函数,也就是说,不执行相应的原始函数。在完成执行该灰度测试函数之后,跳转到下一条原始函数按照上述方式继续执行。
在一个示例中,可以由服务端下发各灰度测试函数的地址,在此情况下,根据灰度测试函数的地址执行相应的灰度测试函数。示例性地,服务端可以下发各灰度测试函数的存储地址或指针,从而使得客户端在执行待测试游戏应用程序的过程中,在执行到灰度测试函数时,可以接收到的存储地址或指针快速地查找到相应的灰度测试函数并执行。通过这种方式,提高了执行灰度测试函数的响应速度,进而提高了灰度测试的效率。
在一个示例中,当具有至少一个版本的灰度测试函数时,灰度测试修饰符还可以包括灰度测试函数的灰度测试版本号,例如,上述的灰度测试修饰符GrayNewFunc(‘notify_mgr’,‘NotifyMgrDoNotify’,‘1.0’)中的“1.0”字段。在此情况下,根据该灰度测试版本号来确定所执行的灰度测试函数。举例而言,在游戏应用程序更新开发过程中,所更新的各功能或各函数可能往往并不仅具有一个版本,而是根据市场和用户的不同需求,可以开发出多个不同的灰度测试版本。例如,用户群体A希望道具掉落的数量增多,而另一用户群体B希望掉落的道具包含不同的品类;则针对“道具掉落”相关的功能或函数可能开发出道具掉落数量增多的A版本和掉落不同品类道具的B版本。在这种情况下,针对不同的用户群体,灰度测试修饰符可以包括与“道具掉落”相关的函数的不同版本号A或B。在进行灰度测试时,针对用户群体A,服务端可以根据预设的控制逻辑向客户端下发控制指令,指示用户群体A的客户端执行A版本的灰度测试函数;同样地,服务端也可以根据另一控制逻辑指示用户群体B的客户端执行B版本的灰度测试函数。
在一个示例中,客户端可以接收由服务端下发的查找表,该查找表例如可命名为func_version并记录有各灰度测试函数的版本号。通过该查找表,服务端可以指示客户端本次灰度测试中的灰度测试函数各自具有哪些版本。同时,客户端还可以接收由服务端下发的数据表,该数据表例如可命名为func_dict并记录有上述各灰度测试函数的地址。通过这种方式,当具有至少一个版本的灰度测试函数时,客户端通过接收该查找表func_version和数据表func_dict并结合灰度测试修饰符,即可确定在灰度测试过程中执行哪个版本的特定灰度测试函数并快速查找到该灰度测试函数。
在另一个示例中,上述针对不同用户群体下发不同控制指令的控制逻辑也可以记录在上述数据表中,例如,对于道具掉落功能或函数,可以在该数据表func_dict中规定对60%的用户发布A版本,对35%的用户发布B版本,对5%的用户发布C版本。例如可以通过以下方式来实现:针对A版本的道具掉落功能或函数,需要下发给60%的玩家进行灰度测试,则可以通过玩家的身份标识(ID)来划分这部分玩家群体;可以通过算式(hash(player_id)mod 100)+1≥60来划分60%的玩家群体。其中,hash为哈希函数,player_id为呈数字形式的玩家ID,mod为求余函数。还可以通过其他算法来划分特定玩家群体,本公开在此不做特殊限定。
此外,还可以通过在服务端设置控制逻辑的方式来控制在特定渠道下发特定版本的功能或函数。例如,可以在服务端设置控制逻辑,以实现针对第一设备供应商渠道的玩家下发A版本的道具掉落功能或函数,而针对第二设备供应商渠道的玩家下发B版本的道具掉落功能或函数等等,本公开在此不做特殊限定。
此外,当各灰度测试函数仅具有一个灰度测试版本号时,则不通过控制逻辑选择要执行的灰度测试函数的版本,也就是说,唯一地执行相应的灰度测试函数。
通过这种方式,可以在同一灰度测试进程中针对不同需求的用户群体测试多个版本的函数,在提高了参与灰度测试的用户体验度的同时,大大缩短了灰度测试的进程长度和相应的迭代时间,进而缩短了产品调整周期,总体上进一步提高了灰度测试的效率。
在一个示例中,当各灰度测试函数具有至少一个灰度测试版本号的情况下,还可以根据用户的输入指令,基于至少一个灰度测试版本号确定所执行的灰度测试函数,也就是说,由用户决定执行哪个版本的灰度测试函数。举例而言,在前述示例中,需要根据玩家需求或地域分布等因素区分不同的用户群体,仍然需要在服务端设置不同的控制逻辑,以便针对不同的用户群体下发不同版本的灰度测试函数。为了进一步简化服务端的工作复杂度,可以采用下述方式:不区分用户群体,而是将所有版本的灰度测试函数统一下发给参与灰度测试的用户;在玩家执行待测试游戏应用程序时,可以通过增加可操作图文交互界面的方式为玩家提供自主选择测试函数版本的自由度。
具体举例说明,如图4所示,在检测到用户启动待测试游戏应用程序时,可弹出图文界面400,其中可以包括针对各版本的灰度测试函数的可操作图文说明。例如:
可操作图文说明410:“道具掉落函数,测试版本A,更新内容:增加了道具掉落数量”;
可操作图文说明420:“道具掉落函数,测试版本B,更新内容:修改了道具掉落品类”;
可操作图文说明430:“场景读图函数,测试版本C,更新内容:缩短了场景切换读图时间”等等。
并且,该图文界面使得在执行待测试游戏应用程序的过程中,当执行到有更新的函数时,用户可以自主操作选择具体执行相应函数的哪一个灰度测试版本。对于其中一些灰度测试函数仅具有一个灰度测试版本号的情况,可以根据实际情况在图文界面中添加或不添加更新说明。
此外,在灰度测试的进程中,通过统计数据分析,可以由服务端通过控制逻辑决定用户端的图文界面开放或隐藏某些灰度测试函数的可操作说明界面。例如,通过统计数据分析,参与灰度测试的玩家超过70%的人选择了执行A版本的道具掉落函数,而参与测试B版本的道具掉落函数的数据样本数量不足以实现预期的灰度测试效果。在后续的灰度测试进程中,可由服务端通过控制逻辑用户端的图文界面400隐藏对A版本的道具掉落函数的可操作图文说明410和420,从而增加B版本的道具掉落函数的数据样本数量,以便达到令人满意的灰度测试效果。
通过上述方式,实现了根据玩家的输入指令来确定在测试中执行哪个灰度测试版本号的灰度测试函数,在提高了参与灰度测试的用户体验度和自由度的基础上,使得无需在服务端针对不同的用户群体设置相应的多个控制逻辑,降低了服务端的工作复杂度和工作负荷,总体上进一步提高了灰度测试的效率。
综上,根据本公开的实施方式,基于函数的灰度测试方法的总体流程如图5所示,S510:客户端从服务端接收原始函数和灰度测试函数;S520:之后客户端执行待测试应用程序;S530:当执行到原始函数时检测是否存在与原始函数所属的原始功能的名称对应的灰度测试功能的名称,以及是否存在与原始函数的名称对应的灰度测试函数的名称;S540:如果不存在则执行原始函数;S550:如果存在,则判断是否存在至少一个版本的灰度测试函数;S560:如果仅存在单个版本的灰度测试函数,则执行该灰度测试函数;S570:如果存在多个版本的灰度测试函数,则根据灰度测试版本号执行相应的灰度测试函数。
在一个示例中,如上所述,在本公开实施方式中,不仅可以将具体的函数作为灰度测试的基本替换单位,也可以将功能作为灰度测试的替换单位。鉴于此,原始函数所属的原始功能可以具有原始功能标识,灰度测试函数所属的灰度测试功能可以具有灰度测试功能标识。在执行待测试游戏应用程序的过程中,在执行到原始功能时检测是否存在与该原始功能的标识对应的灰度测试功能的标识,并且在存在与原始功能标识对应的灰度测试功能标识时,执行对应的灰度测试功能并取消执行所述原始功能。检测对应的灰度测试功能标识的方式与检测对应的灰度测试修饰符类似,在此不再赘述。
在一个示例中,前述的查找表func_version还可以包括各灰度测试功能的灰度测试功能版本号,在此情况下,根据接收到的由服务端发送的数据表func_dict,基于灰度测试功能版本号来确定所执行的灰度测试功能。与基于灰度测试版本号确定所执行的灰度测试函数类似地,服务端同样可以针对不同的用户群体下发具有不同版本号的灰度测试功能,并通过配置不同的控制逻辑以及下发相应的控制指令,来指示不同用户群体的客户端根据功能查找表中记录的灰度测试功能版本号执行不同版本的灰度测试功能。此外,当各灰度测试功能仅具有一个灰度测试功能版本号时,则不通过控制逻辑选择要执行的灰度测试功能的版本,也就是说,唯一地执行相应的灰度测试功能。
通过这种方式,同样可以在同一灰度测试进程中针对不同需求的用户群体测试多个版本的功能,从而缩短灰度测试的进程长度和相应的迭代时间,总体上进一步提高了灰度测试的效率。
基于功能的灰度测试方法的总体流程与如图5所示的基于函数的总体流程相似,在此不再赘述。
在示例性实施例中,在通过上述的灰度测试方法完成灰度测试之后,可以将包括灰度测试数据的反馈信息发送给服务端。具体地,例如可以在执行灰度测试的过程中,在客户端的后台通过脚本自动记录灰度测试的结果数据,并生成相应的日志文件;在灰度测试结束后,例如在玩家退出待测试游戏应用程序之后,自动在后台将日志文件作为反馈信息发送给服务端。也可以在灰度测试结束后,在游戏应用程序的退出界面生成调查问卷,由玩家填写自身的感受与建议,并且作为反馈信息发给服务端。本示例性实施例中对此不做特殊限定。
基于上述示例实施方式中的灰度测试方法,在客户端可以采用一一替换执行的方式来执行灰度测试功能或函数,并且可以通过功能或函数的标识或者版本号来确定所要执行的灰度测试功能或函数。相比于相关技术,上述示例实施方式中的灰度测试方法可以不局限于特定的具体用户群体;例如,对于需求混杂的游戏玩家,上述示例实施方式中的灰度测试方法尤其适用。此外,通过上述示例实施方式中的灰度测试方法,一方面,使得无需针对参与灰度测试的客户端采用复杂的判断逻辑和更新逻辑以提供灰度测试的环境,从而降低了客户端的灰度测试开发工作的难度。另一方面,由于无需删除原始版本的功能函数,因此可以最大程度的确保执行应用程序的稳定性,从而减少由于测试版功能函数存在缺陷而可能带来的用户体验降低。再一方面,由于多个版本的测试版功能函数可以并存,因此可以对不同的客户试用群体同时发布多个版本的功能函数,提高灰度测试的覆盖率和效率。
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
进一步的,本示例实施方式中,还提供了一种灰度测试装置。该灰度测试装置可以应用于终端设备。参考图6所示,该灰度测试装置600可以包括收发模块610和处理模块620。其中:
收发模块610可以用于接收待测试应用程序的原始函数以及灰度测试函数;其中,原始函数具有原始修饰符,灰度测试函数具有与原始修饰符对应的灰度测试修饰符;处理模块620可以用于执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符,以及在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。
在本公开的一种示例性实施例中,原始修饰符包括原始函数所属的原始功能的名称和原始函数的名称,灰度测试修饰符包括灰度测试函数所属的灰度测试功能的名称和灰度测试函数的名称;处理模块620还可以用于检测所述原始功能的名称与所述灰度测试功能的名称是否对应,以及检测所述原始函数的名称与所述灰度测试函数的名称是否对应。
在本公开的一种示例性实施例中,处理模块620还可以用于根据服务端下发的灰度测试函数的地址执行灰度测试函数。
在本公开的一种示例性实施例中,当具有至少一个版本的灰度测试函数时,灰度测试修饰符还可以包括灰度测试函数的灰度测试版本号,处理模块620还可以用于根据所述灰度测试版本号确定所执行的灰度测试函数。
在本公开的一种示例性实施例中,处理模块620还可以用于根据用户的输入指令,并基于所述灰度测试版本号确定所执行的灰度测试函数。
在本公开的一种示例性实施例中,原始函数所属的原始功能具有原始功能标识,所述灰度测试函数所属的灰度测试功能具有灰度测试功能标识,处理模块620还可以用于执行待测试应用程序,并在执行到原始功能时检测是否存在与原始功能标识对应的灰度测试功能标识;并且在存在与原始功能标识对应的灰度测试功能标识时,执行对应的灰度测试功能并取消执行原始功能。
在本公开的一种示例性实施例中,当具有至少一个版本的灰度测试功能时,收发模块610还可以用于接收查找表,该查找表包括所述灰度测试功能的灰度测试功能版本号;处理模块620还可以用于根据所述灰度测试功能版本号确定所执行的灰度测试功能。
在本公开的一种示例性实施例中,收发模块610还可以用于向服务端发送包括灰度测试数据的反馈信息。
上述灰度测试装置中各模块或单元的具体细节已经在对应的灰度测试方法中进行了详细的描述,因此此处不再赘述。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的方法。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (11)
1.一种灰度测试的方法,其特征在于,包括:
接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符;
执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符;
在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。
2.如权利要求1所述的灰度测试的方法,其特征在于,所述原始修饰符包括所述原始函数所属的原始功能的名称和所述原始函数的名称,所述灰度测试修饰符包括所述灰度测试函数所属的灰度测试功能的名称和所述灰度测试函数的名称;
所述检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符,包括:
检测是否存在与所述原始功能的名称对应的所述灰度测试功能的名称,以及检测是否存在与所述原始函数的名称对应的所述灰度测试函数的名称。
3.如权利要求1所述的灰度测试的方法,其特征在于,所述执行与所述灰度测试修饰符对应的灰度测试函数,包括:
根据服务端下发的所述灰度测试函数的地址执行所述灰度测试函数。
4.如权利要求1所述的灰度测试方法,其特征在于,当具有至少一个版本的灰度测试函数时,所述灰度测试修饰符还包括所述灰度测试函数的灰度测试版本号;
所述执行与所述灰度测试修饰符对应的灰度测试函数,包括:
根据所述灰度测试版本号确定所执行的灰度测试函数。
5.如权利要求1所述的灰度测试方法,其特征在于,所述原始函数所属的原始功能具有原始功能标识,所述灰度测试函数所属的灰度测试功能具有灰度测试功能标识,所述方法还包括:
执行所述待测试应用程序,并在执行到所述原始功能时检测是否存在与所述原始功能标识对应的灰度测试功能标识;
在存在与所述原始功能标识对应的灰度测试功能标识时,执行对应的灰度测试功能并取消执行所述原始功能。
6.如权利要求5所述的灰度测试方法,其特征在于,当具有至少一个版本的灰度测试功能时,所述方法还包括:
接收查找表,所述查找表包括所述灰度测试功能的灰度测试功能版本号;
所述执行对应的灰度测试功能,包括:
根据所述灰度测试功能版本号确定所执行的灰度测试功能。
7.如权利要求4所述的灰度测试方法,其特征在于,所述执行与所述灰度测试修饰符对应的灰度测试函数,还包括:
根据用户的输入指令,并基于所述灰度测试版本号确定所执行的灰度测试函数。
8.如权利要求1所述的灰度测试方法,其特征在于,所述方法还包括:
向服务端发送包括灰度测试数据的反馈信息。
9.一种灰度测试装置,其特征在于,包括:
收发模块,用于接收待测试应用程序的原始函数以及灰度测试函数;其中,所述原始函数具有原始修饰符,所述灰度测试函数具有与所述原始修饰符对应的灰度测试修饰符;
处理模块,用于执行所述待测试应用程序,并在执行到所述原始函数时检测是否存在与所述原始函数的原始修饰符对应的灰度测试修饰符,以及在存在与所述原始修饰符对应的灰度测试修饰符时,执行与所述灰度测试修饰符对应的灰度测试函数并取消执行所述原始函数。
10.一种电子设备,其特征在于,包括:
存储器;以及
耦合到所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-8任一项所述的灰度测试方法。
11.一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如权利要求1-8任一项所述的灰度测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110696149.8A CN113377659A (zh) | 2021-06-23 | 2021-06-23 | 灰度测试方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110696149.8A CN113377659A (zh) | 2021-06-23 | 2021-06-23 | 灰度测试方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113377659A true CN113377659A (zh) | 2021-09-10 |
Family
ID=77578514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110696149.8A Pending CN113377659A (zh) | 2021-06-23 | 2021-06-23 | 灰度测试方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377659A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150100830A1 (en) * | 2013-10-04 | 2015-04-09 | Unisys Corporation | Method and system for selecting and executing test scripts |
US20160132421A1 (en) * | 2014-11-10 | 2016-05-12 | International Business Machines Corporation | Adaptation of automated test scripts |
US20170132123A1 (en) * | 2015-10-13 | 2017-05-11 | Apptimize, Inc. | Dynamic management and control of test features in native applications |
CN111737128A (zh) * | 2020-06-19 | 2020-10-02 | 北京百度网讯科技有限公司 | 线上测试方法及灰度分流设备、存储介质 |
-
2021
- 2021-06-23 CN CN202110696149.8A patent/CN113377659A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150100830A1 (en) * | 2013-10-04 | 2015-04-09 | Unisys Corporation | Method and system for selecting and executing test scripts |
US20160132421A1 (en) * | 2014-11-10 | 2016-05-12 | International Business Machines Corporation | Adaptation of automated test scripts |
US20170132123A1 (en) * | 2015-10-13 | 2017-05-11 | Apptimize, Inc. | Dynamic management and control of test features in native applications |
CN111737128A (zh) * | 2020-06-19 | 2020-10-02 | 北京百度网讯科技有限公司 | 线上测试方法及灰度分流设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109300179B (zh) | 动画制作方法、装置、终端和介质 | |
CN106685687B (zh) | 灰度发布方法及装置 | |
CN109684188B (zh) | 测试方法和装置 | |
US11736422B2 (en) | Systems and methods for updating creatives generation models | |
CN110321178A (zh) | 附属应用端的启动处理方法、装置、设备及存储介质 | |
CN110211121B (zh) | 用于推送模型的方法和装置 | |
CN104765609A (zh) | 软件关联资源推荐方法、获取方法及相应的装置 | |
CN112015654A (zh) | 用于测试的方法和装置 | |
CN114945817A (zh) | 基于缺陷检测的任务处理方法、装置及设备及存储介质 | |
CN105512910A (zh) | 一种目标用户筛选方法和装置 | |
CN112148582A (zh) | 策略测试方法及装置、计算机可读介质和电子设备 | |
CN109831518A (zh) | 一种地图数据下载方法及装置、计算设备和存储介质 | |
CN116932265A (zh) | 故障模拟处理方法、装置、设备及存储介质 | |
CN113377659A (zh) | 灰度测试方法、装置、电子设备及计算机可读存储介质 | |
CN116090252A (zh) | 基于Matlab自动化生成输入接口模型的方法、装置、设备及介质 | |
CN113934444A (zh) | 灰度发布方法、装置、计算机存储介质和电子设备 | |
CN114048137A (zh) | 一种应用测试方法、装置及电子设备 | |
CN114328215A (zh) | 测试数据部署方法、装置、设备、可读存储介质及产品 | |
CN108287792B (zh) | 用于输出信息的方法和装置 | |
CN112579451A (zh) | 一种基于测试元素排序的测试方法、装置及设备 | |
CN113240088A (zh) | 文本意图识别模型的训练方法 | |
CN112241357A (zh) | 灰度测试的方法、装置、设备和计算机可读介质 | |
CN116594914B (zh) | 测试数据的生成方法、装置、设备及存储介质 | |
CN113468053B (zh) | 一种应用系统的测试方法和装置 | |
CN116627791A (zh) | 测试脚本生成方法、计算机可读存储介质以及电子设备 |
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 |