微服务测试方法及装置
技术领域
本发明实施例涉及信息网络技术领域,尤其涉及一种微服务测试方法及装置。
背景技术
随着信息技术的快速发展,应用软件架构发生了巨大变化,传统的整体式架构转变为新型的微服务架构。
微服务架构是一项在云中部署应用和服务的新技术。微服务是由原有的单个业务系统被拆分为多个可以独立开发、涉及、运行以及维护的小应用。微服务是一种架构风格,例如,一个应用程序需要至少一个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务作为一个小应用,仅关注于完成一件任务并很好地完成该任务。并且,当技术人员对微服务进行升级时,经常对该微服务进行测试,以保证更新的微服务能够与软件应用中其他的微服务正常配合使用。
但是,在现有技术中,对更新后的微服务进行测试时,需构建微服务的测试环境。由于各个微服务之间有较强的调用关系,所以需要有全量的微服务部署至测试环境中。如此将导致以下问题:构建微服务测试环境耗时长,如通常需要2至3天才能搭建好;容易出错和遗漏,如在测试过程中需花费大量时间定位是否是测试环境问题;以及,测试环境不稳定,如常常因为一个微服务的问题导致测试受阻等问题。
发明内容
本发明实施例提供一种微服务测试方法及装置,有效改善了现有技术中微服务测试效率低的情况。
第一方面,本发明实施例提供了一种微服务测试方法,包括:
构建公共环境与项目环境,其中,所述公共环境包含至少一个微服务的当前版本,所述项目环境包含至少一个微服务的更新版本;
在待测试的目标微服务的测试过程中,获取到任意微服务调用请求时,优先在所述项目环境中判断是否存在待调用微服务;
如果所述项目环境中存在待调用微服务,则从所述项目环境中执行调用请求,如果所述项目环境中不存在待调用微服务,则从所述公共环境中执行所述调用请求。
可选的,所述项目环境包含多个,在待测试的目标微服务的测试之前,还包括:
按照应用程序的功能对所述项目环境进行分类;
接收用户的访问请求;
根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务。
可选的,根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务,包括:
基于配置文件,根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务,其中,所述配置文件包含所述公共环境与所述项目环境的存储信息。
可选的,还包括:
根据待测试的目标微服务的测试结果,判断所述目标微服务是否运行正常。
可选的,构建所述公共环境与所述项目环境包括:
基于全部微服务的当前版本构建公共环境;
在获取到更新版本的微服务时,基于更新版本的微服务构建项目环境。
第二方面,本发明实施例还提供了一种微服务测试装置,包括:
环境构建模块,用于构建公共环境与项目环境,其中,所述公共环境包含至少一个微服务的当前版本,所述项目环境包含至少一个微服务的更新版本;
判断模块,用于在待测试的目标微服务的测试过程中,获取到任意微服务调用请求时,优先在所述项目环境中判断是否存在待调用微服务;
调用请求执行模块,用于如果所述项目环境中存在待调用微服务,则从所述项目环境中执行调用请求,如果所述项目环境中不存在待调用微服务,则从所述公共环境中执行所述调用请求。
可选的,还包括:
目标确定模块,用于在待测试的目标微服务的测试之前,按照应用程序的功能对所述项目环境进行分类;接收用户的访问请求;根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务。
可选的,所述目标确定模块具体用于:
基于配置文件,根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务,其中,所述配置文件包含所述公共环境与所述项目环境的存储信息。
可选的,还包括:
运行判断模块,用于根据待测试的目标微服务的测试结果,判断所述目标微服务是否运行正常。
可选的,构建所述公共环境与所述项目环境包括:
基于全部微服务的当前版本构建所述公共环境;
在获取到更新版本的微服务时,基于更新版本的微服务构建所述项目环境。
本发明实施例提供了一种微服务测试方法及装置,通过将微服务的当前版本存储至公共环境,不对公共环境做任何处理,同时将更新版本的微服务存储至项目环境,保证了公共环境中微服务的稳定性,也避免了构建微服务测试环境耗时长,再对目标微服务进行测试的过程中,优先在项目环境中判断是否存在待调用微服务,若存在,则从项目环境中调用待调用微服务,通过设定项目环境与公共环境中微服务调用的优先级,能够实现目标微服务的快速测试,提高了微服务的测试效率。
附图说明
图1A是本发明实施例一中的一种微服务测试方法的流程图;
图1B为本发明实施例提供的一种应用程序测试环境的示意图;
图2A是本发明实施例二中的一种微服务测试方法的流程图;
图2B是本发明实施例二中的一种应用程序测试环境的示意图;
图3是本发明实施例三中的一种微服务测试装置的结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1A为本发明实施例一提供的一种微服务测试方法的流程图,本实施例可适用于各种微服务测试的情况,该方法可以由本发明实施例提供的微服务测试装置来执行,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何提供微服务测试功能的设备中,例如可以是电脑等,如图1A所示,具体包括:
S110、构建公共环境与项目环境。
其中,所述公共环境包含至少一个微服务的当前版本,所述项目环境包含至少一个微服务的更新版本。
目前,信息化时代,智能手机、电脑等电子产品成为人们生活、学习、工作的必备品,该类电子产品中包含多种多样的应用程序。在应用程序使用过程中,会发现许多问题,这些问题有可能导致数据的不完整或者系统的崩溃等,所以需要升级以修正这些bug。另外,当应用程序需要适配、优化、上新功能以及用户界面美观等也需要更新。由于微服务的盛行,应用软件均被拆分为多个独立的小应用,而当应用程序升级时,通常是该应用程序中的一个或几个微服务进行开发。开发后的微服务需要对其进行测试,保证其性能稳定性以及与其他微服务适配,才能将该开发的微服务投入使用。
本实施例中的公共环境可为测试微服务过程中的基础环境,即包含了组成应用程序的所有微服务的当前版本。需要说明的是,公共环境中的每个微服务可与线上微服务保持一致,且数量也与线上微服务的数量。其中,线上微服务可指市场上使用的公开版本,即当前版本。项目环境指的是为了测试新开发的微服务而建立的测试环境,只包含了新开发的微服务。当项目环境为一个时,该项目环境包含了应用程序中各项功能的所有新开发的微服务;当项目环境为多个时,可将项目环境按照应用程序的功能进行分类,各个项目环境中包含至少一个新开发的微服务。其中,新开发的微服务即是微服务的更新版本。
具体的,开发人员可以通过编程来构建公共环境与项目环境。通过构建公共环境与项目环境以对更新版本的微服务进行测试。例如微信,假设微信由400个微服务构成,以实现微信所有功能的正常运行,其中,登录功能需要7个微服务相互协作完成。如果开发人员对微信的登录功能进行优化,且对实现该功能的3个微服务进行了升级,那么将维持微信正常运行的400个微服务存储至公共环境,将维持微信登录功能的3个升级微服务存储至项目环境。
S120、在待测试的目标微服务的测试过程中,获取到任意微服务调用请求时,优先在所述项目环境中判断是否存在待调用微服务。
其中,目标微服务指的是更新版本的微服务。目标微服务的个数可以为一个或者多个,视具体情况而定。调用请求指的是在测试过程中,微服务运行的触发条件。待调用微服务指的是通过调用指令而运行的微服务,即需要参与目标微服务测试过程的微服务。
具体的,当在待测试的目标微服务的测试过程中,若想对目标微服务进行测试,则需要调用与目标微服务相关的其他微服务,通过调用目标微服务与调用与之相关的微服务,才能判断目标微服务是否运行正常。也就是说,若想对目标微服务进行测试,需要将目标微服务放入运行环境中进行测试,若不与其他相关的微服务进行配合,单独的目标微服务是不能够实现测试的。
需要说明的是,由于在待测试的目标微服务的测试过程中,需要对目标微服务与其他相关的微服务逐个调用才能实现一次完整的测试,而测试设备并不清楚应该从公共环境中调用相关应用的当前版本,还是在项目环境中调用相关应用的更新版本,因此,本实施例设定调用优先级,即先从项目环境中判断是否存在待调用微服务。即获取任意微服务调用请求时,需要优先在项目环境中判断是否存在待调用微服务。
S130、如果所述项目环境中存在待调用微服务,则从所述项目环境中执行调用请求,如果所述项目环境中不存在待调用微服务,则从所述公共环境中执行所述调用请求。
其中,项目环境中的待调用微服务指的是与调用请求相对应的更新版本的微服务,公共环境中的待调用微服务指的是与调用请求相对应的当前版本的微服务。
具体的,若调用请求相对应的微服务在项目环境中存在待调用微服务,则可以在项目环境中执行调用请求,调用项目环境中与调用请求相对应的更新版本的微服务;若调用请求相对应的微服务在项目环境中不存在待调用微服务,则可以在公共环境中执行调用请求,调用公共环境中与调用请求相对应的当前版本的微服务。
例如上述微信,对登录功能的3个升级微服务进行测试,那么该3个升级微服务则为目标微服务。在测试过程中,当调用到该3个升级微服务中任意一个时,由于在项目环境中存在与调用请求相对应的更新版本的微服务,因此则可在项目环境中执行调用请求。当调用到其他四个未更新版本(当前版本)的微服务时,由于在项目环境中不存在与调用请求相对应的未更新版本的微服务,因此则可在公共环境中执行调用请求。
本实施例通过将微服务的当前版本存储至公共环境,不对公共环境做任何处理,同时将更新版本的微服务存储至项目环境,保证了公共环境中微服务的稳定性,也避免了构建微服务测试环境耗时长,再对目标微服务进行测试的过程中,优先在项目环境中判断是否存在待调用微服务,若存在,则从项目环境中调用待调用微服务,通过设定项目环境与公共环境中微服务调用的优先级,能够实现目标微服务的快速测试,提高了微服务的测试效率。
示例性的,所述方法还包括:根据待测试的目标微服务的测试结果,判断所述目标微服务是否运行正常。
其中,测试结果能够表示出目标微服务是否正常运行。若运行,测试结果则显示运行正常的信息,例如可为显示为运行正常的文字或者符号。若运行不正常,则直接报错,例如可显示出具体哪个微服务出现错误。开发人员可以通过测试结果判断目标微服务是否运行正常。
本实施例在目标微服务测试过程中设定测试结果,能够具体定位出存在问题的微服务,为开发人员提供了修改开发的方向,避免了开发人员逐个排除问题微服务的时间的浪费,还提高微服务的开发效率。
示例性的,构建所述公共环境与所述项目环境包括:基于全部微服务的当前版本构建公共环境;在获取到更新版本的微服务时,基于更新版本的微服务构建项目环境。
其中,由于公共环境包含微服务的当前版本,因此,开发人员可以获取关于该应用程序中包含的所有线上版本的微服务。项目环境是随着微服务的开发,来构建的测试环境。例如微信,开发人员对登录功能进行开发,且有更新版本的微服务则构建关于登录的项目环境;开发人员对注册功能进行开发,且有更新版本的微服务则构建关于注册的项目环境;开发人员对支付功能进行开发,且有更新版本的微服务则构建关于支付的项目环境,如图1B所示。
图1B为本发明实施例提供的一种应用程序测试环境的示意图,包括:公共环境10、项目环境11、项目环境12、项目环境13、Servcice1微服务的当前版本14以及Servcice1微服务的更新版本15。具体例如,上述微信的构建的公共环境10中包含Y个当前版本的微服务,若开发人员对微信的登录、注册以及支付进行更新,则对开发后更新版本的微服务构建关于登录的项目环境11,构建关于注册的项目环境12以及构建关于支付的项目环境13。其中,公共环境10中包含了Servcice1微服务的当前版本14,项目环境11中包含了Servcice1微服务的更新版本15。若将Servcice1微服务的更新版本15作为目标微服务,项目环境11与项目环境12中均涉及Servcice1微服务的更新版本15,则分别测试微信的登录与注册功能,以对Servcice1微服务的更新版本15进行测试。只要其中一方测试出错,则表明Servcice1微服务的更新版本15不能使用。
具体例如,当测试微信的登录功能,当获取Servcice1微服务的调用请求时,优先判断项目环境11中是否存在Servcice1微服务的更新版本15,由于项目环境11中存在了Servcice1微服务的更新版本15,因此直接调用项目环境11中Servcice1微服务的更新版本15,否则调用公共环境10中Servcice1微服务的当前版本14。
本实施例通过构建公共环境与项目环境,项目环境包含更新版本的微服务,实现了对应用程序中各个功能的单独测试,同时节省了构建整个测试环境的时间,提高微服务测试的效率。
实施例二
图2A为本发明实施例二提供的一种微服务测试方法的流程图,本实施例在上述实施例的基础上还包括:按照应用程序的功能对所述项目环境进行分类;接收用户的访问请求;根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务。参考图2A,本实施例提供的方法具体可以包括:
S210、构建公共环境与项目环境。
S220、按照应用程序的功能对所述项目环境进行分类。
具体的,由于一个应用程序中包含多项功能,因此,可以按照应用程序的功能对项目环境进行分类,如此一来,在对目标微服务进行测试时,只需在与该功能相关的目标项目环境中调用即可。例如微信,微信可以包括登录、注册、支付、聊天以及发送朋友圈图片等功能,因此可以根据各个功能分别建立项目环境。其中,每个项目环境存储的待调用微服务仅与实现微信中的某一个功能有关。
S230、接收用户的访问请求。
其中,访问请求指的是触发目标微服务测试的触发条件,例如微信,访问请求可以为登录请求、注册请求、支付请求、发送聊天文字请求以及发送朋友圈图片请求等。测试设备当接收到用户登录的访问请求时,则触发登录相关程序的运行;当接收到用户注册的访问请求时,则触发注册相关程序的运行。
S240、根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务。
由于开发人员通常是对应用程序的多项功能进行开发,即含有多个功能相关的更新版本的微服务。因此,在对目标微服务进行测试时,先根据用户的访问请求的属性信息确定与目标微服务相对应的目标项目环境以及与所述目标微服务相关的第一微服务。其中,属性信息可为用户的访问入口等信息标识。
其中,目标项目环境为与检测目标微环境有关的测试环境。第一微服务为完成微服务测试需要调用的微服务,并且,第一微服务与用户请求的访问请求有关。
需要说明的是,目标微服务的测试需要调用目标微服务所在调用链中包含的每个微服务。其中,调用链为程序人员为了实现应用程序的某项功能而预先编写的相关微服务的调用路径,包含按照调用顺序排列的多个微服务。因此,当接收到用户的访问请求后,可以根据访问请求的属性信息确定该调用的第一微服务,在调用完第一微服务之后,继而调用下一个微服务,以此类推。
由于目标微服务可以应用于应用程序的多项功能,因此,若完成一个目标微服务的测试,需要使用到该目标微服务的多项功能均测试正常,即要基于工作人员预先编程的关于该目标微服务所在的所有调用链,逐一调用微服务进行测试。并且由于实现微信的某个功能需要按程序的顺序来,因此调用链中的微服务也是根据调用顺序依次排列的。例如微信,测试其注册功能,可以根据注册访问请求直接调用第一微服务,且通过调用第一微服务后能够调用到目标微服务。并且,调用链中的目标微服务可以为一个或多个。例如,若微信中注册功能的调用链为Service1-Service6-Service5,其中,目标微服务为Service1和Service5,那么在获取访问请求后,先获取Service1微服务的调用请求以调用Service1微服务运行,再根据Service1微服务获取Service6微服务的调用请求以调用Service6微服务运行,最后根据Service6微服务获取Service5微服务的调用请求以调用Service5微服务运行。
具体的,确定目标项目环境与第一微服务可以根据用户访问请求的属性信息确定,如图2B所示。图2B为本发明实施例提供的一种应用程序测试环境的示意图,包括:公共环境20、项目环境21、项目环境22、项目环境23、Servcice1微服务的当前版本24、Servcice1微服务的更新版本25,以及访问入口212、访问入口222和访问入口232分别为项目环境21、项目环境22和项目环境23相对应的访问入口。
具体例如,图2B为关于微信构建的公共环境与项目环境,访问入口212为微信登录功能的访问入口,项目环境21为微信登录功能构建的测试环境,Servcice1微服务的更新版本25为目标微服务。当开发人员对Servcice1微服务的更新版本25进行测试时,需要进行登录操作以触发访问请求,由于该操作为通过访问入口212触发的操作,因此通过访问入口212的属性信息(如访问入口标识)即可确定目标项目环境为项目环境21,以及确定与登录操作相关的第一微服务例如可以为Service1。
示例性的,根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务,包括:基于配置文件,根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务,其中,所述配置文件包含所述公共环境与所述项目环境的存储信息。
其中,配置文件可为微服务的框架,包含了公共环境与项目环境的存储信息。当获取到开发人员的访问请求后,可以在配置文件中对访问请求的来源进行判断,例如通过访问请求的访问入口确定目标项目环境以及与所述目标微服务相关的第一微服务。以及,由于配置文件包含了公共环境与项目环境的存储信息,因此通过配置文件可以判断目标微服务应该从项目环境中调用还是公共环境中调用。
本实施例通过设定配置文件,可以直接确定目标微服务的调用去向,提高了微服务测试效率。
S250、在待测试的目标微服务的测试过程中,获取到任意微服务调用请求时,优先在所述项目环境中判断是否存在待调用微服务。
S260、如果所述项目环境中存在待调用微服务,则从所述项目环境中执行调用请求,如果所述项目环境中不存在待调用微服务,则从所述公共环境中执行所述调用请求。
如上述示例图2B,与登录操作相关的调用链Service1-Service2。通过配置文件确定Service1微服务的调用环境为项目环境21,则直接在项目环境21中执行调用请求,调用Servcice1微服务的更新版本25;然后,通过配置文件确定Service2微服务的调用环境为公共环境20,则直接在公共环境20中执行调用请求,调用Servcice1微服务的当前版本24。
当微服务数量较多时,需要多台服务器才能搭建一个测试环境,导致资源利用率低,本实施例通过按照应用程序的功能对项目环境进行分类,避免了所有微服务构建一个测试环境的问题,也避免了将所有更改版本的微服务存储至一个项目环境容易出错的问题,并且,由于各个项目环境只存储与一个功能相关的更新版本的微服务,因此也提高了测试的运行速度。
实施例三
图3所示为本发明实施例三提供的一种微服务测试方法的装置的结构示意图。本实施例可适用于各种微服务测试的情况,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何提供微服务测试功能的设备中,例如可以是电脑,如图3所示,具体包括:环境构建模块31、判断模块32和调用请求执行模块33。
环境构建模块31,用于构建公共环境与项目环境,其中,所述公共环境包含至少一个微服务的当前版本,所述项目环境包含至少一个微服务的更新版本;
判断模块32,用于在待测试的目标微服务的测试过程中,获取到任意微服务调用请求时,优先在所述项目环境中判断是否存在待调用微服务;
调用请求执行模块33,用于如果所述项目环境中存在待调用微服务,则从所述项目环境中执行调用请求,如果所述项目环境中不存在待调用微服务,则从所述公共环境中执行所述调用请求。
本发明实施例提供了一种微服务测试装置,通过将微服务的当前版本存储至公共环境,不对公共环境做任何处理,同时将更新版本的微服务存储至项目环境,保证了公共环境中微服务的稳定性,也避免了构建微服务测试环境耗时长,再对目标微服务进行测试的过程中,优先在项目环境中判断是否存在待调用微服务,若存在,则从项目环境中调用待调用微服务,通过设定项目环境与公共环境中微服务调用的优先级,能够实现目标微服务的快速测试,提高了微服务的测试效率。
在上述实施例基础上,还包括:
目标确定模块,用于在获取所述待测微服务的调用链之前,按照应用程序的功能对所述项目环境进行分类;接收用户的访问请求;根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务。
在上述实施例基础上,所述目标确定模块具体用于:
基于配置文件,根据所述访问请求的属性信息确定目标项目环境以及与所述目标微服务相关的第一微服务,其中,所述配置文件包含所述公共环境与所述项目环境的存储信息。
在上述实施例基础上,还包括:
运行判断模块,用于根据待测试的目标微服务的测试结果,判断所述目标微服务是否运行正常。
在上述实施例基础上,构建所述公共环境与所述项目环境包括:
基于全部微服务的当前版本构建所述公共环境。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。