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 命令行参数)中的值是否正确传入。

相关推荐
数字新视界1 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落2 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng2 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹3 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
爱莉希雅&&&17 小时前
GitLab 完整学习笔记
linux·运维·服务器
陈希12319 小时前
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
linux·服务器·网络
测试界的小码农1 天前
【Linux 命令实战(03):文件创建、复制、移动与删除,掌握 touch、mkdir、cp、mv、rm】
linux·服务器·php
|_⊙1 天前
网络层协议 IP
服务器·网络·tcp/ip
叼烟扛炮1 天前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法