基于IPMI技术的嵌入式软件测试策略
2012-07-17上海市软件评测中心
/ 上海市软件评测中心
0 引言
自从Dell、HP、Intel和NEC于1998年共同提出了IPMI技术标准后,为各个服务器厂商又提供了一种新的专用管理工具,它有助于对不同种类服务器系统实施管理,使交叉平台的管理成为可能。
IPMI(智能平台管理接口)技术标准从1998年提出至今,它的应用日益广泛,对以IPMI技术为标准的相关软件产品的可靠性提出更高的要求,即对IPMI Firmware(智能平台管理接口固件)需要进行严格的测试。由于目前相关的测试软件比较缺乏或者存在局限性,因此有必要制定一种基于IPMI技术的测试策略,设计适合于IPMI Firmware在嵌入式软件系统中的测试框架,实现对IPMI Firmware的功能测试。本文以SAN Macro DRAC5项目为例。
1 相关技术的概述
1.1 IPMI技术架构
IPMI技术是一项应用于服务器管理系统设计的标准,用户可以利用IPMI技术监视服务器的物理健康特征,如温度、电压、电扇工作状态、电源供应等,为系统管理、系统恢复提供信息。利用IPMI接口标准对不同类型服务器系统硬件实施的有效管理,使不同平台的集中管理成为可能。图1为智能平台管理接口架构示意图[1]。IPMI技术不管服务器的状态如何,都可以提供远程监测、管理和恢复功能。
图1 智能平台管理接口架构示意图
1.2 BMC(基板管理控制器)以及接口
IPMI定义了用于接口连接嵌入在服务器平台中的一种服务处理器的协议。这种服务处理器叫做BMC,它安装在服务器主板或刀片服务器、电信平台的机架上。在IPMI管理平台中,BMC是核心控制器,系统管理软件对每个被管理器件的管理,都是通过与BMC通信来实现的。BMC通过串行总线连接到主处理器以及母板的其他器件。
从图1中可知,BMC通过个别的界面来管理整个系统,如系统状态监测及事件过滤、电源管理、记录事件发生时间及系统回复控制,并且透过网络或串行端口来告知管理人员。另外,它提供了IPMB(智能平台管理总线)的总线来和外部的管理控制器互相沟通。通常一个基本的BMC所提供的接口有以下几种[1]:
(1)系统接口(System Interface)
IPMI定义了系统软件用于把IPMI消息传递到BMC的3个标准的系统接口,即KCS (键盘控制器样式)、SMIC (系统管理接口控制)和BT(块传输)。
(2)I2C/IPMB接口
通常一个BMC会有几组I2C(两线式串行总线)和外围的传感器等沟通,以读取系统监测值以及记录相关数据。另外也可外接一些GPIO(普通用途的输入输出端口)控制器来扩充系统的监测功能。IPMB则是必须存在的一组界面,用来和外部控制单位沟通。
(3)Serial/Modem(串行/调制解调器)接口
它主要有三种连接模式:Basic(基本)模式、PPP(点对点协议)模式及Terminal(终端模式),三者即可让管理者通过文字模式解译IPMI平台上的状态或简单地下达IPMI命令。
(4)LAN (网络)接口
BMC可经由LAN的界面让管理者接收传送IPMI信息。若使用共享的LAN控制器,当服务器系统被锁定或关机时BMC仍能顺利将其激活。越来越多的应用软件运用这个接口使软件和远程的BMC沟通。
2 基于IPMI技术的测试策略和方法
2.1 IPMI Firmware在嵌入式软件系统中的测试策略
在嵌入式领域目标系统的应用系统日趋复杂,目前的嵌入式软件测试一般采用Host-Target(主机-目标机)或者是交叉测试。由于测试系统平台的多样性,目前还没有通用性框架适合于嵌入式软件的测试。虽然IPMI技术的应用日益广泛,但是当前有关IPMI Firmware的测试工具又很缺乏,所以给测试带来诸多困难。
对于一般商用软件的测试,嵌入式软件测试有其自身的特点和测试困难。不同的嵌入式软件系统应该有不同的测试方法,而软件的测试策略又不是一成不变的,应根据特定的嵌入式软件的特性,制定出一种行之有效的测试策略,所以嵌入式软件的测试都应结合自身实际情况,选定合理测试策略和方案。根据嵌入式软件系统的测试特点,主要针对DRAC5和BMC间的IPMI Firmware的传输特点,建立一种行之有效的测试策略:
(1)准备相关的测试硬件和软件,建立一个适合于DRAC5和BMC之间IPMI Firmware测试环境,依据嵌入式软件测试特点,建立一个跨平台的测试环境。
(2)依据嵌入式软件的测试特点和IPMI技术标准的特点,在不同的测试阶段,通过分析、比较,确定最终采用的测试方法。
(3)基于IPMI技术标准以及其功能性和不同的测试阶段技术性的要求,设计出适合的嵌入式软件的自动测试框架,确定适合DRAC 5和BMC之间IPMI Firmware软件自动化测试用例的测试脚本,达到测试的目标,最终实现基于IPMI技术特性的自动化测试。
2.2 建立IPMI Firmware的测试模型
软件测试的模型,现在常用的有V模型,W模型,X模型和H模型。W、X模型都是对V模型的补充。V模型把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不支持迭代、自发性以及变更调整[3]。
H模型强调测试是独立的,只要测试准备完成,就可以执行测试。对于大型的复杂软件系统,软件开发人员每次创建一个新的版本后,测试执行随即进行。可以说这种模型是一个测试周期的充分体现。在San Marco项目中将采用这种测试模型,每当开发人员创建出一个新的版本后,随即进入执行测试阶段。图2 显示基于嵌入式系统的H模型。
图 2 嵌入式测试的H模型
3 基于IPMI技术自动化测试方案
3.1 建立IPMI Firmware测试平台
一般商用软件的测试,嵌入式软件测试有其自身的特点和测试困难。任何人或组织进行嵌入式软件的测试都应结合自身实际情况,选定合理测试策略和测试方法[4]。针对IPMI Firmware在嵌入式软件系统中的功能测试,IPMI自动化测试方案主要集中在IPMI Firmware单元测试、集成测试和压力测试。
3.1.1 单元测试
由于IPMI技术有其特殊性,建立一个不同于host-target的多测试平台环境,它为用户提供不同的Channel(通道)实现IPMI的相关功能,所以测试不能单纯地在主机平台完成,根据IPMI在不同的Channel,在主机或目标环境下进行测试。遵循的原则是:
(1)将程序的一组IPMI命令或一个模块作为一个独立的测试单元;
(2)生成IPMI的测试用例(包括测试输入,标准输出,测试操作指令等);
(3)在不同的Channel包括LAN、KCS 和Serial/Modem,验证各个测试用例的正确性;
(4)IPMI操作指令的测试结果与标准(参照IPMI 说明书)输出的对比;
(5)将不吻合的测试结果进行分析、记录、分类和通报。
3.1.2 集成测试
在不同的Channel下的各个单元测试模块被组合起来,通过集成自动化测试程序对它们进行测试,以检查这些单元之间的接口是否存在问题。
(1)通过不同的Channel,将所有的测试模块通过集成自动化测试程序验证IPMI功能的正确性。
(2)Dell将IPMI Firmware移植到DAC5嵌入式Linux环境内,所以对DRAC5和BMC之间的IPMI Firmware的集成测试尤为重要,主要通过(例如通过BMC发送一个Serial Over LAN(局域网上远程串口)的功能,BMC将此命令直接传递给DRAC5的IPMI Firmware处理)相关的集成测试程序验证其正确性。
3.1.3 压力测试
压力测试是系统测试的一部分,为了确保嵌入式软件系统的稳定性,在不同的测试平台下,通过可重复的负载测试,了解IPMI Firmware在嵌入式软件系统下性能的可靠性、稳定性,以减少因IPMI性能的问题给系统带来瓶颈。在选定的压力值范围内,各种性能指标在标准指定的范围内无泄露、无系统崩溃、无性能故障等,以提高嵌入式软件在目标环境中的质量。
(1)选择经过单元测试的,且容易出错的一组或多组IPMI命令,在不同的Channel下持续进行压力测试,确保其IPMI功能的准确性。
(2)选择经过单元测试的,且稳定可靠的一组或多组IPMI命令,通过不同Channel组合,持续进行稳定性测试。
3.2 基于IPMI技术的自动化测试方法与策略
3.2.1 自动化测试必要性
常用IPMI命令有几百条,IPMI Firmware测试不仅需要具备非常专业的知识,同时需要输入大量测试数据,测试工作十分复杂并易出错。如果用人工来完成测试,每次的测试结果还会因为人为的原因带来很大差异,所以十分需要运用自动化的测试软件来替代人工的测试,保证测试结果的正确性。因此,在单元测试、集成测试和系统的压力测试中引入自动化测试方案显得由为重要。
3.2.2 测试框架选择
(1)ICTS
ICTS(IPMI一致性测试系统) 是基于FTF (固件测试框架)架构下开发的关于IPMI自动化测试框架[5]。它主要针对符合Intel 主板标准、相关IPMI命令集的自动化测试。它不支持其他OEM厂商(例如Dell、HP等)的目标平台下,相关IPMI 特殊功能的测试和验证,所以ICTS有它的局限性。工作的下一目标是基于ICTS的框架下,开发出通用的、对IPMI Firmware进行功能验证的自动化测试工具。
(2)IPMI Firmware的测试框架选择
IPMI Firmware应用的开发过程是一个软硬件互相协调、互相反馈和互相测试的过程, 有别于Windows(视窗)软件系统的开发,它一般需要一个交叉编译和调试的环境,即编辑和编译软件在主机上进行(如在个人台式机Windows操作系统上),编译好的软件需要下载到目标机上运行(如在一个目标机上的嵌入式Linux系统下),主机和目标机建立起通信连接,并传输调试命令和数据。由于主机和目标机往往运行着不同的操作系统,而且处理器的体系结构也彼此不同,这就提高了IPMI应用开发和测试的复杂性。针对IPMI Firmware的基本功能测试、同步测试、OOB(带外数据)的命令转发机制测试、OEM(原始设备制造商)命令测试等,就需要开发适用于特定需求的自动化测试系统。
3.2.3 KFC Firmware的测试方法
KFC(Kernel Firmware Checker内核固件检验)是基于ICTS架构之上的KFC脚本驱动的自动化系统,也是利用ICTS对Firmware进行测试的控制中心。KFC测试系统采用上文介绍的Host-Target策略,San Macro Project在不同的测试环境中(主要研究在KCS、IPMB、Serial/Modem和LAN Channel)实施模块测试、集成测试、系统测试及压力测试等。
(1)KFC测试架构图
图3给出了用于KFC OOB(Out Of Band)测试系统主要的模块,其中KFC和ICTS是最主要的模块,KFC是整个测试系统的控制中心,它控制着每一个模块,并且使这些模块在这个系统中顺利地运转。ICTS用来处理所有的测试信息和数据,以及把这些命令请求封装通过以太网或串行通信端口传输到目标平台,同时也处理所有的接口信息以及分析测试结果。
Dell Montreal计算机的底板和DRAC上都嵌入Firmware,另外DRAC接管了所有通过LAN/Serial Channel的命令请求,只有当它检测到某一条命令需要转发到服务器上的BMC处理时,BMC才会对这条命令进行响应。如图3所示,在Drac5 与BMC之间是通过I2C进行通信的。
图3 KFC自动化测试框架示意图
Parser(解析器)是该KFC测试系统的重要组成部分,定义了一套解析测试脚本的语法规则,它主要解析测试脚本的语法是否正确,只要在语法检测无误后,KFC测试系统才会真正执行测试脚本。
对于系统接口,由于通过系统总线直接把命令发给BMC,所以处理方式简单很多。
(2)KFC Firmware测试过程及流程
基于KFC驱动IPMI Firmware测试过程流程和对应的数据流程,用户通过写测试脚本来定制需要的测试外,也需要指定一些附加的测试信息,比如填充必要的配置参数。KFC测试系统的测试输出需要和IPMI技术规范及OEM需求相比较。一般来说,如果BMC返回的Completion Code(补充码)不是0x00的话,可能该测试用例没有通过。反之如果从BMC返回的Response Data(应答数据)与预期的相一致的话,则认为该测试用例通过。
3.2.4 KFC Firmware测试的实现
(1)IPMI命令功能测试
ICTS 自带了测试用例来对SMS(系统管理软件)、IPMB、LAN、Serial(串行口)、SMB(服务器消息块)等接口的测试,用户可以利用Cmdtool(命令工具)来发送单条命令以获取需要的信息。
图4所示是在Serial Terminal(串口终端)模式下通过Cmdtool窗口依次执行get device id, get lan configuration parameter命令来分别获取设备信息,IP(网际协议)地址以及MAC(介质访问控制)后BMC正确的应答。
注:如果这些命令的Completion Code 不是0x00,则表示BMC处理这些命令有误,需要进一步检查造成的原因。
图4 获取设备、远程访问卡等信息
(2)单元模块测试
采用单元测试自动化功能和消息模块相关的一系列IPMI命令,对IPMI Firmware分别进行测试,既验证了IPMI命令的正确性,也为集成测试打好基础。在不同的测试阶段,应用不同的Channel对测试会产生不同的结果,从而能通过更多的方式来验证IPMI Firmware在嵌入式软件系统中功能的可靠性。
上面列出单元测试程序的处理过程:首先选择一个被测的模块和接口, 执行和调用相关的被测脚本以及处理脚本的语法解析程序 (KFC以及相关的Engine),将测试脚本所需的返回值与IPMI相关的标准输出比较,完成模块最终的测试结果。
(3)模块集成测试
KFC测试系统中的Testall.tcl是对IPMI所有模块集成测试程序。图5显示集成测试自动化程序的主要流程。一些复杂的测试用例的组合对测试的结果的正确性(例如DRAC5和BMC的IPMI Firmware通信同步的集成测试)显得尤为重要。
图5 集成测试自动化流程
(4)压力测试
对某一个或几个命令连续不断地在不同条件下自动的测试, 用以提高嵌入式软件系统的性能和效率。以下显示的是通过SMS接口重复执行相关IPMI命令后的测试分析结果:
(5)支持测试结果的输出
KFC将测试的结果以log文件格式输出, 以便开发人员查阅。它记录了发送消息的命令,以及BMC的Response Data,然后在每一个块的后面依次记录了Channel,模块,命令名,测试用例和测试结果 (如图6)。
图 6 智能平台管理接口测试结果日志文件
4 结语
本文主要针对IPMI Firmware在嵌入式软件的测试策略和自动化的测试架构进行研究。根据嵌入式软件和IPMI Firmware的特点,对嵌入式软件系统的测试策略进行了改进。
基于IPMI Firmware在嵌入式软件系统中的功能测试,分析和比较各种测试方法,确定最终采用的基于ICTS框架下,设计出适合于IPMI技术多平台的嵌入式软件自动化的测试架构。
[1]Intel, Hewlett- Packard, NEC, Dell.Intelligent Platform Management Interface Specification Second Generation v2.0[S].2004.
[2]AVCT Company.San Marco DRAC5 Linux环境搭建 (version 2.0)[S].2005.
[3]朱少民.软件测试方法和技术[M].北京:清华大学出版,2005.[4]Bart Broekman , Edwin Notenboom.嵌入式软件测试[M].张君施译,北京:电子工业出版社,2004.
[5]A00330-002.Intel Company.Intelligent Platform Management Interface (IPMI) Conformance Test Suite (ICTS) User's Guide (version 0.11)[R].2004.