一种BMC自动测试系统及方法与流程

文档序号:11133784阅读:2050来源:国知局
一种BMC自动测试系统及方法与制造工艺

本发明涉及BMC测试技术领域,特别涉及一种BMC自动测试系统及方法。



背景技术:

BMC(即Baseboard Management Controller,基板管理控制器)是服务器用来监控内部物理变量的固件,它是IPMI(即Intelligent Platform Management Interface,智能平台管理接口)的一部分,常被设计在服务器或者计算机的主板上。BMC的传感器测量服务器内部的物理变量,比如温度、湿度、供电电压、风扇转速、操作系统的功能等,如果某个测量变量超出了规定的值,将通知系统管理员。

由于BMC在服务器中作用重大,所以企业验证BMC是否符合设计需求是必须的。服务器厂商根据市场需求不同一般会开发不同的服务器平台,不同服务器类型的BMC固件也存在一定的差异。固件开发者每隔一段时间会在之前的固件版本上开发一个新的版本,每版BMC都需要经过测试验证。

然而,现有的对BMC固件进行测试验证时,通常需要对服务器中的某些硬件进行手工测试,例如在测试中需要对板卡进行插拔或查看LED灯的颜色等。这样需要耗费大量的人力成本,尤其是对于BMC这种时常需要迭代更新的固件来说,现有的BMC固件测试方式需要消耗大量的人力成本,测试效率较低。

综上所述可以看出,如何降低BMC固件测试过程中的人力成本,以及提高测试效率是目前有待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种BMC自动测试系统及方法,降低了BMC固件测试过程中的人力成本,并提高了测试效率。其具体方案如下:

一种BMC自动测试系统,包括:

测试对象确定模块,用于确定待测试BMC固件;

硬件抽象模块,用于对目标服务器中的硬件进行抽象化处理,得到相应的类文件;其中,所述目标服务器为当前能够运行所述待测试BMC固件的服务器;

脚本生成模块,用于利用所述硬件抽象模块得到的类文件,生成相应的测试用例脚本;

文件解析模块,用于对预设配置文件进行解析,得到所述测试用例脚本所需的基础数据文件;

测试执行模块,用于在所述目标服务器上,利用所述测试用例脚本和所述基础数据文件,对所述待测试BMC固件进行相应地测试。

优选的,所述硬件抽象模块,具体用于将所述目标服务器中的每个硬件所对应的测试步骤封装成类方法,得到相应的类文件集合;

其中,所述类文件集合中的每一类文件与所述目标服务器中的每个硬件之间呈一一对应关系。

优选的,所述脚本生成模块包括:

测试计划确定单元,用于确定与所述待测试BMC固件相关的测试计划;

类文件提取单元,用于从所述类文件集合中提取出与所述测试计划相对应的类文件;

脚本生成单元,用于将所述类文件提取单元所提取到的类文件组装成相应的测试用例脚本。

优选的,所述BMC自动测试系统,还包括:

文件配置模块,用于创建系统配置文件、公共配置文件和用例配置文件,得到所述预设配置文件;

其中,所述系统配置文件包括所述待测试BMC固件的版本信息、所述目标服务器的标识信息以及所述测试用例脚本的标识信息;所述公共配置文件包括在对所述待测试BMC固件进行测试的过程中所需的与所述目标服务器相关的常量数据,所述常量数据包括IPMI指令和IPMI返回值;所述用例配置文件包括所述测试用例脚本所需的测试数据。

优选的,所述测试执行模块,包括:

脚本排列子模块,用于按照添加时间的先后顺序,将所述测试用例脚本添加到预设测试队列的相应队列位置上;

测试管理子模块,用于对所述预设测试队列进行实时地更新管理;

测试执行子模块,用于当所述测试用例脚本处于所述预设测试队列的头部,则在所述目标服务器上,利用所述测试用例脚本和所述基础数据文件,对所述待测试BMC固件进行相应地测试。

优选的,所述测试执行子模块包括BMC通信单元和测试执行单元;其中,

所述BMC通信单元,用于尝试搭建所述测试执行单元和所述待测试BMC固件之间的访问通道;

所述测试执行单元,用于当所述测试用例脚本处于所述预设测试队列的头部,并且当所述BMC通信单元成功搭建所述访问通道后,在所述目标服务器上,利用所述测试用例脚本和所述基础数据文件,对所述待测试BMC固件进行相应地测试。

优选的,所述BMC通信单元,具体用于通过预设通信接口,尝试搭建所述测试执行单元和所述待测试BMC固件之间的访问通道,如果连续N次均无法成功搭建所述访问通道,则判定通道搭建失败,其中,N为不小于3的整数。

优选的,所述BMC通信单元,具体用于依次从预设接口池中选取出一个接口,并通过该接口,尝试搭建所述测试执行单元和所述待测试BMC固件之间的访问通道,如果均无法通过所述预设接口池中的接口搭建所述访问通道,则判定通道搭建失败;其中,所述预设接口池包括至少两个接口。

优选的,所述测试对象确定模块包括:

固件监视单元,用于对预设BMC固件库中的所有BMC固件进行监视,以监视所述预设BMC固件库中是否出现新的BMC固件;

对象确定单元,用于当所述固件监视单元监视到所述预设BMC固件库中出现新的BMC固件,则将该BMC固件确定为所述待测试BMC固件。

本发明还公开了一种BMC自动测试方法,包括:

确定待测试BMC固件;

对目标服务器中的硬件进行抽象化处理,得到相应的类文件;其中,所述目标服务器为当前能够运行所述待测试BMC固件的服务器;

利用所述抽象化处理得到的类文件,生成相应的测试用例脚本;

对预设配置文件进行解析,得到所述测试用例脚本所需的基础数据文件;

在所述目标服务器上,利用所述测试用例脚本和所述基础数据文件,对所述待测试BMC固件进行相应地测试。

本发明中,BMC自动测试系统,包括:测试对象确定模块,用于确定待测试BMC固件;硬件抽象模块,用于对目标服务器中的硬件进行抽象化处理,得到相应的类文件;其中,目标服务器为当前能够运行待测试BMC固件的服务器;脚本生成模块,用于利用硬件抽象模块得到的类文件,生成相应的测试用例脚本;文件解析模块,用于对预设配置文件进行解析,得到测试用例脚本所需的基础数据文件;测试执行模块,用于在目标服务器上,利用测试用例脚本和基础数据文件,对待测试BMC固件进行相应地测试。本发明中,利用硬件抽象模块对服务器中的硬件进行抽象化处理,得到了相应的类文件;然后利用这些类文件,生成相应的测试用例脚本,接着在服务器上,利用上述测试用例脚本,并结合相应的基础数据文件,来对相应的BMC固件进行测试。由于本发明将服务器中的硬件进行了抽象化处理,得到了相应的类文件,而后续生成的测试用例脚本正是基于这些类文件生成的,这样能够使得本发明可以利用上述测试用例脚本对服务器中的硬件进行自动化测试,从而避免了现有技术中的人工测试的情况,可见,本发明降低了BMC固件测试过程中的人力成本,并提高了测试效率。

附图说明

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

图1为本发明实施例公开的一种BMC自动测试系统结构示意图;

图2为本发明实施例公开的一种BMC自动测试方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种BMC自动测试系统,参见图1所示,该系统包括:

测试对象确定模块11,用于确定待测试BMC固件;

硬件抽象模块12,用于对目标服务器中的硬件进行抽象化处理,得到相应的类文件;其中,目标服务器为当前能够运行待测试BMC固件的服务器;

脚本生成模块13,用于利用硬件抽象模块12得到的类文件,生成相应的测试用例脚本;

文件解析模块14,用于对预设配置文件进行解析,得到测试用例脚本所需的基础数据文件;

测试执行模块15,用于在目标服务器上,利用测试用例脚本和基础数据文件,对待测试BMC固件进行相应地测试。

可以理解的是,上述预设配置文件中包含了上述基础数据文件,通过上述文件解析模块14,可以将上述预设配置文件中的基础数据文件解析出来。

本发明实施例中,利用硬件抽象模块对服务器中的硬件进行抽象化处理,得到了相应的类文件;然后利用这些类文件,生成相应的测试用例脚本,接着在服务器上,利用上述测试用例脚本,并结合相应的基础数据文件,来对相应的BMC固件进行测试。由于本发明实施例将服务器中的硬件进行了抽象化处理,得到了相应的类文件,而后续生成的测试用例脚本正是基于这些类文件生成的,这样能够使得本发明实施例可以利用上述测试用例脚本对服务器中的硬件进行自动化测试,从而避免了现有技术中的人工测试的情况,可见,本发明实施例降低了BMC固件测试过程中的人力成本,并提高了测试效率。

本发明实施例公开了一种具体的BMC自动测试系统,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

上一实施例中,可利用硬件抽象模块对目标服务器中的硬件进行抽象化处理,从而得到相应的类文件。通过利用上述类文件,脚本生成模块能够生成相应的测试用例脚本。

其中,上述硬件抽象模块,具体可以用于将目标服务器中的每个硬件所对应的测试步骤封装成类方法,得到相应的类文件集合;其中,上述类文件集合中的每一类文件与目标服务器中的每个硬件之间呈一一对应关系。

也即,本实施例可以利用上述硬件抽象模块,对目标服务器中的所有硬件各自所对应的测试步骤封装成相应的类方法,从而得到上述类文件集合。

相应的,上述脚本生成模块具体可以包括测试计划确定单元、类文件提取单元和脚本生成单元;其中,

测试计划确定单元,用于确定与待测试BMC固件相关的测试计划;

类文件提取单元,用于从类文件集合中提取出与测试计划相对应的类文件;

脚本生成单元,用于将类文件提取单元所提取到的类文件组装成相应的测试用例脚本。

可以理解的是,上述与待测试BMC固件相关的测试计划中详细记录了需要对哪些项目进行测试。根据上述测试计划中记录的测试项目,上述类文件提取单元便可从上述类文件集合中提取出相应的类文件。然后利用上述脚本生成单元将上述提取出来的类文件组装成相应的测试用例脚本。

由上可知,本发明可以先利用硬件抽象模块将目标服务器中的所有硬件进行抽象化处理,然后上述脚本生成模块便可以从上述类文件集合中提取出相应的类文件来生成相应的测试用例脚本。当然,本实施例中也可以先利用上述测试计划确定单元确定出与待测试BMC固件对应的测试计划,然后利用上述硬件抽象模块将目标服务器中与上述测试计划对应的硬件进行抽象化处理,进而利用上述脚本生成单元将上述硬件抽象模块生成的所有类文件组装成相应的测试用例脚本。

上一实施例中,需要利用文件解析模块,对预设配置文件进行解析,得到上述测试用例脚本对应的基础数据文件。

可以理解的是,上述预设配置文件可以由用户直接导入,也可以利用本实施例中的BMC自动测试系统来生成,也即,本实施例中的BMC自动测试系统,还可以进一步包括:

文件配置模块,用于创建系统配置文件、公共配置文件和用例配置文件,得到预设配置文件;

其中,系统配置文件包括待测试BMC固件的版本信息、目标服务器的标识信息以及测试用例脚本的标识信息;公共配置文件包括在对待测试BMC固件进行测试的过程中所需的与目标服务器相关的常量数据,常量数据包括IPMI指令和IPMI返回值;用例配置文件包括测试用例脚本所需的测试数据。由此可知,本实施例中,与上述测试用例脚本对应的基础数据文件包括待测试BMC固件的版本信息、目标服务器的标识信息、测试用例脚本的标识信息、IPMI指令、IPMI返回值和相应的测试数据。

上一实施例中,在得到测试用例脚本以及相应的基础数据文件后,需利用测试执行模块,在目标服务器上对待测试BMC固件进行相应地测试。本实施例中,上述测试执行模块,具体包括脚本排列子模块、测试管理子模块以及测试执行子模块;其中,

脚本排列子模块,用于按照添加时间的先后顺序,将测试用例脚本添加到预设测试队列的相应队列位置上;

测试管理子模块,用于对预设测试队列进行实时地更新管理;

测试执行子模块,用于当上述脚本生成模块生成的测试用例脚本处于预设测试队列的头部,则在目标服务器上,利用上述测试用例脚本和基础数据文件,对待测试BMC固件进行相应地测试。

可以理解的是,上述测试管理子模块具体是根据测试执行子模块的执行情况来对预设测试队列进行实时更新的,也即,当上述测试执行子模块对预设测试队列中的A脚本执行完相应的测试后,便将上述预设测试队列中的相应信息进行删除,以实现对预设测试队列的实时更新。由此可知,上述预设测试队列中所保存的测试用例脚本均是还未完成测试的脚本,当上述预设测试队列中的某一脚本测试完毕后,将会对该队列中的相应信息进行删除处理。

更具体的,上述测试执行子模块包括BMC通信单元和测试执行单元;其中,

BMC通信单元,用于尝试搭建测试执行单元和待测试BMC固件之间的访问通道;

测试执行单元,用于当上述脚本生成模块生成的测试用例脚本处于预设测试队列的头部,并且当BMC通信单元成功搭建访问通道后,在目标服务器上,利用测试用例脚本和基础数据文件,对待测试BMC固件进行相应地测试。

其中,上述BMC通信单元,具体可以用于通过预设通信接口,尝试搭建测试执行单元和待测试BMC固件之间的访问通道,如果连续N次均无法成功搭建访问通道,则判定通道搭建失败,其中,N为不小于3的整数。

也即,本实施例可以利用一个通信接口,尝试搭建上述测试执行单元和待测试BMC固件之间的访问通道,如果连续N次均无法成功搭建,则判定通道搭建失败,此时将不再尝试搭建通道。可以理解的是,上述预设通信接口是上述测试执行单元与上述待测试BMC固件之间进行交互的API(即Application Programming Interface,应用程序编程接口)。

当然,本实施例中的BMC通信单元也可以通过其他方式来尝试搭建上述测试执行单元和上述待测试BMC固件之间的访问通道,具体的,本实施例中的BMC通信单元,也可以用于依次从预设接口池中选取出一个接口,并通过该接口,尝试搭建测试执行单元和待测试BMC固件之间的访问通道,如果均无法通过预设接口池中的接口搭建访问通道,则判定通道搭建失败;其中,预设接口池包括至少两个接口。

上一实施例中,测试对象确定模块可以用于确定待测试BMC固件。具体的,上述测试对象确定模块可以包括固件监视单元和对象确定单元;其中,

固件监视单元,用于对预设BMC固件库中的所有BMC固件进行监视,以监视预设BMC固件库中是否出现新的BMC固件;

对象确定单元,用于当固件监视单元监视到预设BMC固件库中出现新的BMC固件,则将该BMC固件确定为待测试BMC固件。

可以理解的是,上述固件监视单元具体可以通过监视固件自身的版本号来判定上述预设BMC固件库中是否出现了新的BMC固件,如果监视到上述预设BMC固件库中出现了新的BMC固件,则将该BMC固件确定为本实施例中的待测试BMC固件。也即,本发明实施例中,一旦监视到出现了新的BMC固件,则会自动对该BMC固件展开后续的测试工作,从而可以进一步降低固件测试过程中的人力成本。

相应的,本发明实施例还公开了一种BMC自动测试方法,参见图2所示,该方法包括:

步骤S21:确定待测试BMC固件;

步骤S22:对目标服务器中的硬件进行抽象化处理,得到相应的类文件;其中,目标服务器为当前能够运行待测试BMC固件的服务器;

步骤S23:利用抽象化处理得到的类文件,生成相应的测试用例脚本;

步骤S24:对预设配置文件进行解析,得到测试用例脚本所需的基础数据文件;

步骤S25:在目标服务器上,利用测试用例脚本和基础数据文件,对待测试BMC固件进行相应地测试。

关于上述各个步骤更加详细的过程可以参考前述实施例中公开的相关内容,在此不再进行赘述。

本发明实施例中,对服务器中的硬件进行抽象化处理,得到了相应的类文件;然后利用这些类文件,生成相应的测试用例脚本,接着在服务器上,利用上述测试用例脚本,并结合相应的基础数据文件,来对相应的BMC固件进行测试。由于本发明实施例将服务器中的硬件进行了抽象化处理,得到了相应的类文件,而后续生成的测试用例脚本正是基于这些类文件生成的,这样能够使得本发明实施例可以利用上述测试用例脚本对服务器中的硬件进行自动化测试,从而避免了现有技术中的人工测试的情况,可见,本发明实施例降低了BMC固件测试过程中的人力成本,并提高了测试效率。

最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种BMC自动测试系统及方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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