一种可测性优化方法、装置、电子设备及存储介质与流程

文档序号:24305880发布日期:2021-03-17 00:58阅读:146来源:国知局
一种可测性优化方法、装置、电子设备及存储介质与流程

本申请中一个或多个实施例涉及软件测试技术领域,尤其涉及一种可测性优化方法、装置、电子设备及存储介质。



背景技术:

现有技术中,在线下环境测试的过程中,因为测试环境一般由测试或者开发人员自行维护,且其稳定性不会影响外部的真实用户,因此即使存在可测性的问题,也可以通过重新修改代码绕过相关业务逻辑或者通过mock等多种方式解决。常见的可测性问题比如多客户端登录时的“互踢”,测试环境一般通过直接去掉相关逻辑的方式来绕过,从而造成线上的测试成本高,代码侵入性高且测试效率低下的问题。



技术实现要素:

有鉴于此,本申请中一个或多个实施例的目的在于提出一种可测性优化方法、装置、电子设备及存储介质,以解决现有技术存在的上述至少一个问题。

基于上述目的,本申请中一个或多个实施例提供了一种可测性优化方法,包括:

获取逻辑单元的业务逻辑开关状态和名单信息;所述业务逻辑开关状态与请求用户对应;

判断所述逻辑单元的业务逻辑开关状态是否为开启状态;

若是,则判断所述请求用户是否符合所述逻辑单元的名单信息;

若是,则对所述逻辑单元进行可测性改造。

可选的,所述获取逻辑单元的业务逻辑开关状态和名单信息,之前还包括:

获取原有逻辑单元;

将具有可测性问题的所述原有逻辑单元确定为所述逻辑单元。

可选的,所述获取逻辑单元的业务逻辑开关状态和名单信息,之前还包括:

创建业务逻辑开关和所述名单信息;所述业务逻辑开关关联有所述业务逻辑开关状态;

将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元。

可选的,所述将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元,具体包括:

创建加载线程;

根据预设时间获取并更新所述业务逻辑开关状态和所述名单信息;

将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元。

可选的,所述将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元,具体包括:

通过卡夫卡分布式发布订阅消息系统将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元。

可选的,所述逻辑单元,包括:原有逻辑;

所述判断所述逻辑单元的业务逻辑开关状态是否为开启状态,之后还包括:

若否,则执行所述原有逻辑。

可选的,所述判断所述请求用户是否符合所述逻辑单元的名单信息,之后还包括:

若否,则执行所述原有逻辑。

基于同一发明构思,本申请中一个或多个实施例还提出了一种可测性优化装置,包括:

获取模块,被配置为获取逻辑单元的业务逻辑开关状态和名单信息;所述业务逻辑开关状态与请求用户对应;

第一判断模块,被配置为判断所述逻辑单元的业务逻辑开关状态是否为开启状态;

第二判断模块,被配置为若是,则判断所述请求用户是否符合所述逻辑单元的名单信息;

执行模块,被配置为若是,则对所述逻辑单元进行可测性改造。

基于同一发明构思,本申请中一个或多个实施例还提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一项所述的可测性优化方法。

基于同一发明构思,本申请中一个或多个实施例还提出了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述任意一项所述的可测性优化方法。

从上面所述可以看出,本申请中一个或多个实施例提供的一种可测性优化方法,包括:获取逻辑单元的业务逻辑开关状态和名单信息;所述业务逻辑开关状态与请求用户对应;判断所述逻辑单元的业务逻辑开关状态是否为开启状态;若是,则判断所述请求用户是否符合所述逻辑单元的名单信息;若是,则对所述逻辑单元进行可测性改造。本申请提供的方法能够通过判断业务逻辑开关状态和请求用户是否符合名单信息,解决可测性问题,同时能够灵活对逻辑单元进行可测性改造,通过在业务逻辑开关和名单信息上进行对应的配置修改就能够达到通用的可测性要求,有效地提升了测试效率,且不需要代码变更或服务重启便能够将业务逻辑开关状态和名单信息的变更热加载至逻辑单元,避免对服务稳定性的影响。

附图说明

为了更清楚地说明本申请中一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请中一个或多个实施例中一种可测性优化方法的流程图;

图2为本申请中一个或多个实施例中一种可测性优化方法的应用场景示意图;

图3为本申请中一个或多个实施例中一种可测性优化装置的结构示意图;

图4为本申请中一个或多个实施例中一种电子设备的结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

需要说明的是,除非另外定义,本申请中一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本申请中一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

如背景技术部分所述,现有技术中,在线下环境测试的过程中,因为测试环境一般由测试或者开发人员自行维护,且其稳定性不会影响外部的真实用户,因此即使存在可测性的问题,也可以通过重新修改代码绕过相关业务逻辑或者通过mock等多种方式解决。但申请人通过研究发现常见的可测性问题比如多客户端登录时的“互踢”,测试环境一般通过直接去掉相关逻辑的方式来绕过,但是在生产环境测试过程中,需要保持合理的业务逻辑及安全考虑,不能随意绕过或者通过mock的方式解决,因此现有技术造成了线上的测试成本高,代码侵入性高且测试效率低下的问题。

申请人通过研究发现现有技术中,常见方案有四种,方案一:针对测试环境,代码构造直接绕过相关判断逻辑,如“多客户端登录互踢”场景,直接把“互踢”逻辑注释掉;方案二:针对测试环境,通过mock方式解决,例如将“多客户端登录互踢”场景中的“互踢”逻辑替换为“不互踢”逻辑;方案三:针对线上环境,放弃并行自动化执行的手段,串行单设备逐个覆盖;方案四:针对线上环境,通过配置线上白名单的方式解决,但是每次线上白名单变更,都需要服务重启来重新加载白名单。但是现有技术的方案通用性差,在线上和线下并不通用,线下可以实施的逻辑绕过及利用mock,并不适用于线上,线上的串行覆盖,在线下执行效率又很低;不管是通过逻辑绕过的方式,还是通过mock方式,都涉及到原有代码的侵入及改造,对原有代码的侵入较高;线上环境由于可测性问题,串行单设备覆盖效率低下;如果不慎将线下代码的侵入直接发版到线上,将会对线上业务造成影响;同时,如果采用配置线上白名单的方式,每次重新加载白名单需要重启,重启过程可能会造成服务的不可用,也会影响服务的sla(也可称为服务等级协议),测试成本也会变高且灵活性差。正因如此,本申请提供的方法通过获取逻辑单元的业务逻辑开关状态和名单信息,判断业务逻辑单元的业务逻辑开关状态是否为开启状态以及请求用户是否符合名单信息,如果业务逻辑开关状态为开启状态且请求用户符合名单信息,则对逻辑单元进行可测性改造,从而控制请求用户是否需要执行逻辑单元的原有逻辑,还是在测试环境或生产环境中避开原有逻辑,从而提高了测试效率,且不需要代码变更或服务重启便能够将业务逻辑开关状态和名单信息的变更热加载至逻辑单元,避免对服务稳定性的影响。

以下,通过具体的实施例进一步详细说明本公开的技术方案。

参考图1,因此本申请中一个或多个实施例提供的一种可测性优化方法,具体包括以下步骤:

s101:获取逻辑单元的业务逻辑开关状态和名单信息;所述业务逻辑开关状态与请求用户对应。

本实施例中,需要获取逻辑单元的业务逻辑开关状态和名单信息,其中,业务逻辑开关状态与请求用户相对应。具体地,需要先梳理出逻辑单元,针对每个逻辑单元制定业务逻辑开关,并维护与业务逻辑开关对应的名单信息,通过微服务接口提供业务逻辑开关以及名单信息的查询。

在一些可选的实施方式中,梳理出逻辑单元,需要在获取逻辑单元的业务逻辑开关状态和名单信息之前,获取原有逻辑单元,通过可测性问题驱动的方式进行逻辑单元的梳理,获取到所有的可测性问题,从原有逻辑单元中梳理出能够影响可测性的原有逻辑单元,将具有可测性问题的原有逻辑单元确定为逻辑单元。

需要说明的是,例如多客户端登录互踢的这个可测性问题,其关键的判断点是识别到了多客户端登录,进而执行互踢的逻辑,因此在这个场景中,需要在多客户端登录的判断分支中定制业务逻辑开关,即加入业务逻辑开关的获取逻辑。而业务逻辑开关的获取则通过开关及名单管理系统提供的微服务接口来获取,其中,开关及名单管理微服务则为请求用户提供了一个开关及名单的管理平台,请求用户可以在该平台配置可测性改造开关,同时针对每个业务逻辑开关配置对应的名单列表,同时能够提供一个微服务接口,以供调用方能够获取到对应的开关和名单配置。

在一些可选的实施方式中,参考图2,在获取逻辑单元的业务逻辑开关状态和名单信息之前,为了使名单信息及业务逻辑开关状态更新时不需要重启服务,需要创建缓存的热加载逻辑。需要创建业务逻辑开关和名单信息,每个业务逻辑开关均关联有该业务逻辑开关的业务逻辑开关状态,然后为业务逻辑开关状态配置名单信息,具体地,创建业务逻辑开关打开状态的名单信息,建立业务逻辑开关及名单信息的映射,通过业务逻辑开关及名单管理系统提供api接口供业务逻辑开关及名单信息的添加、删除及修改,将业务逻辑开关状态及名单信息存储在底层,当业务逻辑开关和名单信息更新时,热加载至缓存,供逻辑单元获取。

需要说明的是,将业务逻辑开关状态和名单信息热加载至逻辑单元,可以通过创建单独的线程,根据预设时间获取并更新业务逻辑开关状态和名单信息,例如,预设时间可以为一分钟,每分钟获取并更新业务逻辑开关状态和名单信息,判断获取到的业务逻辑开关状态和名单信息与缓存中已经存储的业务逻辑开关状态和名单信息是否相同,若相同,则不需要将获取到的业务逻辑开关状态和名单信息热加载至逻辑单元;若不相同,则将获取到的业务逻辑开关状态和名单信息加载至缓存中,供程序使用,以便通过缓存实现将获取到的业务逻辑开关状态和名单信息热加载至逻辑单元。

需要说明的是,将业务逻辑开关状态和名单信息热加载至逻辑单元,还可以通过卡夫卡分布式发布订阅消息系统将业务逻辑开关状态和名单信息热加载至逻辑单元,具体地,当业务逻辑开关及名单管理系统中的业务逻辑开关状态及名单信息配置更新时,业务逻辑开关及名单管理系统发送一个异步消息至卡夫卡分布式发布订阅消息系统,而本申请提供的方法通过订阅消费卡夫卡消息,从而通过卡夫卡分布式发布订阅消息系统完成缓存中数据的更新,即将业务逻辑开关状态和名单信息热加载至逻辑单元。

s102:判断所述逻辑单元的业务逻辑开关状态是否为开启状态。

s103:若是,则判断所述请求用户是否符合所述逻辑单元的名单信息。

本实施例中,参考图2,通过步骤s102判断逻辑单元的业务逻辑开关状态是否为开启状态,若是,则通过步骤s103进一步判断请求用户是否符合逻辑单元的名单信息。具体地,原有逻辑单元,包括:原有逻辑,当通过步骤s102判断逻辑单元的业务逻辑开关状态是否为开启状态后,若否,则执行原有逻辑,例如在多客户端登录互踢的可测性问题中,若逻辑单元的业务逻辑开关状态不为开启状态,则识别到多客户端登录后,执行原有逻辑,即执行互踢逻辑。

需要理解的是,在判断请求用户是否符合逻辑单元的名单信息之前,还需要获取在步骤s102中被判断的业务逻辑开关对应的名单信息,将该业务逻辑开关对应的名单信息作为逻辑单元的名单信息,进而通过步骤s103判断请求用户是否符合逻辑单元的名单信息,即判断请求用户是否在该业务逻辑开关对应的名单信息中。

s104:若是,则对所述逻辑单元进行可测性改造。

本实施例中,参考图2,在步骤s103判断请求用户是否符合逻辑单元的名单信息后,若是,则对逻辑单元进行可测性改造。具体地,若请求用户符合逻辑单元的名单信息,则不执行原有逻辑,对原有逻辑进行改造或跳过原有逻辑,从而实现对逻辑单元进行可测性改造。例如,在多客户端登录互踢的可测性问题中,若请求用户符合逻辑单元的名单信息,则可以跳过原有逻辑中的互踢逻辑,实现对逻辑单元的可测性改造。

可以理解的是,若请求用户不符合逻辑单元的名单信息,即请求用户不在逻辑单元的名单信息内,则执行原有逻辑。例如,在多客户端登录互踢的可测性问题中,若请求用户不符合逻辑单元的名单信息,则执行原有逻辑中的互踢逻辑。

在一些可选的实施方式中,业务流程中很多场景都会有发送短信验证法、输入图片验证码、依赖人脸识别等流程,而在生产环境执行自动化时,由于自动化过程不会有人工介入,所以存在获取短信验证码、图片验证码以及人脸识别不便的问题,导致自动化无法开展或者开展难度大的问题,而利用本申请提供的方法能够在生产环境或测试环境中,有效地解决上述问题,降低了线上自动化的实施门槛。

需要说明的是,在实际工作中,部分业务可能会存在时间窗口的限制,比如特定的提现窗口,例如只能周二和周四发起提现,再比如空中客服的接通只能工作日时间接通等,这些时间窗口的限制,都会导致发版进行生产回归时,无法覆盖到这些流程,而通过本申请提供的可测性优化方法,能够通过多步判断灵活选择绕过此类限制,保证了生产的可测性。

从上面所述可以看出,本申请中一个或多个实施例提供的一种可测性优化方法,包括:获取逻辑单元的业务逻辑开关状态和名单信息;所述业务逻辑开关状态与请求用户对应;判断所述逻辑单元的业务逻辑开关状态是否为开启状态;若是,则判断所述请求用户是否符合所述逻辑单元的名单信息;若是,则对所述逻辑单元进行可测性改造。本申请提供的方法能够通过判断业务逻辑开关状态和请求用户是否符合名单信息,解决可测性问题,同时能够灵活对逻辑单元进行可测性改造,通过在业务逻辑开关和名单信息上进行对应的配置修改就能够达到通用的可测性要求,有效地提升了测试效率,且不需要代码变更或服务重启便能够将业务逻辑开关状态和名单信息的变更热加载至逻辑单元,避免对服务稳定性的影响。

可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。

需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。

需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

基于同一发明构思,本申请中一个或多个实施例还提出了一种可测性优化装置,参考图3,所述可测性优化装置包括:

获取模块,被配置为获取逻辑单元的业务逻辑开关状态和名单信息;所述业务逻辑开关状态与请求用户对应;

第一判断模块,被配置为判断所述逻辑单元的业务逻辑开关状态是否为开启状态;

第二判断模块,被配置为若是,则判断所述请求用户是否符合所述逻辑单元的名单信息;

执行模块,被配置为若是,则对所述逻辑单元进行可测性改造。

在一些可选的实施方式中,所述获取逻辑单元的业务逻辑开关状态和名单信息,之前还包括:

获取原有逻辑单元;

将具有可测性问题的所述原有逻辑单元确定为所述逻辑单元。

在一些可选的实施方式中,所述获取逻辑单元的业务逻辑开关状态和名单信息,之前还包括:

创建业务逻辑开关和所述名单信息;所述业务逻辑开关关联有所述业务逻辑开关状态;

将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元。

在一些可选的实施方式中,所述将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元,具体包括:

创建加载线程;

根据预设时间获取并更新所述业务逻辑开关状态和所述名单信息;

将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元。

在一些可选的实施方式中,所述将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元,具体包括:

通过卡夫卡分布式发布订阅消息系统将所述业务逻辑开关状态和所述名单信息热加载至所述逻辑单元。

在一些可选的实施方式中,所述逻辑单元,包括:原有逻辑;

所述判断所述逻辑单元的业务逻辑开关状态是否为开启状态,之后还包括:

若否,则执行所述原有逻辑。

在一些可选的实施方式中,所述判断所述请求用户是否符合所述逻辑单元的名单信息,之后还包括:

若否,则执行所述原有逻辑。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的可测性优化方法。

图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器410、存储器420、输入/输出接口430、通信接口440和总线450。其中处理器410、存储器420、输入/输出接口430和通信接口440通过总线450实现彼此之间在设备内部的通信连接。

处理器410可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器420可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器420中,并由处理器410来调用执行。

输入/输出接口430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触控屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线450包括一通路,在设备的各个组件(例如处理器410、存储器420、输入/输出接口430和通信接口440)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器410、存储器420、输入/输出接口430、通信接口440以及总线450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

上述实施例的电子设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的可测性优化方法。

本实施例的非暂态计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的可测性优化方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请中一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。

本申请中一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请中一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1