一种兼容性测试方法及装置
技术领域
本申请涉及计算机软件技术领域,特别涉及一种兼容性测试方法及装置。
背景技术
随着软件技术的发展和用户的需求,软件中的服务需要不断更新。现有的集成了多个服务的***通常具有分布式、***多、交互关系复杂等特点。当***中某一个或多个服务发布新版本的代码后,***中可能会同时包含该服务不同版本的服务代码,为了保证随机访问新老版本代码时***的稳定性,通常需要对包含不同版本代码的服务进行兼容性测试。
现有的兼容性测试方法通常包括:测试人员编写测试脚本并发起待测请求。测试人员为测试***手动配置兼容性测试的服务调用链路参数,例如包括服务名称等。测试人员为测试***手动部署一种版本组合的***代码。运行所述测试脚本或者发起测试请求,得到测试结果,查看所述测试结果并进行分析。测试人员为所述测试***重新手动部署另一种版本组合的***代码,再次运行所述测试脚本或发起测试请求进行另一中版本组合的***代码的兼容性测试。
在实现本申请过程中,发明人发现现有技术中至少存在如下问题:现有的兼容性测试方法需要手动部署并切换需要测试的不同版本组合的***代码,在软件***代码复杂的情况下,需要测试的***代码的版本组合较多,手工切换并部署代码版本组合会浪费大量时间,兼容性测试的执行效率较低。
发明内容
本申请实施例的目的是提供一种兼容性测试方法及装置,以提高兼容性测试的执行效率。
为解决上述技术问题,本申请实施例提供一种兼容性测试方法及装置是这样实现的:
一种兼容性测试方法,包括:获取测试参数;所述测试参数包括:兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本;根据所述测试参数确定代码版本组合;获取待测服务器的IP地址,根据预设的IP地址与服务代码版本的对应关系,确定与所述代码版本组合对应的目标服务器;对所述目标服务器进行兼容性测试。
优选方案中,所述代码版本组合包括:所述兼容性调用服务中服务代码版本的所有组合中的一种或多种。
优选方案中,所述代码版本组合根据预设规则选取所述兼容性调用服务中服务代码版本的所有组合中的一种或多种。
优选方案中,所述根据预设的IP地址与服务代码版本的对应关系确定目标服务器,具体包括:根据所述代码版本组合及所述对应关系,确定每一种代码版本组合对应的IP地址,所述IP地址对应的服务器确定为目标服务器。
优选方案中,所述测试参数还包括:待测用例脚本;所述待测用例脚本中包括一个或多个测试用例。
优选方案中,对所述目标服务器进行兼容性测试,具体包括:根据所述待测用例确定所述目标服务器的测试路径列表,根据所述测试路径列表发送所述待测用例脚本至所述目标服务器进行兼容性测试。
优选方案中,所述测试路径列表包括一个或多个服务器测试路径。
优选方案中,根据所述待测用例确定所述目标服务器的测试路径列表,包括:根据所述测试用例对应的调用服务名称的顺序,确定调用所述目标服务器的顺序,所述调用目标服务器的顺序为测试路径。
优选方案中,所述兼容性测试方法还包括:校验所述获取的待测服务器的IP地址的合法性;相应地,所述确定目标服务器包括:根据所述合法性校验结果确定待测目标服务器,根据预设的IP地址与服务代码版本的对应关系确定待测目标服务器中的目标服务器。
优选方案中,所述校验所述获取的待测服务器的IP地址的合法性,包括:获取IP地址列表,校验所述IP地址列表中是否包含所述待测服务器的IP地址,若包含,所述待测服务器的IP地址为合法。
一种兼容性测试装置,包括:参数获取单元、代码版本组合确定单元、目标服务器确定单元和测试单元;其中,所述参数获取单元,用于获取测试参数;所述测试参数包括:兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本;所述测试参数还包括待测用例脚本;所述代码版本组合确定单元,用于根据所述参数获取单元中的测试参数确定代码版本组合;所述目标服务器确定单元,用于获取待测服务器的IP地址,根据预设的IP地址与服务代码版本的对应关系,确定与所述代码版本组合确定单元中的代码版本组合对应的目标服务器;所述测试单元,用于对所述目标服务器确定单元中确定的目标服务器进行兼容性测试。
优选方案中,所述目标服务器确定单元包括:待测服务器IP地址获取单元和服务器确定单元;其中,所述待测服务器IP获取单元,用于获取待测服务器的IP地址;所述服务器确定单元,用于根据预设的IP地址与服务代码版本的对应关系确定所述待测服务器IP获取单元中待测服务器中的目标服务器。
优选方案中,所述目标服务器确定单元还包括IP地址验证单元;所述IP地址验证单元,用于获取IP地址列表,根据所述IP地址列表验证所述待测服务器IP获取单元中待测服务器IP地址的合法性;相应地,所述服务器确定单元,用于根据预设的IP地址与服务代码版本的对应关系确定所述IP地址验证单元中合法的待测服务器中的目标服务器。
优选方案中,所述兼容性测试单元包括:测试列表构建单元和测试用例发送执行单元;其中,所述测试列表构建单元,用于根据所述待测用例,确定所述目标服务器的测试路径列表;所述测试路径列表包括一个或多个服务器测试路径;所述测试用例发送执行单元,用于根据所述测试列表构建单元确定的测试列表发送所述待测用例脚本至所述目标服务器进行兼容性测试。
由以上本申请实施例提供的技术方案可见,本申请实施例公开的一种兼容性测试方法和装置,根据获取的所述兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本,自动部署代码版本组合。根据预设的IP地址与服务代码版本的对应关系,可以快速地确定出与所述代码版本组合对应的目标服务器。根据获取的测试用例可以自动构建测试列表。因此,本申请实施例公开的兼容性测试方法和装置不需要手工部署和切换代码版本组合,可以提高兼容性测试的执行效率,同时可以保证部署过程中不会发生遗漏某一调用路径的情况,从而提高兼容性测试的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请兼容性测试方法一个实施例的流程图;
图2是本申请兼容性测试装置一个实施例的模块图;
图3是本申请兼容性测试装置实施例中目标服务器确定单元的模块图;
图4是本申请兼容性测试装置实施例中测试单元的模块图。
具体实施方式
本申请实施例提供一种兼容性测试方法及装置。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1是本申请兼容性测试方法一个实施例的流程图。如图1所示,所述兼容性测试方法可以包括:
S100:获取测试参数;所述测试参数包括:兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本。
兼容性测试装置可以获取测试参数,所述测试参数可以包括:兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本。
所述兼容性调用服务的名称可以用于表示需要进行兼容性测试的服务的名称。
例如,某一软件可以包括服务A、B、C和D,所述兼容性调用服务的名称可以包括:服务A、服务B和服务D,可以表示需要测试服务A、服务B和服务D的兼容性。
所述兼容性调用服务中服务的代码版本可以用于表述所述兼容性调用服务中需要测试的服务所包括的代码版本。例如,服务A可以包括新版本代码和老版本代码,服务B可以包括老版本代码。
所述测试参数还可以包括:待测用例脚本等信息。所述待测用例脚本可以用于测试需要测试的服务。所述待测用例脚本中可以包括一个或多个测试用例。
S200:根据所述测试参数确定代码版本组合。
兼容性测试装置根据所述兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本,可以确定代码版本组合。
所述代码版本组合可以包括:所述兼容性调用服务中服务代码版本的所有组合中的一种或多种。所述代码版本组合可以根据预设规则选取所述兼容性调用服务中服务代码版本的所有组合中的一种或多种,例如可以根据用户预设的信息选取所述兼容性调用服务中服务代码版本的所有组合中的一种或多种。
例如,所述服务A包括新版本代码和老版本代码,所述服务B包括老版本代码,所述服务D包括新版本代码和老版本代码。那么,所述代码版本组合可以包括:“新A、老B和新D”、“新A、老B和老D”、“老A、老B和新D”,以及“老A、老B和老D”。所述代码版本组合也可以是“新A、老B和新D”。所述代码版本组合可以根据预设规则进行选取。
S300:获取待测服务器的IP地址,根据预设的IP地址与服务代码版本的对应关系,确定与所述代码版本组合对应的目标服务器。
兼容性测试装置可以获取待测服务器的IP地址。所述待测服务器的IP地址可以是预先设定的,也可以是用户设定的。所述待测服务器的IP地址可以表示需要进行兼容性测试的服务器的IP地址。所述待测服务器的IP地址可以包括一个或多个服务器的IP地址。
所述预设的IP地址与服务代码版本的对应关系,可以用于表述所述IP地址所对应的服务器上运行的服务代码的版本。例如IP地址“xxx.xx.xxx.01”对应发服务器为“服务器1”,所述“服务器1”上运行的服务代码为“A服务的新代码”。
根据所述预设的IP地址与服务代码版本的对应关系可以确定目标服务器。具体地,根据所述代码版本组合中每一种代码版本组合及所述对应关系,可以确定每一种代码版本组合对应的IP地址,所述IP地址对应的服务器可以确定为目标服务器。
所述目标服务器可以是对应于所述兼容性测试的代码组合的一个或多个服务器,每一组代码组合可以对应有一个或多个目标服务器。
在另一个实施例中,所述兼容性测试方法还可以包括:校验所述获取的待测服务器的IP地址的合法性。具体可以包括:获取IP地址列表,校验所述IP地址列表中是否包含所述待测服务器的IP地址,若包含,所述待测服务器的IP地址可以为合法。所述IP地址列表可以包括所有可用的服务器的IP地址。所述IP地址列表可以通过配置中心获得,所述配置中心可以用于存储所有服务器的IP地址。
相应地,所述确定目标服务器可以包括:剔除所述IP地址列表中与所述待测服务器的IP地址不相同的IP地址,所述剔除后的IP地址列表所对应的服务器可以为待测目标服务器,根据预设的IP地址与服务代码版本的对应关系,可以确定所述剔除后的IP地址列表中与每一种代码版本组合对应的IP地址,所述IP地址对应的服务器可以确定为目标服务器。
S400:对所述目标服务器进行兼容性测试。
兼容性测试装置可以对所述目标服务器进行兼容性测试,具体可以包括:根据所述待测用例可以确定所述目标服务器的测试路径列表,根据所述测试路径列表可以发送所述待测用例脚本至所述目标服务器进行兼容性测试。
所述测试路径列表可以包括一个或多个服务器测试路径。所述服务器测试路径可以用于表示一个测试用例进行一次兼容性测试过程中依次测试的服务器。
根据所述待测用例确定所述目标服务器的测试路径列表,可以包括:根据所述测试用例对应的调用服务名称的顺序,确定调用所述目标服务器的顺序,所述调用目标服务器的顺序可以为测试路径。
例如,假设某一代码版本组合为:A老版本、B老版本和D新版本,与所述代码版本组合对应的目标服务器如表1所示。
表1
目标服务器名称 |
服务版本 |
服务器1 |
A老版本 |
服务器2 |
A老版本 |
服务器3 |
B老版本 |
服务器4 |
B老版本 |
服务器5 |
D新版本 |
服务器6 |
D新版本 |
假设,某一测试用例对应的调用服务名称的顺序依次为:服务B→服务A→服务D。
那么,可以确定与该测试用例对应的服务器测试路径列表可以包括:
测试路径1:服务器3→服务器1→服务器5;
测试路径2:服务器3→服务器1→服务器6;
测试路径3:服务器3→服务器2→服务器5;
测试路径4:服务器3→服务器2→服务器5;
测试路径5:服务器4→服务器1→服务器5;
测试路径6:服务器4→服务器1→服务器5;
测试路径2:服务器4→服务器2→服务器5;
测试路径7:服务器4→服务器2→服务器6。
可以按照所述测试路径1-7发送所述测试用例进行兼容性测试。
所述待测用例脚本可以通过ssh(Secure Shell,安全外壳协议)指令的方式至所述目标服务器,并执行所述待测用例脚本。
在另一个实施例中,所述兼容性测试方法还可以包括:获取兼容性测试结果。
所述兼容性测试结果可以通过第三方工具获得。进一步地,还可以对所述兼容性测试结果进行分析。进一步地,可以展示所述兼容性测试结果及所述分析结果。
上述实施例公开的有一种兼容性测试方法,根据获取的所述兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本,自动部署代码版本组合。根据预设的IP地址与服务代码版本的对应关系,可以快速地确定出与所述代码版本组合对应的目标服务器。根据获取的测试用例可以自动构建测试列表。本申请实施例公开的兼容性测试方法不需要手工部署和切换代码版本组合,可以提高兼容性测试的执行效率,同时可以保证部署过程中不会发生遗漏某一调用路径的情况,从而提高兼容性测试的准确性。
图2是本申请兼容性测试装置一个实施例的模块图。如图2所示,所述兼容性测试装置可以包括:参数获取单元100、代码版本组合确定单元200、目标服务器确定单元300和测试单元400。其中,
所述参数获取单元100,可以用于获取测试参数。所述测试参数可以包括:兼容性调用服务的名称以及所述兼容性调用服务中服务的代码版本。所述测试参数还可以包括待测用例脚本等信息。
所述代码版本组合确定单元200,可以用于根据所述参数获取单元100中的测试参数确定代码版本组合。
所述目标服务器确定单元300,可以用于获取待测服务器的IP地址,根据预设的IP地址与服务代码版本的对应关系,确定与所述代码版本组合确定单元200中的代码版本组合对应的目标服务器。
图3是本申请兼容性测试装置实施例中目标服务器确定单元的模块图。如图3所示,所述目标服务器确定单元300可以包括:待测服务器IP地址获取单元301和服务器确定单元302。
所述待测服务器IP获取单元301,可以用于获取待测服务器的IP地址。
所述服务器确定单元302,可以用于根据预设的IP地址与服务代码版本的对应关系确定所述待测服务器IP获取单元301中待测服务器中的目标服务器。
在另一个实施例中,所述目标服务器确定单元300还可以包括:IP地址验证单元303。所述IP地址验证单元303,可以用于获取IP地址列表,根据所述IP地址列表验证所述待测服务器IP获取单元301中待测服务器IP地址的合法性。
相应地,所述服务器确定单元302,可以用于根据预设的IP地址与服务代码版本的对应关系确定所述IP地址验证单元303中合法的待测服务器中的目标服务器。
所述测试单元400,可以用于对所述目标服务器确定单元300中确定的目标服务器进行兼容性测试。
图4是本申请兼容性测试装置实施例中测试单元的模块图。如图4所示,所述测试单元400可以包括:测试列表构建单元401和测试用例发送执行单元402。
所述测试列表构建单元401,可以用于根据所述待测用例可以确定所述目标服务器的测试路径列表。所述测试路径列表可以包括一个或多个服务器测试路径。所述服务器测试路径可以用于表示一个测试用例进行一次兼容性测试过程中依次测试的服务器。
所述测试用例发送执行单元402,可以用于根据所述测试列表构建单元401确定的测试列表发送所述待测用例脚本至所述目标服务器进行兼容性测试。
在另一个实施例中,所述兼容性测试装置还可以包括:测试结果单元500。所述测试结果单元500,可以用于获取兼容性测试结果。进一步地,所述测试结果单元500还可以用于对所述兼容性测试结果进行分析。进一步地,所述测试结果单元500还可以用于展示所述兼容性测试结果及所述分析结果。
上述实施例公开的一种兼容性测试装置与本申请的兼容性测试方法实施例相对应,可以实现本申请方法实施例,达到本申请方法实施例的技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。该计算机软件产品可以包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。该计算机软件产品可以存储在内存中,内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括短暂电脑可读媒体(transitory media),如调制的数据信号和载波。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。