openBMC自动化测试说明

第一,测试依赖于测试机器测试环境构建。除了拉取代码,还需要按照说明安装一些基本的工具,例如ipmitool之类的命令;如果是GUI测试,可能还需要安装浏览器和对应的驱动

第二,测试本身有很多外部依赖。例如LDAP NTP等测试需要给真实的BMC设备配置能通过网络连接上的外部服务器

第三,测试用例本身可能存在问题。例如预期不符合等。需要具体问题具体分析,可能是用例过时,可能是用例使用了部分平台特有的关键字,或者BMC固件有改动,预期结果需要修改。或者BMC固件确认存在bug需要修复。等等

第四,没有按照用例本身的设计去使用。例如测试要求提供host os的ip 账号密码等等,在测试带内ipmi测试的时候需要在host os测执行一些命令,如果这些参数没提供,或者提供了但是实际上不生效,这时候就没办法开启测试

因此,openbmc-test-automation测试社区的测试用例如果执行失败了,要综合分析,最好就是自己跑一遍结合日志具体分析。因为一个用例测试失败了,有多个方面的原因。

四类失败原因与分析方法整合

分类 对应分析脚本中的根因 典型失败阶段 排查优先级
第一类:测试环境/构建未就绪 前置条件不满足(环境层面) Setup / 测试主体开头 最高
第二类:外部依赖未配置 前置条件不满足(依赖层面) Setup / 特定测试步骤 最高
第三类:测试用例本身有问题 测试预期不符合 / 需人工确认 测试主体(断言阶段) 中
第四类:参数未提供或不生效 测试参数未传递/变量问题 Setup / 测试主体 高

🔍 第一类:测试环境与构建依赖

核心判断 :失败发生在测试执行的最早期 ,消息通常包含 Command not found、No such file、ImportError、浏览器驱动缺失等。

排查清单:

依赖类型 需确认项 典型错误
基础工具 ipmitool、expect、dmidecode、nmcli 是否安装 ipmitool: command not found
Python 环境 Python 3.x、pip install -r requirements.txt 是否执行 ModuleNotFoundError: No module named 'redfish'
GUI 测试 浏览器及 WebDriver 是否安装配置 WebDriverException: Message: 'chromedriver' executable needs to be in PATH
权限 ipmitool、dmidecode 是否需要 sudo Permission denied

定位方法 :在 output.xml 中搜索失败用例的第一个失败关键字 ,检查其消息是否指向环境层面。FFDC 收集的日志(BMC_journalctl.txt、OS_dmesg.txt 等)也可以辅助判断是否是环境问题。

🔗 第二类:外部依赖未配置

核心判断 :环境构建正常,但测试连接不到外部服务 ,消息通常包含 Connection refused、Timeout、unreachable。

典型场景:

  • LDAP 测试 :BMC 需要能通过网络访问到真实的 LDAP 服务器。如果 LDAP 服务器地址不可达或配置错误,所有 LDAP 登录测试都会失败。有一个真实案例:OpenBMC 的 LDAP 测试用例因为传入了无效的 LDAP URI(Invalid_LDAP_Server_URI),BMC 在格式校验阶段就返回了 400 Bad Request,测试根本没走到登录验证步骤。

  • NTP 测试:需要 BMC 能连接到 NTP 服务器进行时间同步。

  • SOL 测试:需要 BMC 的 SOL 功能已激活,且网络路由正确。

  • 虚拟介质测试:需要 ISO URL 从 BMC 网络可达,且认证信息正确。

定位方法 :检查 output.xml 中失败消息是否包含网络层面的错误。同时确认测试配置文件中 BMC_HOST、外部服务器地址等参数是否正确。

🧩 第三类:测试用例本身的问题

这是最复杂的一类,需要具体问题具体分析。常见子类型:

子类型 特征 示例
用例过时 BMC 固件已更新,旧断言不再适用 旧版本返回 200,新版本返回 204
平台特有关键字 某平台专有,其他平台不支持 pldmtool 仅适用于支持 PLDM 的平台
预期结果需修改 BMC 行为变更,原预期不再正确 Redfish 字段名或结构变化
BMC 固件 Bug 用例正确,固件确实有问题 需要提 Bug 修复

LDAP 案例的启示 :OpenBMC 的 LDAP 测试中,Verify LDAP Config Creation Without BASE DN 用例预期"不传 BaseDN 时 LDAP 登录应失败",但 BMC 固件实际上不接受空的 BaseDN 列表 ,直接返回 400 Bad Request 和 PropertyValueNotInList 错误。这说明用例的预期与固件实际行为之间存在偏差,需要确认是固件 Bug 还是预期需要更新。

定位方法 :在 output.xml 中查看断言失败的具体消息(expected vs actual),结合 BMC 固件版本和变更日志判断。

⚙️ 第四类:参数未传递或不生效

核心判断 :失败消息通常包含 Variable '${x}' not found、Expected N arguments, got M、Missing argument 等。

典型场景:

  • 带内 IPMI 测试:需要在 Host OS 上执行命令,要求提供 Host OS 的 IP、账号、密码。如果这些参数未提供,或提供了但 SSH 连接不生效,测试无法启动。

  • 配置文件中参数格式错误 :SBMR-ACS 的文档明确指出,配置文件中的配置错误是测试失败最常见的来源,配置文件使用 Robot Framework 的参数语法,需要精确的格式。

  • 变量作用域问题:变量未正确传递到子关键字或 Setup/Teardown 中。

定位方法 :检查 output.xml 中的失败消息,同时核对测试配置文件(如 config 文件或 --variable 命令行参数)中的值是否正确传入。

相关推荐
进击的荆棘2 小时前
Linux系统——文件(上)
linux·运维·服务器·文件
檀越剑指大厂3 小时前
抽屉里的手机还能开博客?用 Typecho 和 cpolar 搭一台可远程访问的小服务器
运维·服务器·智能手机
牢姐与蒯3 小时前
Linux信号(一).信号产生
linux·运维·服务器·ubuntu
FfHUCisI3 小时前
sync.Once 与 sync.Cond 源码与并发控制陷阱
服务器·开发语言·后端·golang
爱签AI电子合同4 小时前
电子合同上手成本怎么测?易用性维度专项测评
服务器·人工智能·智能合约·企业微信
aixingkong9216 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
百万蹄蹄向前冲15 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
-梅6 天前
linux(8) 软硬链接
linux·运维·服务器