掌桥专利:专业的专利平台
掌桥专利
首页

主机操作的随机测试方法及装置

文献发布时间:2023-06-19 19:07:35


主机操作的随机测试方法及装置

技术领域

本申请涉及随机测试技术领域,特别是涉及一种主机操作的随机测试方法及装置。

背景技术

在非功能测试中,随机测试是较为重要的一个方向,是保证产品健壮性与覆盖完整度的有效手段和过程。现有的随机测试方式均是针对Android(安卓)端进行测试,目前尚未存在对openstack(一种开源的云计算管理平台项目)中的主机操作进行随机测试的方式。

发明内容

本申请实施例的目的在于提供一种主机操作的随机测试方法及装置,以解决现有技术中的随机测试方式均是针对Android端进行测试,导致随机测试方式比较单一的问题。具体技术方案如下:

在本申请实施的第一方面,首先提供了一种主机操作的随机测试方法,包括:确定待测主机的身份标识号ID;获取随机测试方法的方法名;基于所述方法名调用所述随机测试方法以对所述ID对应的主机操作进行随机测试。

在本申请实施的第二方面,还提供了一种主机操作的随机测试装置,包括:确定模块,用于确定待测主机的身份标识号ID;获取模块,用于获取随机测试方法的方法名;测试模块,用于基于所述方法名调用所述随机测试方法以对所述ID对应的主机操作进行随机测试。

在本申请实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的主机操作的随机测试方法。

在本申请实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的主机操作的随机测试方法。

本申请实施例中,通过获取的随机测试方法的方法名,进而确定随机测试方法,然后对ID对应的主机操作进行随机测试,从而可以实现对待测主机的主机操作进行随机测试,如果该待测主机为openstack中的主机,则可以实现对openstack层中的主机操作进行随机测试,从而解决了现有技术中的随机测试方式均是针对Android端进行测试的问题,提升了随机测试的丰富性与多样性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本申请实施例中主机操作的随机测试方法的流程图;

图2是本申请实施例中基于TestNG的随机测试的结构示意图;

图3为本申请实施例中主机操作的随机测试装置的结构示意图;

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

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

本申请实施例提供了一种主机操作的随机测试方法,如图1所示,该方法的步骤包括:

步骤102,确定待测主机的身份标识号ID;

需要说明的是,本申请实施例中的待测主机可以是任一系统或平台中的主机设备,例如主机设备可以是openstack中的主机,也可以是任一云系统或云平台中的虚拟主机;即只要能执行主机操作的主机均是可以作为本申请实施例中的待测主机。

步骤104,获取随机测试方法的方法名;

其中,本申请实施例中的方法名可以包括文字和数字,或者是包括文字或字母等方式,即获取测试方法的方法名是指获取文字和数字的组合,从而得到该随机测试方法的方法名,例如随机测试方法的方法名可以是方法1、方法2、方法3等,根据具体需要进行相应的设置。

步骤106,基于方法名调用随机测试方法以对ID对应的主机操作进行随机测试。

其中,本申请实施例中的主机操作可以包括查看、打印、启动、调试、链接等。

通过上述步骤102至步骤106,通过获取的随机测试方法的方法名,进而确定随机测试方法,然后对ID对应的主机操作进行随机测试,从而可以实现对待测主机的主机操作进行随机测试,如果该待测主机为openstack中的主机,则可以实现对openstack层中的主机操作进行随机测试,从而解决了现有技术中的随机测试方式均是针对Android端进行测试,导致随机测试方式比较单一的问题,提升了随机测试的丰富性与多样性。

在本申请实施例的可选实施方式中,对于上述步骤106中涉及到的基于方法名调用随机测试方法以对ID对应的主机操作进行随机测试的方式,进一步可以包括:

步骤11,将方法名进行参数化处理,得到与方法名对应的参数;

需要说明的是,如果方法名为:方法1,方法2,方法3,则将方法名进行参数化处理,得到与方法名对应的参数可以是将方法1参数化处理为1,将方法2参数化处理为2,方法3处理为方法3;也可以是将方法1参数化处理为2,将方法2参数化处理为3,方法3处理为方法1。对于具体的方法名与对应的参数在本申请中并不限定其范围,可以根据实际情况进行相应的设置。当然,上述仅仅是举例说明,方法名也可以是其他形式。

步骤12,基于参数所属的类,调用随机测试方法;

在本申请实施例中,可以根据java的反射(reflection)机制确定参数所属的类;Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。本申请实施例中的参数即为方法名,因此,可以基于Java的反射机制确定该对象所属的类,进而可以确定该类的属性或者方法,从而可以从属性或者方法调用与该参数对应的随机测试方法。

步骤13,基于随机测试方法对ID对应的主机操作进行随机测试。

通过上述步骤11至步骤13,可以将方法名参数化之后,基于参数所属的类型调用对应的随机测试方法,即能够在进行随机测试的过程中调用与方法名对应的随机测试方法,而无需编码目标类,提高了随机测试的灵活性和扩展性。

在本申请实施例的另一个可选实施方式中,本申请实施例中的方法名可以包括一个或多个组成部分,对于上述步骤104中涉及到的获取随机测试方法的方法名的方式,进一步可以包括:

步骤21,获取多个组成部分;

步骤22,基于多个组成部分拼成一个或多个方法名。

在本申请实施例的可选实施方式中,方法名优选由两部分组成,如文字与数字、文字与字母等。以方法名为文字与数字的组合为例,方法的文字部分为“方法”,数字部分包括“1”,“2”,“3”,“4”,则从“方法”和“1”,“2”,“3”,“4”中获取多个组成部分,该获取的方式可以是随机获取,如获取结果为“方法”以及“3”,“4”,则拼接成的方法名为“方法3”,“方法4”。当然,上述方法名的组成部分仅仅是举例说明,还可以包括更多的组成部分,例如数字部分还可以包括“5”,“6”,“7”,“8”。此外,在本申请实施例中,可以基于Random函数随机出正整数。其中,Random函数:java.util中的生成随机数的方法,指定生成范围,可以生成指定数据类型的数字。

通过上述随机获取方法名的多个组成部分,进而基于多个组成部分拼成一个或多个方法名的方式,实现了随机测试方法的随机确定,进一步提升了主机操作的随机测试性。

在本申请实施例的再一个可选实施方式中,在确定待测主机的ID之前,本申请实施例的方法步骤还可以包括:

步骤31,创建与一个或多个主机分别对应的ID;

步骤32,基于ID所属的类设置对应的实例;

步骤33,将ID存储到对应的实例中。

可见,在本申请实施例中ID所属的类可以是ITestContext类,即可以针对该ITestContext类设置对应的实例,从而将该ID存储到该实例中,需要说明的是,该实例的可使用范围仅限于声明该实例的当前类;也就是说,类的不同的实例存储不同的ID。

基于上述步骤31至步骤33,本申请实施例中的步骤102中确定待测主机的ID的方式,进一步可以是:确定ID的类,并从类的实例中获取ID。由于类的不同的实例存储不同的ID,即可以从对应的实例中获取对应的ID即可。

下面以对openstack的相关操作进行随机测试为例,结合本申请实施例的具体实施方式对本申请进行举例说明。该具体实施方式提供了一种基于TestNG的随机测试方法,图2是本申请实施例中基于TestNG的随机测试的结构示意图,结合图2,该基于TestNG的随机测试方法的步骤包括:

步骤301,基于现有的TestNG自动化测试框架,设置SetUp/Operation/TearDown类;

其中,TestNG是一种测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试。

步骤302,整理openstack层相关的主机操作;

步骤303,结合java的反射机制,使得三个类里面的函数参数化,供RandomTest类中的方法调用。

其中,该步骤303具体可以是,RandomTest里面通过随机生成正整数,拼成函数名,从SetUp/Operation/TearDown类中找寻对应的方法名并调用对应的随机测试方法。

步骤304,变量(ID)通过ITestContext类的实例进行存储;

其中,由于该实例的可使用范围仅限于声明该实例的当前类,所以要针对每个类设置属于自己的ITestContext实例,并通过该类的实例从ITestContext中获取变量值。

通过本申请实施例,对openstack层的主机操作进行随机测试,具有一定的较强的适应性。

对应于上述图1中的一种主机操作的随机测试方法,本申请实施例提供了一种主机操作的随机测试装置,如图3所示,该装置包括:

确定模块32,用于确定待测主机的身份标识号ID;

需要说明的是,本申请实施例中的待测主机可以是任一系统或平台中的主机设备,例如主机设备可以是openstack中的主机,也可以是任一云系统中的虚拟主机;即只要能执行主机操作的主机均是可以作为本申请实施例中的待测主机。

获取模块34,用于获取随机测试方法的方法名;

其中,本申请实施例中的方法名可以包括文字和数字,或者是包括文字或字母等方式,即获取测试方法的方法名是指获取文字和数字的组合,从而得到该随机测试方法的方法名,例如随机测试方法的方法名可以是方法1、方法2、方法3等,根据具体需要进行相应的设置。

测试模块36,用于基于方法名调用随机测试方法以对ID对应的主机操作进行随机测试。

其中,本申请实施例中的主机操作可以包括查看、打印、启动、调试、链接等。

基于上述本申请实施例的装置,通过获取的随机测试方法的方法名,进而确定随机测试方法,然后对ID对应的主机操作进行随机测试,从而可以实现对待测主机的主机操作进行随机测试,如果该待测主机为openstack中的主机,则可以实现对openstack层中的主机操作进行随机测试,从而解决了现有技术中的随机测试方式均是针对Android端进行测试,导致随机测试方式比较单一的问题,提升了随机测试的丰富性与多样性。

可选地,本申请实施例中的测试模块36进一步可以包括:

参数化处理单元,用于将方法名进行参数化处理,得到与方法名对应的参数;

需要说明的是,如果方法名为:方法1,方法2,方法3,则将方法名进行参数化处理,得到与方法名对应的参数可以是将方法1参数化处理为1,将方法2参数化处理为2,方法3处理为方法3;也可以是将方法1参数化处理为2,将方法2参数化处理为3,方法3处理为方法1。对于具体的方法名与对应的参数在本申请中并不限定其范围,可以根据实际情况进行相应的设置。当然,上述仅仅是举例说明,方法名也可以是其他形式。

调用单元,用于基于参数所属的类,调用随机测试方法;

在本申请实施例中,可以根据java的反射(reflection)机制确定参数所属的类;Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。本申请实施例中的参数即为方法名,因此,可以基于Java的反射机制确定该对象所属的类,进而可以确定该类的属性或者方法,从而可以从属性或者方法调用与该参数对应的随机测试方法。

测试单元,用于基于随机测试方法对ID对应的主机操作进行随机测试。

通过上述测试模块36中的单元,可以将方法名参数化之后,基于参数所属的类型调用对应的随机测试方法,即能够在进行随机测试的过程中调用与方法名对应的随机测试方法,而无需编码目标类,提高了随机测试的灵活性和扩展性。

可选地,本申请实施例中的法名包括一个或多个组成部分,基于此,本申请实施例中的获取模块34进一步可以包括:获取单元,用于获取多个组成部分;拼成单元,用于基于多个组成部分拼成一个或多个方法名。

在本申请实施例的可选实施方式中,方法名优选由两部分组成,如文字与数字、文字与字母等。以方法名为文字与数字的组合为例,方法的文字部分为“方法”,数字部分包括“1”,“2”,“3”,“4”,则从“方法”和“1”,“2”,“3”,“4”中获取多个组成部分,如获取结果为“方法”以及“3”,“4”,则拼接成的方法名为“方法3”,“方法4”。当然,上述方法名的组成部分仅仅是举例说明,还可以包括更多的组成部分,例如数字部分还可以包括“5”,“6”,“7”,“8”。此外,在本申请实施例中,可以基于Random函数随机出正整数。其中,Random函数:java.util中的生成随机数的方法,指定生成范围,可以生成指定数据类型的数字。

通过上述获取方法名的多个组成部分,进而基于多个组成部分拼成一个或多个方法名的方式,实现了随机测试方法的随机确定,进一步提升了主机操作的随机测试性。

可选地,本申请实施例中的装置还包括:创建模块,用于在确定待测主机的ID之前,创建与一个或多个主机分别对应的ID;设置模块,用于基于ID所属的类设置对应的实例;存储模块,用于将ID存储到对应的实例中。

可见,在本申请实施例中ID所属的类可以是ITestContext类,即可以针对该ITestContext类设置对应的实例,从而将该ID存储到该实例中,需要说明的是,该实例的可使用范围仅限于声明该实例的当前类;也就是说,类的不同的实例存储不同的ID。

可选地,本申请实施例中的确定模块32进一步可以包括:处理单元,用于确定ID的类,并从类的实例中获取ID。

本申请实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,

存储器403,用于存放计算机程序;

处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:确定待测主机的身份标识号ID;获取随机测试方法的方法名;基于所述方法名调用所述随机测试方法以对所述ID对应的主机操作进行随机测试。

此外,该电子设备中的处理器401在执行存储器403上所存放的程序时,还可以实施上述主机操作的随机测试方法中的其他方法步骤,所起到的作用也是类似的,在此不再赘述。

上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(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))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

相关技术
  • 与主机接合的储存装置以及操作主机和储存装置的方法
  • 一种主机管理特性测试方法、装置、设备及存储介质
  • 一种基于预设操作的教室主机控制方法及其装置
  • 自动测试主机操作系统的测试方法及其测试系统
  • 自检随机测试方法及随机循环测试装置
技术分类

06120115802002